There is a sales pitch every anime fan has delivered at least once, myself included: "it gets good after episode 50, trust me." PeakCharts is my answer to it. Type in any show — anime or otherwise — and it charts every single episode's IMDb rating across every season, so you can see exactly where it dips, where it peaks, and whether "it gets good" is a promise or a hostage negotiation.
It's live, it's fast, it works on basically any show IMDb knows about, and the whole thing runs on one Cloudflare Worker on the free tier. That's the boast. The counterweight is that it's a side project — and that there is a feature sitting in production right now that literally no one can see, for reasons that are entirely my fault. I'll get to that.
One number that punishes bad endings
The chart is the honest part. The PeakMeter is the opinionated part: every show gets a single 0–100. It blends the headline IMDb rating with the mean of every episode, then adds a small consistency nudge — anchored against a snapshot of about 950 shows, so "consistent" means consistent relative to actual television, not relative to a number I invented — and finally a final-season nudge of ±4 in either direction, because endings matter. Stick the landing and the score gets a buff. Collapse in the last stretch and it gets nerfed.
I calibrated it against my own verdicts: Game of Thrones lands around 84, Breaking Bad around 96. If your personal ranking of those two shows differs, the PeakMeter is not for you, and that's fine — it's my number. This is the part where the score stops being statistics and starts being taste, which I consider a feature rather than a confession.
The small stuff I fussed over
- A Versus mode — pit any two shows head-to-head, overlaid episode timelines, a verdict, and a shareable URL so you can settle the argument by sending a link.
- Season tabs listing every episode's number, name, and rating, color-coded by rating band — built for skimming to find where you are and how good the road ahead looks.
- Mark-as-watched with no accounts, ever — it's localStorage and a quiet line-art eye on each tile.
- On mobile, the chart is tap-to-interact: static until you tap it, static again when you tap away.
- Under everything, one Worker proxying IMDb's own GraphQL — no API key, edge-cached, no build step.
Two of those hide small fights with myself. The watched marker started life as checkboxes and greyed-out posters, which I took one look at and killed:
"This is the home page not a private watchlist manager"— me, rejecting my own first design
And the tap-to-interact chart exists because an earlier version hijacked vertical scrolling on phones — your finger lands on the graph, the page stops moving, and now you're panning a chart you never asked to pan. A chart that traps your thumb is worse than no chart.
The day I blew the free tier
My favorite part of this project is a mistake. An early version computed each show's score and wrote it into Cloudflare KV — and every time I tweaked the formula (I tweak the formula a lot), it re-primed the whole cache and blew straight past the free plan's 1,000 writes per day.
The fix became the architecture. KV now stores only the raw IMDb data, written once per show, ever. The score is recomputed on every read. A formula change costs exactly zero writes: deploy, and the next page load just computes the new number. The constraint didn't limit the design — it was the design, and the design is better for it. I would not have arrived there without hitting the wall first.
The feature that's waiting on me
Here's the confession I promised. There's a "Recommended by Sora" rail built into the landing page — deployed, live in prod, fully wired up. It's invisible, because it hides itself until it has picks in it, and I haven't supplied any. A recommendation feature whose only missing dependency is its one curator. The infrastructure is done; the human is the bottleneck.
Same goes for calling the project finished. From my own todo list:
"actually make a short demo vid and craft a couple tweets to market it, then we can call it done"— the vault note, still unchecked
In the meantime it already does the thing it was born to do. Next time someone tells you a show gets good after episode 50 — go check.
Keep going Super Zen, in about forty lines · The games I love, and why