← All projects
GenAI · own product · 2026

PrimeroLab

A study app built around answering. Every answer, spoken or typed, is graded from 1 to 5, and what went worst comes back first.

Q Ayour noteschunksclosest passagesflashcard

Built with

60 slevel diagnostic on the landing, no sign up
1–5score on every answer, with what was missing
2model providers, with fallback
224automated tests

The problem

Rereading feels like studying, but never shows what you could not explain. Flashcards help, but you write them and grade yourself.

What a study session looks like

Decks come from your material or a topic. Each answer is graded on the spot, with what was missing and a complete example.

A card is answered out loudor typed
The audio is transcribedWhisper
The answer is graded from 1 to 5what was right, what was missing, and an ideal answer
The score is checked and saveda malformed grade never reaches the schedule
The next review is scheduledwhat went worst comes back first
language modelcodeuser

Besides decks, there is a technical interview simulator with a crew of interviewer characters, and an express mode with a time limit for quick reviews.

Any material, not just the first pages

The first version cut every document at 6,000 characters: 95% of an 80-page PDF never reached the model. Now the whole document is chunked and searched with pgvector.

A study assistant that reads your progress

The study chat used to stuff keyword matches into every prompt. It was rebuilt as a tool-calling agent: “what should I review today?” reads the real queue.

The user asks a questioninside a workspace or with a deck open
The route builds the tool context from the verified sessionuser id, workspace and deck
The model chooses toolssearch study material, list decks, cards due for review, study progress, search documents
Each tool queries Postgres with the user's own clientonly the user’s own rows
The model answers with what the tools returned
language modelcodeuser

Security lives in the database

Every tool runs with the user's own session, so row-level security decides what comes back. The model never supplies a user id.

Hard limits

The assistant does not go down with one provider

Gemini answers first and OpenAI takes over if it fails. Every reply logs which one answered, so a silent fallback never hides.

Why what went worst comes back first

Each 1 to 5 score feeds SM-2. FSRS retains better, but it needs review history that does not exist yet. SM-2 builds it.

Built and run by one engineer: product, data model, AI features, security and deploys.