A recording is only the beginning.
Finding the important moment in a long call can take almost as much effort as having the conversation. A file name cannot tell you what was agreed, which question is still open, or what changed since the last time you spoke. Voxora makes that history easier to revisit.
My work develops the analysis, evidence, profile, and interface layers around the recording workflow. The aim is to make saved conversations useful without hiding the difference between a source, an interpretation, and something the app simply does not know.
From a call to something you can act on.
The call library connects playback, timed transcripts, summaries, and suggested follow-ups. A transcript segment can take you back into the audio. Today gathers completed analyses into a daily brief, while earlier days remain available as saved history.
Ask answers questions using source calls, keeping verification within reach. Suggested tasks remain reviewable records: finding a possible commitment in a conversation does not give the app permission to send a message, move money, or act on someone's behalf.
People, with context attached.
People Insights starts with a user-maintained directory of confirmed names, aliases, relationships, and notes. Person, You, and Together views keep each participant's observations distinct while making it easier to review what happened between them.
Claims, requests, changing topics, and possible recurring patterns retain supporting examples and uncertainty. Coverage and source links explain how much conversation history supports an observation. A missing analysis stays missing instead of quietly becoming a neutral score.
Three processing layers. Clear responsibilities.
The Kotlin and Compose app owns metadata, cached results, and recoverable job state through Room and WorkManager. Media3 keeps playback available across the interface. Speech recognition can run on the device through whisper.cpp or through a configured private speech service.
The Mac service handles transcription, speaker turns, voice enrollment, and optional acoustic measurements. Separately consented hosted analysis receives bounded text context, rather than raw audio. A completed transcript remains useful when that optional analysis service is unavailable.
Keeping yesterday's answer honest.
An analysis can finish after someone corrects a speaker, edits a transcript, renames a person, or changes a provider. I treat those changes as part of the data model: background work carries source, identity, and revision checks before a result can become current.
Cached profile reads are separate from extraction and projection work. When the evidence changes, affected results can be invalidated and rebuilt. This keeps a fast profile screen from depending on fresh model work while reducing the chance that an old answer looks newly authoritative.
Show the meaning. Keep the uncertainty.
Aura and Faces give saved call context a visual presence, with timelines, coverage, and explanations alongside them. Motion can be paused, and the interface adapts to narrow and wide displays without losing the playback workflow.
Recording quality, device behavior, language, and speaker attribution all affect the result. Voice-model scores are estimates over available samples, not diagnoses or certainty about another person's inner state. Those limits belong in the experience, where someone can see them while interpreting a result.

