Inspiration
What it does
Terra Incognita
An atlas that fills in as you learn.
Inspiration
Most study tools give everyone the same explanation and the same quiz, regardless of what they already know. I've always learned best by testing myself early and letting my mistakes tell me what to go back and review, rather than reading something passively and hoping it sticks. I wanted a tool that worked that way by default — one that writes the explanation for you, at your starting point, and then quizzes you in a way that actually adjusts as you go, instead of handing everyone the same static page.
The "unknown territory" framing came naturally once I had the core idea: every topic you don't understand yet is just unmapped ground. Learning it is charting it.
What it does
Terra Incognita has two moves.
- Chart a topic. Type in anything you want to understand, tell it where you're starting from (new to it / some grounding / comfortable and want depth) and how you like things explained (analogies, step-by-step, or just the mechanism). It writes you a short, personalized "field note" on the spot — a real explanation generated for that combination of topic, background, and style, not a lookup from a fixed database.
- Test what you've learned. A quiz generates one question at a time, tuned to a difficulty dial that moves with you: get a question right and the next one gets harder; get one wrong and it eases off, with a short explanation of the correct answer either way. Every topic you chart lands in "Your atlas," each with a mastery meter that fills in as you prove you understand it.
Nothing is pre-written. The explanations and the quiz questions are both generated live, so the same topic looks different depending on who's asking and where they're starting from.
How I built it
It's a single-page React app that calls the Claude API directly for both the field notes and the quiz questions, using tightly scoped prompts that force a strict JSON response (title, explanation, analogy for field notes; question, options, correct answer, and explanation for quiz items). An adaptive loop tracks mastery and difficulty per topic entirely client-side — no backend, no database, everything lives in memory for the session.
Visually, I leaned all the way into the cartography metaphor instead of building another generic dashboard: an ink-navy palette, a compass rose, topographic contour rings, and a gold accent that marks whatever's been "charted." Fraunces (an old-atlas-feeling serif) carries the headings; Space Grotesk carries the UI.
Challenges I ran into
- **Getting reliable structured output. 1.Even with a strict system prompt, the model would occasionally wrap its JSON in commentary or code fences. I added a lenient parser that falls back to extracting the outermost
{...}block if a direct parse fails. - **Tuning the adaptive loop.2 Too aggressive, and the difficulty swings felt erratic; too gentle, and it never really challenged you. I settled on capped steps — mastery moves by +18 on a correct answer and +6 on an incorrect one, difficulty moves by at most one level in either direction.
- Stale questions mid-fetch. Early on, it was possible to click an answer on the previous question while the next one was still loading, and have it register against the wrong question. Fixed by clearing the active question the moment a new one is requested.
Accomplishments I'm proud of
- Every explanation and every quiz question is generated live and shaped to the learner — nobody sees the same content twice for the same topic.
- The adaptive quiz genuinely responds in real time rather than following a fixed question bank.
- The whole thing — topic input, personalized explanation, adaptive quiz, mastery tracking — runs in one lightweight file with no backend.
What I learned
Building something AI-native shifted a lot of the real design work into prompt and schema design, not just layout — getting the model to consistently return clean, well-shaped JSON mattered as much as any CSS decision. I also learned how much small state-management details (like clearing stale data before a new fetch) matter once an interface depends on live generation instead of static content.
What's next for Terra Incognita
- Spaced repetition, so topics resurface for review right before you'd naturally forget them
- Letting learners paste in their own notes or a document so field notes ground themselves in that material
- Persisting the atlas across sessions
- A read-aloud mode for field notes
Built With
- claude
- llm
- python
Log in or sign up for Devpost to join the conversation.