Product Lab case study
- Brand
- Product
- Engineering
- AI
Sourcing research


Case study · 2026
The sourcing researcher you never have to hire. Product Lab checks every row of a supplier price list against Amazon and brings back what qualifies.
What we did
- Brand identity
- Product design
- Web app and website
- API and data pipeline
- Model training
Long story short
Granite Labs designed and built Product Lab end to end: the brand, the app, the website, the API and the model training pipeline.
Highlights
- Listings checked in the US, UK and EU
- Images, pack and variant before margin
- One keystroke when a pack is unclear
- Forty rules, one master per component
For
Amazon resellers sourcing from supplier price lists
Markets
United States, United Kingdom and the EU marketplaces


The challenge
Up to 50,000 rows
A supplier price list can run to thousands of rows. Each one has to be matched to its Amazon listings, checked for pack and variant, and priced against fees before anyone decides what to buy.
The product had to do that work in the background and stay honest about doubt. When a listing's title says six and its photo shows three, a person makes the call.
- AI search
- 38,520listings from 9,630 searches
- AI screen
- 4,280could be your product
- AI photo check
- 1,912matched, every pack countedmatched, units in every pack counted
- Priced on your costs
- 196listings worth buying

One price list, four passes
Search, screen, photo check, pricing

The product plane
Fly through review. Nothing ever loads.

Review by keyboard
One keystroke per answer
The approach
One way to draw each thing
The screens had drifted into two to five versions of each element. We wrote forty hard rules and gave every component one master, so the app, the website and the sign-in pages speak one language.
Paper tokens are the code tokens, and a lint of eight checks runs before any board loses its review tag. Yellow never marks a problem. It marks the brand, where you are, and a run that is still going.
- FFF6D6#FFF6D6
- FFE59A#FFE59A
- FFD45C#FFD45C
- F2B93B#F2B93B
- 7A5600#7A5600
One yellow, five steps
Brand, place, live runs. Never a status.



The build
Five apps, one repo
One Turborepo holds five apps: a NestJS API, the TanStack Start app, the Next.js website, a generator that builds training data, and a Python trainer that fine-tunes small language models on Modal.
Runs queue on Redis and carry on when the tab is closed. Results land in Postgres through Drizzle, and files in Cloudflare R2. Every screen ships from the same Paper tokens.
Stack
What it runs on
Next.jsWebsite
TanStack StartApp
NitroApp server
ReactInterface
Tailwind CSSStyling
NestJSAPI
PostgreSQLDatabase
DrizzleORM
RedisQueues
Better AuthSign-in
VercelHosting
Cloudflare R2File storage
StripePayments
AutumnBilling
ResendEmail
AnthropicModels
OpenAIModels
ModalTraining
TurborepoMonorepo
PaperDesign




Next study
Also in the house
Say hello.
Questions about Product Lab, Zeton or the house.
hello@granitelabs.to
