Skip to content
Back to portfolio

AI Personal Project

Opticram: Adaptive Vocabulary Engine

How a GRE study problem became an AI-powered learning platform, and why the existing tools weren't going to get anyone to the 95th percentile.

  • 95th Percentile GRE Verbal
  • AI-Powered Question Gen
  • Spaced Repetition Engine

The score is from the official GRE report; the other two describe what the product is, not measurements.

In short

  • Flashcard tools present the same card every time, so you memorize the card rather than the word, and spend your best minutes on words you already know.
  • I paired spaced repetition with AI-generated questions, so no prompt repeats, and built a scoring model that spends attention on words at the edge of competence.
  • I scored 165 on GRE Verbal, 95th percentile, using it daily, and rebuilt the generation pipeline twice to make the economics work.

IThe Situation

Flashcards in a machine learning world

As a GRE test-taker with limited study time, I have stopped picking up the flashcards. I need a system where no two questions are the same and that knows what I don't know, so my reps go to the words I struggle with instead of the ones I've already mastered.

Vocabulary carries a large share of the GRE Verbal score, so I did what every serious test-taker does: I bought a flashcard deck. The dominant study tools turned out to be, architecturally, what students used fifty years ago: static cards, static definitions, and a static schedule with no idea what you already knew.

I studied every day and my practice scores barely moved. The deck grew as I added words, and more of each session went to re-checking words I already knew, because the deck had no way to tell them from the ones I did not. The deck was fine and so was my discipline. The tool had no memory of what I knew.

I also knew that I could build something better.

IIDiscovery

What Anki got right, and what it still missed

My discovery had two threads: structured self-experimentation as the target user, and a competitive teardown of every adaptive-learning tool already in market. Anki was the most rigorous baseline.

It implements spaced repetition, which was a step in the right direction. But it still presented the same static definition every time a word appeared, meaning I was memorizing the card, not the word. I'd recognize the definition without being able to produce the word in context, which is exactly what GRE verbal questions test.

  • Static questions produce pattern memorization, not vocabulary acquisition. If you see the same card ten times, you learn the card. You need a new question every session to force real recall.
  • Spaced repetition without difficulty weighting is still inefficient. Anki spaces cards, but it doesn't know which words you're likely to confuse with each other or which definitional nuances you're missing. That requires a smarter model.
  • The biggest gain is in where attention goes. Every extra minute spent on a mastered word is a minute stolen from a word on the edge of your knowledge, where learning happens.

IIIThe Build

An adaptive engine that knows what you don't know

I built the initial version for my own GRE prep. The architecture had two parts:

  • AI-generated questions via LLM API. Every card presentation pulls a fresh question: a new sentence, a new context, a new definitional frame. You never see the same question twice. You can't memorize the card; you have to know the word.
  • Spaced repetition with weighted difficulty. Words are tracked across sessions. Words you consistently nail get longer intervals. Words you struggle with, or get wrong in multiple contexts, get higher priority and shorter intervals. The system builds a model of your vocabulary profile and allocates study time accordingly.

I categorized 2,343 GRE vocabulary items, tagged by difficulty tier, frequency in official test materials, and common confusion clusters. The engine schedules from that corpus.

  • Authored the full PRD: user stories, scoring algorithm specification, API architecture, and edge case handling for ambiguous user responses
  • Designed the adaptive scoring matrix, an inverse-risk weighting system that prioritizes words at the edge of competence over words clearly mastered or clearly unknown
  • Built React prototypes and tested them with peers before committing to the build

I scored 165 on GRE Verbal, the 95th percentile, using the tool daily. That is one learner and one test, which is why the current work is extending it beyond a single user.

PRD extract · Adaptive scoring model

The section that took longest to get right. Reproduced from the working spec; thresholds are the current values, not fixed constants.

Corpus
2,343 GRE items, each tagged with a difficulty tier, its frequency in official test materials, and any confusion cluster it belongs to: words that are plausibly mistaken for one another and therefore have to be scheduled apart rather than together.
Signals per item
Attempts, outcome per attempt, the question type it was answered under, and consecutive-correct count. Outcome is tracked per question type, because recognising a definition and producing the word in context are different competencies and a learner is routinely strong at one and weak at the other.
Priority
Inverse-risk weighted: an item scores highest when the learner is least certain, not when they are worst. Words answered consistently wrong score below words answered inconsistently, because a word that is always missed is usually not yet learned at all, while an unstable word is one sitting on the edge of competence, which is where a study minute buys the most.
Interval
Standard spaced repetition, with the interval scaled by the priority score rather than by correctness alone. A stable item lengthens quickly; an unstable one stays in near rotation regardless of whether the last answer happened to be right.
Outlier guard
A single poor session cannot reset an item to zero. Priority moves against a rolling window rather than the last result, so a tired evening does not undo three weeks of evidence: the failure mode that made the first version of the model unusable.
Explicitly out of scope
No modelling of forgetting curves per learner, no cross-learner priors, no difficulty inferred from aggregate performance. All three were considered and cut: each needs a user base to calibrate against, and the model had to work correctly for one learner first.
The hard part was not the ranking but the guard beneath it. An early version keyed priority to recent accuracy, which meant one bad session buried a well-learned word at the top of the queue for a week.

IVWhat Went Wrong

The first version was too expensive to exist

The architecture worked on the first try. The economics did not. Every card presentation was a fresh generation call, by design, and I was routing all of them to a frontier model because it produced the best questions. It did. It also meant a single study session cost more than a month of the flashcard app I was trying to replace.

No amount of tuning fixes that. A product whose unit economics get worse the more someone uses it cannot be given to a second user, let alone priced for students who cannot afford a tutor. I had built something I could not afford to run for myself.

The fix came in three moves, in increasing order of how much they saved:

  • Templates. Most of each prompt was invariant: the question format, the constraints, the output shape. Pushing that into structured templates meant the model was doing a much smaller job: fill this frame for this word, rather than invent a question from scratch. Smaller job, smaller model, fewer tokens.
  • Minimum viable model. Rather than defaulting to the strongest model, I started asking what the weakest acceptable one was for each call type, and tuned the reasoning effort down until quality degraded, then stepped back one. Definition questions tolerate far less effort than context-inference questions, and treating them the same was pure waste.
  • Then the provider. Only once the work per call was small and well-specified did switching the underlying model become a simple swap rather than a rewrite. The templates are what made the migration cheap.

VThe Vision

Democratizing test preparation

The GRE coaching industry charges thousands of dollars for access to tutors and structured prep programs that most students can't afford. The information asymmetry is real. Students from well-resourced backgrounds get personalized attention; everyone else gets a book and a prayer.

The thesis behind Opticram is that a model of the individual learner can do most of what a tutor does for vocabulary, at a per-session cost closer to a flashcard app than a coaching program. I started with GRE vocabulary because it is the most measurable case for spaced, adaptive learning, and the one where a study minute is most easily wasted.

Two other people have used it so far: my younger cousin for the SAT and a friend for the GRE. Their feedback drove the next round of changes, and both scored well.

The product is in active development. The next phase is moving the AI generation pipeline from prototype to production and onboarding a wider beta cohort to test the adaptive scoring across different vocabulary profiles.