Work · AI delivery

Privacy-first kids apps built end-to-end with AI agents

Two small products—Kaczusia (letters & speech sounds) and Klawiatura dźwięków (a free soundboard)—shipped as offline-friendly web apps with no ads, trackers, or analytics. Delivery used AI coding agents and a dedicated AI QA agent.

My role Product owner + builder: content model, offline TTS pipeline, Web Audio soundboard, AI coding loop, and AI QA gate with pass/fail reports.

Stack Static web (HTML/CSS/JS) · JSON content · ElevenLabs TTS via offline scripts · Web Audio API · AI coding agents · AI QA agent (server/data/audio/UI/security)

Context
Family-facing learning tools needed to work on a toddler’s device without surveillance, accounts, or CDN dependency—and still feel polished. Audio and content had to be generated carefully; API keys could never ship in the client. Constraint: offline-first where possible; large touch targets; graceful degradation if a clip is missing.
Intervention

Shipped two static, tracker-free apps and an AI-assisted delivery loop with explicit QA gates.

Phase 1 — Kaczusia content & modes

Built a static web app with a yellow rubber-duck guide. Letters mode: letter + word + rhyme across all 32 Polish letters (incl. Ą Ć Ę Ł Ń Ó Ś Ź Ż). Speech sounds MVP for sz, cz, r: Hear → Syllables → Words. Content driven by JSON for easy edits.

Phase 2 — Offline AI TTS

Generated all audio with AI text-to-speech (ElevenLabs multilingual v2) via offline scripts so the API key never entered the client. Added a graceful fallback chime if a clip is missing.

Phase 3 — Klawiatura + AI delivery QA

Built Klawiatura dźwięków: press a key or big on-screen button for a soft Web Audio sound + animation; works offline after load; runs on iPad Safari and Mac; served over LAN or Cloudflare tunnel; addable to the iPad home screen. Both products were built with AI coding agents and checked by a dedicated AI QA agent (server, data, audio, UI, security) with pass/fail reports.

Risks & how they were handled
  • API key in client → offline TTS only; key stays in local scripts.
  • Missing audio on device → fallback chime; content still usable.
  • AI coding regressions → AI QA agent with explicit pass/fail suites before ship.
What I'd do differently
  • Publish a short “how audio was generated” note next to the app for parent trust.
  • Expand speech MVP coverage only after a small user feedback loop on sz/cz/r.
Outcome
Before: ideas stuck as sketches without a privacy-safe delivery path—recording a full Polish voice-over set by hand (letter + word + rhyme for each letter, plus speech-therapy clips) would take on the order of roughly half a day to a full day of mic time and editing (est.). After: two shippable static apps with no ads, trackers, analytics, or CDN; Kaczusia covers all 32 Polish letters and a speech MVP for 3 targets (sz, cz, r) across Hear → Syllables → Words; the full voice-over set is produced in roughly one offline TTS script run (ElevenLabs multilingual v2; API key never in the client) with a fallback chime; Klawiatura synthesizes sound in-browser (Web Audio) and works offline after load on iPad Safari/Mac; delivery gated by an AI QA agent with pass/fail reports across server, data, audio, UI, and security checks.

System map

Letters & sounds content

Offline AI TTS

key stays local

Kaczusia content

32 Polish letters

Kids apps

Klawiatura soundboard

Web Audio

AI QA gate

pass / fail

What it does

Ships tracker-free learning apps

Plays voice-over without a client API key

Blocks ship on AI QA fail

Content and TTS are prepared offline; the client stays static and key-free.

What shipped

  • Kaczusia Letters and speech sounds across the Polish alphabet — JSON-driven, no ads or trackers.
  • Klawiatura dźwięków Soundboard that works offline after load — no ads or trackers.
  • Offline TTS + AI QA Voice-over generated with the API key out of the client; delivery gated by pass/fail QA.

Stack HTML/CSS/JS JSON ElevenLabs TTS Web Audio AI coding AI QA

← Secure document AI Next: Hey Rosalie →