Autoknowtive

Name the car from a sliver of a photo. Six guesses, new car daily

Status
LiveLive at autoknowtive.com. The native iOS and Android apps are built (1.0) but not yet in the App Store or Google Play.
Platforms
Web, iOS, Android
Role
Solo: game design, catalog pipeline, web, iOS, Android, backend and marketing film
Timeline
Oct 2026 – Nov 202621 commits
Version
Web live · iOS 1.0 (1) · Android 1.0 (version code 1), unreleased

01 The story

A daily car-recognition game. The photo starts zoomed in on a headlight or a fender and pulls back with every miss; you name the make, model and year in six guesses. It runs on a verified catalog of 3,695 cars from 112 brands, on the web and in native iOS and Android apps.

I built Autoknowtive for people who call out cars in traffic. Each Daily starts on a tight crop, and every wrong guess pulls the photo back a step. Guesses fill a board that color-codes make, model and year, and a 'What we know' strip narrows the field to the cars still possible. Answers are forgiving where they should be: a model-family name counts for a specific trim, and the picker tells you when you have the wrong model rather than the wrong make.

Around the Daily sit Free Play with streaks, Road Trip (an endless run where legs get harder and pay more miles, and three misses empties the tank) and seven ten-round Quick Play games, graded S to D. Naming a car collects it in the Garage, a catalog with brand sets, specs, EPA efficiency and NHTSA safety data. On weekdays everyone plays the same world car; at weekends you get a car that was sold new in your region.

Most of the work is in the catalog. Build scripts merge photos from four sources with EPA and NHTSA data, then filter hard. MD5 checks catch the decoy images one source serves to scrapers. Filename parsing keeps a 1974 truck off a 2024 entry. A CLIP zero-shot classifier picks real cockpit shots for 2,566 interiors, and Apple's Vision saliency finds where the car sits in each photo so zoomed crops land on it. The Daily runs on the server: Cloud Functions keep the answer and the full photo, and the browser only ever receives scored guesses and cropped steps.

The website is React and Vite on Firebase Hosting, and its build also generates more than 1,600 crawlable car-guide pages. The iPhone and iPad app is native SwiftUI, ported from the TypeScript rules; the Android app is Jetpack Compose, ported from the Swift. Both are checked against fixtures generated from the website's own logic. On November 10, 2026 I shipped a new logo and a 60-second commercial made entirely in code: Blender scenes scripted in Python and a soundtrack synthesized in Swift with no samples.

The website is live at autoknowtive.com. The native apps are built and tested at 1.0 but not yet in the App Store or Google Play.

▶ Film

"Prove It": a 60-second commercial made entirely in code: Blender scenes scripted in Python, a score synthesised in Swift.

02 What it does

  1. 01

    Daily: one shared mystery car, six guesses for make, model and year; the photo starts zoomed in and pulls back after each miss

  2. 02

    Color-coded guess board with a 'What we know' strip that narrows the field ('110 cars still possible') and optional hints

  3. 03

    Forgiving model-family answers and a searchable picker that flags wrong model versus wrong make

  4. 04

    Weekday world car for everyone; weekend local car sold new in your region (North America, Europe, Asia or elsewhere)

  5. 05

    Road Trip: an endless mixed run where legs get harder and pay more miles; three misses empties the tank

  6. 06

    Quick Play: seven ten-round games (Spot It, Cockpit, Find It, Model Year, Higher or Lower, Timeline, Fact or Fiction) at three levels

  7. 07

    Garage: 3,695 cars from 112 brands, 1899 to 2027. Name a car to collect it, with brand sets, specs, EPA and NHTSA data

  8. 08

    Optional sync with Google, Apple or an email link; native apps with haptics and a 9 am Daily reminder

03 How it's built

Outside servicePhoto sources, EPA, NHTSA
ServiceCatalog build scripts
ModelCLIP + Apple Vision photo checks
ServiceFirebase Hosting: catalog, photos, guides
AppReact web app
AppSwiftUI app
AppCompose app
Outside serviceSearch engines (IndexNow)
ServiceCloud Functions: Daily, crops, sign-in
ServiceFirebase Auth
DataFirestore

The catalog and photos are static files on Firebase Hosting, shared by the website and both native apps, so a site deploy updates the apps' content. Only the Daily and account sync touch the backend: Cloud Functions own the Daily's answer and photo crops, and Firestore holds server-only Daily plays plus optional synced profiles.

