Skip to content

Nº 37

This week at Roark

August 31 to September 6, 2026

A lot landed this week, and most of it is about testing the awkward edges of real phone calls: call screeners answering before your agent gets through, IVRs waiting on DTMF, silences the simulator used to talk over. The other half is developer surface, browser-based CLI login and alerts in Config as Code.


01

☎️ Test agents that call into a screener

Your agent rarely gets a clean hello anymore. Apple and Google screeners answer first and decide whether to connect, decline, or take a message, and enterprise numbers gate the call with an IVR or an identity check. You can now model any of these as a scripted opening, chain them in front of your improv flows, and run the whole thing end to end.

Scripted call-screener opening linked in front of an improv flow

What's new:

  • Screeners as scripted openings: build the front door once (Apple/Google-style "who's calling and why", an IVR menu, an identity check) and link it as the opening for many improv flows. Test the connect path, the decline path, and the take-a-message path as separate branches off the same screener.
  • Ask Roark builds the pattern for you: point it at a set of calls that share the same opening and it will split out the scripted screener, link it back to the improv flows, and prompt for the variables at run setup.
  • Faithful silence handling: when the screener or IVR expects a pause before its next prompt, the simulator now waits with it instead of speaking early. Fixes the class of run where prompts appeared to play that were never in the test case.
  • Clearer step roles in the editor: scripted customer nodes are labeled as Roark's simulated caller, agent nodes as expected responses, and First message is only offered where it belongs.

02

🔐 Browser CLI login + Config as Code for alerts

roark auth login now opens your browser instead of asking for a pasted token, and Config as Code can define alerts alongside your agents, flows, and metrics.

Alerts defined as code alongside agents, flows, and metrics

What's new:

  • Browser login (OAuth + PKCE): approve in the platform, no more copy-paste tokens. --paste still works, and piped stdin still takes a token so CI is unchanged.
  • kind: alert in config: version-control threshold, event, and simulation monitors, with Slack and webhook delivery.
  • Cleaner diffs: unchanged config-managed resources show as noop in roark diff, instead of scrolling past a wall of identical lines.
  • API-key scope: Config as code is now a first-class permission in the picker.

👉 See the Config as Code overview


03

📞 Reverse-IVR testing with agent DTMF

Simulate an IVR from the agent's side: script the digits you expect the agent to press, capture them live, and grade them automatically.

Agent DTMF captured on the agent's side of a simulation transcript

What you can do:

  • AGENT_DTMF flow steps: add them anywhere in a scripted flow to declare which keys the agent should press at that point.
  • Deterministic scoring: the new dtmf_input_correct metric compares position by position and fails wrong-order sequences, which is exactly the wrong-branch case reverse-IVR testing exists to catch.
  • Live view: keypresses render on the agent's side of the transcript as [DTMF: 1 2 3], distinct from anything the agent said out loud.

04

🔧 Customer API: pagination, variants, async tool invocations

The customer API picked up pagination, variants, and a proper async endpoint for tool invocations, plus a few quality-of-life polish items.

What's new:

  • Paginated metric definitions: stop pulling the full list on every fetch.
  • Metric variants exposed: list a metric's variants directly, and get a helpful response instead of a 403 when you pass a variant to a metric that doesn't support one.
  • Judge rubric + live-only flag returned on GET /metric-definitions, so integrations don't have to look them up separately.
  • Async tool-invocation append: attach tool calls to an existing conversation after the fact.
  • enrichWithLiveConversation accepted on run creation, and unknown keys no longer get silently dropped.
  • OpenAPI served at the standard path, where every code generator already looks.

👉 Browse the API reference


05

🧪 Calmer simulation authoring

A batch of authoring improvements across simulations and personas that add up to a much smoother workflow.

What's new:

  • Knowledge Base Grounding template: pre-attaches faithfulness, ungrounded-claim, and missed-answer metrics; pick which KBs to score against and go.
  • Bulk-add run calls to a dataset: promote a whole run's worth of calls in one action.
  • Auto-attach Agent Expectations: any run whose flows declare expectations picks them up without a manual step.
  • Personas get folders and drag-to-reorder: the picker leads with your recents and the workhorse personas, custom ones sort in the order you set on the hub.
  • Ask Roark is folder-aware for flows and personas, and can file things away as it creates them.
  • Inline metric config wherever a metric is attached, not only at run creation.

From

James