Tomoda Collection — Domain Spec¶
The Tomoda Collection is the user's earned set of curios + curated stamps. Formerly named the Archive in earlier drafts. This page is the rules for what's earnable, how it's surfaced, and how visibility works.
Mental model¶
Two parallel content tiers:
| Tier | Source of earn | Author |
|---|---|---|
| Curios | Granted on challenge completion (reward_curio_id) | Curated artwork + story |
| Stamps | Genuine geographic visits (visit_specific or aggregate_count unlock) | Curated artwork + scope |
Same UI shelf, same "earned at" timestamps, same hidden-tier system. Different earn paths.
Data shape¶
| Table | Owns |
|---|---|
user_curios_earned |
Dedup row per (user, curio). Existence = the user has the curio. |
curio_earn_events |
Multi-row audit trail per (user, curio). Records source: rule\|challenge\|admin_grant, source_id, occurred_at. |
user_stamp_progress |
Per-user stamp progress with matched_ids JSONB, earned_at. |
user_curios_earned is the read-side source of truth for "do they have
it." curio_earn_events is the audit / "earned via" history surface.
Hidden tiers¶
Both curios and stamps use the same three-tier discoverability model (stored on the content row, applied at render time):
| Tier | Pre-earn render | Post-earn render |
|---|---|---|
soft |
Silhouette + category + hint + progress count ("3 of ?") | Full art + story + source attribution |
hard |
Silhouette + category + hint, no progress | Full art + story + source attribution |
secret |
No UI surface at all | Surprise drop, hero-level reveal animation |
Recommended mix in the 100-launch curio set: ~60 soft / ~30 hard / ~10 secret. Tunable per content batch.
Visibility¶
The Collection respects the user's existing visibility settings:
- Public profile: anyone can see the user's earned grid (locked items rendered per tier rules).
- Friends-only profile: only accepted friends see earned grid; strangers see counts only ("12 curios, 8 stamps").
- Private profile: no surface visible to others.
What's not in the Collection¶
- Active challenges (in-progress, not yet completed) — those live in the Hub's Quests / In-Progress sections, not the Collection.
- Locked stamps without progress — by design; the Collection surfaces earned + in-progress-toward-earned, not the full catalog.
- Earned by admin grant are flagged in
curio_earn_events.sourcebut render identically to other earns — no special "manually granted" badge.