Inspiration

Every student has felt it — you sit down for an exam, see a question, and think "I've seen this before." Then you get it wrong. Again.

The problem isn't effort. Most students who fail aren't lazy — they study for hours, re-read their notes, watch tutorials. But they never stop to ask: why did I get that specific question wrong? Was it a gap in understanding? A careless slip? Running out of time?

I noticed this pattern personally during exam prep. I'd complete a mock test, check the answers, feel bad about the ones I missed — and then move on. No logging. No categorization. No targeted review. Just a vague sense that I needed to "study more." The same mistakes would show up two tests later.

The research backs this up:

  • Students waste roughly 40% of study time reviewing material they already know
  • The average student repeats the same 3 mistake types across different exams
  • Reviewing your own errors is 3× more effective than re-reading notes

No existing tool solved this specifically. Flashcard apps give you generic decks. Note-taking apps have no structure. Mistake journals in notebooks get lost or forgotten. There was a gap between making a mistake and actually learning from it — and nothing was filling it.

That gap became ErrLog.


What it does

ErrLog is a focused exam mistake journal that turns every wrong answer into a personalized review system.

The core loop is three steps:

1. Log — After any practice test or exam, you open ErrLog and log each mistake. You describe what the question was about, then pick exactly why you got it wrong from three categories:

  • 🔴 Concept Gap — You didn't know this at all
  • 🟡 Careless Error — You knew it but made a silly mistake
  • 🔵 Time Pressure — You ran out of time to think

Then you write the correct approach in your own words — as if teaching it to someone else.

2. Track — ErrLog surfaces patterns you can't see manually. Which subject has the most unreviewed mistakes? Are you making Careless Errors repeatedly in a row? Which mistake type is dominating your recent sessions? The dashboard, stats charts, and heatmap make your error profile visible at a glance.

3. Review — Before any exam, you run a Pre-Exam Review session. You configure which subjects and mistake types to include, and ErrLog builds a flashcard deck from only your logged mistakes — not the entire syllabus. You flip through each card, mark it Got it ✓ or Still shaky 🔁, and shaky cards automatically cycle into a second round until you've resolved them.

Key features include:

  • Subject management with color coding
  • Streak tracking with milestone badges
  • GitHub-style activity heatmap
  • Export all mistakes as CSV
  • Dark mode and compact view
  • PWA support — installable on mobile, works offline
  • Keyboard shortcuts for power users

How we built it

ErrLog was built entirely using MeDo, an AI-powered no-code platform that generates full-stack web applications from natural language prompts.

The development process started with writing a comprehensive Product Requirements Document — specifying every screen, every user interaction, every edge case, every data model, and every design token before a single line was generated. This upfront clarity was critical: vague prompts produce vague apps. The PRD covered:

  • A full design system (typography, color palette, spacing scale, shadow levels, border radii)
  • 7 authenticated pages with complete interaction specs
  • Authentication flow including onboarding
  • Business logic rules for streak tracking, pattern detection, and smart review ordering
  • 35+ error and empty states
  • 40 acceptance criteria

MeDo translated this into a production-ready full-stack application including frontend UI, backend logic, database schema, and authentication — in a fraction of the time traditional development would require.

The database schema powering ErrLog:

Table Purpose
Users Auth, streak tracking, preferences
Subjects User-created subjects with colors
Mistakes Core log — description, type, approach, difficulty
Review_Sessions Metadata for each review session
Review_Session_Results Per-card outcomes (Got It / Shaky)

The mistake type system uses a strict enum:

$$\text{MistakeType} \in {\text{CONCEPT},\ \text{CARELESS},\ \text{PRESSURE}}$$

This constraint is what makes pattern detection possible. By forcing every mistake into one of three categories, ErrLog can compute:

$$\text{Dominant Type} = \arg\max_{t \in T}\ \text{count}(t)$$

and surface that insight automatically.


Challenges we ran into

1. Prompt precision over prompt length

The biggest challenge wasn't building — it was specifying. MeDo generates what you describe. Early drafts of the prompt produced apps that were missing edge cases, had inconsistent badge colors, or showed blank screens instead of empty states. The solution was treating the prompt like a proper engineering spec — exhaustive, unambiguous, and assumption-free. Every error state had to be explicitly described. Every empty state had to have its copy written out. Every interaction had to be named.

