Case study · Live site
Gridwinner
A wholesale product analyser for Amazon FBA sellers. It turns 100,000-row supplier lists and Keepa exports into a profitability read, without uploading anything.
- Site
- gridwinner.com
- What it is
- Local-first Amazon FBA product analyser
- Built by
- Arun Paul, Saggar Studio
- Year
- Core stack
- Next.js 16, TypeScript, Web Workers, TanStack Table, Clerk, Stripe, Vercel
Summary
In short.
Gridwinner (gridwinner.com) is a product analysis tool for Amazon FBA sellers. A seller drops in a wholesale or arbitrage supplier list as CSV, XLSX or TSV, up to 100,000 rows, and gets estimated FBA fees, landed cost and ROI on every product.
The file is parsed in the browser, so the supplier list never leaves the seller's computer. There is no database behind the analysis.
The brief
The job.
Supplier lists are commercially sensitive, and they are large. The tool had to read a 100,000-row spreadsheet quickly without sending it to a server, then turn it into a shortlist a seller can act on.
What was built
Five parts that do the work.
Parsing in a Web Worker
PapaParse reads CSV and TSV and ExcelJS reads XLSX, both inside a Web Worker, so the page stays responsive while a large file loads. Progress shows step by step: reading the file, parsing rows, calculating fees.
A terminal for 100,000 rows
TanStack Table with TanStack Virtual renders only the rows on screen. Each product gets a grade, cost, net profit, ROI, sales rank, seller count and trend, with quick filters such as Consistent, Quick flip, Safe bet and No Amazon.
No database
Nothing from the file is stored server-side. Working state lives in the browser through Zustand with persistence, and incoming data is validated with Zod.
Plans without a billing database
Clerk holds accounts and stores each user's plan in its metadata. Stripe Checkout, the Billing Portal and webhooks keep it current. Guest shows the top 10 leads, Free the top 25, and Pro at $29 a month unlocks every lead.
Free tools around the terminal
Free micro-tools, Learn and Resources sections give sellers and search engines a way in before anyone uploads a file. Pages carry JSON-LD, and Google Analytics runs in Consent Mode.
Product
The terminal and the plans.
By the numbers
The codebase.
- Lines of TypeScript
- ~33,800
- Lines of hand-written CSS
- 5,167
- TS and TSX files
- 216
- Components
- 105
- Unit tests
- 139
- End-to-end tests, three browsers
- 19
Figures from the engineering brief, , across 107 commits. These describe the build, not traffic or revenue.
Stack
What it runs on.
| Framework | Next.js 16.1 App Router (React Server Components, route groups, server actions), React 18, TypeScript strict with no any |
|---|---|
| Styling | Tailwind CSS with custom gw-* design tokens, scoped hand-written stylesheets, JetBrains Mono |
| State and validation | Zustand (persist, immer), Zod |
| Data grid | TanStack Table v8 and TanStack Virtual v3 |
| File parsing | PapaParse (CSV, TSV) and ExcelJS (XLSX), in a Web Worker |
| Charts and motion | Recharts, Framer Motion, React Joyride for onboarding |
| Accounts and billing | Clerk (accounts and plan entitlements), Stripe (Checkout, Billing Portal, webhooks), Resend for email |
| Analytics and search | PostHog, Google Analytics in Consent Mode, Vercel Speed Insights, Google Search Console, Bing Webmaster Tools |
| Testing | Vitest 4, Testing Library, jsdom, Playwright across Chromium, Firefox and WebKit, ESLint 9, Prettier |
| Hosting and CI | Vercel with preview deploys per branch, GitHub Actions, Node 20 |
Questions
Straight answers.
What is Gridwinner?
Gridwinner is a product analysis tool for Amazon FBA sellers at gridwinner.com. It reads wholesale and arbitrage supplier lists and shows estimated FBA fees, landed cost and ROI on every product.
Does Gridwinner upload my supplier file?
No. Files are parsed in your browser, inside a Web Worker. The supplier list never leaves your computer, and there is no database behind the analysis.
How big a file can Gridwinner handle?
Up to 100,000 rows per file, in CSV, XLSX or TSV format.
What is Gridwinner built with?
Next.js 16 and strict TypeScript on Vercel, PapaParse and ExcelJS in a Web Worker, TanStack Table and TanStack Virtual for the data grid, Zustand for state, Clerk for accounts and Stripe for billing.
Who built Gridwinner?
Arun Paul, founder of Saggar Studio, a web studio based in Manchester and Stoke-on-Trent.