blog-cover

TL;DR

  • RabbitHole is an AI curiosity wiki: you type a topic and get a structured, multi-page guide, explained through the things you already know.
  • Every guide ends with a quiz, flashcards, a podcast and a few new rabbit holes to fall into next.
  • It took me about two years and three names to get there: AquaMesh, then StudyMesh, then RabbitHole.
  • You can try a sample guide without creating an account.

RabbitHole started its life as a submarine.

Not a real one. A dark green dashboard full of sonar buttons and depth controls, built in September 2024 for one reason only: I wanted to prove I could build something serious with React. There was no user, no problem to solve and no plan beyond "make it look good".

Two years later that same repository is a full SaaS with AI guides, a billing system, a landing page, a trailer, and a rabbit with headphones that answers your questions. This post is the story of how one turned into the other, and of the ideas that only appeared because I kept building.


What RabbitHole is

If you have ever tried to learn something complex in a chat window, you know how it goes. You ask a question, get a wall of text, ask a follow-up, get another wall, and twenty minutes later the useful part is buried somewhere above you. I used to copy AI answers into my notes app just to keep them.

RabbitHole takes a prompt and gives you a guide instead of an answer: a few short pages, each one building on the previous, with a sidebar to move between them and an AI chat that only talks about what is on the page.

The part I am most proud of is small and easy to miss. Before you start, you tell RabbitHole what you already know: Docker, cooking, football, Java, whatever. Then every new topic gets explained through it.

The 'What you already know' panel with Docker, Node, Java and React added
The list RabbitHole uses to pick its analogies.

So if you know Docker and ask "What is Kubernetes?", the guide opens with a Quick Start that starts from the containers you already understand and only then explains what changes when there is a whole cluster of machines underneath. It even tells you where the analogy breaks.

Quick Start of a Kubernetes guide, explained through Docker
Kubernetes, explained to someone who knows Docker.

The Key idea is a 20-second skim, the Quick summary a 60-second version, and only then come the full pages. You choose how deep to go.

That is the product today. Getting there was much less tidy.


AquaMesh: the submarine era

The first version was called AquaMesh, and the water theme went all the way down. The idea was an organisation app: you had Dashboards, and inside each dashboard you placed boxes called Widgets, which you could move around and resize. In the screenshot below, the whole screen is a dashboard and each panel inside it is a widget.

AquaMesh: a dashboard with two widgets, Control Flow and System Lens
AquaMesh: one dashboard (red 1) with two widgets, Control Flow and System Lens (purple 1 and 2).

At first there were only a couple of predefined widgets, which made it more of a showroom than a tool. So the second version added a Widget Editor: a drag-and-drop page where you could build your own widgets out of text, fields, buttons, switches and charts. Something like HTML and CSS, minus the code. There was even a mock login with different roles, because a dashboard app without roles did not feel real enough.

The Widget Editor: build a widget once, then drop it into any dashboard.

I was happy with it, so I showed it to some friends. Their verdict was polite and accurate: nice idea, not very practical. Nobody could tell me what they would actually use it for, and neither could I.

So AquaMesh went into a drawer for a few months.


StudyMesh: the AI arrives

In September 2025 I wanted to add the project to my CV, and I did not want to add it as it was. I needed one new idea that made the whole thing worth opening. The obvious candidate was AI: instead of building every widget by hand, what if you could ask for them?

That question gave the project its first real user in my head: a student. A student keeps their subjects in folders (Mathematics, Anatomy, Literature), each folder holds dashboards, and each dashboard mixes widgets with an image, a PDF, a YouTube video or some notes. On top of that, two new buttons: Create Study Pack, which generated one dashboard from a photo or a piece of text, and Create Study Path, which generated several of them in order.

I also switched the design to white, mostly so it would look professional. The logo still said AquaMesh, but it was already StudyMesh in spirit.

Create Study Pack: from text or image generate markdown, key facts and quizzes.

It worked, but it was rudimentary. You got some markdown, a few key facts and a quiz, glued into widgets that had been designed for something else entirely.