2. Flashcard review flow complexity

The Pre-Exam Review mode has non-trivial state: a deck that shrinks as cards are marked Got It, a second round for Shaky cards, session stats updating in real time, and a final summary screen with dynamic performance messages. Getting this flow right — especially the Round 2 transition and the session save logic — required careful specification of the state machine before generation.

3. Consistency across a large surface area

ErrLog has 7 pages, 3 modals, a full authentication flow, and a complex review mode. Keeping the design system consistent — the same badge colors, the same card shadows, the same spacing — across that entire surface required defining the design tokens explicitly in the prompt rather than leaving them to interpretation.

4. Balancing features against focus

The temptation was to add more — AI analysis, social sharing, spaced repetition algorithms, calendar integration. Every one of those features would have diluted the core value. The hardest product decision was choosing what not to build. ErrLog does three things: log, track, review. Everything else was deliberately deferred.


Accomplishments that we're proud of

  • The mistake taxonomy — The three-type system (Concept / Careless / Pressure) sounds simple, but it's the insight that makes everything else work. It's specific enough to be actionable, broad enough to cover every mistake a student can make.

  • The Pre-Exam Review flashcard mode — Full-screen, keyboard-navigable, with 3D flip animation, round-2 logic for shaky cards, and a session summary with performance-based feedback. This is the feature students will actually open on the morning of an exam.

  • Pattern detection — After every 5 mistakes, ErrLog checks if 4+ are the same type and surfaces an insight. This is the moment a student realizes "I don't have a knowledge problem, I have a carelessness problem" — and that realization is worth more than hours of additional studying.

  • Empty states and edge cases — Every page, every filter result, every error has a thoughtful response. No blank screens, no silent failures, no confusion about what to do next.

  • The design system — Consistent spacing, consistent shadows, consistent badge colors across every surface. The app feels like one thing, not seven pages bolted together.


What we learned

Writing the spec IS the hard work. The generation is fast. The thinking is slow. Knowing exactly what you want an app to do — every state, every edge case, every piece of copy — is the real skill, and it's the same skill required in traditional product development.

Constraint creates clarity. The decision to limit mistake types to exactly three forced every other feature to be sharper. The review mode works because the categories are fixed. The pattern detection works because the categories are fixed. The badge system works because the categories are fixed. One good constraint propagates value across the entire product.

Students need structure, not more content. The learning tools market is full of apps that add more material. ErrLog goes in the opposite direction — it takes the material you've already encountered, extracts the specific moments of failure, and makes those the entire curriculum. Less input, more signal.

The hardest UX problem is the empty state. An app that shows nothing to a new user teaches the user that nothing will happen. Every empty state in ErrLog has a clear explanation, a human tone, and a single action. That's not a detail — it's the difference between a user who returns and one who doesn't.


What's next for ErrLog

Near term:

  • AI-powered approach validation — When a student writes their correct approach, an LLM checks if the explanation is too vague and prompts them to be more specific before saving. Vague notes don't help during review.
  • Spaced repetition scheduling — Instead of manual review sessions, ErrLog automatically surfaces mistakes at optimal intervals based on how many times you've marked them Shaky vs Got It.
  • Exam date countdown — Set an exam date, and ErrLog calculates how many review sessions you need between now and then based on your unreviewed count.

Medium term:

  • Teacher dashboard — Educators can view anonymized class-wide mistake patterns, seeing which concepts students consistently misunderstand.
  • WhatsApp / Telegram bot — Log a mistake by sending a message. Friction is the enemy of consistent logging.
  • Import from PDF — Upload a marked test paper and let AI pre-fill the mistake descriptions for you to categorize.

Long term:

  • Predictive exam readiness score — Based on your review history and Got It rate, ErrLog estimates your readiness for an upcoming exam on a 0–100 scale.
  • Cross-student insights — Aggregated, anonymized data showing which concepts trip up the most students in a given subject — so you know what to watch out for before you even make the mistake.

The vision is simple: every student who uses ErrLog walks into their next exam having reviewed exactly what they needed to review, and nothing they didn't.

Built With

Share this project:

Updates