Skip to content
All work
ABA Mastery logoLive🎉 Hundreds of users and a lot of thankful students

ABA Mastery

Study for the BCBA exam with an adaptive quiz engine.

Role
Founder & Engineer
Year
2026

Where it started

I'm studying for the BCBA exam myself. For a long time that meant working through practice questions with no real sense of whether I was getting closer. I wanted something that would show me my weak spots and explain why an answer was wrong, not just that it was. I couldn't find it, so I built it.

The first version, in May 2026, was a thin slice: 27 original questions, three per domain, a tutor that didn't do anything yet, and no way to pay.

Within two days it had checkout, an invite-only beta, and a working AI tutor. By August the bank had grown past 5,000 original questions. Every stem is written from scratch, and when I noticed some scenarios followed my coursework too closely, I rewrote them.

A readiness score you can trust

The number students care about most is readiness: am I ready to sit the exam? ABA Mastery works it out per domain from your answer history. Recent answers count more than old ones (a correct answer loses half its weight after 30 days), and each domain is weighted by its share of the real exam. A domain doesn't count at all until you've answered at least five questions in it, so one lucky guess can't make you look ready.

Getting this right took more than one try. At one point the same student saw 48 on one screen and 68 on another, because two different formulas had ended up with the same name. Now there's one formula in one place, and every screen reads from it.

Picking the next question

Each study mode chooses questions its own way. Weak-areas practice ranks every question you've missed by three things: how heavily that topic is weighted on the exam, how recently you missed it, and how often you keep missing it. New students with no history start from the domains they told me they're worried about, then the app learns from their answers.

Mock exams draw only from exam-style questions, in the same proportions as the real test. Early on, shorter unit-quiz questions were leaking in and crowding out topics like interobserver agreement, so I walled them off.

Teaching the tutor its limits

My first tutor sent the entire question bank with every request, about 238,000 tokens, which cost around $1.16 per cold call. I narrowed that to one domain, then to one unit, and the price dropped with it.

The bigger fix came from reading real conversations. The tutor used to write its own practice questions, and some were wrong. One student, days away from a $250 exam, was marked wrong on an answer that was right. Now practice questions come only from the reviewed bank, the tutor can't see the answer key until the student has answered, and it won't quote BACB hours or fees from memory.

I also learned to watch the bill. One student on a $12.50 plan ran up $17.49 in AI costs, so the app now has a spending breaker that alerts me first and pauses the tutor if a single account keeps going.

Getting onto the iPhone

Because the web app and the API were already separate, wrapping it in Capacitor for iOS was mostly additive. Payments were not. Apple rejected the app twice for linking out to Stripe, so I rebuilt purchases on Apple's in-app payments through RevenueCat. ABA Mastery went live on the App Store in July 2026.

💡 What I learned

Tests told me the code worked. Reading what the tutor actually said to students told me whether it helped. The worst mistakes I found were ones no test would have caught.

A score that decides whether someone feels ready for a $250 exam has to be simple, consistent, and honest. When the numbers disagreed with each other, students were right to stop trusting all of them.

Highlights

  • Adaptive quiz engine with six modes (domain drill, quick quiz, weak areas, mock exam, cumulative quiz, and course midterm), each with its own question-selection strategy
  • Readiness score weighted by BACB exam-weight percentages, with per-domain mastery recomputed from answer history
  • AI tutor built on the Anthropic API that explains why an answer is wrong, not just that it is
  • Live quiz sessions held in Redis with per-question answer logging, streaks, and an exam-date study plan
  • JWT auth over httpOnly cookies with Redis-backed refresh-token revocation
  • Mobile-first PWA wrapped with Capacitor for native iOS and Android, in a pnpm + Turbo monorepo