Skip to content

Project

trucutru

A local-first app that measures oral-reading fluency for my kids. Forced alignment on-device, words-per-minute as a trajectory, and a reader view that never shows a child their mistakes.

Role
Design and build
Stack
Next.js, Playwright, Python
Year
2026

The measurement

GitHub does not bill time, it bills jobs.

Four hundred and forty runs in forty-eight hours produced 2,351 jobs: 702 real minutes billed as 2,000, because every job is rounded up to a minute whether it takes eight seconds or fifty.

The correction

Parallelism is the multiplier, not a free optimisation.

Eighty-four per cent of those jobs came from one twelve-job matrix, and only thirty-five of its 189 runs passed. A failed run bills exactly what a green one does.

What it changed

The next repository started in the corrected form.

This site is that repository. Its workflows arrive on manual dispatch, and the gate that would have run in CI runs before the push instead.

Free CI is not a property of your workflow. It is a property of your repository.

Next

Keep your codebase verifiable. Get your mornings back.

Open to senior frontend roles and contract work, remote across Europe. A 30-minute call on your own codebase, no slides.