← Selected Work

Product

Silika

Reading practice that listens back

Silika interface

Walkthrough

The summary step: pick the best of three summaries, then write one with sentence starters and a hint that says where in the story to look.

The problem

My brother needed to get ahead in reading, and the apps built for that grade a child in private and mail a score to one parent. That misses the thing that actually moves a nine-year-old: the rest of the family knowing what he is working on this week and being able to say something about it. The constraint was that it had to cost near nothing to run and had to be usable by a child who cannot type a password.

What I did

  1. 01

    Used the browser's own Web Speech API for both recognition and synthesis rather than a paid transcription service — it is free, nothing is stored on our side, and the privacy page says plainly which browsers send audio to their vendor to transcribe it

  2. 02

    Graded each sentence word by word so the feedback is specific, and kept a quiet running list of the words he missed instead of showing him a score to feel bad about

  3. 03

    Re-presented the same sentence as scrambled chips to reassemble, so the second pass practises structure rather than repeating the first attempt

  4. 04

    Built a reading library of 52 lessons and 310 sentences from kindergarten to Grade 6, with every sentence's difficulty scored by a readability model fitted to that library rather than labelled by hand

  5. 05

    Measured fluency as words correct per minute against published Hasbrouck & Tindal norms, counting only unaided first reads — and showing nothing until there are enough of them to mean something

  6. 06

    Covered Grade 4 maths as 34 skills across all six Eureka Math² modules and 24 Common Core standards, with a classifier that names how an answer went wrong — a dropped carry, area given for perimeter — and a hand-checked Khan Academy unit offered after the second miss

  7. 07

    Taught summary writing the way a teacher would: pick the best of three summaries and hear why the other two fall short, then write with Somebody–Wanted–But–So–Then starters — help that fades to a plain box once three summaries in a row reach 80%

  8. 08

    Added Kiswahili vocabulary checked against Kenyan usage, not phrasebook Swahili, and a coding track — sequences, loops, conditionals, variables, debugging — answered by tapping, with every prompt written at two reading levels

  9. 09

    Tiered the models by job: Haiku 4.5 for the family chat, Sonnet 5 for the tutor. Paying frontier prices for a chat prompt is waste

  10. 10

    Gave him PIN sign-in while the adults use username and password, because auth a child cannot complete is auth that does not get used

  11. 11

    Put row-level security on every table, since the data is a named minor's learning record and six family accounts read from the same database — and later removed a staff bypass from every policy, found by reading the live policies rather than the migration history

Outcome

  • Runs at roughly a dollar a month. The speech layer is free by design; the two chat features are the only paid component and the app degrades gracefully to a message when the API key is absent

  • His dictation accuracy rose from 74% in his first week to 92% by his third, and the words he missed per sentence fell from about one to about one in three

  • Over 200 sentences completed and 41 Grade 4 maths problems attempted, with six family accounts around him — the reason it exists is engagement, and that is the only metric that would mean anything at this scale

  • Reading, maths, Kiswahili, coding and family messaging in one loop a child will open twice

  • Private storage buckets and RLS on every table, so a family member sees the reader's progress and nothing else

Built with

  • Next.js 16
  • React 19
  • Supabase (Postgres, Auth, Storage)
  • Web Speech API
  • Claude Haiku 4.5 / Sonnet 5
  • Tailwind v4
  • Row-level security