The next iteration got the name and a new logo for real. Dashboards moved into a Library, and the screen settled into three columns: what you can create on the left, what you created in the middle, and an AI chat on the right that only answers about the middle. The study pack split into four quicker options (quiz, flashcards, clear notes and "create from material"), and generations now appeared as pills in a queue at the bottom, so you could keep working while the AI was busy.

StudyMesh with three panels: creation menu, study content and AI chat
StudyMesh: create on the left, read in the middle, ask on the right. Tap the small ones to see it on a phone, and generating material in dark mode.

I would love to tell you this layout came from a clear plan. It didn't. I was learning while building, trying things, keeping what worked and deleting what didn't, and checking on my phone the whole time that nothing broke on a small screen. A lot of what I built in that period no longer exists, and that is fine; it is how I found out what the product should not be.


From a project to a product

Up to this point StudyMesh was an app. What turned it into a product was all the boring, invisible work around it:

  • Real accounts, with Google sign-in and the data in Supabase.
  • A landing page, which got a full second version a few months later.
  • Three AI modes: Hosted, where I pay for the model and you pay me in credits; Local, which runs a model on your own machine; and BYOK (bring your own key), for people who already pay for an API key.
  • Billing with Stripe and a currency of its own, Study Credits: a guide cost 3, everything else 1, and a €2 pack gave you 150 of them.
  • Podcasts, so you can listen to a guide on the bus.
  • An AI pet, because the chat felt cold without a face. It started as a single dolphin and ended up as a small cast to pick from: a bee, a dolphin and a parrot.
StudyMesh landing page on a phone StudyMesh AI chat with the dolphin pet on a phone

None of these features is what a user remembers. All of them are what a user needs before they can trust you with an email address, let alone a card number. If you have only built side projects, this is the part that surprises you: the app took months, and making it a product took about as long again.


RabbitHole: finding the one idea

In June 2026 one feature changed the shape of everything else: the "What you already know" list from the beginning of this post.

Once guides could be explained through your own knowledge, they stopped being study material. A developer learning Kubernetes, a cook curious about fermentation, a football fan reading about game theory: none of them is studying for an exam. They are following their curiosity, one link at a time. The name "StudyMesh" suddenly sounded like homework.

That is how it became RabbitHole. And the name pulled the last missing piece into place: what happens when a guide ends. Now the final page gives you a quiz, and after it, a handful of new rabbit holes, topics that build on the one you just finished. One more button, Add to what I know, puts the topic into your list, so the next guide can use it as an analogy.

Quiz results with 'Add to what I know' and suggested follow-up guides
The end of a guide is the start of the next one.

That loop is the whole product in one picture. Every guide you finish makes the next one easier to understand.

The rest followed the name, as these things do. The interface got a new page, the dolphin became a rabbit with a headset and a green bandana, and Study Credits became carrots.

Carrot balance, the cost of each action and three carrot packs
The carrot shop. A couple of guides a day are free; after that, carrots.
RabbitHole workspace with pages, a Kubernetes guide and the rabbit AI chat
RabbitHole today: pages on the left, the guide in the middle, the rabbit on the right.

Under the hood

For the developers reading: RabbitHole is a React + TypeScript app inside a Turborepo monorepo, with serverless functions on Vercel as the backend. Supabase holds the data and the accounts, Stripe handles the carrots, and the guides themselves are written by models from OpenAI, Gemini and Cerebras. Tests run with Vitest for the logic and Playwright for the E2E.

Every external service RabbitHole uses

Vercel: hosting and serverless functions.
Supabase: database and authentication.
Google Auth: one-click sign-in.
Stripe: payments for carrot packs.
OpenAI, Gemini and Cerebras: the models behind guides, quizzes, flashcards and chat.
Unreal Speech: the voices in the podcasts.
Tavily: web search inside the AI chat.

The code is public on GitHub.


Autumn/Winter seasonal image

AquaMesh was built to prove I could write React. RabbitHole proved something more useful to me: that I can take an empty repository all the way to a product with accounts, payments, a landing page and an idea of its own.

Whether it was a good product is a different question, and the numbers have a clear opinion about it. That is the next post: RabbitHole: The Post-Mortem.

In the meantime, the rabbit is still answering questions. Pick a topic and fall in.