Introduction
FABS Chip Tracker is our second flagship product at EXAFABS — a real-time intelligence platform for the global semiconductor industry, now live at fabs.exafabs.ai. Where FastAI Health Coach brought Claude to the most intimate question people ask ("what should I eat?"), FABS Chip Tracker applies the same AI-first philosophy to one of the most consequential questions in modern economics: where are the chips being made, who is building them, and what happens to the global economy if a single fab goes offline?
This post walks through the problem space, the architecture, the AI Decision Layer that sits at the core of the product, and the deployment path we took to get from "code on disk" to "live URL behind a real domain, serving real intelligence to real users."
The Problem: Semiconductors Are the Most Critical Supply Chain Nobody Can See
Every modern economy runs on chips. Your phone, your car, your power grid, your fighter jets, your AI data centers — all of them depend on a tiny number of fabrication plants ("fabs") spread across a small number of countries. And yet the data to actually understand this supply chain is fragmented, paywalled, or buried inside investor reports written for a different audience. Here's why that matters:
- Dangerous Concentration: Roughly 62% of the world's leading-edge logic capacity sits in Taiwan, and the overwhelming majority of that is inside a single company (TSMC). A small geological or geopolitical event there would ripple into every industry that uses a chip smaller than 7nm.
- Data is Fragmented: Fab locations, wafer capacity, CAPEX cycles, process nodes, and customer relationships live across press releases, 10-Ks, trade-press reporting, and niche industry databases. There is no single source of truth that a policy analyst or an investor can query.
- No Decision Layer: Even when the raw numbers exist, turning them into a decision ("should my fund rotate out of cloud infra into foundry equipment?") still requires hours of manual synthesis. Dashboards give you data; they don't give you answers.
- Fast-Moving Policy Landscape: The CHIPS Act, India's ISM program, the EU Chips Act, Japan's rebuild strategy — these are all rewriting the map of where chips are made. Static reports go stale the week they're published.
- Analysts Don't Have Time: Equity analysts, policy researchers, and strategic planners are the people who need this intelligence most — and they're also the people with the least time to assemble it from raw sources.
Our AI-First Solution: Live Data, Meet Claude
FABS Chip Tracker flips the dashboard model on its head. Instead of building "charts with a chatbot bolted on," we designed the platform around a Claude-powered AI Decision Layer from the very first commit. The data pipeline exists to feed the AI, not the other way around.
Interactive Global Fab Map
The homepage is a Mapbox-powered map of 15+ leading semiconductor companies and their worldwide fab footprint. Every fab is clickable — tap TSMC Fab 18 and you see the process node (3nm), the wafer capacity, the CAPEX history, the customers, and the risk signals. The same data is available through canonical company pages (/companies/tsmc, /companies/samsung, etc.) that also serve as SEO landing pages.
AI Decision Layer: Claude-Grounded Strategic Q&A
The core differentiator is the Decision Layer. Ask a strategic question — "what happens to automotive supply if a Taiwan earthquake takes TSMC Fab 18 offline for 90 days?" — and Claude answers using the actual fab data as grounding. It's not ChatGPT with a web search; it's a retrieval-augmented reasoning layer that operates on structured, curated, versioned intelligence.
When you ask FABS a question, Claude receives a structured context pack: the list of fabs relevant to your question, their nodes and capacities, recent CAPEX moves, known customer relationships, the status of relevant policy programs, and any published risk signals. This transforms the response from a confident-sounding guess into a reasoned answer you can actually take to an investment committee or a policy briefing.
The Decision Layer is gated behind a short decision-deck cache (five minutes) and an IP-based rate limit so that free-tier users can ask real questions without our API bill exploding — and so that high-frequency users get pushed toward the Pro tier, where the model runs with larger context windows and longer memory.
Live Intelligence Stream
The /insights page is a continuously-updated intelligence feed generated by a Convex cron that calls Claude to summarize the week's industry movement, then writes the results into the fabs_insights table. Readers see the feed; our backend sees an auditable chain of AI-generated rows with source citations. If the model hallucinates, we can trace it back to the exact prompt and input set that produced it.
Capacity Dashboard
For analysts who want the raw quantitative view, /dashboard is a capacity dashboard that breaks wafer output down by country, operator, and process node. It's the same underlying data the AI Decision Layer uses — we just expose it as charts so that the humans and the model are literally looking at the same numbers.
Tech Stack: Building a Production Intelligence Platform
Web Architecture
- Next.js 15 (App Router): Server components for the SEO landing pages, client components for the interactive map and the Decision Layer. Turbopack in dev, standard Next build in production.
- Convex Backend: Real-time reactive database for the fab catalog, insights feed, and usage metrics. Cron functions run the weekly insight generation pipeline and refresh derived capacity rollups. Queries are reactive, so the frontend never has to poll.
- Claude API via Server Routes: All Decision Layer and Insights generation calls run server-side through Next.js API routes. API keys never touch the client, and the server layer adds caching, rate limiting, and fallback behavior when the model is rate-limited.
- Mapbox GL for Geographic Visualization: The fab map uses Mapbox's vector tiles with a custom dark theme tuned to the EXAFABS palette (
#240331base, purple-pink-orange accent gradient). - Clerk for Auth: Google and GitHub SSO, with middleware that selectively gates Pro-tier routes while keeping the map, dashboard, insights, and SEO pages public so that search engines (and curious newcomers) can land on them without bouncing into a login wall.
- Vercel Edge Runtime: The app is deployed on Vercel with a custom domain (
fabs.exafabs.ai) and a Let's Encrypt certificate. Edge caching handles the high-traffic SEO surfaces, the Node runtime handles the AI routes.
Data Pipeline
The fab catalog starts as a single canonical JSON file (data/seed/fabs.json) that is treated as the source of truth. A Python build script (data/scripts/build_seed.py) expands that file into three derived artifacts: the fabs dataset, a denormalized companies dataset, and a bulk Convex seed module. A Node validator (data/scripts/validate.mjs) enforces schema and sanity checks so that bad data can never reach production. When a new fab is announced, we update the source JSON, rerun the build, and every surface — map, dashboard, company pages, AI Decision Layer context — picks up the change automatically.
AI Decision Layer Implementation
Here's the simplified flow for a single Decision Layer call:
// /api/decisions/route.ts
export async function POST(req: Request) {
const { question, sessionId } = await req.json();
// 1. Rate limit (IP-based, 3/hr for free tier)
const limit = await checkRateLimit(req);
if (!limit.ok) return Response.json({ error: 'rate_limited' }, { status: 429 });
// 2. Build a structured context deck from Convex
const deck = await buildDecisionDeck(question); // fabs + capacity + risk signals
const cached = await getCachedDeck(deck.hash);
// 3. Call Claude with grounded context
const answer = await claude.messages.create({
model: 'claude-opus-4-6',
system: DECISION_LAYER_SYSTEM_PROMPT,
messages: [{ role: 'user', content: renderDeck(deck, question) }],
});
// 4. Persist for audit + analytics
await ctx.runMutation(api.decisions.record, {
sessionId, question, answerId: answer.id, deckHash: deck.hash,
});
return Response.json({ answer: answer.content });
}
The grounded-context pattern is what separates FABS from "a chatbot with a search tool." Every answer is pinned to a deterministic deck hash so we can reproduce the exact inputs that led to a given response. That makes the system auditable, which is non-negotiable for anyone who wants to make real decisions based on what the model says.
From Code to Production: The Release Path
Shipping FABS wasn't just a matter of writing features. We maintained an explicit release-readiness tracker that treated "deployed and reachable behind a real domain, backed by real data" as the only acceptable definition of done. The critical gates:
- R1 — Seed Expansion: Grow the canonical fab dataset from a handful of test rows to 15+ leading semiconductor companies and their worldwide fab footprint, validated end-to-end.
- R3–R4 — Convex Production Deploy: Push the backend to the production Convex deployment and seed the fabs table there, not in dev.
- R5 — GitHub Push: All code under version control on
alpittare/exafabs-core, with deployment runbooks and environment documentation in the same repo. - R6–R7 — Vercel Deploy + Smoke Test: Create the Vercel project, wire environment variables, deploy a preview, and smoke-test every surface that matters — map, dashboard, insights, companies, decision layer.
- R8–R9 — Custom Domain + SSL: Point
fabs.exafabs.aiat Vercel via a CNAME on GoDaddy, then wait for the Let's Encrypt certificate to issue. The app is now reachable at its canonical URL with a valid cert. - R13–R14 — Performance & Mobile QA: Lighthouse trace on the deployed URL, with a Performance target of ≥ 85 and a Time-to-Interactive target of under 2 seconds on 4G Fast. Manual mobile smoke test on iPhone Safari and Android Chrome.
One of the more useful things that came out of this release path was learning, the hard way, that Next.js middleware running auth.protect() on every API route will silently turn every anonymous POST /api/decisions call into a 307 redirect — which the frontend dutifully parses as HTML and throws "Unexpected token '<'" at the user. The fix was to explicitly add the AI API routes to the public route list in the Clerk middleware, letting server-side rate limiting handle the free tier instead. That bug took almost a full afternoon to find. It is now documented in the deployment runbook so nobody else has to relive it.
Free Tier + Pro Tier: Who Pays for What
FABS launches with every feature unlocked for every user. The map, the dashboard, the insights stream, and the AI Decision Layer are all reachable without a login. That's deliberate: we want analysts, researchers, and curious people to be able to land on the site, ask one question, and immediately understand whether this is useful to them.
The Pro tier, when it goes live in Phase 2, unlocks higher Decision Layer rate limits, longer model context windows, downloadable CSV exports, and a company watchlist that syncs via email alerts. Pricing will land in the $9–$19 per month range for a monthly plan, with a discount for annual. For enterprise teams that need bulk API access and custom datasets, we'll open a direct conversation — the plumbing is already in place to support that.
What's Next: The FABS Platform Roadmap
The MVP is live, but FABS is designed to be a platform, not a single-feature product. A few things we're actively working on:
- Supply Chain Graph: Model the full upstream (equipment, wafers, gases, photomasks) and downstream (customers, end markets) edges of each fab, so that the Decision Layer can reason about cascading effects — "if ASML delivers three fewer EUV machines in 2027, which fabs miss their ramp?"
- Live News Ingest: Continuously crawl trade-press and company filings, tag each article against the fabs it affects, and surface signals directly into the
/insightsfeed. - Policy Tracker: Dedicated pages for the CHIPS Act, India's ISM, the EU Chips Act, Japan's rebuild program, and China's domestic substitution push — with a timeline of disbursements, approvals, and beneficiaries.
- Scenario Simulator: A lightweight "what if" engine on top of the Decision Layer that lets users explicitly simulate a shock (e.g., "TSMC Fab 18 offline for 90 days") and see the propagated effect on capacity by node, country, and customer.
- API Access: Expose the fab catalog and the Decision Layer as a paid API so that institutional users can embed FABS intelligence directly into their own research workflows.
Explore the Global Fab Map Now
FABS Chip Tracker is live. Ask the AI Decision Layer a question, explore the map, or drill into any of the 15+ semiconductor companies we track. No login required.
Launch FABS Chip Tracker