Anchored rehearsal coaching

Greenroom.

A practice-run recording goes in. A coaching bundle comes out: deterministic filler counts with timestamps, pacing analysis per segment, weak-phrase rewrites, cue cards for the live show, and a 0-100 energy/clarity score. The coaching bundle is itself anchored to the Knox event chain plus OpenTimestamps Bitcoin proof — bundle integrity verifies from the bundle bytes alone.

Recording in, coaching bundle outDeterministic filler countsKnox event-chain anchorOpenTimestamps Bitcoin witnessFRE 902(13)/(14)-shaped self-authenticatingStandalone verifier CLI

Walkthrough

A 50-second voice-narrated tour.

Narration synthesized by macOS Premium neural voice (Ava); screen capture rendered headlessly against this same live page via Playwright. No human voice, no human image — fully synthetic, fully reproducible.


What Greenroom produces

Four measurements + cue cards, anchored.

The coaching pipeline is deterministic where the signal is measurable, and Sonnet-driven where the signal is qualitative — and every artifact in both classes is hash-anchored before it reaches the bundle.

Measurement · deterministic

Filler-word counts

14 default phrases (um, uh, ah, er, like, you know, i mean, kind of, sort of, basically, literally, actually, right, so yeah) counted with exact recording timestamps. The default phrase set is configurable. Output is a sorted list of (phrase, count, timestamps[]) — the same recording produces the same counts on every run.

Measurement · deterministic

Pacing analysis

180 fast / 100 slow words-per-minute thresholds applied across segments of at least 5 seconds. Each flagged span includes the WPM observed, the threshold crossed, and the segment timestamp range. Surfaces the exact moment a presenter rushed or stalled.

Measurement · LLM

Weak-phrase rewrites

A coaching-specific Sonnet prompt extracts hedging language (I think maybe we could, sort of like, kind of believe) and proposes concrete rewrites (we will, the data shows, we believe). Each rewrite cites the source line + timestamp.

Measurement · LLM

Cue cards + energy score

A slide-by-slide cue-card list extracted from the transcript, plus a 0-100 energy/clarity score with the specific lines flagged that drove it. The same prompt + recording produces the same score, given the same model snapshot.


Engine plus skin

One primitive, many surfaces.

The Anchored Receipt Engine is the substrate: a recording in, a transcript + structured extraction + Knox anchor + OpenTimestamps proof + FRE 902(13)/(14)-styled PDF certification template (operator-fill) out. Greenroom is one skin that consumes a receipt bundle from the engine and produces a coaching bundle. The engine ships once; skins compose atop it.

The flow

recording → arc.bonissystems.com /v1/receipts → receipt bundle (transcript + extraction + Knox anchor + OTS proof) → arc.bonissystems.com /v1/coaching → Greenroom coaching bundle (filler counts + pacing + rewrites + cue cards + score, itself Knox-anchored + OTS-anchored)

Two receipts, two anchors, two verifiable claims: the recording was processed exactly as represented, and the coaching analysis was produced exactly as represented. Both verify from their bundle bytes alone.


API surface

Try the engine.

The Greenroom coaching pipeline is exposed as a single bearer-gated endpoint at the Anchored Receipt Engine. Hand it a receipt bundle from POST /v1/receipts and it returns the coaching bundle.

# 1. Emit a receipt bundle from a recording
curl -X POST https://arc.bonissystems.com/v1/receipts \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -F "recording=@meeting.mp4"
# → returns: { bundle: { ... } }

# 2. Pass that bundle to the Greenroom coaching pipeline
curl -X POST https://arc.bonissystems.com/v1/coaching \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"bundle": <paste-bundle-from-step-1>}'
# → returns: { coachingBundle: { ... } }

The coaching bundle JSON returned by /v1/coaching verifies independently — every artifact hash, every Knox anchor, and every embedded .ots proof can be re-derived from the bundle bytes alone. Hand it to any reviewer and they can check it without contacting the engine again.


Verify it yourself

The verifier never contacts Bonis.

Each coaching bundle includes the full integrity surface: canonical-JSON manifest, per-artifact SHA-256 hashes, Knox anchor receipts (sequence number, payload hash, verification URL), and embedded OpenTimestamps proof bytes. The standalone verifier CLI ships with the engine package and runs offline.

Verifier exit codes

0 — bundle verified; all manifest + per-artifact hashes match
1 — bundle verification failed; manifest or per-artifact hash mismatch
2 — Knox anchor missing or unreachable (with --online)
3 — input or runtime error (file missing, bundle parse failure)

With --bitcoin-walk the verifier additionally decodes embedded .ots proofs, walks each to a Bitcoin block header against any Bitcoin node, and returns 0 only when all anchors confirm. Bonis Systems is not in the verification path.


Sample bundle to inspect

A real receipt + coaching bundle, packaged for download.

The archive below contains the three artifacts from a 41-second rehearsal recording — generated via macOS say for the demo: the audio file itself, the receipt bundle returned by POST https://arc.bonissystems.com/v1/receipts, and the coaching bundle returned by POST https://arc.bonissystems.com/v1/coaching. A README inside explains each file. Drop either JSON bundle into the in-browser verifier just below to recompute every per- artifact hash and the bundle manifest hash locally; no Bonis runtime contact required.

Download the sample bundle (zip, 178 KiB) →

Verify a bundle in your browser

Drop a bundle. Hashes are recomputed locally.

