All case studies

Case study

The Sorting Hat

A niche-finding web app that turns six honest questions into two or three specific business directions, built to show how a chat-based coaching assistant could work as a standalone product.

Tech stack

ReactTypeScriptViteTailwind CSSCanvas APIRender

The problem

Business coaching communities have started running custom AI assistants inside tools like Slack, built to walk members through specific problems, in this case, helping someone work out what business to start. It's a smart pattern, and it works. It also runs into three limits.

They live inside the chat tool, so only people already in the workspace can use them, and there's nowhere to send a curious stranger. They run on LLM calls, so every conversation costs money and the bill grows with usage. And a free version of the same idea often ends up as a custom GPT on someone else's platform, when it could be a proper web tool that reaches anyone who's curious.

So I asked what a tool like this would look like as its own product: fast, polished and open to anyone.

That raises a harder problem. A free tool that might reach a very large audience can't let its cost scale with every visitor. That constraint shaped the architecture as much as the design did.

The approach

The quiz asks six questions, and it isn't a chatbot. Skills, audience size, interests, hours per week, preferred business models and the biggest blocker. Those six answers are the entire input. What comes back is two or three specific directions, each with a rationale, a concrete next step and an honest caveat, instead of a generic list of ideas.

The recommendation engine is a single module, generateRecommendations, and it's rules-based. It scores a set of niche templates against the answers (skill overlap, business-model preference, time available, audience size) and fills them in with the person's own words. Most of what makes a result feel personal is deterministic, so it costs nothing to compute.

An LLM only earns its cost in one spot: turning free-text answers into natural sentences. That would be one bounded call per session, made from a stable snapshot of the answers. The same six answers always produce the same input, so the call can be cached. If the model is down or rate-limited, the rules engine still returns a complete result by itself. Swapping in an LLM means rewriting one file and leaving the UI alone.

There's no backend. Everything runs client-side, so the app deploys as a static site with no database, no auth and nothing to keep running.

The design has a point too. A warm night-sky palette, and a constellation motif where each answered question plots a star and the results screen reveals the shape they draw. Each result can be saved as a poster-style image, drawn with the Canvas 2D API and no extra dependency, so it's worth sending to someone.

Tech stack

It's a small, typed single-page app in React, TypeScript and Vite, with a simple state machine that moves from landing to quiz to results. Tailwind CSS handles the styling, with Fraunces for headlines and Inter for body text. The shareable image comes from the Canvas 2D API, and Render hosts the static build from a render.yaml blueprint.

The outcome

The result is a working, deployed prototype. You can go from the landing page through to personalised results and a shareable image, and the cost and scaling thinking is built into how the code is structured.

It's a demonstration, not a production system. The engine is deliberately rules-based, and the LLM step is designed but not built. The goal was to show that an assistant like this can stand on its own as a product, and where the money would and wouldn't go if it did.

The code is on GitHub, and the live version is there to try.