In development · Web · iOS · Android

AI Engineering Interview Prep

AI Learning

A study app that tests whether you can explain AI engineering concepts, not just recognize them. Open answers are graded by Claude against a rubric, topics form a concept graph, and spaced review brings things back before you forget them.

Problem

Most AI learning material goes stale fast, is written at one depth for everyone, and quizzes recall instead of understanding. Prerequisites are either rigid or missing.

AI engineering interviews test something else: explain RAG, defend an eval strategy, design a GenAI system out loud. Practicing that needs someone to check your explanation, which is exactly what flashcards and multiple-choice quizzes can’t do.

In the app

AI Learning topic map: AI/LLM topics drawn as a connected concept graph
Topic map from an earlier build. Edges are soft prerequisites and “X vs Y” contrasts.

Approach

Four questions shaped the app.

  1. What should I learn next?

    A concept graph from ML basics and transformers through RAG, agents, evaluation, inference serving, LLMOps, and GenAI system design. Prerequisites warn; they never block.

  2. At what depth?

    Every topic has Beginner, Intermediate, and Expert lessons plus an Interview page with likely questions, what a strong answer includes, and red flags.

  3. Can I actually explain it?

    Open answers, typed or dictated, are graded against key points and known misconceptions. You rate your confidence first, so “certain and wrong” gets flagged.

  4. Will I remember it?

    FSRS spaced review, randomized quizzes across topics you know, and a weak-spots view. Pass 80% at a level to mark a topic verified.

Architecture

AI Learning architecture Lessons, questions, and the glossary are YAML and Markdown in git. A Dart build tool validates them and bundles them into the Flutter app, which stores progress on the device and schedules review with FSRS. To grade an open answer, the app calls a Supabase Edge Function that checks a per-user rate limit in Postgres and asks Claude for a schema-validated grade. Content in git YAML + Markdown, dated per lesson Dart build tool checks references, cycles, question shape Flutter app web · iOS · Android local-first progress FSRS scheduler bundled SUPABASE grade-answer Edge Function (TypeScript) Postgres per-user rate limit, sync schema ready Claude API rubric grading

Scroll sideways to see the full diagram.

Content ships inside the app and progress stays on the device, so the only network call is grading. If the grader is unavailable, you grade yourself against the same rubric. Why sharing this is fine →

Key decisions

  • Rubric grading by an LLM over multiple choice only

    Claude returns a schema-validated result: score, points covered and missed, misconceptions, and feedback. That is the signal an interviewer listens for, which a multiple-choice quiz can’t give.

  • Content as code over a CMS

    Every lesson carries an as_of date, updates are reviewable git diffs, and a build tool rejects broken references or prerequisite cycles before they ship.

  • Local-first over requiring an account

    Progress lives on the device, so the app works without sign-up and never blocks on the network. The server only does what needs a secret: calling the model.

Results & status

  • In active development (v0.10) on web, iOS, and Android from one codebase.
  • 20 topics, each with three lesson depths and an interview page, plus a linked glossary.
  • Source is private for now; a demo is available on request.

Stack

  • Flutter / Dart
  • Riverpod
  • go_router
  • Supabase Edge Functions
  • Claude API
  • FSRS
  • YAML + Markdown content
  • Speech-to-text

FAQ

Isn’t this easy to copy?

The architecture is ordinary on purpose. What takes the time is the content: the topic graph, lessons at three depths, rubrics with real misconceptions, and the grading prompt. None of that is published here.

What happens if the grader is wrong or down?

Every grade shows which rubric points it found and missed, so you can check it. If grading is unavailable, you self-grade against the same rubric and the app keeps going.

Links