Skip to content

Code: every call, file and refusal behind the pages

Your first week of data, in test mode.

A call you can run sits behind every page here. Your Startup is a folder of files: show traces each key to its line, and dev names the line that fails.

plays/cold-email.mdx
---
audience: small-property-managers
sequence: cold-email-thread-founder
---
Write as Dana: one fresh reason from a public source, one ask, plain text.
show
$ npx startup-builder show plays/cold-email.mdx
family     demand                                                                    play:cold-email@1
metric     positive-reply-rate → new-leads → new-arr → net-new-arr → arr             play:cold-email@1
process    outbound                                                                  play:cold-email@1
audience   small-property-managers                                                   plays/cold-email.mdx:2 (Ask, 2026-10-19)
on         Review.published, Monitor.checked, Conversation.answered +4 unregistered  play:cold-email@1, 8 Triggers
holdout    unit contact, control 0.25                                                compile default
worker     role:prospector (SDR)                                                     play:cold-email@1
sequence   cold-email-thread-founder                                                 plays/cold-email.mdx:3 (Ask, 2026-10-19)
heardFrom  signup.heardFrom                                                          funnels/signup.mdx:3
approval   every-send                                                                play:cold-email@1
budget     { amount: 0, currency: USD, per: month }                                  the Ask, 2026-10-19 (no budget)
guards     6: use-when, baseline, domain-authenticated +3                            play:cold-email@1
stops      12: bounce, shadow-complaint, provider-spam +9                            play:cold-email@1
body       1 rule → 1 Evaluator, run as Action.evaluate on each draft                plays/cold-email.mdx:5
owner      SalesBuilder

play:cold-email@1 is the catalog Play this file inherits; versions are Not live yet (gaps #5). Every key and what it compiles to: the plays/ folder.

plays/lead-reactivation.mdx
---
audience: lapsed-leads
approval: first-send
on: Lead.lapsed
budget: { amount: 48, currency: USD, per: month }
---
Every Message cites one fresh reason with its public source.
dev
$ npx startup-builder dev
plays/lead-reactivation.mdx:4  S5  on: Lead.lapsed is not a registered Event. Did you mean Offer.trialed?

Files

FolderOne file isCompiled byChecked by
plays/one Play: the Workflows a Worker may choose between and the Key Result it moves, compiled to one CampaignSalesBuilderS1, S2, S3, S4, S5, S7, S8
audiences/one Audience: who is in, who is left out and what fills itSalesBuilderS3
sequences/one Sequence: its steps, waits and the replies that end itSalesBuilderS2, S5
funnels/one funnel, and the question that asks each new Lead where they heard of youSalesBuilder—
workflows/one sales Process, holding only what differs from the hub’sSalesBuilder—
agents/one seat’s contract: who fills it, its number, its standards, limits and approvalsSalesBuilderS4, S9
systems/an override of one System the Startup inheritsSalesBuilderS2
domains/one Domain and what it does: the site, or the email it sends fromSiteBuilderS2
offers/one Offer: its Price, its trial, its checkout and how it is soldSalesBuilderS8
content/one piece: who wrote it, what it came from, where it goes and what it movesSalesBuilderS1, S6, S7
metrics/the quarter’s Goal and Key Results, and each leaf Metric with its one parentSalesBuilderS1, S9

Checks

CheckIt holdsWhat dev prints
S1The Metric’s parent chain reaches arr: the Result card’s path.metrics/q4.mdx:5 S1 keyResults[1].metric: demo-requests has no parent chain to arr. Set its parent: opened-deals-and-trials.
S2Every send passes a code-tier Check before it goes.sequences/cold-email-thread-founder.mdx:5 S2 steps.second sends with no code-tier Check. Add guards: [customer-collision].
S3Lists leave out suppressed Contacts and read Consent.audiences/lapsed-leads.mdx:4 S3 exclude: drops suppressed. Suppressed Contacts never enter a List: put it back.
S4The budget fits the Mandate, or opens an Approval.plays/lead-reactivation.mdx:5 S4 budget: 48 USD a month is over Dana’s Mandate of 0. Sign it with Mandate.authorize, or the first send waits on an Approval.
S5Every on: names a registered Event.plays/lead-reactivation.mdx:4 S5 on: Lead.lapsed is not a registered Event. Did you mean Offer.trialed?
S6Content from and distribute handles resolve.content/webinars/60-day-notices.mdx:4 S6 distribute.posts.handles: dana-x is not a connected account. Did you mean dana-linkedin?
S7Every body rule compiles to an Evaluator that runs as POST /{namespace}/actions/{action}/evaluate on each draft before its window opens.plays/cold-email.mdx:5 S7 body: “sound friendly” compiles to no Evaluator. Write what a draft must hold or must leave out.
S8An Experiment that varies an Offer’s Price assigns by market or by time.experiments/pro-price.mdx:3 S8 varies: offers/pro.mdx price, assigned by contact. Assign by market or by time.
S9Each Key Result names a node or leaf of the ARR tree, and a seat’s Key Result sits in its band.agents/sales/prospector.mdx:4 S9 results: reply-count is not a node or leaf of the ARR tree. Did you mean positive-reply-rate?

Refusals

380 codes carry a fix and the call that clears it. Every code.

Events

Events the pages nameRegisteredNot live yet
370234136

Each registered Event with its webhook payload: Events.

Calls

240 calls, each with its signature and the pages that make it: Calls.

MCP

Connect your agent
claude mcp add --transport http salesbuilder-docs https://salesbuilder.dev/mcp
claude mcp add --transport http startup-builder https://api.sb/mcp

Read these docs keyless on the first line; act on your Startup on the second: MCP.

Compiled, not written: edit its page, then regenerate. Every step runs from a sentence or a line of code. In your words: the CRM words you know, and where each lives here.

Contents