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

Share this project:

Updates