RIFF · Go-to-market — internal plan

The Showcase Flow & the Path to a First Customer

One demo call that makes a prospect see why riff is good — and the concrete work between that demo and a billing customer. Pairs with Path to Revenue (business model + infra blockers) and the customer pitch (pricing).

Draft · 2026-06-19 · scenario chosen: after-hours night-shift receptionist · this is a planning artifact, not the product

1. The thesis

A prospect doesn't buy an architecture diagram. They buy one phone call that goes right — and a reason to believe it'll go right every night. So the centerpiece of the sale is a single showcase flow: a realistic after-hours call that, in under a minute, fires every feature that matters and ends with a correct booking and a text in the caller's hand.

The job of this page: (1) script that call and map each moment to the feature it proves, (2) state the trust story — why "it won't make things up" is engineered and measured, not claimed, and (3) list what's left to build to turn the demo into a billable service.

2. The demo call — one minute, every feature

An after-hours call to a plumbing/HVAC business. The right margin names the feature each turn demonstrates. The caller deliberately front-loads (the hard case) to show riff handling it.

RIFF
"Thanks for calling Lone Star Plumbing — we're closed, but I can take a message or book you in. What's going on?"
Live + framedAnswers in ~2s, states what it can do. No phone tree.
Caller
"Hi, my water heater's leaking — this is Dave Chen, 512-555-0199, can someone come Tuesday morning?"
Front-loadFour facts in one breath: issue + name + phone + time.
RIFF
"Got all that, Dave. Let me read it back: a leaking water heater, callback at 512-555-0199, and you'd like Tuesday morning. Is that right?"
Skip-if-filled + read-backCaptures all four in one pass (front-load algo R2), skips re-asking, then voices every value back (the confirm is never skipped). No "Got it!" dead-air.
Caller
"Yep — actually make it 8am if you can."
CorrectionCaller revises a slot mid-confirm.
RIFF
"8am Tuesday it is. We have that slot open — booking it now… you're in. I'm texting you a confirmation."
Calendar booking + SMSWrites the real booking, sends the caller an SMS receipt. Never says "booked" unless it committed.
RIFF
"One thing — a leak can get worse fast. If it floods before then, say 'emergency' and I'll page the on-call tech."
Escalation pathRecognizes an urgent class, offers a human hand-off — the safety valve.

Two variants to keep in the demo's back pocket: (a) garbage-rejection — if the caller mumbles and the name comes through as "a service appointment," riff re-asks instead of confirming junk (validator R3); (b) degraded-mode — if Google Calendar is down, it doesn't fake a booking, it takes a message and says a human will confirm (the provider degrade-gracefully contract).

3. What each moment proves

Demo momentFeatureWhy the customer cares
Caller dumps 4 facts at onceFront-load capture + skip-if-filled (R2)Real callers don't answer one question at a time. It feels like a competent person, not a form.
"Let me read it back…"Joined read-back confirm (Collect Pattern)The caller catches a wrong number before they hang up. Accurate messages = the whole job.
"actually make it 8am"Correction handlingPeople change their minds. It doesn't get confused or re-ask everything.
"booking it now… you're in"Calendar write + honest statusIt only says "booked" when the booking committed — no false promises.
SMS receiptSMS hand-offThe caller has it in writing; the business has a record.
"say 'emergency'"Escalation to humanThe 2am flood gets a person. The bot knows its limits.
Calendar-down fallbackDegraded-mode providersA vendor outage never means a silently-lost customer.

4. Why a prospect should believe it (the trust story)

The roadmap says to lead with reliability, not price — "won't hallucinate, takes accurate messages." That claim is only credible because it's engineered and measured:

+1.5
quality lift from the Collect Pattern (judged A/B) on the flow that previously "confused the order"
−1.2 → +0.4
the front-load algorithm turned the pattern's worst case into a win — engine-wide
both paths
every flow is gated against paced and front-loading callers before it ships
~4,800
tests; a seeded LLM-judge gate that now fails loud on its own rate-limits

The sales line: "It's not winging it. Every flow passes a graded quality bar — on the easy callers and the messy ones — or it doesn't go live." That is a differentiator budget bots can't make.

5. Build the showcase flow (the actual work)

The demo above is a flow we author and gate like any other — it must clear the bar before it represents us.

  1. Author night_shift_receptionist.yamlCollect Pattern intake (issue + name + phone + time, multi-slot listens) → joined read-back → branch: book (calendar) vs take message (SMS) vs emergency (escalate). Reuse the shipped patterns from restaurant_reservation + pizza (branch) + the escalation exit.
  2. Wire the real providers in demo modeA demo Google Calendar + a demo SMS number, so the booking and the text actually happen on the call. Verify the degraded-mode fallback by killing the calendar mid-demo. VERIFY
  3. Gate it: scripts/flow-pipeline.sh night_shift_receptionistMust clear ≥7.0 on cooperative + corrector + oversharer (both caller paths) before it's the demo. If it doesn't, the judge's notes say what to fix.
  4. Script the live callA repeatable 60-second scenario (the transcript above) + the two back-pocket variants (garbage-reject, calendar-down). Rehearse so the demo is the same every time.

6. From "great demo" to "billing customer"

The demo proves the conversation. These are the gaps that make it a service — carried over from Path to Revenue, in the order they block a sale.

GapStatusWhy it blocks a paying customer
P0 Verify unit economicsPartialFill real Telnyx + Gemini Live prices. Confirms $1/hr clears cost — everything depends on it.
P0 Finish human message hand-offStubReliably deliver the message (SMS/email) or escalate. This is the product, and the demo leans on it.
P0 Multi-tenancyMissingServe customer #2 without a code change: tenant_id, per-tenant flow/number/calendar.
P0 Auth + secrets off the laptopMissingTranscripts are readable without auth today; prod needs a secret store + bearer auth.
P1 Usage metering → billingMissingCan't bill hours you can't count. Wire per-tenant minutes → Stripe.

The honest sequencing: the showcase flow (§5) is buildable now and lets us run sales conversations + a pilot. The P0 list is what converts a pilot into a billed, multi-customer service. Demo first (proves value, cheap); P0 second (unlocks revenue, heavier).

7. Open decisions (for us to settle)

  1. Lead verticalPlumbing/HVAC (urgent, high-value calls — escalation shines) vs salon/clinic (volume booking — Collect Pattern shines)? The showcase flow is built around one. Recommendation: home-services (plumbing) — the emergency path is the most visceral demo moment.
  2. Live call vs recordedDial a real number on the demo (highest impact, needs the providers wired) vs a polished recording (zero risk, less wow). Recommendation: build for live, keep a recording as fallback.
  3. Pilot definitionWhat's the smallest paid pilot — one business, a few nights, manual billing — that we can run before the full P0 multi-tenancy/billing is done?