Skip to main content

Feb 2026 - Present

Tiny Thoughts

ABA Clinical Data Collection Platform

22,940+

discrete trials recorded in 9 weeks

The Problem

The agency was paying three thousand dollars a month for Rethink BA — an enterprise platform built for large clinics, not a small agency where therapists work in living rooms and basements. Trial recording was buried under menus. Mastery tracking lived in spreadsheets. The software was getting in the way of the children.

They needed something built for how they actually work: a therapist, a tablet, a child, and nothing between them but one tap.

The Solution

I built the replacement in seventy-one days. The core insight came from watching therapists work: they’re holding a child’s attention with one hand and tapping a screen with the other. Every interaction must be fast, forgiving, and reachable by a thumb. So I designed 140-pixel touch targets and a recording flow that a therapist can operate while a child is climbing on their lap.

The mastery engine is the centerpiece — it watches the data and tells the therapist when a child is ready to advance. Configurable criteria across three program types: how many sessions, what accuracy threshold, at which prompt level. When a child meets mastery, the system recommends a phase change. When a child regresses, it catches that too.

Clinical parameters cascade through three layers — organization defaults, template overrides, per-child customizations — so a supervising clinician can set policy once and still fine-tune individual cases.

Production Metrics

37

Active Users

22,940+

Trials Recorded

79

Children Managed

129

Mastery Events

537x

Trial Growth (9 weeks)

86K

Lines of Code

877

Commits in 71 Days

$3K/mo

Enterprise Cost Replaced

Architecture Decisions

Pure TypeScript Domain Kernel

Mastery scoring, phase-change logic, and config resolution are isolated in a pure TS layer with no framework dependencies. Property-tested with fast-check to verify correctness across thousands of random inputs.

PostgreSQL RLS for Multi-Tenant Isolation

Every clinical table enforces Row Level Security. Therapists can only see children on their caseload. BCBAs see their supervisees. Admins see their organization. Zero data leakage by design.

PWA with Offline Trial Recording

Serwist service worker caches the app shell and enables offline trial recording. Therapists in basements or rural areas with spotty connectivity can record data that syncs when they're back online.

OKLCH Algorithmic Design System

3 CSS variables generate the entire light/dark palette using OKLCH color space. Surfaces, semantic colors, and chart colors are all derived mathematically — no manual color picking.

Tech Stack

Rails 8.1PostgreSQL 16 (Neon)Turbo + StimulusTailwind CSS v4Solid QueueUpstash RedisSerwist (PWA)Fly.io

What I Learned

Domain complexity is where the real engineering happens. The mastery algorithm went through four iterations before it matched how clinicians actually think about progress. I spent more time in meetings with therapists than writing code — and that was the right ratio.

Property-based testing caught edge cases I never would have imagined — partial sessions, conflicting config cascades, boundary prompt levels. The domain kernel has zero known bugs. I trust it more than most things I’ve built.

When clinical decisions depend on your data, ‘good enough’ is not a concept that applies. Every trial, every mastery event, every phase change must be auditable and correct. Children’s progress is measured against what this system records.