Back to portfolio

Reader Type

Prototype Books Web App Vanilla JS
Open app

Reader Type suggests a book genre by asking about the reader rather than about their bookshelf.

Almost every book recommendation works from what you have already read and offers more of the same. That finds the next thing like the last thing, and can only point back at where you have already been.

This one asks twenty four short statements, answered on a five point agree scale, and builds a profile across ten dimensions. That profile is matched against sixteen genres. You get a genre, three books chosen to suit you, and the two next closest genres with their own shelves. About three minutes, no sign up, nothing uploaded.

What it measures

Ten dimensions. The first six describe the person and sit close to the Big Five personality factors:

The other four are about reading rather than personality. They separate books a personality model alone would treat as interchangeable:

Why hope gets its own axis

Hope is a filter readers apply constantly and quizzes rarely ask about. It is not the same as how intense you like things, and collapsing the two is one reason recommendations miss.

Never Let Me Go and Project Hail Mary are both science fiction, both well liked, and both about someone facing an impossible situation. They are opposite answers to whether it comes out okay. Handing over the wrong one is a bigger miss than getting the genre wrong, because it gets put down for reasons that have nothing to do with the subject.

How the matching works

Each genre carries its own profile across the same ten dimensions. Matching compares the shape of your profile against each genre's, rather than the raw numbers, so answering strongly across the board does not match everything.

Two adjustments keep it honest. Both sides are standardised first, so "high curiosity" means high relative to the other genres rather than in the abstract. Then each genre is calibrated against how it scores for someone answering at random, which stops genres in crowded parts of the space from winning by default. Without that, the catalogue does more of the answering than the person does.

The statements are balanced in both directions too: every dimension carries as much weight where agreeing raises it as where agreeing lowers it. Agreeing with everything therefore produces no result at all. Without that, the quiz measures how agreeable someone is rather than what they like.

The books are picked for you, not for the bucket

Getting the genre right is only half of it. Literary Fiction holds both Gilead and Never Let Me Go, and giving two very different readers the same three titles wastes most of what the quiz just learned.

So every book carries two tags of its own: how hopeful it is, and how much work it asks. The three books are ordered against your scores on those, with hope weighted more heavily. Someone who needs things to end well gets Gilead first, someone drawn to sad stories gets Never Let Me Go first. Same genre, different shelf.

It tells you when it is unsure

Any quiz can name a winner. Not every set of answers supports one. If the answers sat near the middle, or the top two genres are separated by almost nothing, the result page says so and points at all three rather than presenting a coin toss as a reading of someone.

It also asks whether it got you wrong, and if so, which genre would have been right. That is recorded alongside the profile and the guess, so the model can eventually be fitted to real responses instead of hand-authored profiles. It stays in the browser, and can be exported or deleted.

What it does

How it's built

Plain HTML, CSS, and JavaScript. No framework, no build step, no backend, no dependencies. The whole model lives in one data file: the ten dimensions, the twenty four statements with their weights, and the sixteen genres with their profiles and books. Changing what the quiz believes means editing that file and nothing else.

Everything runs in your browser. There is no account and nothing is sent anywhere, so your answers and any feedback you leave never leave your machine.

The honest caveat

This is entertainment with a real model underneath, not a validated instrument. The statements borrow the style of Big Five items but are not the validated scales, and every genre profile is a hand-authored judgement call rather than something fitted to data. Until enough real responses come in, those numbers are informed guesses.

No genre is adjusted to make particular people get particular results. Where a genre comes up too often or too rarely, the fix belongs in a rule that treats all sixteen the same, never in a nudge toward the answer someone wanted. Treat the result as a decent suggestion, not a verdict.

Try it yourself

Twenty four statements, about three minutes. Press 1 to 5 rather than clicking if you want to move quickly, and use Neutral freely. Some statements are deliberately worded so that agreeing means less of something, so read each one on its own terms.

Open app