How it works
ContentSphere
Content system. Each client’s newsletters, LinkedIn posts and web copy, planned from their brand and drafted from prompts written for them. The client approves every piece.
Live · internalVisit the site ↗
Architecture
Hover a box to trace its connections; click it for what it does.
- request
- webhook, queue, schedule
- the heart
- outside service
APeople· 3Writers · admins · Client portal · Claude
Writers · adminsNext.js 15UI
UI · Next.js 15
Formwork’s content team: brand, plans, pieces, approvals and the calendar, one client at a time.
Talks to
- → Content pieces (edit)
Client portalper clientUI
UI · per client
Clients read their pieces, comment and approve.
Talks to
- → Review (approve)
ClaudeMCP clientEXTERNAL
EXTERNAL · MCP client
Claude, connected with a scoped key, working the same content through MCP.
Talks to
- → MCP server (MCP · key)
BApp· 10Brand strategy · Personas · Transcripts · Content plans · MCP server · Prompt matrix · Generation · Content pieces · Review · Calendar
Brand strategyversionedSERVICE
SERVICE · versioned
Each client’s positioning, pillars and voice, with every version kept.
Talks to
- → Personas
- → Content plans (informs)
Personasaudiences · frameworksSERVICE
SERVICE · audiences · frameworks
Who the client is talking to, and the messaging frameworks for each audience.
Talks to
- ← Brand strategy
Transcriptsclient callsSERVICE
SERVICE · client calls
Calls with the client, kept as source material for topics.
Talks to
- → Content plans (topics)
Content plansmonthlySERVICE
SERVICE · monthly
The month’s topics per channel, drawn from the strategy and the calls.
Talks to
- ← Brand strategy (informs)
- ← Transcripts (topics)
- → Content pieces (pieces)
- → C0 (deliverables)
MCP server112 tools · scoped keysAI
AI · 112 tools · scoped keys
A fresh server per request, with only the tool groups the key’s scopes allow. Keys are stored hashed.
Talks to
- ← Claude (MCP · key)
- ← Six specialists (own tools)
Prompt matrixclient × content typeSERVICE
SERVICE · client × content type
The instructions for every pairing of client and kind of content.
Talks to
- → Generation (instructions)
Generationdraft · rewriteAI
AI · draft · rewrite
Drafts and rewrites pieces from the matrix, with the client’s context.
Talks to
- ← Prompt matrix (instructions)
- → Content pieces (drafts)
- → Claude · OpenAI (generate)
Content piecesdrafts · versionsSERVICE
SERVICE · drafts · versions
One piece per channel, with versioned drafts, comments and a status.
Talks to
- ← Content plans (pieces)
- ← Generation (drafts)
- ← Writers · admins (edit)
- → Review
- → PostgreSQL (SQL)
Reviewteam → clientSERVICE
SERVICE · team → client
Internal review, then the client’s. A piece can’t enter review without real draft copy.
Talks to
- ← Content pieces
- ← Client portal (approve)
- → Calendar (approved)
- → Slack (notify)
CalendarscheduledSERVICE
SERVICE · scheduled
Approved pieces, on the dates they go out.
Talks to
- ← Review (approved)
CAgents· 2Orchestrator · Six specialists
OrchestratorClaude Agent SDKAI
AI · Claude Agent SDK
The in-app agent. It hands work to the right specialist.
Talks to
- → Six specialists (delegates)
- → Claude · OpenAI
Six specialistsstrategy → campaignsAI
AI · strategy → campaigns
Specialists from strategy and writing to prompts and campaigns, each limited to the tools its job needs, plus one tool to hand work to another.
Talks to
- ← Orchestrator (delegates)
- → MCP server (own tools)
DData· 1PostgreSQL
PostgreSQLPrismaSTORE
STORE · Prisma
Clients, strategy, plans, pieces, versions and comments.
Talks to
- ← Content pieces (SQL)
EOutside· 3Claude · OpenAI · C0 · Slack
Claude · OpenAImodelsEXTERNAL
EXTERNAL · models
The models behind drafting and the agents.
Talks to
- ← Generation (generate)
- ← Orchestrator
C0deliverables APIEXTERNAL
EXTERNAL · deliverables API
Formwork’s operations system, where each piece is also a tracked deliverable.
Talks to
- ← Content plans (deliverables)
SlacknotificationsEXTERNAL
EXTERNAL · notifications
Tells the team when work needs them.
Talks to
- ← Review (notify)
Connections · 18
→ request · ⇢ webhook, queue or schedule
- Brand strategy → Personas
- Brand strategy → Content plans · informs
- Transcripts → Content plans · topics
- Content plans → Content pieces · pieces
- Prompt matrix → Generation · instructions
- Generation → Content pieces · drafts
- Generation → Claude · OpenAI · generate
- Writers · admins → Content pieces · edit
- Content pieces → Review
- Client portal → Review · approve
- Review → Calendar · approved
- Review ⇢ Slack · notify
- Content plans → C0 · deliverables
- Claude → MCP server · MCP · key
- Orchestrator → Six specialists · delegates
- Six specialists → MCP server · own tools
- Orchestrator → Claude · OpenAI
- Content pieces → PostgreSQL · SQL
Inside: specialist agents and the prompt matrix
The in-app agent isn’t one model with every tool. An orchestrator hands work to specialists that each see only their own tools, and every draft starts from instructions written for that client, that kind of content and that reader.
Hover a box to trace its connections; click it for what it does.
AAsk· 2Agent chat · Claude
Agent chatin the appUI
UI · in the app
Where the team asks for plans, drafts and campaigns in plain words.
Talks to
- → Orchestrator
ClaudeMCP clientEXTERNAL
EXTERNAL · MCP client
Claude outside the app, using the same tools through a scoped key.
Talks to
- → Tool subsets (MCP)
BLead· 2Orchestrator · Agent prompts
Orchestratorstreams · tool roundsAI
AI · streams · tool rounds
Streams its answer, runs tool calls in rounds up to a limit, and delegates to one of six specialists.
Talks to
- ← Agent chat
- ← Agent prompts (instructions)
- → Strategist (delegates)
- → Creator
- → Campaign manager
- → Prompt engineer
Agent promptseditableSTORE
STORE · editable
Each agent’s instructions live in the database, so they can be tuned without a deploy, with built-in defaults if the database is unavailable.
Talks to
- → Orchestrator (instructions)
CSpecialists· 5Strategist · Creator · Campaign manager · Prompt engineer · Tool subsets
Strategistbrand · audiencesAI
AI · brand · audiences
Brand strategy, audiences, messaging frameworks, pillars and client context.
Talks to
- ← Orchestrator (delegates)
Creatorpieces · draftsAI
AI · pieces · drafts
Writes and manages pieces: LinkedIn posts, newsletters, case studies, articles.
Talks to
- ← Orchestrator
- → Client prompts (reads)
Campaign managerplans · calendar · shootsAI
AI · plans · calendar · shoots
Content plans, the editorial calendar, photo and video shoots, assets, and updates from construction projects.
Talks to
- ← Orchestrator
Prompt engineerprompts · personasAI
AI · prompts · personas
Designs the prompt matrix and personas, and tunes generation quality.
Talks to
- ← Orchestrator
- → Tool subsets
Tool subsetsper specialistSERVICE
SERVICE · per specialist
Each specialist gets its own list of tools plus one to hand work to another; nothing else is offered to it.
Talks to
- ← Claude (MCP)
- ← Prompt engineer
DMatrix· 3Client prompts · Default matrix · Draft
Client promptsclient · type · personaSTORE
STORE · client · type · persona
Instructions written for one client and one kind of content, optionally for one persona. These win when they exist.
Talks to
- ← Creator (reads)
- → Draft (first choice)
Default matrixfallbackSTORE
STORE · fallback
The house prompts, used when a client has none of its own.
Talks to
- → Draft (fallback)
Drafttraced to its promptAI
AI · traced to its prompt
The generated draft records which prompt produced it, so a bad draft can be traced to its instructions.
Talks to
- ← Client prompts (first choice)
- ← Default matrix (fallback)
Connections · 11
→ request · ⇢ webhook, queue or schedule
- Agent chat → Orchestrator
- Agent prompts → Orchestrator · instructions
- Orchestrator → Strategist · delegates
- Orchestrator → Creator
- Orchestrator → Campaign manager
- Orchestrator → Prompt engineer
- Claude → Tool subsets · MCP
- Prompt engineer → Tool subsets
- Creator → Client prompts · reads
- Client prompts → Draft · first choice
- Default matrix → Draft · fallback
Two flows
A topic becomes a published piece
Walk through it and each step lights the parts it runs through in the drawings above.
By count
- specialist agents
- 6
- rounds of review: team, then client
- 2
- actions Claude can take in it
- 112
Notes
- N.1Prompts are a matrix of client by kind of content. A newsletter for one contractor and a LinkedIn post for another start from different instructions.
- N.2Six specialist agents, from strategy to campaigns. Each gets only the tools its job needs, plus one to hand work to another.
Built by
I design, architect and build software products like this one.
More systems