Statement of Work · SOW-01
Concept-first
AI outbound engine
Every prospect on the call list gets a working, branded demo of the client’s product — built from their own public data the night before anyone dials — and an AI voice agent opens the call by pointing at it. Concept in, client out.
The offer
The edge is sequence, not volume.
A normal cold call asks a prospect to imagine the product. This one opens with a URL they can load while still on the phone, showing their own logo, palette and data inside the thing being sold. The ask moves from “give me thirty seconds” to “I already built it, tell me what’s wrong with it.”
That inversion is the whole thesis, and it only works if building 100 tailored concepts costs hours rather than weeks. Everything below exists to make the concept cheap enough to give away before a prospect has agreed to anything.
| Subsystem | What it does | The hard part |
|---|---|---|
| Prospect Graph | Finds companies matching a chosen segment, fingerprints their public stack, resolves a reachable phone number and a name | Phone numbers, not companies. Finding the business is easy; a number that reaches an owner is the scarce input |
| Concept Factory | Clones brand assets and real data off the prospect’s public presence into a sandbox tenant of the client’s product, configures it, records a walkthrough, renders a one-page deck | Unattended throughput and taste. 100 concepts a night, none of which look auto-generated |
| Voice Agent | Dials, opens on the concept, qualifies, handles objections, books or warm-transfers, and writes the call back to CRM | Turn latency and barge-in. Past roughly 800 ms of silence the prospect hangs up on a robot |
| Context Service | Assembles a per-prospect dossier and retrieves objection and segment playbooks so the agent speaks to this company, not to a category | Retrieval has to finish before the dial, not mid-sentence |
The fifth component is the one that makes this a test rather than a claim. Phase 5 splits the same list into a concept-first arm and a no-concept control arm, dialed by the same agent with the same opener minus the URL. If meeting-set rate does not separate, the Concept Factory is expensive theatre and the engagement stops at Phase 5 having spent a pilot budget instead of a platform budget.
Scope of work
Seven phases. Nothing accepted on a demo.
Nineteen phase-weeks of work compressed into 13 calendar weeks, plus 6 optional weeks after the readout. Phases 1 and 2 run in parallel, as do 3 and 4, so first supervised dials land in week 12 and the pilot readout in week 13. Each phase is accepted on a criterion that can be checked in an afternoon.
| Phase | Wks | Deliverable | Accepted when |
|---|---|---|---|
| 0 · Definition | 2 | One segment, one product, a written concept spec, a written definition of “qualified meeting”, and a compliance baseline reviewed by the client’s counsel | All five documents signed. No build starts before counsel signs the calling plan |
| 1 · Prospect Graph | 3 | Discovery and enrichment pipeline, scoring model, 1,000 seeded records | 1,000 companies in the segment, 60% or more carrying a verified phone number and a named contact, fully DNC-scrubbed |
| 2 · Concept Factory | 4 | Brand extraction, sandbox provisioning, product configuration, walkthrough capture, one-page deck render | 100 concepts built unattended in one overnight run; 90% or more pass a blind 5-point visual QA; median build under 6 minutes |
| 3 · Voice Agent | 5 | Asterisk/ARI call control, streaming media pipeline, dialogue policy, voicemail drop, warm transfer | 50 supervised test calls at median turn latency 800 ms or less and p90 1.5 s or less, barge-in working, zero dials outside permitted windows |
| 4 · Context & CRM | 3 | Dossier packer, pgvector knowledge base, CRM schema, attribution IDs, call scoring | Dossier assembled pre-dial in 20 s or less; every test call transcribed, scored, and joined to its concept ID |
| 5 · Pilot | 2 | 100 concept-first dials, 100 control dials, instrumented readout | Both arms complete on the same list, readout delivered with confidence intervals on meeting-set rate |
| 6 · Platform | 6 | Multi-tenancy, self-serve offer onboarding, usage metering and billing — optional | A second tenant loads its own offer and list and dials, with no Scarlet Beast engineering time |
Work not listed above is out of scope by default. Anything added moves through a written change order with its own price and its own acceptance criterion.
Technical architecture
Two pipelines meet at the dial.
The asset pipeline runs overnight and is throughput-bound; the call pipeline runs in real time and is latency-bound. They share one database and never share a process.
Left to right: a list becomes scored prospects, scored prospects become concepts and a dossier, the Compliance Gate decides which of them may lawfully be dialed today, and only then does the Dialer place a call whose audio the Voice Pipeline drives.
| Component | What it owns | Built on |
|---|---|---|
| Prospect Graph | Company discovery, public-stack fingerprinting, contact resolution, scoring | Postgres, headless Chromium, enrichment APIs |
| Concept Factory | Brand extraction, sandbox provisioning, product configuration, walkthrough capture, deck render | Platform connector, Playwright, ffmpeg, worker queue |
| Asset CDN | The per-prospect demo URL, the walkthrough video, the one-page PDF | Cloudflare Pages and R2 |
| Compliance Gate | DNC scrubbing, calling windows by timezone, consent state, recording rules by jurisdiction | Rules service over Postgres, national and state DNC feeds |
| Context Service | Pre-dial dossier assembly and playbook retrieval | pgvector, Claude |
| Dialer | Origination, call control, recording, transfer, voicemail detection | Asterisk with ARI, SIP trunk |
| Voice Pipeline | Streaming transcription, turn policy, speech synthesis, barge-in | Asterisk ExternalMedia, streaming STT, Claude, ElevenLabs |
| CRM | Prospects, concepts, calls, outcomes, attribution IDs | Postgres |
| Scorecard | Per-call scoring, arm comparison, operator dashboards | Postgres with Grafana |
The one architectural decision worth arguing about is that retrieval happens before the dial, not during it. A dossier assembled mid-turn adds 200 to 600 ms to the first response, which is exactly where a cold call is lost. The Context Service packs a fixed-size bundle per prospect ahead of the call and the Voice Pipeline treats it as read-only state.
The call
Eight moves, one budget.
The budget is the time between the prospect finishing a sentence and hearing the first syllable back: 800 ms median, 1.5 s at p90. Past that the prospect concludes they are talking to a machine that is thinking, and hangs up.
The dashed band is the only part of the call that is a hard engineering constraint: end-of-speech to first syllable, every turn.
| Stage | Budget | Note |
|---|---|---|
| End-of-speech detection | 120 ms | Voice activity detection, tuned per trunk codec |
| Final transcript | 150 ms | Streaming STT, partials already delivered |
| Context assembly | 10 ms | Dossier is pre-packed, so this is a memory read |
| First model token | 300 ms | Claude, short system prompt, cached prefix |
| First synthesized audio | 150 ms | Streaming TTS, sentence-level chunking |
| Trunk and jitter | 70 ms | SIP trunk round trip |
| Total to first syllable | 800 ms | The number the pilot is held to |
Three behaviours carry the call and each is a separate piece of work. Barge-in stops synthesis inside 100 ms when the prospect talks over the agent, because an agent that talks through an interruption reads as a robocall no matter how good the voice is. Voicemail detection routes to a 20-second drop naming the concept URL rather than attempting a conversation with an answering machine. Warm transfer hands a live, qualified call to a human closer with the transcript already on their screen, which is the only moment in the system where a person is required.
The agent’s dialogue policy is written and versioned as a document, not buried in a prompt string: opener, qualification questions, an objection library keyed to the segment, the booking path, the transfer path, and the hard stops. Every call is scored against that policy, so a change to the policy is measurable against the calls that preceded it.
Stack and integrations
One connector per engagement.
Everything is either already running at Scarlet Beast or is a commodity with two viable vendors. The only layer that changes from engagement to engagement is the connector to whatever the client sells, and Phase 0 builds exactly one.
| Layer | Choice | Alternative | Why this one |
|---|---|---|---|
| Demo substrate | One connector to the client’s product: a sandbox tenant, a trial org, or a scripted instance | A cloned copy of the client’s own demo environment per prospect | Free, disposable tenants are what make 100 throwaway concepts economic. Ecommerce platforms, most B2B SaaS and self-hosted products all provide one; Phase 0 confirms it before anything is priced |
| Browser automation | Playwright on headless Chromium | Puppeteer | Brand extraction and product configuration both need a real browser; Playwright’s tracing makes failed builds debuggable |
| Telephony | Asterisk with ARI, SIP trunk to Twilio | Direct carrier trunk, or a managed voice-agent API | Owning call control keeps recording, transfer and per-call logic in our code; a managed API would be faster to stand up and far harder to tune |
| Media transport | Asterisk ExternalMedia over RTP | AudioSocket | ExternalMedia gives raw frames to the pipeline without a second process in the path |
| Transcription | Streaming STT with partial results | Two vendors benchmarked in Phase 3 | Partials are what let the agent start thinking before the prospect stops talking |
| Reasoning | Claude — a small model for turn-taking, a larger one for objection handling | Single-model fallback | Turn latency and reasoning quality want different models; the policy decides which one a turn needs |
| Speech | ElevenLabs streaming | Second vendor benchmarked in Phase 3 | Sentence-chunked streaming is the difference between 150 ms and 900 ms to first audio |
| Data | Postgres with pgvector | None | One database for CRM, prospect graph and embeddings keeps attribution a join rather than a pipeline |
| Assets | Cloudflare Pages and R2 | S3 and CloudFront | Already in use for Scarlet Beast properties, and a concept URL has to load instantly on a phone mid-call |
| Observability | Grafana over Postgres, full call recordings | Hosted APM | Per-call scoring is the product metric, so it lives with the data rather than in a vendor |
The two integrations that carry schedule risk are programmatic provisioning and configuration of the client’s own product, which differs by product and sometimes needs the client’s engineers, and SIP trunk provisioning, where number acquisition and carrier vetting can take longer than the engineering. Both start in Phase 0 rather than when their phase opens.
Compliance and consent
Consent-first, by construction.
This section is the reason the architecture looks the way it does, and it is written by an engineer rather than a lawyer. Nothing here is legal advice, and Phase 0 does not close until the client’s counsel has reviewed and signed the calling plan.
The governing fact: on 8 February 2024 the FCC ruled that an AI-generated voice is an “artificial” voice under the TCPA, which places AI voice calls in the same regulated category as prerecorded calls rather than making them illegal outright. Marketing calls in that category need prior express consent, and prior express written consent for calls to wireless numbers, plus caller identification and a working opt-out. There is no general business-to-business exemption: the FTC’s Telemarketing Sales Rule exempts many B2B solicitations from the national Do Not Call registry, but the TCPA’s autodialer and artificial-voice rules apply to any number, and a sole proprietor’s mobile keeps full protection. Several states also run their own registries that reach business lines; counsel enumerates them for the target segment in Phase 0.
Sources: Wiley — FCC extends TCPA restrictions to AI-generated voices · LeadCompliant — B2B telemarketing rules
That collides directly with the naive version of this idea, because a large share of small-business phone numbers are the owner’s mobile. An AI voice cold-dialing that list is the expensive kind of mistake. So the engine is built consent-first, and the Concept Factory turns out to be the consent mechanism as well as the pitch.
- The concept is delivered before the call — by email, DM or an existing channel — as a link to the prospect’s own branded demo.
- The concept page carries the opt-in: a named, specific, written consent to be contacted by an automated or AI voice call about this concept, logged with timestamp, IP and the exact language shown.
- Only consented records enter the AI dialing queue. The Compliance Gate refuses the rest at the database level, not in application code.
- Non-consented prospects route to a human-dialed queue, where the same dossier and the same concept URL are used by a person. Both paths are in scope; only one of them can be automated end to end.
| Rule | Enforcement |
|---|---|
| Consent on file | Row-level: the dialer’s query cannot return an unconsented record |
| DNC scrub | National plus applicable state and internal lists, re-scrubbed within 31 days of the dial |
| Calling window | 8am to 9pm in the called party’s timezone, derived from area code and company address, with the stricter of the two applied |
| Identity disclosure | The opener states the caller’s name, the company on whose behalf the call is made, and that the voice is AI, within the first sentence |
| Opt-out | Honored in-call by intent, not keyword, and written to a suppression list shared across every campaign within 24 hours |
| Recording consent | Two-party-consent states get the notice before any audio is retained; state determined before the dial, not after |
Two further constraints are worth stating because they cost money. Voice cloning of a real person is out of scope entirely: the agent uses a synthetic voice that belongs to no one. And the agent never claims to be human, including when asked directly, which costs some connect-rate and removes an entire category of risk.
The residual risk is real and should be priced rather than hidden. TCPA exposure runs per call, class actions are the normal remedy, and no engineering control substitutes for counsel’s sign-off on the specific list, the specific script and the specific consent language.
Commercial models
A retainer for the build. Success fees for the thesis.
Figures below are the proposed rate card, not a quote, and every one of them is negotiable before signature. All amounts in USD.
Default — hybrid
| Component | Amount | Trigger |
|---|---|---|
| Build retainer | $18,000 / mo × 4 | Monthly in advance, covering Phases 0 to 5 |
| Operate retainer | $9,500 / mo | Begins the month after pilot readout, 3-month minimum, 30 days notice |
| Infrastructure | $1,400–2,900 / mo | At cost, passed through with invoices, at 100 concepts and 2,000 dials per month |
| Meeting fee | $250 | Per qualified meeting attended. “Qualified” is fixed in Phase 0 and does not move afterwards |
| Activation fee | $750 | Per activation surviving 30 days, paid on the 31st day, not on activation |
| Trailing share | 12% | Of attributable subscription revenue, 12 months from activation, from the client’s own billing export |
| Platform build | $60,000 | Phase 6 only, fixed, at the client’s option after the readout |
Swappable — the same SOW, three ways to pay for it
| Model | Up front | Ongoing | Upside | Term | Fits when |
|---|---|---|---|---|---|
| Hybrid (default) | $72,000 over 4 months | $9,500 / mo + infra | $250 / meeting, $750 / activation, 12% trailing for 12 months | 12 months from pilot | The client can fund a build and wants the operator’s incentives pointed at activations |
| Joint venture | Nothing | Infra split 50/50 | 35% of attributable subscription revenue for 24 months, plus $150 per qualified meeting from the calling partner | 24 months; unwinds below 500 dials in the first 90 days | Partners bring product and phone time but no cash |
| Fixed fee | $9k / $21k / $34k / $42k / $24k / $16k per phase | None, or a separate operate SOW | None | Per phase | The client wants the asset, not a partner, and will run it themselves |
Attribution decides the money, so it is mechanical rather than negotiated after the fact. Every concept carries an ID that travels through the demo URL, the signup link and the client’s activation webhook. An activation is attributable when it occurs within 90 days of a dial or a concept view carrying that ID, and the CRM row is the record of truth for both parties. Either side may audit it on 10 days notice.
Payment is net 15 for retainers and net 30 for success fees. Success fees are computed monthly from the client’s own billing export, so no party depends on the other’s dashboard.
Intellectual property. Scarlet Beast retains the engine, its code and its templates, and grants the client a perpetual, non-exclusive licence to run it for the client’s own offers. The client owns its prospect list, the concepts built for it, its call recordings and its CRM data. Segment exclusivity is available as a priced add-on under the fixed-fee model; under the joint venture it is implicit for the term.
Unit economics and pilot metrics
A bespoke demo costs about two dollars.
The variable cost of a 100-prospect campaign is roughly $210, and 95% of it is the concepts rather than the calls. That ratio is the finding that matters: giving away a working, bespoke demo to a stranger costs about two dollars, which is why the concept can precede the qualification instead of following it.
| Item | Unit cost | Basis |
|---|---|---|
| Enrichment and fingerprinting | $0.15 | Per prospect — enrichment API plus headless page loads |
| Concept build | $1.20 | Per concept — provisioning, brand extraction, product configuration, capture and encode, deck render |
| Visual QA | $0.85 | 2 minutes of a reviewer at $25/hr, on the 10% sampled plus every rejection |
| Unconnected dial | $0.015 | Carrier only — roughly 88 of every 100 dials |
| Connected call | $0.54 | 3 minutes: carrier 0.04, transcription 0.02, reasoning 0.11, speech 0.36, storage 0.01 |
| Campaign of 100 | ~$210 | $200 in concepts, $8 in telephony, the remainder in enrichment |
Speech synthesis is two thirds of the cost of a connected call, so it is the first line to renegotiate at volume and the first place a cheaper model gets benchmarked in Phase 3.
| Funnel stage | Concept arm | Control | What it tests |
|---|---|---|---|
| Decision maker reached | 12 / 100 | 12 / 100 | List quality, not the pitch. Identical by construction |
| Past 60 seconds | 8 | 5 | Whether the opener buys attention |
| Concept opened | 6 | — | Whether the prospect actually looks |
| Qualified meeting | 3 | 1 | The primary endpoint |
| Activation within 30 days | 1 | 0 | Directional only at this sample size |
Those numbers are hypotheses to be measured, not commitments, and the pilot has to be honest about its own power. At 100 dials per arm, a lift from 1% to 3% on meeting rate is indistinguishable from noise; detecting a move from 3% to 7% with 80% power takes roughly 465 dials per arm. The 100-dial pilot is a smoke test that proves the machine runs end to end and produces clean, attributable data. The powered comparison needs about 1,000 dials in total, which the engine can deliver in a week once Phase 3 is accepted.
One metric governs whether any of this ships: cost per qualified meeting, loaded with retainer and infrastructure. If it does not land below what the client currently pays an SDR for the same outcome, the readout says so.
Timeline, staffing and exclusions
Thirteen weeks, two hard dependencies.
Both start in week 1 regardless of which phase owns them: SIP trunk and number provisioning, and counsel’s review of the calling plan. Either one can put the whole schedule on the floor if it starts when its phase opens.
| Weeks | Running | Gate at the end |
|---|---|---|
| 1–2 | Phase 0, plus trunk provisioning and counsel review started | Calling plan signed, concept spec signed |
| 3–6 | Phases 1 and 2 in parallel | 1,000 scored prospects and 100 concepts built overnight |
| 7–11 | Phases 3 and 4 in parallel | 50 supervised calls inside the latency budget, dossiers packing in 20 s |
| 12 | Integration, consent delivery to the pilot list, first live dials | Both arms dialing, Compliance Gate refusing correctly |
| 13 | Phase 5 pilot completes, readout delivered | Go or no-go on Phase 6 |
| 14–19 | Phase 6, only if the readout says go | A second tenant self-onboards |
Staffing is four people, none of them full-time across the whole engagement. Technical lead and architect at 0.8 FTE throughout; one backend engineer at 1.0 FTE on Phases 1, 2 and 4; one telephony engineer at 1.0 FTE on Phase 3; a designer doubling as visual QA at 0.3 FTE on Phases 2 and 5. From the client: a product owner for four hours a week, counsel in Phase 0, and a human closer reachable during pilot calling hours.
Assumptions. The client provides the product, a sandbox or partner account and credentials within five business days of start; the product can be provisioned and configured programmatically, or the client’s engineers provide an install path; counsel is available in Phase 0 rather than at the end; a trunk and numbers can be provisioned in the client’s name; and the chosen segment contains at least 3,000 identifiable companies with a public web presence. If the segment is thinner than that, Phase 0 picks a different one.
Out of scope unless added by change order: legal advice of any kind; DNC list subscriptions and carrier fees, which pass through at cost; building or modifying the client’s own product; connectors beyond the first one, which are priced per platform; inbound call handling, SMS, and any email sequencing beyond delivering the concept and capturing consent; integration with an existing CRM such as Salesforce or HubSpot; voice cloning of any real person, which is refused rather than priced; calling outside the United States and Canada, and calling in any language other than English; and closing the deals, which stays with the client’s closer throughout.
Open questions
Eight answers make this signable.
The first two change the price.
- Which segment and which product go first? Every estimate above assumes one of each.
- Who holds the calling number and the consent records — Scarlet Beast or the client? This allocates TCPA liability, and counsel should decide it, not the SOW.
- Which commercial model, and who funds infrastructure in the months before any revenue?
- Can the product be provisioned and configured programmatically without the client’s engineers touching it? If not, Phase 2 grows.
- Does the product emit an activation webhook carrying a referrer parameter? Without one, attribution falls back to self-reporting and the trailing share gets argued about.
- What does the client pay today for a qualified meeting? That is the number the readout is measured against.
- Whose closer takes the warm transfers during the pilot?
- Is the control arm acceptable? It spends about 100 dials of potential pipeline to find out whether the concept is doing the work — and it is the only part of this plan that can prove the idea rather than assert it.