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

261 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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](2026-07-03-adversarial-review.md) 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
- boost.ai: [upgraded voice offering (Express/Enterprise Voice)](https://boost.ai/announcements/introducing-upgraded-voice-offering/) ·
[AI-powered CX Insights](https://boost.ai/announcements/boost-ai-introduces-ai-powered-cx-insights/) ·
[conversational AI platform](https://boost.ai/product/conversational-ai-platform) ·
[voice AI overview](https://boost.ai/learn/voice-ai/)
- Parloa: [Test (simulation)](https://www.parloa.com/platform/test/) ·
[simulations & evaluations](https://www.parloa.com/resources/blog/simulations-and-evaluations-ensure-ai-agent-reliability/) ·
[Bayesian A/B testing](https://www.parloa.com/blog/ai-agent-testing/) ·
[Parloa × OpenAI](https://openai.com/index/parloa/)
- Cohort comparison: [Cognigy vs Parloa (incl. NICE acquisition)](https://www.webfuse.com/compare/cognigy-vs-parloa)
- Builder tier: [Vapi review (Retell)](https://www.retellai.com/blog/vapi-ai-review) ·
[Retell vs Vapi (Cekura)](https://www.cekura.ai/blogs/retell-vs-vapi)
- Handoff: [warm transfer without losing context](https://www.sigmamind.ai/blog/warm-transfer) ·
[AI-to-human handoff guide (Telnyx)](https://telnyx.com/resources/ai-to-human-handoff-voice-ai)