Part of Northstar | Learning tool that makes AI bias visible
<aside> 🎙️
Northstar Voice Agent is the spoken guide inside Northstar. Learners can ask about AI bias out loud and cut in mid-answer, the way they would with a teacher. I designed how it speaks, listens and recovers, then built five versions until the conversation felt natural.
</aside>
| Role | Solo: conversation design, the guide's instructions and the build |
|---|---|
| Iterations | Five versions, the last one live |
| Methods | Conversation analysis principles, voice persona, turn-taking design, repair strategies, iterative prototyping |
| Stack | Deepgram Voice Agent (listening and speaking), Claude Haiku 4.5 (answers), Gemini relay as backup, Lovable |
| Links | Try it · Case study |
Northstar is for high schoolers and design students. When something surprising happens in an experiment, they often want to ask about it before they can put it into words. Saying "wait, why did that happen?" is easier than typing a precise question. Voice also helps people who find typing slow or tiring, and every spoken line appears as text too.
How might a voice guide feel like talking to a patient teacher: waiting until the learner has finished, answering briefly, and letting them cut in at any moment?
Constraints. No ongoing budget, a public demo with no logins, API keys that never reach the browser, and no dead ends when a service fails.
| Principle | How I applied it |
|---|---|
| Quantity (Grice) | Answers are 2 to 4 short sentences |
| Quality (Grice) | Real-world claims are hedged. Teaching-model numbers are never presented as real statistics |
| Relation (Grice) | Only AI bias. Off-topic questions get a friendly redirect |
| Manner (Grice) | Everyday words and familiar examples. No lists, symbols or code read aloud |
| Turn-taking (Sacks, Schegloff and Jefferson) | Waits for a natural pause, usually ends with a question, stops when the learner speaks |
| Adjacency pairs (Schegloff and Sacks) | The greeting ends with a question, so the learner knows what is expected |
| Repair (Schegloff, Jefferson and Sacks) | One short sentence asks the learner to repeat. Noise gets no response |
| Grounding (Clark and Brennan) | State labels and a live transcript show what was heard |
| Face (Brown and Levinson) | The guide takes the blame when something goes wrong |
The full specification is in the supporting document.
| Phase | What I did |
|---|---|
| Define | Audience, voice persona, scope, speaking rules grounded in conversation analysis |
| Script | Greetings, state labels and hints, repair and fallback lines |
| Build and break | Five versions, each tested by talking to it, interrupting it and going off-topic |
| Diagnose | Listed every symptom and traced six of them to four root causes |
| Rebuild | Compared four real-time voice services and moved to a real-time voice agent |
| Show state | An orb whose motion follows the loudness of the voice |
For four versions I adjusted timings, retries and wording. The real problem was a pipeline that could only do one thing at a time: record, transcribe, answer, then speak. Moving to a real-time agent, where listening, thinking and speaking overlap, fixed the delay and made interrupting work. The full history is in the iteration log.