Spark โ Devpost Project Story
The Step Before Learning
"What do you want to learn?"
This is the question every learning app asks first. It's also the question millions of people cannot answer.
๐ง A 10-year-old is told she's "good at science." Nobody shows her that topology exists, that you can spend a lifetime studying the mathematics of knots. She picks biology because her teacher mentioned it. She might have been a mathematician. She'll never know.
๐ A Princeton sophomore has six weeks to declare a major. Interested in markets, neuroscience, and pure math โ but nobody's shown him behavioral economics exists at that exact intersection. He picks finance because his roommate is. Two years of vague dissatisfaction follow.
๐ฌ A PhD student in computational biology needs a dissertation topic. She's read hundreds of papers but has no map of where her field's edges are โ which questions are genuinely open, which keep getting punted to "future work." She wonders, sometimes, what was down the other roads.
๐ A 47-year-old engineer wants to learn something new โ just for himself. He opens Coursera. It asks him to search for a course. He stares at the search bar. He closes the laptop.
Four people. Four different moments in a life. One problem:
Every learning platform on earth assumes you already know what you want to learn. The step before that โ the discovery, the orientation, the what even is possible โ has never been solved.
Spark is built for all four of them. Not as four different products. As one.
What is Spark?
Spark is a curiosity engine โ the missing first step that turns "I don't even know where to start" into "I stayed up until 2am reading about knot theory and I don't know how I got here."
NOT a course platform.
NOT a quiz app.
NOT another thing that assumes you already know.
Spark is what comes BEFORE all of that.
How It Works
โ Who Are You? [10 seconds]
| Stage | Age | What Changes |
|---|---|---|
| ๐ฑ Little Explorer | 5โ10 | Simple language, visual-first, Ember guides everything |
| ๐ Student | 11โ17 | Concrete framing, relatable examples, personality choice |
| ๐ College & Grad | 18โ25 | Technical depth, research frontier unlocked |
| ๐ Adult | 25+ | Career context, lifelong learning mode, full tree |
One input. Everything โ language, domains, AI explanation depth โ calibrates instantly around it.
โก The Discovery Phase [~3 minutes]
Instead of asking what you want to learn, Spark shows you things.
Four cards. Pick the one that pulls at you. No wrong answers. No domain labels. Just concrete questions that let real curiosity speak before your brain's "am I even a science person?" filter kicks in.
| The Hidden Interest | A Student Sees... | A College Student Sees... |
|---|---|---|
| ๐ข Mathematics | "How does GPS know exactly where you are?" | "Why does infinity come in different sizes?" |
| ๐ป Computer Science | "How does TikTok decide what's on your feed?" | "How does a neural network actually learn?" |
| ๐งฌ Biology | "Why do leaves change color?" | "How does CRISPR edit one gene without breaking everything?" |
| ๐ต Music | "Why do some notes sound good together?" | "What is music theory actually about?" |
5 rounds ยท ~20 comparisons ยท 0 prior knowledge required
โข The Elo Preference Model
Round 1: picks "How does TikTok work?" โ CS gets +16 points
Round 2: picks "Why do economies crash?" โ Econ gets +16, CS unchanged
Round 3: picks "How does a neural net learn?" โ CS gets +12 (confirming)
Round 4: picks "What makes music sound sad?" โ Music gets +16
Round 5: picks "How does GPS work?" โ Math/CS both get +8
Result: CS: 87 ยท Math: 71 ยท Econ: 64 ยท Music: 58
People are inconsistent. Most apps treat that as noise and ignore it. Spark treats it as signal โ an Elo-style model where contradictions pull scores toward the mean rather than locking you into early conclusions. After 5 rounds, Spark has a fuzzy, human, honest ranked list of your interests.
โฃ The Knowledge Tree [infinitely deep]
Mathematics
โโโ Number Theory
โ โโโ Prime Numbers
โ โ โโโ The Riemann Hypothesis โ open problem
โ โ โโโ Cryptography
โ โโโ Modular Arithmetic
โโโ Topology
โโโ Knot Theory
โ โโโ The Jones Polynomial
โ โโโ Knot Invariants โจ โ "explain this to me"
โโโ Algebraic Topology
Every node has a โจ Explain this to me button. Every explanation follows the same structure โ but is generated fresh for you:
| Part | What It Does |
|---|---|
| ๐ช Hook | One surprising, counterintuitive sentence |
| ๐ก Core Idea | Plain language, calibrated to your age |
| ๐ฏ Analogy | Tied specifically to your top interests |
| ๐๏ธ Example | Something you can actually picture |
| ๐ช Teaser | One thing deeper, waiting if you want it |
The same node. A 10-year-old and a math PhD. Two completely different responses. Same model. Same topic. Different person.
โค Universal Search [always one tap away]
You're in lecture. Your professor says "eigenvalues." You've heard it before. You don't really know what it means.
In the past: let it go, or fall down Wikipedia for 45 minutes.
With Spark:
1. Tap search bar (persistent, every screen)
2. Type "eigenvalues"
3. Read personalized explanation โ under 3 seconds
4. Tap knowledge tag: โจ ๐ ๐ฑ โ
โ one tap
5. Go back to class
Total time: 30 seconds. Spark logs it, connects it to your tree, and it's waiting for you when you're ready to go deeper.
โฅ The Living Tree
Every concept you explore becomes a branch. Every branch has a state:
| State | Visual | Meaning |
|---|---|---|
| ๐ธ Flowering | Full color, soft glow, blooms at tip | Genuinely mastered |
| ๐ฟ Healthy | Rich, saturated domain color | Actively tended |
| ๐ Thirsty | Slightly faded, yellow-orange tips | Review coming due |
| ๐ฅ Wilting | Desaturated, sparse leaves | Long overdue |
| ๐ชต Dormant | Grey-brown, bare | Resting โ but never gone |
Branches are color-coded by domain (math = deep blue, art = warm orange, music = purple) and never deleted โ dormant branches are archaeology, not failure. Find the branch from three years ago when you spent a week obsessed with Byzantine history. It's still there. Still yours. Still revivable with a single tap.
No other app shows you what your curiosity actually looks like. Spark does.
Why This Wins the Education Track
| Criterion | How Spark Delivers |
|---|---|
| โ Interactive | Card grid, infinite tree, branch animations, one-tap tagging โ exploration, not consumption |
| โ Accessible | The only app built for ages 5โ70 on the same product. No prior knowledge ever required. |
| โ Personalized | Elo model + user context on every AI call + knowledge-state SRS seeding. Personalization isn't a feature โ it is the product. |
The Competitive Landscape
| App | What It Assumes | Who It Leaves Behind |
|---|---|---|
| Khan Academy | You want school subjects | Everyone outside a classroom |
| Brilliant | You want STEM | Artists, historians, musicians |
| Duolingo | You want one specific language | Anyone still figuring out what |
| Coursera | You're ready for a multi-week commitment | The casually curious |
| Spark | Nothing. That's the point. | Nobody. |
How I Built It
Solo. Second hackathon ever. Princeton freshman.
Stack:
React PWA ยท Gemini 2.5 Flash via Puter.js ยท Firebase ยท
Client-side Elo ยท Spaced Repetition
The AI architecture โ 5 prompt types, 1 abstraction layer:
// Every single AI call goes through one function.
// Swap the backend with one config change. Forever.
const AIService = {
async complete(prompt, systemPrompt, userContext) {
// userContext = { ageGroup, personality, topInterests,
// knowledgeStates, currentNode, currentPath }
// Nothing is ever context-free.
}
}
The latency problem โ and how I solved it:
The rule: anything the user didn't ask for must be instant.
anything they did ask for can take up to 3 seconds.
Layer 1 โ Static seeds: top-level common nodes pre-written, zero latency
Layer 2 โ Pre-generation: children generated the moment parent is viewed
Layer 3 โ Firebase cache: keyed by node path + age group
Result: the second person to explore "Math โ Topology โ Knot Theory"
gets an instant response. Cache grows with every user.
The hardest prompt engineering challenge:
Topic: "why do bees build hexagons" โ must produce: hook + core idea +
analogy + example + teaser
Topic: "what is the Riemann hypothesis" โ same structure, different person,
different depth, different language
Getting a model to reliably hold the same output shape across every possible topic, age group, and personality mode took real iteration. The structure is what makes every explainer feel like Spark โ not just a generic AI response.
What I Learned
The framing of AI output matters as much as the content.
"You actually know this now" lands completely differently than "Module complete."
The emotional contract between the app and the user is written in the words the AI chooses โ and those words are engineerable.
The most important UX decision in a learning app has nothing to do with the learning. It's what happens before the first lesson. Nobody has gotten that right. Spark is my attempt.
What's Next
Age 10 โ discovers she loves the math of patterns
Age 16 โ College Major Mode shows her what mathematicians actually do
Age 22 โ Research Frontier maps the open questions in her field
Age 28 โ Opportunity matching surfaces the lab working on her question
Age 47 โ Still exploring. Tree still growing. Ember still there.
Same app. Same tree. One whole life of curiosity, navigated.
- ๐ฌ Research Frontier โ the knowledge tree extends beyond what's known into open questions, active disagreements, unexplored adjacencies
- ๐ College Major Mode โ day-in-the-life discovery cards, disposition profiling, honest trade-offs for every field
- ๐ Opportunity Matching โ competitions, professors, companies surfaced from curiosity threads, not a resume
- ๐ฑ Full all-ages rollout โ demo is scoped to college; the vision is 7 to 70
Built With
- claude
- css
- elo
- firebase
- javascript
- pwa
- react
Log in or sign up for Devpost to join the conversation.