Skip to main content
Saggar Studio Send an enquiry

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.

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
gridwinner.comScreenshot
Gridwinner home page. Headline: Find profitable products in seconds, not hours. An Upload file button, with the note: no sign up required, .csv .xlsx .tsv, up to 100,000 rows.
The home page. One action: upload a file, no sign-up needed.

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Gridwinner terminal: a lead overview with actionable leads, average sales volume and low competition counts, above a product table with grade, cost, net profit, ROI, rank, sellers and trend. Side panels show an alpha score, a fee breakdown and file-processing progress.
The terminal. Grades, fees and ROI on every row, with file progress shown as it parses.
Gridwinner pricing: Guest at $0 for the top 10 leads with one scan and no account, Free at $0 for the top 25 leads and 3 scans a month, and Pro at $29 a month for every lead, unlimited scans, CSV exports and a purchase-order generator.
Pricing. Three plans, entitlements held in Clerk and billed through Stripe.

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.

Gridwinner technology stack, layer by layer.
FrameworkNext.js 16.1 App Router (React Server Components, route groups, server actions), React 18, TypeScript strict with no any
StylingTailwind CSS with custom gw-* design tokens, scoped hand-written stylesheets, JetBrains Mono
State and validationZustand (persist, immer), Zod
Data gridTanStack Table v8 and TanStack Virtual v3
File parsingPapaParse (CSV, TSV) and ExcelJS (XLSX), in a Web Worker
Charts and motionRecharts, Framer Motion, React Joyride for onboarding
Accounts and billingClerk (accounts and plan entitlements), Stripe (Checkout, Billing Portal, webhooks), Resend for email
Analytics and searchPostHog, Google Analytics in Consent Mode, Vercel Speed Insights, Google Search Console, Bing Webmaster Tools
TestingVitest 4, Testing Library, jsdom, Playwright across Chromium, Firefox and WebKit, ESLint 9, Prettier
Hosting and CIVercel 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.

Open

Your business, next.

We are taking on our first client sites. Two get the build free, in exchange for a published case study here. You pay the usual £85 a month.