Implement CERT verification for graded cards #124

Closed
opened 2026-06-22 20:08:09 +00:00 by gambit-admin · 3 comments
Owner

Requested by rudy_tajalle on 2026-06-22. Gambit needs to verify the CERT number on graded cards (e.g., PSA), including visual confirmation of grading. As a last resort, allow users to log in to the PSA site to scan the card and verify information. This involves UI for visual confirmation and potential API integration with PSA.


Reported via Mattermost bot by Gambit Agent

Requested by rudy_tajalle on 2026-06-22. Gambit needs to verify the CERT number on graded cards (e.g., PSA), including visual confirmation of grading. As a last resort, allow users to log in to the PSA site to scan the card and verify information. This involves UI for visual confirmation and potential API integration with PSA. --- Reported via Mattermost bot by Gambit Agent
gambit-admin added the featureui labels 2026-06-22 20:08:09 +00:00
gambit-admin added the 02 · card detail sheet label 2026-07-03 19:53:56 +00:00
Author
Owner

Correction (2026-07-03): #124 does NOT need a new external cert API -- it is already wired.

  • Cert VERIFICATION: backend already calls the live PSA API api.psacard.com/publicapi/cert/GetByCertNumber/{cert} (core.py:3572) using psa_api_token, parses the response (_parsed_card_from_psa_cert / _build_psa_item_name), caches it (PsaCertCache), and builds psacard.com/cert/{n} links. Cert-number extraction from scans exists (_extract_psa_cert_number).
  • Graded PRICING is separately covered by Scrydex (scrydex_graded_sync bulk-caches ScrydexGradedPrice locally).
    Remaining work = MOBILE UI only: for a scanned graded card with a cert, surface the PSA-verified result as VISUAL CONFIRMATION (PSA image + grade + cert shown next to the scan so the vendor confirms the match) + a "View on PSA" link, with "log into PSA site" as the last resort. Best home: the new CardDetailSheet (step 02). No backend/API build required.
Correction (2026-07-03): #124 does NOT need a new external cert API -- it is already wired. - Cert VERIFICATION: backend already calls the live PSA API api.psacard.com/publicapi/cert/GetByCertNumber/{cert} (core.py:3572) using psa_api_token, parses the response (_parsed_card_from_psa_cert / _build_psa_item_name), caches it (PsaCertCache), and builds psacard.com/cert/{n} links. Cert-number extraction from scans exists (_extract_psa_cert_number). - Graded PRICING is separately covered by Scrydex (scrydex_graded_sync bulk-caches ScrydexGradedPrice locally). Remaining work = MOBILE UI only: for a scanned graded card with a cert, surface the PSA-verified result as VISUAL CONFIRMATION (PSA image + grade + cert shown next to the scan so the vendor confirms the match) + a "View on PSA" link, with "log into PSA site" as the last resort. Best home: the new CardDetailSheet (step 02). No backend/API build required.
Author
Owner

Re-audit: UNBLOCKED (native OCR shipped). Cert read + PSA GetByCertNumber plumbing is done. Small pure-mobile-UI remainder:
(1) render the already-plumbed verification_url as a tappable 'View on PSA' link in CardDetailSheet;
(2) add a login-to-PSA-site fallback.
Confirm on-device, then close.

Re-audit: UNBLOCKED (native OCR shipped). Cert read + PSA GetByCertNumber plumbing is done. Small pure-mobile-UI remainder: (1) render the already-plumbed verification_url as a tappable 'View on PSA' link in CardDetailSheet; (2) add a login-to-PSA-site fallback. Confirm on-device, then close.
Author
Owner

Scope correction: my earlier re-audit note called this a 'small UI remainder' (render verification_url + PSA fallback). The slab grading review (2026-07-08) shows it's bigger - cert verification is PSA-only and actively mis-verifies CGC/BGS/SGC certs against PSA -> false NOT FOUND (core.py:3301/3743), and unknown-company slabs silently default to grader='PSA'. Full analysis + multi-grader verification plan in #222.

Scope correction: my earlier re-audit note called this a 'small UI remainder' (render verification_url + PSA fallback). The slab grading review (2026-07-08) shows it's bigger - cert verification is **PSA-only** and actively **mis-verifies CGC/BGS/SGC certs against PSA -> false NOT FOUND** (core.py:3301/3743), and unknown-company slabs silently default to grader='PSA'. Full analysis + multi-grader verification plan in #222.
Sign in to join this conversation.