Building a Philosophy Quiz That Shows Its Work

The Millerman School quiz asks you to imagine advising a philosopher-king, hides how your answers are scored, and gates your results behind an email form. I wanted to know if fiction, transparency, and real exemplars could do the job better. whothinkslikeyou.com is the result.

The Problem with Philosophy Quizzes

I took the Millerman School quiz a few months ago. It's the most well-known online philosophy diagnostic, and it's frustrating in ways that feel like design failures rather than philosophical ones.

The scenarios are contrived. "A brilliant scientist discovers a technology that could double human lifespan, but only for those who can afford it." Nobody has faced this decision. The answer options bundle orthogonal ideas together so you can't tell what's actually being measured. Scoring is a black box -- you answer 30 questions and get a radar chart with no explanation of how any individual answer moved the needle.

Worst of all, there's an email gate. You answer 30 questions about the nature of truth and political authority, and then you're asked to hand over your email before you can see the results. The quiz assumes you already know what "Straussian" means. If you don't, the results are a collection of labels that reference a conversation you were never part of.

These aren't philosophical problems. They're design problems. The underlying idea -- mapping everyday intuitions to real philosophical traditions -- is genuinely interesting. The execution just treats the quiz as a lead-gen funnel instead of an educational tool.

Eight Decisions Before Any Code

The previous posts on this blog are about agent architecture and infrastructure legibility. This project is a consumer product, not a pipeline. But the same discipline applies: document every decision before writing code, so you can evaluate whether each one is working.

I wrote eight architecture decision records before the first line of JSX. Each one has a rationale, rejected alternatives, and consequences. Here's the summary:

ADRDecisionKey Rationale
001Fiction-only narrativesReduces cognitive load, leverages existing emotional investment
002Forced binary dilemmasForces genuine signal -- no "balanced" escape hatch
003Seed + follow-up structurePlaces you on a pole, then pushes back to disambiguate
004Transparent scoringEvery answer shows "+2 toward Discoverer" -- the core differentiator
005Exemplar-based results"You think like Plato" communicates more than a spectrum bar
006Per-question takes120 unique commentaries, not generic dimension blurbs
007FastAPI + disk + Cloudflare$6/mo, zero open ports, disk JSON as database
008Both poles definedYou see what you are AND what you're not

Three of these deserve a closer look because they're doing most of the work.

The Fiction Gambit

The most distinctive design choice: you pick a single fictional world -- The Matrix, Breaking Bad, Star Wars, or Game of Thrones -- and all ten questions live inside that story. The quiz never leaves the narrative.

This solves two problems at once. First, it eliminates the contrived scenario problem. "Morpheus offers the truth -- even though it's brutal. Cypher wants back in the simulation because the steak tastes real enough. Who are you siding with?" tests the same metaphysical dimension as the longevity-drug thought experiment, but the user already cares about these characters. The emotional investment is pre-built.

Second, it creates narrative coherence across all five dimensions. You're not re-orienting every question. The Matrix path explores truth, authority, knowledge, technology, and identity all through Neo, Morpheus, and the machines. Each question builds on the same world you've been thinking about since you pressed "start."

The seed + follow-up structure layers on top of this. The seed question places you on a spectrum (worth ±2 points). Then the follow-up shows you what you just said ("You said: Morpheus -- I'd want to know what's real, even if it's ugly") and pushes back with a complication. If you picked the red pill, the follow-up asks: Morpheus's life is objectively worse now -- hunted, eating slop on a hovercraft. Still worth it? That's worth ±1 more point.

Five dimensions, two questions each, seven-point scale per dimension. Ten questions total, all inside one story. The branching means each follow-up is tailored to the answer you actually gave, not a generic second question.

Transparent Scoring as the Core Feature

This is the design decision that matters most. Every answer in your results shows a colored pill: +2 toward Discoverer, -1 toward Creator. You see exactly how each answer moved your score. There's no hidden weighting, no "we consider multiple factors" hand-waving.

Transparency isn't just a UX choice -- it's the educational mechanism. Seeing the scoring encourages "what if I'd answered differently?" thinking, which is the philosophical reflection the quiz is trying to produce. The Millerman quiz gives you a radar chart and says "you're 72% Straussian." This quiz says "here's the specific question where you leaned Straussian, here's what that means, and here's Leo Strauss's take on the same question."

