RapidRFQ
A live quoting terminal reps use during customer calls: 11,491 SKUs, six dealer tiers, live inventory, and live carrier freight, in a single 2.4 MB file that works with no internet.
The problem
Reps quoted from a 76-page PDF price guide during live calls, searching by hand while the customer waited. Slow, error-prone, always out of date.
What it does
- 11,491 SKUs, six dealer tiers, live inventory, 1,181 machine specs, in one 2.4 MB file that works offline.
- Live carrier freight, a multi-machine cart, and a Copy-SKU-list handoff to the CSR (freight excluded).
- A call-transcript reader that splits what the customer committed to from what they only considered or declined.
- An AI assistant that turns a spoken request or transcript into a priced quote.
The hard part: freight it can stand behind
Carrier rates are non-deterministic without package dimensions: the same 25 lb load came back as a $25.87 parcel rate on one call and a $221.61 LTL-truck rate seconds later, 8.6x higher and just as plausible. The dimensions lived in a different ERP table the sync never read; once wired in, the panel judges the returned shipping mode and refuses to quote when a light load is rated as a truck, rather than sizing the rule on weight alone.
What's next
Today RapidRFQ reads from the ERP. Next is writing quotes back as native ERP order records, turning the tool into a two-way middleman between the sales floor and the system of record.
how it fits together
From ERP export to a single-file quoting terminal
An automated pipeline turns the daily ERP feed into one self-contained app, with live freight and an AI assistant on top.
- Source of truth: ERPDaily SyteLine product + pricing export through Zapier into Supabase.
- Build pipeline (Python)Assembles the catalog; hierarchy read from the source price guide (page ranges + headers), one row per unique SKU tagged with every machine it fits.
- Tier pricing engineStores retail only; derives all six dealer tiers in-app, so a discount change is a one-line edit.
- Single static file on VercelOne 2.4 MB HTML app that works offline, push-to-deploy in ~30s.
- Live freightBrowser → /api/freight → Pacejet; the panel judges the returned shipping mode and refuses to quote a rate it can't stand behind.
- planparse a spoken request / call transcript into searchespickselect the best SKUs from browser-found candidates
product screens
key engineering decisions
The model never sees the catalog
The browser searches locally; the model only parses intent and picks. The API key stays server-side, and the model never receives all 11,491 items.
Judge the answer, not the inputs
The freight panel refuses on the returned shipping mode (a truck rate for a light load), which catches the $221.61-vs-$25.87 case a weight threshold would miss.
results & outcomes
- Reps quote in seconds instead of hand-searching a 76-page PDF, so they spend the call selling and connecting with the customer, which means more quotes out and more closed sales.
- Every quote is a correct, current price straight from the ERP, so fewer mistakes reach the customer and fewer get walked back later.
- One pricing engine keeps all six dealer tiers consistent, so a margin change is a single reviewable edit instead of a catalog-wide risk.
- Freight refuses to quote a rate it can't stand behind, so an 8.6x overcharge never reaches a customer.
- Ships as one offline file, so a dropped connection at a dealer or a job site never stops a quote.
