Inspiration
We watched a contractor spend two days procuring cement for one site thirty calls, quotes scribbled on paper, one vendor quoting per bag and another per tonne, and no way to know whose "delivery by Monday" meant Monday. India's marketplaces (Infra.Market, OfBusiness) solved supply aggregation; nobody solved the decision. The Procurement track asked for "an expert analyst working 24/7" so we built the analyst.
What it does
A contractor types one sentence "Need 500 bags of OPC 53 cement in Prayagraj by 15 August, BIS certificate mandatory" and three agents take over. Scout searches the contractor's existing vendor pool and flags certificate anomalies. Outreach contacts vendors the way India actually replies WhatsApp first, email fallback, call notes and parses messy one-liners like "7300/tonne ex-godown, transport extra" into structured quotes, logging who committed a written date and who dodged. Analyst levels every quote onto one basis (₹/bag, delivered, GST-in) and returns a risk-scored top-3 shortlist with reasoning behind every rank. Every RFQ writes back to vendor memory who quoted fast, who honored dates, who ghosted. Thirty vendors becomes three calls.
How we built it
Next.js + Tailwind + shadcn/ui frontend, FastAPI backend, three agents orchestrated as a LangGraph state machine sharing one Pydantic requirement object. LLM calls run on Groq (llama-3.3-70b) behind a swappable provider layer; SQLite holds vendors, quotes, and reliability events; WhatsApp runs via Twilio sandbox. One rule everywhere: the LLM never does math unit conversion, GST, and scoring are deterministic Python; the model only extracts meaning and writes explanations.
Challenges we ran into
Parsing vendor replies was honestly harder than the agents themselves. Getting "372 per bag delivered" and "7300 per tonne ex-godown" onto one fair basis meant handling units, GST, freight — and admitting when we weren't confident instead of letting the model guess.
The certificate problem went the opposite way. We started out assuming verification was impossible and planned to just check formats and expiry dates. Then we found that BIS's ManakOnline portal and BIS Care app let anyone look up a CM/L number and get back the manufacturer, the standard, and whether the licence is active, expired, or cancelled. So we built the full three-tier check instead — with one honest caveat we'd repeat to any judge: the registry validates the licence, not the paper it's printed on. A real number pasted onto a fake document is why mismatches go to human review instead of silently passing.
Accomplishments that we're proud of
he full flow works end to end: one sentence in, an evidence-backed shortlist out with the vendor who said "we will try our best" visibly down-ranked. We're equally proud of what we didn't build: no marketplace, no cold-start, no claims we can't defend.
What we learned
Procurement is a trust problem wearing a paperwork costume the hard part isn't finding vendors, it's knowing which commitments to believe. Designing for Indian ground reality (WhatsApp-first, informal replies) beat textbook procurement, and constraining LLMs to judgment-only roles made the whole system dramatically more reliable.
What's next for RFQ Copilot
Post-delivery checks that close the loop into vendor reliability scores, a fair-dispute mechanism for genuine external delays, production WhatsApp via the Business API, and pilots with mid-size contractors because vendor memory only compounds when real RFQs flow through it.
Built With
- fastapi
- groq
- langchain
- langgraph
- llama-3.3
- nextjs
- postgresql
- python
- shadcn-ui
- sqlite
- tailwindcss
- twilio
- typescript
- websockets
Log in or sign up for Devpost to join the conversation.