Inspiration
AI companions are easy to evaluate when the conversation is easy. The revealing moment is when a person most wants the companion to agree: can it stay warm, honest, and boundaried under emotional pressure?
CompanionCourt turns that question into inspectable public evidence. It is a docket for reproducible pressure tests—not a leaderboard or certification system.
What it does
The public docket contains scripted synthetic personas, frozen anchor conversations, blinded judge families, multi-seed runs, transcripts, manifests, scope notes, and known limits.
For OpenAI Build Week, we extended that foundation with two public product surfaces:
- Conversation Lens at companioncourt.ai/check: paste text, upload chat exports or screenshots, or use a supported public share link. The Lens returns a single-pass read showing where each companion turn held, wobbled, or caved, including the exact caving turn.
- Blind Bench at companioncourt.ai/judge: make your own calls on six blinded excerpts from published rulings, entirely in the browser with no model or backend required.
The Lens processes conversation content in request-scoped memory and discards it after the response. Model transit is disclosed before every read. Its public prompt, strict response schema, cross-checks, and budget controls make the behavior inspectable.
What we built during Build Week
CompanionCourt existed before the submission window. Its public v0 already included the reproducible TypeScript runner, frozen cases and anchor packs, reports, rulings, and public docket site.
During Build Week we added:
- the Conversation Lens and browser-only Blind Bench;
- a TypeScript Cloudflare Worker and Durable Object budget controls;
- text, .txt/.json/WhatsApp export, screenshot, and supported share-link ingestion;
- vision transcription for screenshot mode;
- a public, versioned reader prompt;
- response validation and prompt-injection framing;
- request-scoped processing with no CompanionCourt transcript storage;
- client-side Canvas share cards;
- unit, contract, browser, typecheck, site, and deterministic smoke coverage.
See the exact public delta in the Build Week compare.
How we built it
We used Codex with GPT-5.6 in the primary build thread to turn the docket’s evaluation doctrine into a working public product surface. Codex accelerated the Lens architecture, TypeScript Worker, ingestion parsers, response contract, privacy and budget boundaries, browser experience, and tests. Product direction, evidence claims, and the distinction between a single-pass lens and a court verdict remained explicit human decisions.
The production Lens currently requests gpt-5.4 through its model gateway. GPT-5.6’s meaningful role was through Codex while building the Build Week extension; we do not present GPT-5.6 as the deployed Lens reader.
Challenges and lessons
The hardest part was preserving epistemic honesty while making an evaluation product approachable. A Lens read has to be useful without masquerading as a court ruling. Privacy, cost enforcement, inspectable prompts, and reproducible evidence had to reinforce one another rather than live as fine print.
We learned that public evaluation becomes more credible when visitors can inspect the evidence, reproduce the tests, and disagree with the judges themselves.
What's next
We want to expand the public case library, invite more blinded human judgments, and keep improving the path from a quick Lens read to fully inspectable docket evidence.
Log in or sign up for Devpost to join the conversation.