The verifier below ports the engine's canonical-JSON algorithm and runs it against the file you drop. SHA-256 is computed via the browser's Web Crypto API. The bundle never leaves the page; nothing is uploaded to Bonis. For each check the declared hash is compared to the value recomputed locally — bit-perfect or fail. Try it on the sample bundle above, or on any bundle the engine has previously emitted.

Loading verifier…

Anchor this visit

The page that explains anchored receipts can produce one of itself.

Click the button below and the browser builds a marker text — visit timestamp, user-agent string, 16-byte nonce — hashes those bytes via Web Crypto, and submits only the SHA-256 digest to the Knox public-anchor endpoint. The response is a Knox sequence number, an anchor hash, and a self-authenticating affidavit that you can download. The marker text never leaves your browser; only the digest does.

Loading anchor button…

What this is not

Greenroom is infrastructure, not a webinar platform.

Greenroom does not replace LiveKit, Zoom, Riverside, or Loom. It does not record the live show, host the audience, or run the broadcast. It does not retain the uploaded recording on Bonis infrastructure beyond the duration of the receipt-emission request — every request is stateless and the engine never sees user identity beyond the bearer token used to authenticate. Embedders are expected to front the engine with their own identity layer (SSO / IAP / VPC ingress). The Greenroom skin produces a coaching bundle from a recording; everything else is upstream of the primitive.


FAQ

Common questions.

What is Greenroom?

Greenroom is a rehearsal-coaching skin atop the Anchored Receipt Engine. A presenter uploads a practice-run recording, the engine produces a coaching report (deterministic filler-word counts with timestamps, pacing analysis per slide, weak-phrase rewrites with concrete suggestions, cue cards for the live show, and a 0-100 energy/clarity score), and the report itself is anchored to the Knox event chain plus an OpenTimestamps Bitcoin proof. 'Presenter completed N rounds of prep' becomes an independently verifiable claim — verifiable from the bundle bytes alone, with no runtime dependency on Bonis Systems at verify time.

How does Greenroom relate to the Anchored Receipt Engine?

The Anchored Receipt Engine (live at arc.bonissystems.com) is a standalone primitive: take a recording, transcribe it via Whisper, extract structured Q&A and decisions via Sonnet, hash every artifact, anchor to the Knox event chain plus OpenTimestamps Bitcoin proof, emit an FRE 902(13)/(14)-styled PDF certification template (operator-fill) and a standalone verifier CLI. Greenroom is one skin atop that engine — it consumes a receipt bundle from the engine and produces an anchored coaching bundle. Two distinct receipts, both bit-stable, both verifiable.

What does the coaching report measure?

Filler-word counts are deterministic — 14 default phrases (um, uh, ah, er, like, you know, i mean, kind of, sort of, basically, literally, actually, right, so yeah) counted with exact timestamps. Pacing analysis applies a 180 fast / 100 slow words-per-minute threshold with a 5-second minimum segment, flagging spans that drift outside the band. Weak-phrase rewrites and cue-card extraction run via a coaching-specific Sonnet prompt. Energy/clarity score is 0-100 with the specific lines that drove the score flagged inline.

How is the coaching bundle self-authenticating?

Each artifact in the coaching bundle (recording-hash, transcript-hash, extraction-hash, coaching-report-hash) gets two independent witnesses. First, a Knox event-chain anchor — sequence-numbered, hash-chained, returns a structured affidavit citing the SHA-256 digest, the timestamp, the operator (Bonis Systems LLC), and the verification endpoint. Second, an OpenTimestamps proof — submitted to public OTS calendars and upgraded to a Bitcoin block header by the calendar (typical: hours; subject to calendar load and Bitcoin block cadence), after which the proof can be walked offline against any Bitcoin full node. The bundle integrity verifies from the bundle bytes alone via the standalone verifier CLI; no Bonis runtime contact required.

What does the API surface look like?

The Anchored Receipt Engine REST API at arc.bonissystems.com exposes four bearer-gated endpoints. POST /v1/receipts accepts a multipart recording upload and returns the receipt bundle. POST /v1/coaching accepts a receipt bundle JSON and returns the Greenroom coaching bundle. POST /v1/verify accepts a bundle and recomputes manifest + per-artifact hashes; an optional bitcoinWalk flag upgrades each .ots proof to a Bitcoin block header. GET /v1/health returns the service identity. Public surfaces: GET / (landing), GET /up (liveness), plus the AI-search-stack — /llms.txt, /llms-full.txt, /agent-feed.json, /openapi.json, /.well-known/ai-plugin.json, /sitemap.xml, /robots.txt — all served anonymous-public.

Can the coaching report be verified independently?

Yes. The standalone verifier CLI is published with the engine package and runs offline. arc-greenroom-verify --bundle <coaching-bundle.json> recomputes every hash from the bundle bytes, confirms the manifest hash matches, and exits 0 on bit-perfect verification. With --bitcoin-walk, the verifier additionally decodes embedded .ots proofs, walks each to a Bitcoin block header against any Bitcoin node, and returns 0 only when all anchors confirm. Bonis Systems is not in the verification path.

What is Greenroom not?

Greenroom is infrastructure, not a webinar platform, not a presentation-design tool, not an audience-management system. It does not replace LiveKit, Zoom, Riverside, or Loom. It does not store the recording on Bonis infrastructure beyond the duration of the receipt-emission request. Audio is processed by OpenAI Whisper for transcription as part of the engine pipeline; the recording is not retained by OpenAI beyond the request. The engine is stateless: every request is processed and discarded. Embedders are expected to front the engine with their own identity layer (SSO / IAP / VPC ingress); the engine itself never sees user identity beyond the bearer token used to authenticate.