← All projects
Web Apps

Mahjong Hand

Photograph your American Mah Jongg hand and card, and get instant, rules-accurate recommendations on what to keep, discard, and chase.

Stack
GoReactSQLiteVision LLM
Try Mahjong Hand

Keep up at the table

American Mah Jongg hands are scored against a card of dozens of patterns that changes every year — memorizing it, and spotting which hands your tiles are actually close to, is the hardest part for a newer player sitting across from people who've played for decades.

Mahjong Hand takes a photo of your hand, reads the tiles, and checks them against your own card to show which hands you're closest to and which tile to discard — so you can play at the table's pace instead of falling behind.

How It Works

  1. 1Photograph your card once — a vision model transcribes every hand pattern into an editable list, since the card's exact wording is copyrighted and changes yearly, nothing is hardcoded.
  2. 2At the table, photograph your hand of tiles. The same vision model reads them off, and you can correct any misread tile before analyzing.
  3. 3A deterministic matching engine — not the LLM — compares your tiles against every saved pattern and ranks your closest hands with a suggested discard.

Screenshots

Mahjong Hand - Check Your Hand

Take a photo of your hand, or add tiles by hand

Mahjong Hand - Editable Tile List

Every extracted tile is a correctable chip before analyzing

Mahjong Hand - Analysis Results

Ranked closest hands with a suggested discard and what's still needed

Mahjong Hand - My Card

Manage multiple cards and their saved hand patterns

Key Features

Your Own Card

Every hand pattern comes from a photo of your own card, reviewed and editable — nothing about a copyrighted, yearly-changing card is hardcoded.

Photo Tile Recognition

Take a picture of your hand and let a vision model identify every tile — suits, numbers, winds, dragons, flowers, and jokers.

Deterministic Matching

A Go engine — not the LLM — enumerates every valid suit/number assignment a pattern allows and finds the true closest match, including joker rules like 'never in a pair.'

Discard Recommendations

See which tile to discard and why, ranked by how close it keeps you to your best hands.

Editable Everything

Vision models make mistakes. Every extracted tile and every extracted card pattern is a correctable draft before it's used or saved.

Mobile-First, Dark Mode

Built as a phone-friendly website — no app install — for quick checks between turns at the table.

Perfect For

Newer Players

Keep pace with experienced players without having the whole card memorized

Casual Games

A quick reference between turns, without slowing down the table

Card Season

Set up once when the new card comes out each year, then reuse it all season

Technical Details

  • —Go backend with SQLite storage for your saved card and hand history
  • —React + TypeScript + Tailwind frontend, mobile-first and dark by default
  • —Vision LLM used only for photo transcription — never for strategy
  • —A deterministic matching engine enumerates pattern variables (any suit, any matching number, runs) to find true closest matches

Ready to check your hand?

Set up your card once, then check your hand at every turn.

Try Mahjong Hand

Have a project like this one?

We'd be glad to talk through your goals, your constraints, and whether we're the right team for the work.