Personal projectPrototype
WikiRivals
A little curiosity. Five cards. Something unexpected.

The design principle
Cards are committed on the server before the animation. Refreshing or retrying recovers the same opening without consuming another entitlement. Implemented as a prototype.
The short version
- The idea
- Turn Wikipedia articles into collectible cards, so a pack can introduce a person, place, or topic the player would never have searched for. Guest-first access lets anyone try it before creating an account.
- What I built
- A prototype with five-card starter and daily packs, six rarity tiers, serial numbers, and a searchable collection. Impact and Depth stats come from article signals using versioned, deterministic rules.

The landing page introduces the daily five-card discovery loop (captured from the running prototype, September 24, 2026).
A playful reveal with durable ownership
Cards are allocated on the server before the animation completes. The browser presents that committed result, tracks opening phases, and restores revealed-card progress after interruption.
The reveal can respond to reduced-motion preferences, pause effects when the page is hidden, and announce cards to screen readers. Recovery and accessibility are part of the interaction design.
Retries return the same pack
A connection can fail after the server has assigned the cards. To make that recoverable, one database transaction locks the player and pack entitlement, checks whether the request already succeeded, assigns cards and serial numbers, and records the result.
Retrying the same request recovers that opening. Refreshing the page should not consume another entitlement or change the cards.
- CheckLock the player and entitlement
- CommitAllocate cards and record ownership
- RevealPresent or resume the saved opening
Presentation can be interrupted. Ownership must remain consistent.
Prepare the data before the player arrives
A background worker ingests and prepares Wikimedia data ahead of time. The API serves the prepared catalog, so opening a pack does not require a fresh Wikipedia request or an AI-generated result.
That separation gives scoring and rarity a reproducible basis, and keeps external-data preparation out of the interactive opening path.
Decisions & evidence
What this prototype explores
Discovery through collecting
Guest sessions, staged reveals, first-discovery markers, and a searchable collection connect the excitement of a new pack to learning about a real topic.
A recoverable experience
Opening progress is separate from durable ownership. A refresh can resume a committed opening instead of turning an animation failure into a lost pack.
Status & scope
Prototype
This page describes the implemented collecting and discovery experience. It does not claim a broad public release, a live catalog size, measured latency, trading, battles, or a marketplace. Playtest and retention results are not yet presented.
Product status: prototype.
Let's
talk.
Looking for someone who can build the whole thing?
Software engineering, applied AI, and thoughtful product work. I'd like to hear what you're building.
