Skip to content

← Work

Product MVP · Demo stage · Private repo

trucutru

An oral-reading fluency app for my two kids, built to replace a commercial platform when its subscription ends. Local-first: no accounts, no backend, no audio leaving the device.

PRD v0.3 · Sep 2026Next.js + Python sidecarDesigned in Pencil

Demo

Andreu, 10, reads a 200-word text

Real session, recorded with permission — first name only. The reader view shows the text and a timer, never the errors. Scoring happens after he stops.
Video poster · reader view · MP4 1080p · controls, no autoplay · WebVTT ES + EN

Demo mode · v0.2

How a local-first app demos on a public URL

The app needs a local Python sidecar for forced alignment. The demo build replays a committed session — audio plus the alignment JSON — through the same UI and scoring code. Same pattern as the visual-diff console.
Animation: a 5/10 mark is struck out, and Nico's correct words per minute are drawn week by week instead, two rereadings set apart from the trend line, to +13 CWPM in 8 weeks.
Screenshot · results · CWPM trajectory

Decisions

Five product decisions

CWPM as a trajectory, never pass/fail · the reader never sees word-level errors · forced alignment, not transcription · two annotators, inter-annotator agreement as the ceiling · the kids name the themes.
Animation: a child reads 'nuca' where the text says 'nunca'. Transcription writes 'nunca' and finds no error; forced alignment times each word against the known text and finds one substitution, nunca → nuca.
Screenshot · adult view (blurred) + Pencil board

Second app · demo

Multiplication tables: here, right and wrong are said out loud

Same monorepo, same design system, opposite rules. It says right and wrong at once and counts stars, which is exactly what the trucutru reader avoids, so it is a separate app rather than one more activity. It stores no audio: a spoken answer is decided and discarded. In the demo you answer with the keypad.
Animation: in the 7 times table, 8 × 7 is answered 56 and '¡Muy bien!' appears; the star earned flies to the × 7 card among the ten tables, 21 of 30 stars in total.
Demo screenshot: 4 × 7 = 28, a correct answer, '¡Muy bien!' and +1 star.

Status · 24 Sep 2026: live demo at trucutru.carloslima.dev with sample data (no recordings, no real names). The reading flow, the trajectory and the error map all work; the family-view code is 1234. Since 24 Sep, the multiplication tables have a demo too: trucutru-tables.carloslima.dev.

Next

Keep your codebase verifiable. Get your mornings back.

Open to Lead and Senior Full Stack roles and contract work, remote across Europe or hybrid in Barcelona and Madrid. A 30-minute call on your own codebase, no slides.