Help

The flow Pages Fixing the catalog Statuses Keyboard Your data

The flow: shelves → collection

Six stages, run from the Pipeline page (or the CLI — both share all state and either can pick up where the other left off):

  1. extract — every photo goes to Claude vision once; titles and edition cues (publisher, edition wording, year, language) land in the catalog. Boxes it can see but can't read become reshoot tickets on the Photos page.
  2. resolve — titles are matched to BoardGameGeek games and editions. Anything uncertain is flagged for review, never guessed. Without a BGG API token, titles wait as awaiting BGG and are picked up automatically once the token exists.
  3. review — you decide the flagged ones on the Review page. Every decision saves immediately.
  4. diff — your existing BGG collection is fetched and compared, per copy. What's genuinely new lands in the Queue.
  5. upload — a real browser logs into BGG and adds each queued game, slowly and politely. Always dry-run first; the buttons enforce that order.
  6. enrich — full metadata (players, weight, rank, artwork) fills the Library.

Every stage is resumable: stop anything mid-run and nothing is lost. Re-runs skip work already done.

What each page is for

Pipeline — run stages one at a time and watch their live output. Shows what's blocking (missing keys, stub data) and the counts at every step.

Photos — drag photos in (or drop them in the photos/ folder). Each photo has its own page listing every title read from it and any reshoot tickets — boxes seen but not identified. Photograph those up close, drop the new shot in, and extract again. Re-uploading a photo with the same name re-extracts it.

Review — the decisions only you can make: which game a title is, which edition a copy is, and whether two same-game reads are really one box (merges show a veto). Keyboard-first; see shortcuts.

Catalog — every title read from your shelves, alphabetized, with its status and photos. This is also where you fix the data itself: edit, split, remove.

Queue — exactly what upload will do (new entries and version upgrades) and the log of everything it has done. Nothing reaches BGG that isn't visible here first.

Library — your enriched collection: filter by board games or RPGs. RPG matches are identified and enriched but never uploaded — BGG collections can't hold them, so they stay local citizens.

Fixing the catalog: edit, split, remove

Vision reads aren't perfect, and you know things the photos don't show. Every catalog line has curation actions, and every one of them is durable: the decision is saved in a small committed file and replayed on every rebuild, so re-running extract or resolve can never undo it.

edit — fix a misread title or add cues you already know (publisher, edition, year, language). A corrected misspelling automatically merges with a correctly-read sighting of the same game from another photo. If the line already had a BGG match, saving re-queues it so resolve searches again with the corrected data.

split into copies — one line, several physical boxes? Splitting makes each photo its own copy, and each copy picks its own edition afterward. Appears on any line whose title was seen in more than one photo. Splitting one game never affects a same-named different edition.

remove from catalog (inside the edit panel) — for lines that shouldn't exist at all: a book read as a game, box art misread as a title. The line and its matches are discarded and stay gone. This is different from reject on the Review page, which keeps the line visible as "no BGG match" — right for real games BGG doesn't know.

Undo: each decision is one record in data/title_edits.json, data/title_splits.json, or data/title_removals.json — delete the record and the next rebuild restores the old state.

What the status chips mean

awaiting BGG extracted, not yet matched — usually waiting on the BGG API token.

auto matched confidently, no review needed. approved you picked the match yourself.

ambiguous several plausible games — needs your pick on Review. unmatched nothing plausible found — enter a BGG id or re-search on Review.

merged two reads judged to be the same physical box; the merge is veto-able on Review. copy one copy of a title you split.

rejected you ruled it's not on BGG (or not a game worth matching); it stays listed but goes no further.

Keyboard shortcuts

Review: j/k move between cards · 19 pick a candidate · r reject · m manual BGG id · u edition unknown · v veto a merge.

Photo pages: / move between photos.

Your data, on disk

Everything lives in flat files under data/ — inspectable, hand-editable, and git-friendly. The pipeline artifacts: titles.json (what was read), matches.csv (what it matched), to_add.csv/to_update.csv (what upload will do), upload_log.csv (what it did), games.json (the library). Your curation: title_edits.json, title_splits.json, title_removals.json, unidentified_dismissed.json.

Credentials never live in files — only environment variables, set up by bggpipe init. The app runs on localhost only.

More depth: the README covers setup and photo technique; docs/bgg-upload-flow.md documents the upload automation.