But we can at least tell you how it works and how it was built. (Hint: Lots of tokens and hundreds of Github commits and pull requests. At the time of writing this we were up about 250 PRs)

Payload CMS

Payload CMS is our backbone, and honestly it's amazing. It's lightweight and as a Next.js app we were really able to modify every bit of it and provide a truly custom experience that we wouldn't have been able to with the other backend platforms.

Multitenancy

We chose Payload because it allowed us to give each user their own publication. Within each publication are that users' unique posts, pages, tags, media, interactives and subscribers.

Content pipeline

Posts and pages are Lexical documents rendered by a fixed React frontend. Publication owners configure content and Interactive blocks resolve per request under the domain-derived publication: declarative kinds such as charts, tables, timelines and embeds render from validated specs, dynamic kinds such as post bands and signup forms query current published content at render time and never persist the result, and sandbox interactives render author code in an isolated frame.

How each kind renders

KindRenders fromState at render
Declarative — charts, tables, timelines, embedsA validated spec stored in your libraryNothing persisted
Dynamic — post bands, signup formsYour current published content, queried per requestResult never persisted
SandboxAuthor code in an isolated frameNo network, no storage, no parent access
How the three families of interactive kinds render: declarative kinds from validated specs, dynamic kinds from live published content, and sandbox code in an isolated frame.

The sandbox

A sandbox interactive runs in an iframe with a content security policy of default-src 'none': no network, no storage, no parent DOM access, no external images or fonts. Publication theme variables and a repository-maintained design kit are copied into the frame.

This is great because the AI agent can literally build anything.

Agent surface

The in-app chat runs server-side on the publication's encrypted provider credential, with publication-scoped tools for creating interactives and reading posts. MCP is served by the official Payload MCP plugin at /api/mcp, limited by the platform config and further restricted by each API key — nothing is deleted through it. But CAREFULLY configure access please.

Email

We use a SMTP-backed queue along with Mailgun to send out the newsletter and and any verification emails.

Part of Under the hood. Questions? Support & FAQ.