All 13 connections, as text
  • Photo sources, EPA, NHTSA → Catalog build scripts: photos + specs
  • Catalog build scripts → CLIP + Apple Vision photo checks: verify, focus
  • Catalog build scripts → Firebase Hosting: catalog, photos, guides: cars.json, photos, pages
  • Firebase Hosting: catalog, photos, guides → React web app: app + catalog
  • Firebase Hosting: catalog, photos, guides → SwiftUI app: catalog, photos, stories
  • Firebase Hosting: catalog, photos, guides → Compose app: catalog, photos, stories
  • React web app → Cloud Functions: Daily, crops, sign-in: /api/daily guesses
  • SwiftUI app → Cloud Functions: Daily, crops, sign-in: Daily
  • Compose app → Cloud Functions: Daily, crops, sign-in: Daily
  • Cloud Functions: Daily, crops, sign-in → Firestore: answers, plays (server only)
  • React web app → Firestore: profile sync
  • Firebase Auth → Firestore: rules
  • Firebase Hosting: catalog, photos, guides → Search engines (IndexNow): sitemap, IndexNow

04 Engineering notes

  • Cheat-resistant Daily: Cloud Functions hold the answer, pick seed and full photo. The browser gets only scored guesses, revealed clues and server-cropped photo steps, and Firestore rules deny all client access to answers and plays

  • Photo checks: MD5 detection of a source's anti-scraper decoys, label classification plus a visual-audit reject list, filename year parsing, a CLIP zero-shot classifier for 2,566 interiors, and Apple Vision saliency for each photo's zoom focus

  • Three clients, one rule set: SwiftUI ported from the TypeScript, Compose ported from the Swift, with parity fixtures generated from the website's logic and checked by iOS and Android unit tests in GitHub Actions

  • SEO layer: the build generates 1,600+ car-guide pages and a sitemap, IndexNow pings search engines on each deploy, and a predeploy guard refuses any build missing the photos (which live outside Git)

  • Performance: the Daily photo renders before the 4.8 MB catalog arrives, and an Android Baseline Profile cut median cold start to the Daily from 1,499 ms to 1,283 ms on an emulator

  • A 60-second commercial built in code: Blender scenes scripted in Python, a Swift-synthesized score with no samples or licensed music, and a Swift cutter that writes the 16:9 film and a 30-second vertical cut

05 By the numbers

3,695
Cars in catalog
112
Brands
1899–2027
Model years covered
1,604
Model guide pages
2,566
Interior (cockpit) photos
1,499 → 1,283 ms
Median Android cold start to the Daily, on an emulator (~14% faster)
7
Quick Play games
21
Commits

06 Stack

App

  • React 19
  • TypeScript
  • Vite
  • Tailwind CSS 4
  • Framer Motion
  • SwiftUI
  • Jetpack Compose
  • Material 3

Backend

  • Firebase Hosting
  • Cloud Functions (v2)
  • Cloud Firestore
  • Firebase Auth (Google, Apple, email link)

Data

  • 3,695-car JSON catalog
  • NetCarShow, autoevolution, Wikipedia and Wikimedia Commons photos
  • EPA fuel economy data
  • NHTSA safety data
  • sharp
  • CLIP via transformers.js
  • Apple Vision saliency

Infrastructure

  • Firebase preview channels
  • GitHub Actions CI
  • IndexNow
  • Google AdMob + UMP consent (apps)

Tooling

  • tsx + node:test
  • Playwright smoke tests
  • XcodeGen
  • XCTest UI tests
  • Gradle
  • Android Baseline Profiles
  • Blender (Python)
  • Swift audio and video tooling

Lines of code (approx.)

  • Kotlin34,169
  • Swift25,972
  • TypeScript23,628
  • JavaScript8,938
  • CSS1,397

≈ 94,104 lines

Repositories

  • autoknowtiveprivate

The GitHub repo was created on 2026-10-20 with a single 994-file import commit, so git history understates the project's age. Data files in the repo carry timestamps from 2026-05-19 (decoy-image scan) and 2026-07-15/16 (photo audit), so work began by mid-May 2026 at the latest. The 2026-11-10 commit is local and not yet pushed; the new logo, already live on the site, and the film are uncommitted work from that day.