The Play tab on the State Spotter mode: a wordmark built from photographed license-plate letters, the line 'Spot at least one plate in every state', an in-progress trip showing 7 plates, and a Start Trip button.The same board filtered by the search term 'bear', with suggested tag chips reading bear, bears, beartooth and black bear above the search field, and only bear plates from Alaska, Arkansas and California left on the board.The catalog tab, headed 8253 plates across 51 states, with 7 of 8253 collected and filters for showing all plates or only collected ones.

Spot plates. Play offline. Together or alone.

4 min read

iOSAndroidWeb

I built State Spotter out of a road-trip ritual I grew up with: trying to find all 50 state plates before the drive was over. I wanted it to feel easy enough to play with family, useful when there is no signal, and interesting enough that a spotted plate could become more than a checkmark.

ExpoReact NativeTypeScriptMobXSQLiteFirebase

Why I kept going

A game that became a collection

It began as a birthday gift

I was on a long stretch of road by myself, thinking about the license-plate game my mom and I had always played. I wondered if I could make a version for her birthday. Once I sat down with it, the idea grew past the simple checklist: what if a game could let people build the same board together, wherever they were?

That became the part I cared about most. A friend could join by code, someone could spot from the driver’s seat while a passenger logged it, and every person in the car could bring another set of eyes to the search.

A State Spotter round in progress, with completed states and a search field for browsing license plates.

A design problem hiding in the data

Too many plates is a choice problem

A grid of everything was never going to work. There are nearly ten thousand plates in circulation, and one state can have a few designs while another has hundreds of entries. I needed people to see one state at a time, begin with the plate they were most likely to recognize, and still be able to move sideways into the variants when they needed to.

That led to templates and variants. Instead of giving every plate equal weight from the start, I wanted to reduce the first decision to something a person could make from memory: what did that plate look like as it went by?

The examples below are the moments where that rule gets more interesting. Sometimes two plates share a background closely enough to belong together. Sometimes color and a mountain silhouette look alike, but the material, central mark, or visual weight makes them distinct. And sometimes hundreds of plates need to become one useful place to start.

New Jersey

The standard and Devils plates share the familiar yellow gradient. The battleship illustration changes enough of the plate that I kept it as its own visual family.

New Jersey standard yellow-gradient license plate
StandardThe baseline template
New Jersey Devils license plate
New Jersey DevilsA variant of the same template
USS New Jersey Battleship license plate
USS New Jersey BattleshipA separate visual family

Colorado

These plates share a dark-blue or purple palette and a mountain line, but the insignias, textures, and visual weight change what a person recognizes at a glance.

Colorado U.S. Air Force license plate
U.S. Air ForceBlue header, mountain line, centered insignia
Colorado USS Colorado license plate
USS ColoradoBlue header, mountain line, large central mark
Colorado Navy Cross license plate
Navy CrossBlue header, mountain line, medal changes the read
Colorado Emergency Medical Services license plate
Emergency Medical ServicesBlue field, white emblem, different visual weight
Colorado Rockies license plate
Colorado RockiesPurple header, mountain line, sports mark

Maryland

Maryland’s standard passenger plate needs its own template. Its 989 organizational entries are visually related enough to start as one family instead of a wall of choices.

Maryland standard passenger license plate
Standard passengerOne distinct template
Maryland Baltimore Orioles Charitable Foundation license plateMaryland Baltimore Humane Society license plateMaryland American University license plate
Organizational plates989 variants, one structural family

What I'd do differently

The core game and the additional modes are in a good place. The next pass is less about inventing new things and more about making what is already there easier to use: a clearer way to play with a friend, a more comfortable catalog, and a fuller accessibility and usability review.

The catalog also taught me where automation belongs. I can ask local models to clean up images, generate tags, and find likely template families. They get me most of the way there, but they do not understand the small perceptual calls a person makes while looking out a moving car window.

The human layer behind the catalog

I still review the edge cases myself: a yellow plate with black type and one with very dark navy type may belong together because people will read them the same way at speed. A similar background with a battleship, flag, or large emblem may need to stay separate because it changes the whole read.

After iterating on it, I started to care less about making the pipeline look automatic than about making it trustworthy.