← All projectsProduct build · AI & data

Fitwise — an AI parts finder built from scratch for aftermarket dealers.

Aftermarket parts dealers carry tens of thousands of parts across hundreds of makes and models. Their customers ring in every day with one question: "does this fit my machine?" We built an AI platform that ingests their PDF catalogs and service manuals, and answers that question in under ten seconds — without a phone call.

Stackfitwise.ai
  • FastAPI · Python 3.11
  • Next.js 15 · React 19 · TypeScript
  • MongoDB (parts + users + chats)
  • Qdrant (vector search)
  • OpenAI GPT-4.1 vision (extraction)
  • Voyage AI (embeddings)
  • Docker · Caddy · GCP
  • SendGrid · AWS S3
Services used
Web data extractionData pipelinesAI systems & agentsCustom software
98+Target marketQualified aftermarket dealers identified
<10sPart search timevs 10–20 min of manual catalog digging
100%PDF coverageParts books, service manuals, CSVs ingested
LiveStatusfitwise.ai — production deployed
01The problem

"What fits my 2015 Komatsu?" — answered by a human, every time.

Aftermarket parts dealers carry catalogs of 10,000–500,000+ parts across dozens of makes and models. Every part has a fitment story — the right serial range, the compatible model variants, the superseded part numbers. That story is locked inside PDFs, printed books and staff who have been there for 20 years.

The result: buyers phone in, staff dig through binders, wrong parts get ordered, right parts take days to confirm. The "Call us" button on every parts website is a symptom of a data problem, not a service philosophy.

"Can't find the part? Call us."

Seen on 60+ of the 98 qualifying sites. The catalog exists — buyers just can't search it.

"Does this fit a 1998 Evinrude?"

MarineEngine.com — model-specific exploded diagrams, still needs a human to confirm fit.

"10,000 units NOT listed on our site."

Precision Fluid Power — buyers email a photo of the unit tag for a quote instead.

"We'd ordered the wrong parts."

Highway & Heavy Parts customer review — saved only because a rep manually checked the VIN after purchase.
02What we built

A full-stack AI platform. Two pipelines. Three chat surfaces. One admin console.

Ingestion pipeline

PDFs → structured parts data

PyMuPDF extracts text and page images from manufacturer PDF manuals. GPT-4.1 vision reads each page and pulls out part numbers, compatible models, serial ranges and descriptions. Results land in MongoDB as searchable parts rows.

RAG pipeline

Service manuals → vector search

A separate pipeline chunks service and repair manuals with overlapping windows, generates Voyage AI embeddings and stores them in Qdrant. Powers the service-manual chat where technicians ask repair questions.

Parts chat

Conversational fitment search

Buyers pick brand and model from auto-generated dropdowns (built from what the ingestion pipeline discovered) and ask in plain English. Guided turns cost zero LLM calls — a Mongo query builds the answer in code. Free-text turns use RAG over the ingested corpus.

Admin console

Full control for the dealer

Dealers get a dashboard to trigger ingestion runs, watch live pipeline logs, review discovered models and serial ranges, read every chat conversation, manage users with RBAC, and handle support tickets — all from one interface.

Public embeddable widget

Zero-auth parts finder

A rate-limited public surface (/help) with no login requirement. Dealers embed it on their website. Per-IP and site-wide daily caps. Guided turns (dropdown only) make no OpenAI calls at all — safe and cheap to run at scale.

Source-of-truth ingestion

CSV → verified answers

Dealers can upload their existing parts CSV (part number, description, brand). The pipeline ingests it into a separate MongoDB collection with compound indexes. Chat answers are verified against it before being returned.

03Architecture

Production-grade from day one.

Every request flows through Caddy for TLS termination and path-based routing — API calls and WebSockets to FastAPI, everything else to Next.js. The browser never holds a token: auth is an HttpOnly session cookie, and all admin data calls are proxied server-side.

AuthJWT with RBAC — require_admin(), require_product_access() — plus a super_admin tier created only via CLI
Rate limitingPer-IP and per-account tiers at the login endpoint; per-IP + site-wide daily caps on the public widget
ObservabilityStructured JSON logs with correlation IDs on every request; Sentry for error tracking; slow-request flagging above 1s
CI / CDruff + bandit + pytest + gitleaks + frontend typecheck, all blocking; GCP deploy gated on green CI
Data safetyMongo + Qdrant backups to S3 via on-demand task runners; per-brand ingestion is idempotent
# request path
Browser → Caddy (TLS)
├── /api/* → FastAPI (8000)
└── /* → Next.js (3000)
# data stores
MongoDB → parts · users · chats
Qdrant → vector embeddings
S3 → source PDFs + backups
# AI services
GPT-4.1 → extraction + vision
Voyage AI → embeddings (1024-dim)
# live at
app.fitwise.ai
04Now

The platform is built. The product is next.

Fitwise is live at fitwise.ai. The ingestion pipeline, chat surfaces and admin console are all in production. We're now taking it to market — selling managed deployments to aftermarket parts dealers who have the same problem and no engineering team to solve it.

Each dealer gets their data ingested, their own branded interface and a parts finder their customers can use the day it goes live. We run the infrastructure.

See the Fitwise product
If your business has this problem
  • You have a large parts catalog — PDFs, CSVs or both
  • Customers phone or email to find the right part
  • Your search shows "Contact us" too often
  • Wrong-part orders are costing you return handling
  • You want AI on your site but don't have engineers to build it
Talk to us about your catalog
05Next step

Tell us what your team does by hand. We'll tell you if we can automate it.

Free 30-minute call, no pitch deck. We'll tell you honestly whether it's worth automating, and roughly what it costs.

Reply time
Same working day
Team
In-house, full-time
Clients in
Asia-Pacific · Europe · Americas