A full-stack tool I designed, built, and shipped solo to turn raw Amazon Ads bulk exports into an instant, visual audit of what's actually driving — or draining — ad spend.
Every week I'd spend 4+ hours pivoting Amazon Ads bulk files in Excel just to answer "which campaigns are wasting money?" So I built the tool I wished existed — one upload, 90 seconds, every answer.
↗ Visit the live dashboard preview at the bottom of this page.
As the person running Amazon PPC at ATHIBAN Ecommerce, my Monday morning looked like this: download the Sponsored Products bulk file, open Excel, build pivot tables by match type, by placement, by campaign — hunt for negative-keyword candidates, flag wasted spend, screenshot findings into a slide for the weekly review. Every. Single. Week.
The workflow had three real problems:
90% of what I was doing manually was pattern recognition on tabular data. Computers are good at that. I was the bottleneck.
A single-page web dashboard where I (or any ads manager) could:
I picked the stack to keep it edge-fast, free-tier friendly, and single-developer-maintainable. No Docker, no Kubernetes, no AWS console — just Git push.
The actual ads data never leaves the browser. Parsing, aggregating, and rule-evaluation all run client-side through DuckDB-WASM in a Web Worker — full SQL over your files, on your machine. The server only stores auth + quota metadata. That decision made compliance, cost, and performance all easier at once.
Each module replaces one specific pivot-table or Excel workflow I used to run manually:
Rolls a single 60-day bulk-operations export into clean campaign, ad-group, target, search-term, and placement metrics — the whole account at a glance.
Weekly trend lines, Pareto (80/20) analysis, and month-over-month comparisons built from daily report data — spot the drift before it becomes a problem.
Automatically detects match-type conflicts, missing exact-match keywords, and structural gaps across the account — the manual audit, done for you.
Drag-and-drop pivot tables, formula columns, custom rules, and charts on any CSV or Excel file — your own ad-hoc analysis, no spreadsheet gymnastics, no code.
Side-by-side analysis of two date ranges that auto-flags the improvements and regressions — answer "did last month's changes actually work?" in seconds.
Build custom bid rules, pause bleeding terms, and negate wasteful keywords — then export a ready-to-upload Amazon bulk file. Insight becomes action in one click.
Interactive tree map of Portfolio → Campaign → Ad Group → Target with live status indicators on every node — the account architecture Amazon buries three clicks deep.
One-click /demo route loads 60 days of sample data. Shareable, zero friction,
zero sign-up.
The analytical engine moved to DuckDB-WASM — full SQL running entirely in the browser — so the dashboard now chews through 149K+ rows in under two seconds. Two new modules shipped alongside it: a Custom Analysis Studio for drag-and-drop pivots, formula columns, and charts on any file, and Compare Periods for instant period-over-period diffing of wins and regressions.
The first time I uploaded a real bulk file on a Sunday evening from my phone and had my Monday recommendations ready before my coffee was done, I realized I'd never go back to pivots.
— Field-testing AdInsight Pro, v0.4Built in focused evening + weekend blocks over two weeks. Here's the honest timeline:
Set up the Astro project with the Cloudflare adapter, wired up D1 for users/sessions/quota, built the login flow and middleware. Nothing visible yet, but the plumbing was production-grade from day one.
Bulk files hit 10–15 MB easily. Parsing them on the main thread froze the UI. Moved the whole parse into a Web Worker and typed every column — the moment row-count hit 20k and the UI stayed buttery, I knew the architecture was right.
Aggregators for spend/orders/ACoS, first working keyword table with sorting & filtering. This was the first moment where I could upload a real bulk file and see something Excel couldn't show me at a glance.
Hooked up @xyflow/react to render the campaign → ad group → keyword hierarchy as a real graph. Spent an afternoon tuning auto-layout so it didn't look like spaghetti. Worth it.
Designed a small DSL-ish rule format (field + operator + value + action), wrote the evaluator, built the rule-builder UI. Output: a downloadable bulk upload ready for Seller Central. This is the module that closes the loop — insight becomes action.
Killed all hard-coded colors, moved to CSS design tokens, added a no-flash theme init script, fixed React Flow's canvas for light mode using a MutationObserver hook to re-read CSS variables when the theme changes.
Built the marketing / route and a /demo
route that auto-loads 60 days of sample data with a dismissible banner. Anyone can try
the full dashboard in one click — no signup, no data required.
PUBLIC_ROUTES
allowlist is ten times safer than remembering to add if (!user) redirect() at
the top of every page.The demo route loads the full dashboard with 60 days of realistic sample data — no sign-up, no data required. Toggle dark/light, explore all 7 modules, even download a mock negative-keyword list.
Want this kind of audit tool for your own brand? I build custom dashboards like this for e-commerce teams. Get in touch →