Skip to content
← All work

Canon

Rank anything you care about, one honest comparison at a time. A native iOS app that swaps star ratings for a gut reaction and a few quick duels, so every album, film, golf course, or book lands in its exact place with a score to match.

Role
Product, design, iOS
Platform
iOS
Stack
Swift 6, SwiftUI, SwiftData
Status
In development
Canon's home screen, with today's and yesterday's rankings, their scores and notes, and your lists
A Top 10 Rap Albums list in Canon, ranked from #1 with a score beside each album

The problem

Star ratings lie. Ask someone to rate their favorite records out of five and nearly everything comes back a four.

A star is a guess made in isolation. It can't tell your third favorite album from your thirtieth, and it says nothing about what sits above or below. What people actually carry around is a sense of how two things compare, and almost nothing asks for it.

So Canon asks a different question: this, or that? A ranking is a series of small, honest decisions, and the app's job is to ask as few of them as possible.

How ranking works

Adding something takes one gut reaction and a few quick comparisons against things you've already ranked. Nothing ever asks for a number.

  1. 01

    Gut check

    Loved it, it was fine, or nah. One tap, before any comparison happens.

    The gut check in Canon: Loved it, It was fine, or Nah, under the album DAMN.
  2. 02

    A few duels

    Which is better? Canon shows the new item against the middle of what's left in its bucket, and each answer halves the range. Among the ten or twenty that share a bucket, that's usually three or four taps.

    A duel in Canon asking which is better, DAMN. or The Blueprint
  3. 03

    It lands

    The item drops into its exact position, the list rescores, and you see what it beat and what beat it.

    Where DAMN. landed in Canon: #4, a score of 8.9, and the albums just above and below

What we built

A ranking app with one rule: it never asks for a number. Every score comes from a gut reaction and a few comparisons, and the rest of the app is built around keeping those rankings honest and easy to find.

Four catalogs
Music, film, places, and books, searched by name, with artwork and details pulled in automatically.
Communities
Lists live in a tree of topic spaces, eighteen seeded and yours to add to, with room for a list per opinion you hold.
Lists with caps
Top 5, 10, 25, 50, 100, or no limit. The cap decides what shows off, not what's kept.
Notes
A private line against each entry, offered the moment something lands and editable from its page.
Home feed
What you've ranked lately, grouped by day, each row carrying where it landed, its score, and your note.
Themes
Three complete visual directions, switchable live, with nothing hardcoded in any view.

Decisions that matter

A number alone says nothing.

When something lands, Canon shows the position, the score, and the neighbors. The neighbors are what make the number legible.

Each bucket owns a band of the 0 to 10 scale, and position maps across it with a step of at most 0.4 per place. Short lists cluster near the top of their band, so two loved albums read 10.0 and 9.6 rather than 10.0 and 7.0, while long lists spread out. Score and rank always agree: the best fine thing can never outscore the worst loved one.

A Top 10 can hold fifty.

Caps are for pride, not storage. The first ten are the list. Everything below sits in an Also ranked tail, so adding an eleventh item is never a loss, and raising the cap later needs no redo.

Every duel is kept as well, so rankings can be re-derived under a better algorithm later. That history is private forever. Friends will see the ranking, never the reasoning.

The end of a Top 10 in Canon, with an eleventh album kept in the Also ranked tail below it

One thing, many opinions.

The same album can be your #4 album and your #1 rap album. Each list holds its own entry with its own note, while the catalog record underneath is shared, so artwork is fetched once. An item's page shows every list holding it and your average across them.

Tapping a row opens that page. Re-ranking is a deliberate button on it. It started the other way around, and it felt wrong.

An item page in Canon: Illmatic at #1 with a score of 10.0, a private note, and its rank in another list

A map instead of a cover.

A golf course has no artwork, so Canon renders a map of where it is and uses that in its place. Places come from Apple Maps, about twenty categories of them, so anything Maps knows about can be ranked.

Search worldwide by name, or nearby if you choose. Nothing asks for your location until that button is tapped.

A Golf Courses list in Canon, each course with a small rendered map in place of cover art

No view knows a color.

Every color, radius, and typeface reads from a theme value, and three complete directions ship behind a paintbrush button. The appearance sheet previews each one drawn in its own colors with a real row, so the choice is visible rather than described.

Editorial is the one we chose: near-black, tight type, hairline rules, and the covers supplying every bit of color.

Canon's appearance sheet previewing the Riso, Editorial, and Clinical themes, with Editorial chosen
7comparisons to place one item among a hundred
62automated tests, from the ranking engine to the feed
18seeded communities, plus your own
0third-party dependencies

Rules it keeps

No user versus user
Duels compare your own items against each other and nothing else. No head-to-heads between people, no leaderboards, no score for whose taste is better.
The crowd never overrides you
Rankings are personal. There is no global consensus list.
Nothing is thrown away
Caps are display only, removals are soft deletes, and every duel is kept.

Where it stands

Working today

Phase one, on a physical iPhone: the community tree, lists with caps, search to gut check to duel to placed and scored, re-ranking, notes, item pages, the home feed, places and books, custom communities, and the theme layer. Local-first, with a schema designed to sync later.

Next

Friends. Sign in with Apple, usernames, invites, a feed of what people you know have ranked, and comments on lists and entries. Taste overlap will show as agreement, never as a ranking of people.

Have an idea that deserves this kind of care?