# Founder State · Cash'em · May 13, 2026 (night)

Three-day sprint. 32+ Cashem PRs merged May 11-12, plus data moat work May 13. Focus shifted from code to catalog: card imports, image scraping, multi-game readiness audit. 19 days to launch.

---

## Tomorrow's first 30 minutes

1. Check overnight import results — baseball (17 sets) + basketball (14 sets) should be complete
2. Verify image counts: `SELECT game, count(*), count(CASE WHEN image_large != '' THEN 1 END) FROM catalog_cards GROUP BY game`
3. Set up Google Custom Search Engine (2 min) — get API key + Search Engine ID for image fallback
4. Run Google image fallback for UFC (100 cards, free daily quota): `npx tsx scripts/google-image-fallback.ts --game=ufc --limit=100`
5. One Piece data source research — try GitHub open-source APIs, evaluate onepiece-tcg-api
6. Debug baseball/UFC news returning 0 articles (Pokemon news works, same infra)

---

## What shipped today — May 13

### Code PRs merged
- PR #88 — Search quality: card number search, suggest catalog fallback, rarity abbreviation extraction (sir, fa, ir, alt art, 1 of 1, etc.)
- PR #89 — Smoke test findings: BETA removal (baseball), Trainer Pass → Pro Subscription, UFC set reorder, Playwright scraper + sport template generator + basketball template
- PR #90 — 4 games live attempt: One Piece unhidden → re-hidden (Scrydex watermark + duplicate data issues)

### Data moat work
- **UFC images**: 340/656 cards now have images (was 33 this morning). Playwright SCP scraper built and run. 259 cards have no SCP images at all — need eBay or Google fallback.
- **Baseball catalog**: 400+ cards imported across 4 sets (2025/2024 Chrome, 2024 Prizm, 2024 Bowman Chrome). Smart catalog builder importing 17 sets overnight.
- **Basketball catalog**: Template generated (`server/basketball.ts`), smart builder queued overnight (14 priority sets including 2024-25 Prizm, Select, Donruss).
- **Baseball images**: 88 found via Playwright, 305 not on SCP. Google fallback needed.

### Scripts built
- `scripts/smart-catalog-builder.ts` — prioritized import by top players + newest sets + highest value cards, with per-game configs for baseball/basketball/UFC
- `scripts/google-image-fallback.ts` — Google Custom Search API image fallback for SCP gaps (100 free queries/day, smart scoring by aspect ratio + domain trust)
- `scripts/import-sport-cards.ts` — generic multi-sport SCP importer (replaces UFC-hardcoded version)
- `scripts/scrape-scp-images.ts` — Playwright-based SCP image scraper (bypasses 403 blocks)
- `scripts/generate-sport.ts` — sport template generator (cuts new sport onboarding from 5-8h to 2-3h)

### Smoke test (Playwright, 34 tests against production)
- 33/34 passed (1 failure: "Trainer Pass" in profile menu — fixed in PR #89)
- 4 broken images: all TCGdex set symbol 404s (upstream, not our images)
- Charter seats: 999/1000
- UFC sets: 8 returning
- No $7.99 anywhere, no "Trainer Pass" on landing
- /api/health may not be deployed (returns HTML)

### Competitive audit delivered
- Audited TCGPlayer, eBay, CollX, Cardmarket, PSA
- Key gaps: price history charts (P0), population reports (P1), in-app marketplace (P2)
- Key strengths: AI grading (unique), Seal provenance (unique), R/Y/G recommendation (unique)

### One Piece discovery
- Scrydex images have "SAMPLE" watermarks baked in (Bandai anti-piracy)
- Scrydex returning duplicate cards across different sets (bad data)
- onepiece.gg has same watermarks but color-blended to match card art
- One Piece hidden until clean data source found
- `blendWatermark` prop added to ProgressiveCardImage for future use

---

## Game readiness matrix

| Game | Status | Cards | Images | Search | News | Scanner | Launch ready? |
|------|--------|-------|--------|--------|------|---------|--------------|
| Pokemon | Live | 23,158 | 21,898 (95%) | Excellent | 6 articles | Ximilar | YES |
| Baseball | Live | ~1,200+ (importing) | ~150 (scraping) | Good (SCP) | 0 (debug needed) | Ximilar | CLOSE |
| UFC | Live | 656 | 340 (52%) | Good (SCP) | 0 (debug needed) | Ximilar | CLOSE |
| One Piece | Hidden | Via Scrydex | Watermarked + dupes | Good (Scrydex) | N/A | Ximilar | BLOCKED |
| Basketball | Importing | ~0 (overnight) | None yet | Template ready | Not wired | Ximilar | NOT YET |
| MTG | Not added | N/A | N/A | Need Scrydex/Scryfall | N/A | Ximilar | NOT YET |

---

## Overnight pipeline status

| Task | Status | Expected completion |
|------|--------|-------------------|
| Baseball smart builder (17 sets) | Running | ~2 hours |
| Basketball smart builder (14 sets) | Queued after baseball | ~2 hours after baseball |
| UFC image scrape | Complete | 340/656 images |
| Baseball image scrape (Playwright) | Complete | 88/393 images |

---

## Data moat week plan (May 13-17)

| Day | Focus |
|-----|-------|
| May 14 | Check overnight results. Google CSE setup. Image fallback runs. News debugging. One Piece source research. MTG audit. |
| May 15 | Price history snapshot cron. eBay API (if approved). Discover multi-game audit. |
| May 16 | PSA pop report integration research. Daily cron stack (2am UTC). |
| May 17 | Basketball + One Piece readiness check. Image coverage audit. |

---

## Open PRs

| PR | Title | Status |
|----|-------|--------|
| #48 | Sentry observability | Deferred May 26-31 |
| #67 | TestFlight smoke checklist | Docs |
| #79 | FOIL consolidated guide | Docs |
| #80 | FOIL RAG strategy | Docs |
| #90 | 4 games live + scripts | Ready for review |

---

## External dependencies

| Item | Status |
|------|--------|
| eBay Developer account | Applied, awaiting approval |
| Google CSE API key | Need to set up (2 min) |
| Hyder Amil card picks | Texted, awaiting |
| Ben physical slab design | May 15 lock deadline (2 days) |
| One Piece clean data source | Research needed |
| Scrydex MTG endpoint | Need to test |

---

## Decisions locked today

- One Piece hidden until clean images sourced (Scrydex has watermarks + bad data)
- 3 games for launch: Pokemon, Baseball, UFC (One Piece, MTG, Basketball are fast-follows)
- Smart catalog builder prioritizes: top players → newest sets → highest value → chase parallels
- Google image fallback capped at 100/day free tier, budget approval for paid tier if needed
- eBay Developer API is fallback image source (pending approval)

---

## Session stats — May 13

| Metric | Value |
|--------|-------|
| PRs merged | 3 (#88, #89, #90 partial) |
| Scripts built | 5 (smart builder, Google fallback, generic importer, Playwright scraper, sport generator) |
| UFC images added | 307 (33 → 340) |
| Baseball cards imported | 800+ (across 11+ sets, more overnight) |
| Smoke tests run | 34 (33 passed) |
| Competitive platforms audited | 5 (TCGPlayer, eBay, CollX, Cardmarket, PSA) |
| Games evaluated | 6 (Pokemon, One Piece, Baseball, UFC, Basketball, MTG) |
| Days to launch | 19 |

---

*Generated 2026-05-13 night · End of session save*
