Beta-Test is a parenting simulator where an AI child (powered by Claude) presents realistic behavioral scenarios, like tantrums, lying, or emotional outbursts, grounded in developmental psychology and culturally authentic to Indian households.

The child responds dynamically to how the parent talks. Harshness and dismissal escalate it. Empathy and validation de-escalate it. After each interaction, a scorecard shows the child's emotional arc, what the parent said vs. what the child heard, and the specific technique that would have worked.

Voice interaction works in English and Hindi via Sarvam AI, so parents speak naturally instead of typing.

Who it's for: New-generation Indian parents in nuclear families who want to parent differently from how they were raised but don't know how to apply it in practice.

What it makes easier: Practicing real parenting responses in a safe environment before the stakes are real. Same idea as mock trading or flight simulators, but for talking to your child.

Long-term vision: Beta ("hey beta") evolves into a digital twin of your child, expanding into holistic development tracking and informed care.## What it does

Challenges we ran into

Claude Haiku 4.5 Persistent 529 Overload Errors Early in development, we chose Claude Haiku 4.5 ( claude-haiku-4-5-20251001

) for the child AI. It immediately started returning HTTP 529 (API Overloaded) errors when called with tool_use

+ tool_choice

, the exact pattern we needed for structured JSON enforcement. The errors were persistent across every attempt. We implemented a 3x retry loop with exponential backoff, but the errors kept firing.

Making the LLM Stay in Character as a Realistic Child The hardest challenge was preventing Claude from breaking character. Claude naturally drifts toward being cooperative, educational, or easy to pacify. A real 5-year-old mid-tantrum does none of those things. We solved this with heavily engineered system prompts that include:

Explicit anti-teaching instruction: "You are a real child, not a teaching tool. Do not make it easy for the parent." Reaction rule mappings: a natural language state machine that maps parent behaviors (logical explanations, threats, validation, specific AHA techniques) to realistic child emotional responses 2-3 one-shot example exchanges per scenario to set tone and texture, which we found more effective than detailed persona descriptions Conversation arc rules: the child can't just flip from angry to happy in one exchange. Emotional shifts require multiple exchanges of consistent empathy. Each of the 4 scenarios gets its own complete system prompt because the child's personality, triggers, and de-escalation patterns are fundamentally different across scenarios.

TTS Audio Choppiness with WebSocket Streaming Sarvam AI's TTS WebSocket streaming produced choppy, stuttering audio playback. Two root causes: (1) our "done detection" used a debounce-based approach (counting empty frames), which fired falsely during natural gaps in chunk delivery, causing premature audio cutoff; (2) our pre-buffer of 150ms was too thin for real-world network jitter. We identified that Sarvam sends a {"type": "Flushed"}

WebSocket message as the authoritative "all audio sent" signal, and replaced the fragile debounce logic with this event-driven approach. We also increased the pre-buffer to ~200ms for jitter absorption.

STT Returning Empty Transcripts Sarvam's speech-to-text service intermittently returned empty transcripts despite receiving valid audio data. Debugging required adding extensive logging: full response body from the API, audio blob sizes before sending, confidence scores, and duration metadata. We also added an explicit language

parameter to prevent auto-detection failures on short audio clips, since Sarvam's language detection can misidentify brief utterances.

Built With

Share this project:

Updates