Always-on journeys
Private betaKarmakar Venturesgithub.com/letslego/vertical-ops-pack

Industry packs that keep the chair, the truck, and the review — not just the chatbot greeting.

A versioned YAML pack plus a generic harness. The worked vertical is dental: intake → qualify → book → no-show recovery → review ask. HVAC is a pack copy, not a rewrite of the runner.

Vertical Ops Pack — voiceover demo

Who it's for

Dental, HVAC, and similar appointment businesses — and the agencies who already run their front desk in Slack.

  • Practice or shop owners who lose the no-show and never send the review ask
  • Agencies packaging “AI receptionist” who need a journey, not a prompt
  • Operators who want seed-stable demos before they touch a real calendar

The problem

The bot collected a name. Nobody checked insurance. The chair was double-booked. The no-show sat until tomorrow. The review text never went out. That is not an ops pack — that is a form with extra confidence.

What breaks without it

  • Journeys live in prompts, so qualification rules drift per customer.
  • Calendar writes are not idempotent; a crash books twice.
  • No-show recovery and review-ask are “phase two,” which means never.

How it works

Concrete path through the private beta — not a capability cloud.

  1. Author a pack

    YAML or JSON, apiVersion opspack/v1. Zod validates it. Required step kinds: intake, qualify, book, await_appointment, recover, review, exit. JSON Schema is in the repo for editors.

  2. Run on a generic harness

    PackRunner executes one step per tick against mock CRM, calendar, SMS, and email. State persists after every tool call. Time is a SimulationClock so demos do not depend on wall-clock luck.

  3. Recover and review, on purpose

    The dental pack (Bright Smile — New Patient Ops) qualifies insurance and service, books a 45-minute weekday chair, waits two hours to recover a no-show (max two attempts), then asks for a review 24 hours after a completed visit.

  4. Add HVAC without forking the runner

    Copy packs/dental/pack.yaml, change metadata, hours, qualification, and templates. Validate, install, simulate. The runner does not need to change.

Proof points

From the working repo and demo scripts. Design partners welcome. No fabricated case studies.

  • Complete dental pack in-repo: insurance rules, 45-minute chairs, 2-hour no-show recovery, 24-hour review ask.
  • Happy-path, no-show, and unqualified journeys are seed-stable. npm run demo runs them end to end.
  • Crash mid calendar.book, then resume — no double-booking. Idempotency keys are journey:step:visit:tool:suffix.
  • Small admin UI on :4173 installs the dental pack on boot. Design-partner verticals (HVAC next) slot in as YAML.
  • No fake clinic logos. Bright Smile Dental is the demo practice in the pack, labeled as such.

Join waitlist / book a 15-min pilot

Tell us you want Vertical Ops Pack. We'll reply with a demo path, not a deck.

FAQ

Do you connect to my real PMS / FieldEdge / Housecall Pro today?

The private-beta runner uses mock CRM, calendar, SMS, and email so simulations stay deterministic. A design-partner pilot is where we wire your systems. The pack schema and durable step state are the parts that stay.

Why YAML instead of a visual builder?

Packs are versioned documents you can diff, review, and simulate. A builder can emit the same schema later. Starting with YAML means the dental pack is real, not a screenshot of a canvas.

What happens on a no-show?

After delayHours (2 in the dental demo), the recover step texts and emails a held slot. It retries up to maxAttempts. Exhausted recovery exits as abandoned instead of looping forever.

Can I run this without an LLM?

Yes. Qualification is rule-based. Templates are filled from lead and appointment fields. That is why tests and demos do not drift.

Is HVAC actually supported?

The runner is vertical-agnostic. HVAC is the documented next pack: copy, retarget hours and qualification, install. We will not pretend a full HVAC YAML ships until it does. Design partners can bring that pack.