PausedStatus: Paused. Work has stopped for now; what exists is left as it was.
Every project’s status →01.07Voice coaching app
Coherence
AR Labs' Android voice-journaling and goal-coaching app: a spoken daily check-in with an AI guide, built as a staged conversation whose state lives in code.

On this page
Coherence is AR Labs' Android app for voice journaling and personal goal work. A person opens it and talks: an AI guide runs a short spoken check-in, draws out what is on their mind, picks out the recurring themes, and helps them choose which of their goals to work on. It is a structured conversation: the model talks, and code tracks what has been collected and when to move on. It is the later form of the app we first built as Vox Manifestor, from the same codebase; the Vox Manifestor page tells the build history, and this page describes the conversation design that came out of it.
How it works
The app is organised around what its design calls the core loop: one conversation that continues across sessions and moves through a sequence of phases, each with its own purpose. The design has seven phases: a check-in, collecting goals, exploring the present state, exploring the desired state, analysing the gap between them, affirmations that reinforce the person's commitment, and deciding where to go next. The check-in is the phase that was built and used; the later phases are designed and present in the code but dormant. The essay CORE-LOOP: Managing Complex Two-Way Voice Conversation via Agent / LLM, written while the app was being built, sets out the reasoning behind this conversation-loop design.
The check-in is itself a small conversation with two stages. In the opening stage the guide welcomes the person back, refers to the last session, and asks open questions so they can talk through whatever is on their mind, while themes are extracted in the background. In the transition stage it reads the themes back, asks which feels most important, and only moves on once the person agrees on a focus.
flowchart LR T["Person speaks"] --> E["Should we move on?"] T --> X["Extract themes"] E --> S["Choose a strategy"] X --> S S --> R["Write the reply"] R --> V["Guide speaks"]
Each turn is split into separate language-model calls, each with one job and a structured answer. One call decides whether the conversation should move to the next stage and says why. Another extracts structured state, such as themes, from what the person said. A third decides how to respond, and a fourth writes the reply. The decision to move on is never made by the call that is also trying to hold a natural conversation.
What exists today
The app runs on Android phones, and Richard M. Thompson, who founded AR Labs, used it repeatedly for his own check-ins. It is written in Kotlin with Jetpack Compose, stores goals, themes and conversation history in a Room database, uses Google Cloud speech-to-text and text-to-speech for the voice, and uses Google's Gemini Flash model for the guide. Development has been paused since July 2026. The source code is private.
Decisions
State lives outside the model. The current phase, the person's goals and the extracted themes are held in a state machine and the local database. A stage ends only when its requirements are met, so the language model is never relied on to remember where the conversation has got to.
One job per model call. A small, fast model does well when each call has a single job. Asking one call to converse, judge whether a stage is complete and fill in structured fields at the same time produced conversations that looped or stalled.
This pattern carried forward. When our browser voice agent, Salesbot, met the same overloaded-call problem, its redesigned conversation architecture was modelled on the Coherence check-in: one role talks, and a separate role evaluates whether the required information has been gathered.