AnbuLoop

Inspiration

For many diaspora families, grandparents and children already exchange short voice notes—but when they do not share a strong spoken language, everyday replies become difficult. Translation alone is not enough: a child needs a small, approachable way to understand what was said, try a reply, and gradually build confidence with the language of someone they love.

AnbuLoop turns that everyday exchange into a gentle learning loop.

What it does

A grandparent records a short, consented voice note. AnbuLoop:

  • creates a timestamped transcript in the original language;
  • provides a child-level translation;
  • extracts one phrase from the actual note for the child to try;
  • shows cultural context only when the note explicitly supports it;
  • lets the child record a reply;
  • checks only whether the target phrase appears in the reply transcription.

It never grades pronunciation, accent, fluency, or a child’s voice. The result is warm encouragement plus a transparent phrase-presence label: exact, partial, or not attempted.

The child can then visit Words we’re learning together to see which phrases came from real family exchanges, how often they have been encountered, and their reply history.

How it was built

AnbuLoop is built with Next.js, React, TypeScript, Tailwind CSS, browser recording APIs, and IndexedDB.

I used Codex throughout the build to develop the typed family-learning model, consent-gated recording flow, provider abstraction, traceability safeguards, browser-local audio persistence, and tests.

The app has swappable server-side providers for transcription and reasoning:

  • The demonstrated path uses Gemini 3.1 Flash-Lite for audio understanding and structured phrase/reply processing.
  • The repository also implements an OpenAI path using gpt-4o-transcribe-diarize for transcription and GPT-5.6 Responses API structured outputs for PhraseCard extraction and reply matching.

Every live transcript, PhraseCard, and reply visibly identifies the provider that created it. Both the original note and the child’s completed reply are stored locally in the browser so they remain playable after navigation and refresh.

Trust and safety choices

The interesting part of this project was deciding what not to claim.

A PhraseCard must be traceable to the original transcript. Cultural context must be null unless it was explicitly mentioned in the note; the app does not invent a plausible cultural explanation. Reply processing is deliberately phrase-presence-only, not phonetic scoring disguised as language coaching.

The current prototype requires consent confirmation before processing and provides local deletion controls. It is a hackathon prototype, not a production family-data service: roles, parental controls, retention policies, and stronger child-safety safeguards are future work.

Challenges and lessons

The biggest technical challenge was making a friendly demo honest. Audio transcription and language reasoning are useful, but they can become misleading when an app overstates certainty. Designing explicit source links, null-safe cultural context, provider labels, and non-judgmental reply feedback made the product more trustworthy.

Another challenge was browser audio persistence. A temporary recording URL disappears during navigation, so AnbuLoop now stores consented recording bytes locally in IndexedDB and recreates playable audio only in that browser.

What’s next

The long-term vision is a safe, parent-guided language-learning space where children can learn through family conversations and, later, from trusted tutors and retired native speakers. Before that, the next work is clear: family roles and permissions, parent controls, age-calibrated guided lessons, carefully validated learning feedback, and stronger privacy infrastructure.

AnbuLoop’s goal is simple: help spoken languages travel naturally across generations, with AI making the first reply less intimidating.

Provider disclosure

The recorded demo uses Gemini 3.1 Flash-Lite and labels it visibly in the product. The OpenAI/GPT-5.6 path is implemented in the repository but has not yet had a recorded live API validation. This project does not claim that Gemini output is GPT-5.6 output.

Built With

Share this project:

Updates