The problem. Real-money gaming apps pay referral bonuses ("invite a friend, you both get $10"). Fraudsters farm this with sockpuppet rings: one person spins up dozens of fake accounts that refer each other and collect bonus after bonus. The tell is that it's all one person — the fake accounts quietly share the same device and the same payment card. This is hard to catch with a normal database because the fraud isn't in any single account; it's in the connections between them.
Who it's for. The trust-&-safety team of a gaming or fintech platform (a B2B tool) protecting a B2C money wallet.
The approach. GuardGraph models accounts, devices, and cards as a graph. A tight cluster of accounts sharing both a device and a card is almost never a coincidence — it's a ring. On every deposit the system:
- writes the money to DynamoDB (the source of truth), atomically;
- queries the derived fraud graph with a 1–2 hop traversal (~50 ms) to see the account's cluster;
- runs a transparent rules ladder over the cluster shape (size, shared devices/cards, already-flagged neighbors, referral-star ratio, velocity) to produce a verdict — release the full bonus, a reduced one, or hold it — each with a human-readable reason.
Analysts watch it on a dark, real-time SOC console: a live force-graph (nodes go green → amber → red as risk climbs, with hulls around flagged rings), an event feed, a decision panel, a case queue, and tunable rules. They can freeze a cluster, block, or reinstate a false positive — and the graph recolors live.
Why DynamoDB + Vercel. DynamoDB gives atomic, single-digit-millisecond money writes that scale to millions of deposits a day and cost ~nothing when idle; the deliberate single-table model makes the hot path O(1). The Next.js front end deploys on Vercel. The architecture is built to scale: O(1) metric counters (no table scans), write-sharded GSIs, a retry-safe money path, and a read-through verdict cache that keeps the deposit decision off the graph entirely.
Built With
- amazon
- dynamodb
- fraud
- graph
- next.js
- opencypher
- stack:
- typescript
- vercel

Log in or sign up for Devpost to join the conversation.