HS logo
back to work
case study · 2026 · Blue Diamond Attachments

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.

PythonSupabaseVercelClaudePacejetHTML/JS

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

RapidRFQ · architecture

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.

  1. Source of truth: ERP
    Daily SyteLine product + pricing export through Zapier into Supabase.
  2. 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.
  3. Tier pricing engine
    Stores retail only; derives all six dealer tiers in-app, so a discount change is a one-line edit.
  4. Single static file on Vercel
    One 2.4 MB HTML app that works offline, push-to-deploy in ~30s.
  5. Live freight
    Browser → /api/freight → Pacejet; the panel judges the returned shipping mode and refuses to quote a rate it can't stand behind.
  6. plan
    parse a spoken request / call transcript into searches
    pick
    select the best SKUs from browser-found candidates
Python · Supabase · Vercel · Claude · Pacejet · HTML/JS

product screens

The quoting terminal: catalog, host-machine filters, and cart in one view.
Reading a Zoom call transcript with the AI assistant.
The assistant recommends the two attachments to add to the quote.
Live freight: rating by location and package size via the carrier API.
Choosing a carrier from the live-rated options.
The finished multi-machine quote cart.

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.