Files
rutster/docs/reviews/2026-07-03-market-feature-scan.md
Aaron D. Lee 4c36a4ded3 docs(reviews): 2026-07-03 adversarial review + market feature scan
Direction/progress pressure-test (D1-D6, P1-P6, R1-R3) and the
boost.ai/Parloa/Vapi cohort scan (F1-F7, adjacencies A1-A11).
Standing backlog for planning sessions.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018vNe64BBDkgo5oQVkBa3XF
2026-07-04 00:00:57 -04:00

15 KiB
Raw Blame History

Market Feature Scan — Enterprise Voice-AI Cohort & Natural Adjacencies

  • Date: 2026-07-03
  • Scope: Feature surfaces of the enterprise conversational/voice-AI cohort (boost.ai, Parloa, PolyAI, Cognigy) and the builder-tier platforms (Vapi, Retell), mined for capabilities that translate to engine primitives — plus a map of the natural adjacencies that fit rutster's niche. Companion to the adversarial review of the same date.
  • Framing constraint (maintainer-stated): rutster is a toolkit for DIY builders and integrators — not another UCaaS/CCaaS product. Every feature below is evaluated as an engine primitive a builder composes, never as a turnkey SaaS feature to clone. The filter is ADR-0008's FOB/green-zone test plus the capability ladder.
  • Status: Advisory research record. Items marked ★ are candidates for future specs/ADRs.

Part I — The cohort, briefly

Player What they are Why they matter to rutster
boost.ai Gartner-MQ-leader enterprise conversational-AI suite (chat+voice), regulated-industry heavy, quote-priced SaaS Their feature surface is a map of what regulated contact-center buyers pay for
Parloa Voice-first "AI agent lifecycle" platform (Design/Test/Scale/Optimize), PCI DSS/DORA positioning Their Test phase (simulation + evals) is the single most engine-translatable idea in the cohort
PolyAI Voice-specialized agent platform, caller-interaction craft Less to mine — differentiation is craft, not primitives
Cognigy Omnichannel enterprise platform; acquired by NICE for ~$955M (closed 2025-09) The acquisition price validates the domain; omnichannel is the anti-pattern to refuse
Vapi / Retell Builder-tier cloud voice-agent platforms, per-minute pricing Closest to the rutster persona; sets the developer-ergonomics bar (not the enterprise-surface bar)

Structural observation: every serious player is enterprise-only or cloud-only. There is no self-hostable engine in the category — the "Asterisk slot" is empty. Separately, a dedicated SaaS category exists just for voice-agent testing/evals (Cekura, Coval) — confidence is a product buyers pay for on its own.

boost.ai's most instructive move: their voice line splits into Express Voice (speech-to-speech, direct to multimodal models) and Enterprise Voice (cascade STT/LLM/TTS for regulated scenarios). The market leader productized exactly the s2s-vs-cascade duality — independent confirmation of adversarial-review finding D3: the tap must treat both brain shapes as first-class, and a cascade reference brain belongs in examples/.


Part II — Features worth incorporating (ranked by engine-fit)

F1. ★ Simulation testing / synthetic callers (rutster-sim) — the standout

Source: Parloa Test — thousands of simulated conversations pre-deployment (one model plays the caller, one runs the agent), scored by deterministic checks + LLM-as-judge. Cekura/Coval sell this as standalone SaaS. Nobody ships it self-hosted.

Why rutster is structurally close: the tap is symmetric. A synthetic caller is just a media-leg ingress speaking audio, and the slice-3 mock brain is already half the harness. A rutster-sim that runs scripted/LLM-driven caller scenarios against a call flow in CI, from the terminal is perfectly shaped for the git-versioned builder persona.

One build, three payoffs:

  1. Regression evals (rung 34: "eval sets that regression-test past failures" — already in the vision doc, now with a mechanism).
  2. Load testing (N concurrent synthetic callers).
  3. The latency/barge-in benchmark from adversarial-review R2 — the same harness.

Disposition: FOB-adjacent tooling (differentiating). Strongest single feature candidate in this scan.

F2. ★ Warm handoff as a protocol, not just a barge (rung-2 sharpening)

