Inspiration
Global counterfeit goods trade is $2T annually. The brands hurt most are small: independent watchmakers, DTC skincare, streetwear labels. Enterprise authentication platforms require $50K+ implementations. We built GenuProof to deliver the same cryptographic protection at $99/month, self-serve, powered by DynamoDB's single-table design for sub-10ms verification at any scale.
What it does
GenuProof is a B2B anti-counterfeiting platform. Brands register products and receive SHA-256 hash certificates with HMAC-SHA256 signatures. Supply chain handoffs are recorded as hash-chained provenance events in DynamoDB. Tamper with one event and every subsequent hash breaks. Consumers verify in one QR scan.
The platform detects tag cloning, the dominant counterfeiting attack, with 5 detection layers: device fingerprint lock, scan velocity, burst detection, geographic anomaly (3+ countries/24h), and consumer dispute flow.
Real-time threat intelligence runs on DynamoDB Streams > Lambda > Gemini 2.5 Flash. Every scan triggers anomaly checks; Gemini classifies threats with severity, attack vector, confidence score, and narrative. Alerts push to the brand dashboard via Server-Sent Events.
How we built it
DynamoDB is the entire backend: single-table design with 13 PK/SK access patterns and 1 GSI serving 37 API endpoints through one table. PAY_PER_REQUEST billing, Streams enabled for the Lambda pipeline. Key patterns:
PRODUCT#id / METAproduct records with SHA-256 hash and HMAC signaturePRODUCT#id / EVENT#ts#typehash-chained provenance eventsPRODUCT#id / SCAN#tsverification scan log (feeds anomaly detection)THREAT#brand#YYYY-MM / ALERT#tsAI-classified threat alerts (monthly-bucketed to prevent write-hot-spotting)OPS_LOG#YYYY-MM-DD / ts#agentGemini AI operations telemetry (daily-bucketed)VERIFY#code / METAO(1) verification code lookupBRAND_INDEX / BRAND#ts#idcollection key for no-Scan brand listingPRODUCT_INDEX / PRODUCT#ts#idcollection key for no-Scan product gallery
Zero full-table Scans on any data path. 17 access patterns, all served by Query or GetItem.
Vercel hosts the Next.js 16 frontend with 37 serverless API routes. Auto-deploy on git push.
Why DynamoDB: Verification must be fast. Consumers scan a QR and expect instant results. DynamoDB's single-digit-ms reads on the VERIFY#code > PRODUCT#id > chain walk pattern deliver sub-100ms end-to-end verification. The single-table design eliminates joins. Streams enable the real-time threat pipeline without polling. PAY_PER_REQUEST means zero cost at zero traffic, linear scaling to any
volume. Time-bucketed partition sharding on THREAT (monthly) and OPS_LOG (daily) prevents write-hot-spotting at scale.
Challenges we ran into
Single-table design required upfront access pattern planning: 13 partition key patterns serving 37 endpoints through one table with zero joins. We initially had a hot partition on PK: "OPS_LOG" (every
AI operation landing on one key), which we fixed by sharding to daily-bucketed OPS_LOG#YYYY-MM-DD partitions with scatter-gather reads. The anti-tag-cloning system needed 5 independent detection
layers because no single signal catches the attack. The Gemini integration in Lambda had to be critical-path while staying within the DynamoDB Streams retry window.
Accomplishments that we're proud of
- 5 cryptographic primitives in production (hash, HMAC, chain, fingerprint, email privacy)
- Anti-tag-cloning detection for the dominant real-world counterfeiting attack
- DynamoDB single-table design: 13 PK/SK patterns, 1 GSI, zero Scans, time-bucketed sharding
- 37 API endpoints, 15 pages, 155 Playwright e2e tests passing
- 44-tool MCP server for AI assistant integration
- EU DPP compliance export (ESPR-2024/1781)
- Live Stripe checkout with 3 subscription tiers
What we learned
DynamoDB's single-table design forces you to think about access patterns before writing code, the opposite of relational modeling. The payoff: every query is a single partition read, Streams give you a free event pipeline, and PAY_PER_REQUEST means the platform costs nothing until customers show up. The hot-partition fix (sharding OPS_LOG daily and THREAT monthly) was 8 lines in the Lambda writer and 15 lines in the API reader, no table migration, no downtime. For a B2B SaaS, this is the ideal database architecture.
What's next for GenuProof
- Shopify app directory listing for SMB brand acquisition
- Email alerts on CRITICAL threats
- NFC tag integration for luxury goods
- EU DPP registry direct submission
Built With
- amazon-dynamodb
- aws-lambda
- gemini-2.5-flash
- mcp
- next.js-16
- node.js
- playwright
- server-sent-events
- stripe
- tailwind-css
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.