-
-
The catch: the cheapest quote confirmed the wrong GPU on the call — excluded as WRONG_CONFIGURATION
-
It starts with a real RFQ email plus a product URL — no portal, no form
-
Margin applied, customer quote drafted — generated, never sent; a human hits send
-
Distributor scorecard + hash-chained ledger; one multi-recipient CALL-E task, verified on a live +91 call
Inspiration
Every trading business has an RFQ inbox and a guy on the phone. A customer emails "12 units of the Predator Helios 16 AI, RTX 5080, 32GB, 2TB, need it in two weeks" — and someone calls four distributors, asks the same question four times, spends forty minutes, and the prices go stale by tomorrow. Worse: "Predator Helios 16 AI" is a family, not a SKU. A distributor quoting the RTX 5070 variant is a wrong answer wearing a cheaper price tag, and a human scanning four quotes for the lowest number will send it.
What it does
QuoteDesk turns an inbound RFQ email plus a product URL into a verified customer quote:
- Intake — deterministic parsing of the email + URL into a structured RequestedSpec (no LLM, no fetch).
- One CALL-E call task, all distributors as recipients — a strict per-recipient result schema forces every extracted field to carry a transcript evidence span and a confidence grade:
confirmed(read back on the call),heard_once, orunstated. - Configuration identity resolution — every quote is compared field by field against the ask. Verdicts are fail-closed:
verified_match,wrong_configuration, orunverified. Unstated is never a match. Price and ETA must be read back (confirmed) or the row cannot enter the customer quote — "forty-two five" and "forty-two fifty" are one vowel apart and one of them is a hole in your margin. - The sell-side close — landed cost + margin from a market config (India default: IGST, freight, forex buffer), a drafted customer quote that is generated, never sent (a human hits send, by email — the right channel for the customer side), a hash-chained append-only ledger, and a per-distributor reliability scorecard that compounds with every RFQ.
In the demo, the cheapest distributor (₹2,31,000, 3 days) confirms on the call that it's the RTX 5070 / 1TB variant — QuoteDesk excludes it as wrong_configuration. The second cheapest never read the ETA back — blocked. The quote is built on the verified one.
How we built it
TypeScript + @call-e/calle + zod. One multi-recipient call task with recipient_result_schema per distributor and a cross-call result_schema rollup — the idiomatic CALL-E pattern, not four loops. Idempotency keys derive from (rfqId + distributor set) so a retry can never double-dial; the returned call id is persisted to the ledger immediately because there is no list-calls endpoint. Dry-run on canned fixtures is the default; --live is explicit. 26 tests run with zero credentials and zero calls.
Challenges
CALL-E exposes no client cancellation — a created call runs to completion — so QuoteDesk dispatches exactly one controlled wave per RFQ and documents it honestly. Voicemail and unextractable results reconcile fail-closed as unverified: a state for human follow-up, not an error to retry blindly.
Accomplishments
We verified the live path on a real +91 call: GPU, RAM, storage and price came back confirmed with read-back evidence spans; an ETA said once graded heard_once and was blocked; a product family the callee never named graded unstated and kept the quote ineligible. Both fail-closed rules fired on a real phone line, unprompted.
What's next
Computers is the wedge. Pharma, auto parts, building materials, industrial MRO, chemicals — every trading business runs on RFQs and phone calls. The distributor scorecard is the part that compounds into a business.
Built With
- call-e
- node.js
- typescript
- vitest
- zod
Log in or sign up for Devpost to join the conversation.