How the system works
alphatwo-ten is a software factory. Two agents inside the factory (an Executor and a Reviewer) build tools. Those tools get consumed by a workforce of named role-agents that operates a real business on behalf of a customer. Each customer gets a dashboard, a database, and a "brain" — a private folder of living documents that every agent reads from and writes to.
This page is the comprehensive design reference. The homepage shows the interactive build pipeline, and the stack map covers what runs where.
1 · North star
Most "AI agent" products are a single chatbot pretending to be many things. This is the opposite: a small factory that ships specialized agent-tools, and a clearly ranked workforce that uses them. Specialization on the inside, one human touchpoint on the outside.
2 · The two layers
The whole system splits cleanly in two. The factory is shared infrastructure (one of these exists for all customers). The workforce is per-customer (one of these exists per customer we sign up).
(shared)
(per‑customer)
(per‑customer)
3 · v0.1 — what we build first
The big realization of this grill: Maestro is the first agent we build, not one of the 12 listed specialists. Every future agent depends on Maestro's output to be useful. Building a specialist first would just be a chatbot in costume.
v0.1 milestone — Maestro alone
Factory + Maestro + Dashboard + Brain repo + Postgres. No other agents exist yet. The 12 specialists become a hiring roadmap, not a v1 deliverable. This mirrors how real CEOs work — they do everything themselves until they hire.
| Layer 1 — Factory | Hand-coded for v0.1 (it can't bootstrap itself yet). Becomes the machine that hires the specialists later. |
| Layer 2 — Workforce | Maestro only. Acts as the customer's Personal CEO + CFO + Chief of Staff. |
| Layer 3 — Customer surfaces | A dashboard, a private GitHub brain repo, a Postgres row for operational state. |
4 · Maestro's job
Maestro interviews the customer and writes their findings into a structured "brain." The customer can show up with as little as an idea, a description, or a URL — Maestro takes it from there.
The first decision Maestro makes
Before anything else, Maestro figures out whether this is an idea or an established business. The two flows produce different brain content (aspirational vs. inventory-heavy), so the differentiation has to happen early.
| Mechanism | How it works |
|---|---|
| Ask + verify | Maestro asks the customer directly during the interview, AND verifies via URL if one was given (working site with products = established). Customer can override. |
What Maestro can see (established businesses)
| Source | v0.1 access |
|---|---|
| Customer's answers | Yes — primary input. |
| Public website (URL) | Yes — Maestro scrapes homepage, about, products, pricing to pre-fill drafts. |
| Integrations (Stripe, Shopify, GA, etc.) | Not in v0.1. Comes later. |
5 · The customer's brain — 8 living documents
Maestro's output is a folder of HTML documents (not bare markdown), styled like this page. They live in the customer's private GitHub repo and update as Maestro and future specialists learn more.
Every future agent we hire (Max, Tom, John…) reads from this brain before doing any work. That's why Maestro had to be first — without these documents, no specialist has context.
business.htmlWhat the business / idea is. Problem, value prop, what it does and doesn't do.customer.htmlWho the founder is. Role, background, working style, what they want from the system.product.htmlWhat they sell (or want to sell). Offerings, pricing, format.audience.htmlWho they sell to. Personas, jobs-to-be-done, channels they live on.voice.htmlBrand voice, tone, vocabulary. Words they use, words they avoid.assets.htmlWhat they already have. Existing site, accounts, files, audiences, traffic.goals.htmlWhat they're trying to achieve. North-star metric, near-term targets, time horizons.status.htmlStage marker — idea vs. established, runway, momentum, current bottleneck.
Format note Documents are rendered as HTML in the style of this page (Thariq's "concept explainer" pattern — serif headings, monospace eyebrows, ivory background, clay accents). HTML is what the customer sees; the source-of-truth file committed to git is the same HTML.
6 · How the customer experiences it
The dashboard is a live split-screen: Maestro's chat on the left, the brain documents on the right. As the conversation produces facts, the right side updates in real-time — the customer watches their own "brain" form.
business.html — who's your ideal subscriber?maestro/business.htmlwriting…maestro/customer.htmlqueuedmaestro/product.htmldraft from scrapemaestro/audience.htmlqueuedmaestro/voice.htmlqueuedmaestro/assets.htmldraft from scrapemaestro/goals.htmlqueuedmaestro/status.htmlestablished · confirmedConversation style Guided + open-ended follow-ups. Maestro works through the 8 documents as an agenda (predictable enough to ship), but each section is conversation, not a form. He validates, summarizes, asks follow-ups, and lets the customer steer.
The dashboard is generative
One dashboard application serves every customer (multi-tenant), but the layout itself isn't fixed. After the interview, Maestro emits a JSON spec describing which widgets, metrics, and panels this customer needs. json-render.dev renders that JSON into React UI from a constrained component catalog.
Result: a content business and a product business get different dashboards out of the same app. Maestro keeps updating the spec as the brain evolves and as specialists get hired — adding Max means SEO widgets appear, adding Tom means a media library appears.
| Output of Maestro | Lives in | Purpose |
|---|---|---|
brain/*.html |
Customer's GitHub repo | What we know about the customer (truth) |
dashboard.json |
Postgres (versioned) | How the customer sees + interacts with the work (UI spec) |
7 · Where the data lives
Two stores, each with a clear job. Nothing lives in both.
| Store | What's in it |
|---|---|
tenwhy-brains/<customer>GitHub repo · private |
The brain. Folder per agent: /maestro/ at v0.1; later /max/,
/john/, etc. as specialists get hired. Each agent only writes to its own
folder — clean commit attribution, no merge conflicts.
|
| Shared Postgres RLS on customer_id |
Operational state: customer accounts, chat history, agent task queues, scheduling, audit logs. Same Row-Level Security pattern already in the PRD. |
Why a git repo for the brain (not the database)
Three reasons: it's portable (the customer can clone or export their brain at any time — they own it), it's versioned for free (every change is a commit, with attribution to whichever agent made it), and it forces clear ownership boundaries (one folder per agent, no fighting over rows).
8 · What a tool actually is
A "tool" is the unit of work the factory produces and a specialist consumes. It's not just an API or a widget — it's a self-contained pair.
Anatomy of a tool
| Part | What it is |
|---|---|
| CLI binary | A command-line program that does the work (run an SEO scan, sync a catalog, draft a brief). Standalone, scriptable, testable on its own. |
| Skill | A markdown file that teaches an agent how to use the CLI — what it's for, when to invoke it, expected inputs/outputs, examples. Same shape as a Claude Code skill. |
| (optional) widget spec | If the tool needs a dashboard surface, it ships a json-render widget definition that Maestro can include in dashboard.json. |
| (optional) schema migration | If the tool needs new tables/columns in the shared Postgres (under the customer's RLS scope), it ships SQL. |
One tool = one GitHub repo (tenwhy-tools/<name>). Built by the factory
(Executor + Reviewer in a Sapiom µVM), versioned independently, consumed by exactly one
specialist role.
How an agent uses a tool
When a specialist is hired, the platform loads the tool's Skill into that agent's context. The agent reads the skill, decides when to invoke the CLI (based on its shift schedule, a Maestro task, or an event), and runs it. Output gets committed to the agent's folder in the customer's brain repo.
The factory–workforce wall
The Factory and the Workforce are two separate systems. They share a platform and infrastructure, but they never call each other directly. The factory's only output to the workforce is a published tool repo. The workforce never reaches back into the factory.
Each side is aware of the other's existence (the factory has to produce tools in a shape the workforce can consume; the workforce has to be able to load any catalog tool). But the wall makes scaling, deploying, and reasoning about each side independent.
9 · The hiring roadmap
Once Maestro is live, the factory's job is to build the next specialist's tool and ship it into the catalog. When the customer (or Maestro) decides they need that role, Maestro "hires" them — the specialist's folder appears in the brain repo and they start doing their job.
The 12 candidates from the original brief, ordered roughly by likely-first-to-hire. Names marked ? are still unnamed.
| Agent | Job | Tool | Shift |
|---|---|---|---|
| Max | SEO | seo-tool | daily |
| Vic | Media creation | media-tool | daily |
| Sac | SEM | sem-tool | daily |
| Jon | Catalog | catalog-tool | daily |
| Tom | Market research | research-tool | daily |
| Roy | Market watch | market-watch-tool | night |
| Moz | Design | design-tool | daily |
| Sid | Quality assurance | qa-tool | night |
| Sal | Customer support | support-tool | 24/7 |
| Ray | Legal | legal-tool | 1 day/week |
| Lou | Accounting | accounting-tool | daily |
| Nic | Website | web-builder-tool | daily |
All 12 are unhired in v0.1 — only Maestro ships. The factory will build each tool when Maestro suggests the hire and the customer approves (decision #21). Top 4 rows represent the earliest-likely hires.
Also future: Consigliere (strategic advisor sitting alongside Maestro, advises only — decision #19).
Renames from the original brief
| Was | Now | Reason |
|---|---|---|
| John | Jon | 4-letter outlier in the original roster; shortened for consistency with the 3-letter pattern. |
| Tom (Media) | Vic | Tom moved to Market Research; Vic takes Media Creation. |
| Lawyer "Regis" | Ray | 3-letter agent name; "Regis" is no longer used (was the placeholder). |
10 · Decisions locked in this grill
Each one is now a constraint on everything downstream.
| # | Decision |
|---|---|
| 1 | locked v2 layers on top of v1 — v1's form-to-app demo stays as the marketing surface. |
| 2 | locked Maestro is the first agent we build, not a 13th invented one. |
| 3 | locked The 12 listed specialists are a hiring roadmap, not a v1 deliverable. |
| 4 | locked Maestro v0.1 = customer interviewer + producer of a living brain. |
| 5 | locked Maestro accepts as little as an idea / description / URL. |
| 6 | locked 8-document brain pack: business · customer · product · audience · voice · assets · goals · status. |
| 7 | locked Idea vs. established: ask the customer + verify via URL. |
| 8 | locked Established business access in v0.1 = answers + public URL scrape. No integrations. |
| 9 | locked Conversation style = guided agenda + open-ended follow-ups. |
| 10 | locked File visibility = live split-screen (chat left, brain right). |
| 11 | locked Brain documents are rendered/stored as HTML, styled like this page. |
| 12 | locked Brain storage = per-customer GitHub repo. Operational state = shared Postgres + RLS. |
| 13 | locked GitHub home = dedicated platform org (e.g. tenwhy-brains). |
| 14 | locked Brain repos are private by default. |
| 15 | locked Repo layout = folder per agent (/maestro/, later /max/…). |
| 16 | locked Maestro runtime = stateless HTTP API (load from DB+repo, call LLM, write back). Fallbacks noted: long-lived worker, µVM-per-session, direct-from-frontend if this doesn't hold up. |
| 17 | locked Dashboard = single multi-tenant app, with a generative UI driven by Maestro's dashboard.json spec, rendered via json-render.dev. |
| 18 | locked Customer auth = email + magic link. No passwords. |
| 19 | locked Consigliere advises only — Maestro has final say in the workforce. (Consigliere may not even ship in v1.) |
| 20 | locked Specialist-vs-Maestro disagreements — Maestro decides. Specialists can flag concerns; Maestro hears them; Maestro calls it. |
| 21 | locked Hiring flow — Maestro suggests, customer approves. Surfaces as an Approve card in the dashboard. |
| 22 | locked Specialist activation = all three: cron (for shifts), on-demand (from Maestro), and events (reactions to brain changes / dashboard actions). |
| 23 | locked One GitHub repo per tool (tenwhy-tools/<name>). Each tool = CLI + Skill (markdown teaching an agent to use the CLI). Same shape as Claude Code skills. |
| 24 | locked Factory runtime = Sapiom µVM per build job. Factory and Workforce share a platform but have no direct interaction — only handoff is a published tool repo. |
| 25 | locked Billing = hybrid. Flat base subscription (Maestro + some specialists), metered add-ons for high-cost agents (e.g. media gen, paid ads). |
| 26 | locked Specialist roster locked — all 3-letter names: Max, Vic, Sac, Jon, Tom, Roy, Moz, Sid, Sal, Ray, Lou, Nic. (Orchestrator names — Maestro, Consigliere — keep their full form.) |
| 27 | locked Renames from original brief: John → Jon, Tom (Media) → Vic (Tom moves to Research), Lawyer "Regis" → Ray. |
11 · Still on the grill
all clear Every question from this session is resolved — 27 decisions locked, 0 open. Next time we sit down, we either revisit one of the locked decisions (each is changeable) or move on to building.
What naturally comes next
Not "open questions" — just the obvious work that follows from what we decided:
| Next | What it means |
|---|---|
| Skeleton repos | Create the tenwhy-brains and tenwhy-tools GitHub orgs; reserve repo naming conventions. |
| Maestro v0.1 spec | Write the interview script, prompt, and the 8 HTML brain-doc templates. Decide which model powers Maestro. |
| Dashboard scaffold | Stand up the multi-tenant Next.js app with split-screen chat + json-render canvas. Wire magic-link auth. |
| Factory v0 | Bootstrap the Executor + Reviewer pipeline (Sapiom µVM). Doesn't need to build anything in v0.1 since Maestro is hand-coded — but the pipeline exists, ready for Maestro to commission Max as the first hire in v0.2. |