Problem Statement

People don't quit learning because they can't find resources. They quit because they open YouTube, get hit with ten videos at wildly different levels, and have no idea where to actually start. AI chatbots aren't much better. They'll answer whatever you ask, but they have no idea what you actually know. Ask about recursion without understanding the call stack and you'll get a technically correct explanation that means nothing to you. No structure, no path, just answers to questions you might not even be ready to ask yet. Skip a fundamental concept early on and everything after it gets harder to follow. Eventually it's easier to just stop.

What it does

Type any topic. A tree grows with 3 big branches. Each branch is a sub-concept. Press space on a node and you get a short comprehension check in order to grow the tree. Get it right and the branch keeps growing into 3 deeper concepts. Get it wrong and the tree splices in a prerequisite between that branch and its parent: a stepping-stone concept it thinks you need to lock down first. The tree you end up with is a map of what you actually understand, and the gaps are visible in the topology itself.

How we built it

  • Vanilla JavaScript frontend. No framework, no bundler, no transpile step. The tree is one big animated SVG.
  • Node + Express backend with five routes: seed, expand, diagnose, explain, question.
  • Google Gemini API (2.5 Flash) handles everything that needs intelligence, researching concept branches, writing diagnostic questions, grading answers, suggesting prerequisites, using the SDK's structured-JSON output so we never have to parse free text.
  • Deployed to Vercel as a single serverless function.

Challenges we ran into

For a while, every topic returned the same generic output regardless of what we typed. Took us longer than we'd like to admit to find the actual cause: our API timeout was set to 3.5 seconds. Gemini with grounded search can take 10 to 30. Every request was silently bailing and falling back to static content. Bumping the timeout was a one-line fix that completely changed how the app behaved.

We also rethought the quiz flow mid-build. The original version quizzed you the second you clicked anything, which felt more like an interruption than a learning tool. We flipped it so you can explore freely first and test yourself when you want to. That one change made the whole thing feel less like a test and more like a tool.

What's next for Flourish

  • Save and share your learning trees with other people.
  • Difficulty scaling so the tree adapts from beginner to advanced.
  • Pattern analysis on prerequisite insertions to figure out which concepts trip people up most often.
  • Better mobile support for touch navigation.

Built With

Share this project:

Updates