Source: 2026 table stakes across the cohort — structured pre-transfer summary (who's calling, what they want, what the AI attempted, why escalating, sentiment) delivered to the human via whisper-audio or screen-pop before bridging.

Engine translation: rung 2 currently reads "human agent barges in / takes over." Sharpen to a handoff protocol:

  • A typed handoff artifact as a first-class event in the tap protocol / event stream.
  • Whisper-play into the human leg before bridging (the audiohook primitive already retained from Asterisk covers the media side).
  • Call variables passed to the destination via the event stream.
  • Reverse direction (cheap, later): brain stays on post-handoff as a copilot whispering to the human — same audiohook, Cresta-shaped, also unshipped self-hosted.

Disposition: FOB (differentiating; the escalation primitive is the white space).

F3. Outcome-native CDR + the call-record bundle

Source: boost.ai CX Insights — auto-review of every conversation, outcome categorization (why automated vs escalated), quality rating/tagging; their sales pitch is the numbers ("70% automation, 75% FCR").

Engine translation:

  • Containment / escalation-reason / resolution as native CDR schema fields, not integrator bolt-ons. Containment rate and first-contact resolution are the KPIs of the category; the schema should speak them natively.
  • A canonical call-record bundle (audio + transcript + event timeline + outcome) plus a post-call hook, so a builder points any LLM at it for automated review. rutster ships the bundle format and the hook; the ecosystem ships dashboards.

Disposition: schema = FOB-adjacent (call model / CDR); review loop = green zone via hook.

F4. Mid-call brain transfer ("squads-lite")

Source: Vapi Squads — one call routed across specialized agents (triage → specialist → closer).

Engine translation: slice-2's tap reconnect machinery already survives brain disconnects; making the brain URL switchable per-call via the API turns that into a brain-transfer primitive. Small delta, large composability win for integrators.

Disposition: FOB (tap engine); near-term cheap.

F5. Cost metering inside the spend gate

Source: Vapi/Retell per-call cost breakdowns per component.

Engine translation: rutster-spend is planned as a cap; it should also be a meter — per-call attribution of CPaaS minutes + brain usage, emitted into the CDR. For integrators this is load-bearing unit economics: they resell on margin, and cost-per-contained-call is their P&L line.

Disposition: FOB (spend gate is constitutive); extend step 6's scope.

F6. PCI redaction primitive

Source: Parloa's PCI DSS/DORA positioning; standard enterprise requirement.

Engine translation: pause-recording / segment redaction + DTMF masking on the audiohook path during payment capture. FOB by ADR-0008's own test (security-constitutive, in the media path); directly serves the compliance wedge.

F7. A/B traffic splits at the routing layer (defer, keep the seam)

Source: Parloa's Bayesian A/B testing of agents.

Engine translation: percentage split between two brain configs at the routing layer, variant recorded in CDR; the integrator (or a small service) does the statistics. Defer the feature; design the routing seam so it's possible.


Part III — Natural adjacencies (what fits the niche)

Mapped in rings, from "falls out of primitives already owned" outward.

Ring 1 — falls out of the substrate

★ A1. Graceful degradation when the brain is down. The claim only self-hosted can make: every cloud voice-AI product is the dependency — when the model API 503s, their customers get dead air. rutster terminates media locally, so it can degrade: brain unreachable → deterministic local IVR / structured voicemail / straight-to-queue. "The phone still answers when the AI doesn't." FOB (hot-path, unenforceable from outside the media). Candidate for explicit capability-ladder placement.

★ A2. Local keyword reflexes — the "operator!" reflex. The second instance of the local- reflex doctrine after barge-in: caller says "agent" / "human" / "representative" or mashes 0 → local detection fires the escalation policy regardless of the brain's behavior. Outbound flavor: "stop calling" → TCPA opt-out enforced locally, recorded in the audit surface. Small keyword-spotting models make this feasible without a brain round-trip. Strategically, this is a better demo of reflexes-as-moat than barge-in alone, because it's a policy guarantee ("callers can always reach a human / opt out, even if the AI misbehaves") — the auditable boundary made concrete.

A3. The call archive as data gravity. Media + CDR are already owned; a searchable archive (the F3 bundle, indexed) is nearly free and is the substrate rungs 34 stand on. Years of a business's calls in their object storage is the compounding moat. Natural extension: QA on human agents too — the same LLM-review loop scores human calls (Observe.AI/Cresta's business, sold as SaaS on calls the customer doesn't own). One loop, both populations, self-hosted.

A4. Bread-and-butter thin layers: Voicemail 2.0 (AI answers → structured message → summary to email/Slack); queue callbacks ("press 1 to hold your place"); transactional SMS as a tool call via the CPaaS API ("I'll text you the link"). Scope note recorded deliberately: SMS-from-a-call is a tool call (green zone, fine); an SMS channel is omnichannel creep (refuse).

Ring 2 — the deployment-shape insight

★ A5. Multi-tenancy is the integrator's actual unit — decide its timing explicitly. The 2006 pattern was not one Asterisk per SMB; it was one integrator box serving dozens of clients (Vicidial hosting, multi-tenant FreePBX builds). The docs list hard multi-tenancy as a pillar, but the spearhead and ladder are implicitly single-tenant. If the integrator is half the persona, tenant-scoped numbers/brains/spend-caps/recordings/event-streams are the difference between a DIY toy and a thing an integrator bets a client book on. Retrofitting tenant IDs into a CDR/config schema is miserable — the timing decision deserves an ADR or spec note before the CDR/config schemas ossify.

A6. Verticals arrive via the integrator, not via rutster. Dental/medical intake (HIPAA — needs the graduation path), trades dispatch and after-hours answering, law-firm intake, restaurants, property management, municipal 311-style lines (public sector's sovereignty preference — boost.ai's traction there validates it). The engine's job is to make each vertical a template someone else ships (→ Ring 3).

Ring 3 — ecosystem artifacts (host the conventions, don't build the products)

  • A7. Brain adapters — OpenAI Realtime (shipped), Gemini Live, cascade reference (Whisper + open LLM + local TTS), local s2s when it matures. The adapter registry is the integration surface (Home Assistant model).
  • A8. Scenario/eval packs — community-shared synthetic-caller suites for rutster-sim ("dental-intake pack: 40 scenarios, expected outcomes"). Evals-as-shareable-artifacts turns F1 into an ecosystem; vertical eval packs are how integrator knowledge gets encoded and traded.
  • A9. Vertical starter kits — routing config + prompts + eval pack + tool definitions per vertical. The "thousand integrator builds" pattern, git-cloneable.
  • A10. A Terraform provider / declarative reconciler — the Kubernetes model is already ratified; terraform-provider-rutster (or the native reconciler) makes "Terraform for call centers" literal, and it's the artifact the persona expects to exist.
  • A11. The homelab wedge — a Home Assistant integration. A phone line into HA Assist: call the house, AI answers, controls the home, takes messages. Strategically small but precisely the persona's watering hole; demo fuel OpenAI-direct cannot replicate (local control plane); the historical ignition path for self-hosted projects (r/selfhosted → blog posts → integrators discover it). Cheap, viral, on-thesis.

Part IV — Explicit refusals (the Five9-parity fence, restated)

Product-shaped features observed in the cohort that rutster must not incorporate:

  • Visual no-code flow builders (Vapi Flow Studio, boost.ai canvas) — GUI territory; the reference GUI is a pure API client and the ecosystem's problem.
  • Knowledge-base / RAG hosting — a brain concern; the integrator wires retrieval into their brain; the tap doesn't care.
  • Prebuilt intent libraries; managed dashboards.
  • Omnichannel chat/messaging suites. One deliberate deferral recorded: text frames in the tap protocol would be nearly free and opens a text-channel door later — decide consciously (for or against) rather than by accident when someone PRs it.
  • Workforce management / scheduling; CRM — deep CCaaS territory.
  • Being a CPaaS (number resale, SMS routing); being an SBC; video; meetings/UCaaS.
  • Voice biometrics — will be requested for regulated verticals; genuinely useful; must be a green-zone integration point (an audiohook consumer), never FOB.

Part V — The through-line (a filter for future feature requests)

Nearly everything that naturally fits is one of three shapes:

  1. A reliability/policy guarantee only local media termination can make — degradation (A1), escape-hatch reflexes (A2), opt-out enforcement.
  2. A data-gravity loop on calls the operator owns — archive, QA, evals, training signal (A3, F1, F3).
  3. An ecosystem convention — adapters, packs, templates, providers (A7A11).

If a proposed feature is none of these and is not already on the capability ladder, it is probably someone else's product.

Promoted to planning (schema-touching, expensive to retrofit):

  • A1 — brain-down degradation → capability-ladder placement.
  • A5 — multi-tenancy timing → ADR/spec note before CDR/config schemas ossify.

Sources