The results also define both poles of every dimension, side by side. You don't just see "Discoverer (Platonist)" -- you see that next to "Creator (Nietzschean)" with a plain-English definition of each. Your side gets a thicker border. You don't really understand what "Discoverer" means until you can see what "Creator" means and say "that's not me."

Results That Mean Something

Instead of spectrum bars, the results show a vertical list of six exemplars per dimension -- real people and fictional characters positioned along the spectrum. Plato at one end, Nietzsche at the other. Your closest match is highlighted in green with a "You" badge.

The roster spans 30 exemplars across five dimensions: Plato, Aquinas, C.S. Lewis, William James, Foucault, Nietzsche on the truth axis. Lee Kuan Yew and Marcus Aurelius on the authority end, Thoreau and Jefferson on the other. Dumbledore and Machiavelli for hidden knowledge. Tony Stark and the Accelerationists for technology. Aristotle and Mr. Rogers next to Sartre, de Beauvoir, and Tyler Durden on identity.

Each exemplar has a face (WSJ hedcut-style portrait), a signature quote, and a Wikipedia link. "You think like Plato" with Plato's face next to his quote "The Forms are more real than shadows" communicates something a dot on a spectrum bar never will.

Below the exemplar list, each question in the results includes a per-question take from your closest exemplar. Not a generic "Plato believes in objective truth" but "Plato would take the red pill instantly -- truth is the highest good, no comfort justifies living in a lie." Specific to the story, specific to the question, specific to the dimension.

Content is the bottleneck. The application code is 726 lines across 6 frontend files and 219 lines of backend Python. The content -- dimensions, exemplars, questions, takes, tradition explanations -- is 555 lines of data.js. There are 120 unique per-question takes (4 stories × 5 dimensions × 3 question phases × 2 perspectives). Adding a new story path requires writing 30 new takes. The code took a day. The content is ongoing.

The Stack

The quiz runs entirely client-side. Zero API calls during the ten questions -- everything lives in a 555-line data.js loaded at startup. On completion, a single POST /api/results saves the answers and returns a shareable /r/{hash} URL. That's the only server interaction.

Backend is FastAPI on a $6/month Digital Ocean droplet. Storage is disk-backed JSON files -- one file per result, named by an 8-character URL-safe hash. No database, no Redis, no ORM. Results are permanent; there are no sessions to expire.

The droplet sits behind a Cloudflare Tunnel. Nginx listens on 127.0.0.1:80 only -- zero inbound ports except SSH. All traffic flows: internet → Cloudflare edge → tunnel → localhost nginx → localhost uvicorn. The frontend is a Vite-built SPA cached at Cloudflare's edge. The /r/{hash} route serves an HTML template with OG meta tags for link previews, then the SPA hydrates with preloaded data.

This is the same "right-size the infrastructure to the problem" thinking from the harness engineering post. No database because JSON files on disk are simpler, faster for this access pattern, and portable. No serverless because a $6 droplet handles the load with room to spare. No Docker because systemd is enough. Boring tech, legible stack.

What Surprised Me

Binary choices produce better signal than multi-option. The Millerman quiz uses four options per question. With two options, there's no reasonable middle to hide in. You have to pick a side. The follow-up is where nuance happens -- it pushes back on whatever you chose and forces you to either commit or soften. Two binary questions per dimension produce a seven-point scale (-3 to +3), which is plenty of resolution.

The exemplar mix matters more than the scoring math. Having Aristotle next to Mr. Rogers next to Remy from Ratatouille on the same spectrum makes philosophy feel accessible in a way that labels alone never do. The fictional characters aren't filler -- they're doing the heaviest pedagogical work. "You think like Remy" is a more effective entry point to Aristotelian virtue ethics than any definition I could write.

Content authoring is the real work. Writing 120 per-question takes that are specific to both the story and the philosophical dimension took longer than building the entire application. Each take needs to sound like the exemplar, reference the specific scenario, and illuminate the philosophical principle -- in two sentences. The code was a day. The content is the thing that will keep improving.

ADRs work for consumer products, not just infrastructure. Eight decision records written before the first line of code. Every one has "Alternatives Rejected" and "Consequences" sections. The same discipline that documents a prompt caching strategy or a NixOS module hierarchy works for quiz design. Document the decision, ship the code, evaluate whether the decision was right.


The quiz is live at whothinkslikeyou.com. Pick a story, answer ten questions, see exactly how your answers map to real philosophical traditions -- and who else throughout history thought the same way.