Discard — premium NFC
cards, with an AI brain.
Our most ambitious build to date. A full-stack e-commerce + SaaS for premium metal NFC business cards, with linked digital profiles and Disco — a Claude-powered chatbot that quietly improves itself with every conversation.
The brief.
Discard sells premium metal NFC business cards — the kind you tap on someone’s phone and your full digital profile pops up. They had a Shopify store, a basic landing page, and a growing problem: every prospect asked the same three questions before buying, and the founders were drowning in DMs at 11pm.
They wanted a real website, a real product configurator, and they wanted to stop answering “is this card actually metal?” forty times a week. They asked us if we could build something that would.
”We spent more time replying to Instagram than running the company. We needed the website itself to do the talking — and to do it well enough that we’d trust it to.”
— Discard founders, kickoff callTwo tracks, one product
What emerged was a project with two distinct halves, both shipping at once:
- The commerce side — a full e-commerce flow with a 3D card configurator, Stripe checkout, and a logistics-aware shipping model
- The AI side — Disco, a chatbot embedded everywhere, that knows the product, learns from every chat, and routes the hard cases to a human
The commerce side.
We rebuilt Discard’s storefront from scratch as a React 19 + Fastify app on Supabase. Shopify went away. The configurator is an in-house WebGL component — pick metal finish, engraving, NFC chip type, then preview it from any angle before adding to cart.

Live 3D configurator
WebGL card preview that updates in real-time as customers pick finish, engraving and chip type.
Stripe + Bulgarian VAT
Checkout flow that handles EU VAT correctly, with Stripe and bank-transfer fallback for B2B.
Linked digital profile
Every card ships with a SaaS profile — editable contact card, drag-drop link tree, analytics.
Production dashboard
Internal admin for the engraving partner — orders queue, status updates, automated shipping.
Meet Disco.
Disco is the chatbot. It lives in the bottom-right of every page, in the dashboard, and on every NFC profile that customers send out. It answers product questions, helps customers configure orders, schedules calls with the team for complex requests — and gets better every week.
We built it on Anthropic’s Claude with a custom RAG layer. The product catalog, FAQ, shipping policies, return policies, and the founders’ Slack history (with permission) are all indexed in Pinecone. When a customer asks something, Disco retrieves the relevant context and generates a grounded answer. Hallucinations are not a luxury we can afford on an e-commerce site.
The conversation that took 11pm DMs over three nights now happens in 90 seconds at any hour. And it’s converting — the founders see roughly half of all carts originate from a Disco conversation.
The architecture.
Disco’s pipeline runs entirely on the Discard infrastructure. No third-party chatbot widget — that was an explicit “no” from the team. They wanted to own the data, the model selection, and the prompt.
Inference is on Anthropic’s API. Storage and orchestration live on the Discard Supabase project. The only piece outside our stack is Pinecone for vector search — and we’re prototyping a self-hosted pgvector replacement to bring that home too.
How it learns.
”AI that learns from your conversations” is a hand-wave on most marketing pages. Here’s what it actually means at Discard:
Nightly review
Every night, a Sonnet-powered batch job reads the previous day’s conversations and flags any answer Disco gave that the retrieval system was less than 70% confident about. These get reviewed by a human at Discard — they either approve, edit, or reject. Approved answers become new FAQ entries that get re-embedded into Pinecone.
Repeat-question clustering
The same job clusters customer questions by semantic similarity. Once a cluster hits five hits without a matching FAQ entry, Sonnet drafts a new entry and surfaces it to the founders for approval. Common Bulgarian-language phrasing patterns surface this way too.
Conversation handoff
If Disco can’t answer with high confidence in two turns, it offers to schedule a call. The handoff includes a Sonnet-generated summary of what’s been asked and tried, so the human starts where Disco stopped.
”We thought we’d be writing the FAQ for months. Disco basically wrote it for us — we just edit and approve.”
— Discard founders, post-launch debriefResults, three months in.
Discard launched the new platform in early 2026. The numbers are still settling, but the trajectory is clear.
Beyond the numbers, the team can finally take a weekend off. Disco answers 91% of incoming customer messages without human help, and routes the rest with full context. Founders spend their time on product, not on copy-pasted DM replies.
The stack.
Modern, intentional, and most of it inside our usual toolbox.
- React 19 + Vite for the storefront and dashboard, with React Server Components for product pages
- Fastify on Node 22 for the API and Disco’s orchestration layer, deployed on Fly.io
- Supabase — Postgres, Auth, Storage and Edge Functions all in one. Scaled with us from prototype to launch.
- Stripe for payments, with a custom Bulgarian VAT module and bank-transfer fallback
- Three.js for the 3D card configurator, with custom GLSL shaders for metal finish previews
- Anthropic Claude — Haiku 4.5 for live conversation, Sonnet 4.5 for the nightly improvement loop
- Pinecone for vector search, with BGE-M3 embeddings and a custom multilingual retriever for Bulgarian + English
- Resend for transactional email, including order updates and Disco-handoff confirmations