pt/en

Concurse

Turns public-exam syllabi into AI-generated study tracks.

Role
Founder · AI Engineer · Solo dev
Type
SaaS · AI Edtech
Year
2026
Status
In operation
Concurse

[ The project ]

Gamified study platform for Brazilian civil-service exams. Built solo, end to end: product, data modeling, backend, frontend, AI pipeline, payments and acquisition. Multitenancy with Row Level Security on every table, plus CI with typecheck and automated tests.

[ stack ]

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind v4
  • Supabase
  • Postgres + RLS
  • DeepSeek
  • ts-fsrs
  • pdf-parse
  • Zod
  • AbacatePay
  • Meta CAPI
  • Vercel
  • GitHub Actions

[ Technical decisions ]

  1. 01

    The AI pipeline runs offline, in command-line workers, never in user runtime: it extracts the syllabus structure straight from the PDF, generates questions in each exam board's style (true/false for Cebraspe, multiple choice for FGV) and validates in batches of ten before publishing. Costs cents per syllabus and nobody waits on an LLM.

  2. 02

    The system prompt is deliberately kept stable across calls so the prefix hits DeepSeek's context cache and bills at roughly a tenth of the price. Every call has its cost estimated and logged.

  3. 03

    Curation as a state machine — draft, validated, published or rejected — with the verdict and reasoning stored for audit. Every model output passes a Zod schema and structural invariants before it touches the database.

  4. 04

    Deduplication by Jaccard similarity over normalized tokens, threshold 0.85. A deliberate call: it solves the actual MVP problem without embedding infrastructure, which comes when volume justifies it.

  5. 05

    Learning engine with spaced repetition (FSRS) and a session mixer that composes each 15-question session from 35% overdue review, 55% new content and 10% challenge, with a 40% per-topic cap and interleaving that prevents two consecutive questions on the same subject.

  6. 06

    Wave-based progression: the next wave only unlocks once every topic in the current one reaches minimum mastery — and locks again if mastery decays.

  7. 07

    Score prediction with Bayesian shrinkage and a pessimistic prior, modeling Cebraspe's real rules: 120 questions across three blocks, wrong answers cancelling right ones, per-block net score floored at zero, elimination below the minimum. Inflating the number would destroy the trust of someone betting a year on it.

  8. 08

    The same workers also feed flashcards, generated readings, mock exams, statute drilling, streaks and leaderboards — one pipeline behind six study formats.

  9. 09

    Idempotent subscription webhooks: the decision logic is an isolated pure function, HMAC-validated, backed by a unique-key event table and payload parsing tolerant to gateway variations.

  10. 10

    Server-side acquisition tracking with browser/server deduplication by event_id, an adblocker-resistant first-party route, SHA-256 hashed PII and purchase events emitted only from the webhook — no phantom conversions.