All projects
01 / 06 Flagship Case study

CarSpotter

Turning car-spotting instinct into a daily game.

I designed and built a game around a small moment I enjoy: recognising a car before I can see the whole thing. The product combines a short daily challenge, photographic reveals, practice and a result people can share without giving away the answers.

Role
Independent product designer and engineer
Period
2026–present
Scope
Product design, iOS engineering, visual identity, content tooling, marketing creative
Status
iPhone · on the App Store
Focus
  • Daily 5
  • Quick Practice
  • Spoiler-free results
Stack
  • Expo / React Native
  • TypeScript
  • Zustand
  • MMKV
  • Turborepo monorepo
  • Astro
  • ImageMagick pipeline
CarSpotter’s Saturn identity beside a genuine car-detail question and the matching reveal, from the October 2026 iteration.

Release candidate CarSpotter is available on the App Store. Shown here: the October 2026 design iteration, captured from the 1.2.3 release candidate.

01 / The product decision

Keep the challenge small. Make the reveal worth it.

The premise is simple: recognise a real car from a small photographic detail. I kept the daily challenge to five cars and the answer set to four choices. A player gets the full-car reveal and a fact whether the answer is right or wrong.

That gives the game a clear endpoint without ending the experience. Quick Practice offers more guessing, while progress and streaks give returning players a record of their play. The Daily timer is configurable, so I describe the game by its decisions and cadence rather than promising one fixed time limit.

CarSpotter home screen with the Saturn identity, today's Daily 5 action and Quick Practice. (opens in a new tab)
The October 2026 home: the wordmark and the Saturn have room, the Daily 5 is still the clearest thing to tap, and the streak sits underneath as the reason to come back.
A Ferrari 296 GTB reveal in Quick Practice. (opens in a new tab)
Quick Practice is the second mode: the same answering language and the same reveal, without the pressure of the daily set. The capture is from the same build as the Daily screens below.
02 / Interaction

The photo asks the question. The reveal answers it.

The clue is the primary object on the play screen. The choices need to stay readable, and the reveal needs to lead clearly to the next car. I treat those as connected states of one round, rather than separate screens to decorate.

The sequence below is taken from one recorded Daily. The question and reveal belong to the same Toyota Camry round; the result is the completed five-car run. Scores and car images are preserved from the capture.

A Toyota Camry photographic clue with four real answer choices. (opens in a new tab)
Question: the photographed detail and all four choices, from the recorded Camry round.
The matching Toyota Camry reveal, marked correct, with a fact and Next action. (opens in a new tab)
Reveal: the same car shown whole, with its recorded verdict and fact.
The completed Daily 5 result: 1,645 points, 5/5 and Q1–Q5 outcome marks. (opens in a new tab)
Results: one completed recorded run, with round outcomes and the share action. This is not a business metric.
03 / Identity

An ordinary Saturn, made unmistakably CarSpotter.

A Saturn wagon is a more personal signal for this game than a generic sports-car silhouette. It reflects the kind of enthusiasm behind CarSpotter: everyday cars can be recognisable and interesting too.

The cream wagon, electric lime and dark grey surfaces give the identity continuity across the home screen and marketing artwork. I kept the photographic game content distinct from the illustrated brand character, so the identity does not suggest a driving or racing mode.

Approved Saturn illustration, CarSpotter wordmark, the lime, asphalt and chalk palette, and the candidate home screen.
The brand system as applied to the October 2026 home iteration.
04 / A clearer result

Show the round outcome, not an internal category.

The earlier result card used letters tied to types of detail. That made the summary depend on a category the player did not need to know, and that the production content could not consistently support.

The redesign uses Q1–Q5 with explicit check and miss symbols. It answers a more useful question: what happened in each round? The same outcome language carries into the exported card, while the car names and clue photos stay out of it.

These are different recorded runs; the comparison documents the change in visual language. Comprehension and conversion remain questions for further testing.

Earlier interface

Earlier result card with the geometric mark and letter-coded round tiles. (opens in a new tab)
Earlier interface. Its old mark is intentionally preserved as historical evidence.

October 2026 candidate

Exported result for Daily 136: 5/5, 1,645 points and numbered round outcomes, with no car names. (opens in a new tab)
Candidate exported card: the result stays readable without revealing the cars.

Different recorded runs. This is a visual comparison, not a measured performance result.

05 / Engineering judgement

Keep the game state and its content dependable.

The work extends beyond the visible screens. Game rules, saved progress and media references need to remain dependable across interruptions and updates. I separate game logic from presentation so changes to the interface can be checked without rewriting the scoring rules.

One earlier failure involved media references tied to an installation-specific file location. The design response was to use stable references and validate media before trusting it. A file existing at a hash-shaped path is not enough: the bytes must be checked against the expected identity.

For the latest interface work, the practical checks are concrete: complete answer labels at larger text sizes, reachable reveal actions, a usable static state with Reduce Motion, and a run that can resume without losing its score. Simulator evidence and device checks need to be reported separately.

06 / The product outside the app

Give the store artwork the same clarity as the game.

I developed new store artwork around the experience itself: identify a detail, see the whole car, then finish a run. The Saturn-led brand artwork and the gameplay-led creative have different jobs, but use the same visual system.

The screenshot experiment is a separate piece of work. I keep visual design decisions separate from claims about acquisition: a new asset is a hypothesis, and an early percentage change is not a proven win. The creative examples here are not presented as evidence of conversion lift.

Three CarSpotter creative studies showing a question, a reveal and a recorded result.
Creative studies based on real captures. No conversion lift is attributed to these images.
07 / What this work taught me

Simplification has to reach the data as well as the screen.

Removing category letters from the result card was useful because it removed a dependency, not just because the new marks looked cleaner. Preserving answer text at larger sizes matters because it keeps the decision fair, not because it satisfies a screenshot checklist.

CarSpotter remains an ongoing product. Next I want to understand how people read the result, whether they return to play, and which store presentation earns meaningful downloads. Those findings will guide the next iteration.

Product decisions, design direction and implementation: Moe Qadan. Coding assistants supported implementation and QA. Artwork on this page combines existing approved brand art with genuine app captures.