Inspiration

Everyone has a conversation they keep not having — coming out, quitting, telling your kid you're sick. We wanted to point a self-directing agent loop at the hardest thing to build: the courage to say it.

What it does

An agent role-plays the other person while a second pass scores where you break (clarity, empathy, heat, escalate/freeze), then adapts its difficulty and coaches you. It loops until a Readiness meter tells it you're ready.

How we built it

A Vite , React , TypeScript SPA with a pure, unit-tested loop engine at the core and swappable model providers at the edge (in-browser demo, Anthropic, AWS Bedrock). CI, tests, and GitHub Pages deploy are wired through GitHub Actions.

Challenges we ran into

Making the loop believable and self-terminating — visible adaptive difficulty plus a self-chosen stopping point, not a fixed turn count. And handling brutally sensitive data: on-device demo engine, PII redaction, and consent-gated egress.

Accomplishments that we're proud of

A loop that genuinely self-corrects and decides on its own when you're ready, made fully legible on screen: plus a live "throw a wrench" moment judges can trigger themselves. 37 passing tests, green CI, and a real credential-free live demo.

What we learned

"Self-correcting" is the hard part to prove, not claim: the adaptive difficulty and self-chosen stop are what make it real. And the most convincing demo is one the audience can break themselves.

What's next for Circles

Voice mode (speak your lines, hear the persona), a post-session debrief of your patterns across rehearsals, and shareable, self-hostable persona packs.

Built With

Share this project:

Updates