One question. A supervisor and four specialist agents. A workspace that builds itself for your role.
Suppliers rated Low or Medium overall carry a Critical sub-score: finances, quality, compliance. A single total averages the danger away.
Audit PDFs, scanned certificates, supplier emails about delays, news on strikes and commodity prices. Each lives in a different place, and nobody connects them to the risk score.
The risk manager, strategic buyer, CFO, ESG officer and maintenance engineer ask different questions of the same data. Static dashboards serve none of them well.
Describe a procurement request in chat, upload an item list as a PDF, or let an incoming supplier email trigger it.
React · SSEThe Supervisor reads the user's role, focus and notes, then decides which sources it needs.
Nemotron 3 SuperOne delegate call starts the Data, Document, Email and Web agents in parallel threads.
4 agents · parallelAgents call tools: exact risk maths, OCR'd documents, the email connector and Tavily search. Every claim gets a citation.
TavilyA role-specific workspace and answer, with recommended actions that wait for a human to approve them.
Generated UILeast-squares fit over all 10,000 suppliers: RMSE 0.29, which is integer rounding. Every point of every score is traceable.
Audits, certificates, contracts, finance, quality reports, procurement requests
Text, MD, CSV, DOCX read directly. PDFs with a text layer skip OCR. Scans render at 150 dpi, up to 10 pages
Page image sent in an <img> tag. A forced tool call (markdown_no_bbox) returns structured markdown. Nemotron VL is the fallback
SHA-1 file hash cache, so each file is OCR'd once. 1,200-char chunks with 200-char overlap
search_documents runs 2–3 keyword queries and quotes passages as [doc: file]
Upload a request PDF. Nemotron Parse reads it, then Nemotron 3 Super extracts the items into JSON and maps each one to a rail part category. Every item becomes a bubble of qualified suppliers, coloured by risk.
Supplier names in the dataset are anonymised ("Elite Systems 250"), so searching by name returns nothing.
Search by part category + country + topic. Report results as contextual signals, never as facts about a named supplier.
topic="news" · include_answer=True · up to 10 results
{title, url, content, published_date}. Dedupe by URL, cache by query hash
Web Agent answers cite [web: url]. The supplier deep dive shows a news feed
Type the request or upload a PDF item list. Scans are read by Nemotron Parse
Extracts items as JSON and maps each to a rail part category
EU only? Priority: lowest risk, delivery reliability or proven volume
Radial tree or bubbles: items → proven suppliers, coloured by risk
Ranked only inside each item's branch. Priority adjusts the score; it never overrides risk
| Item | Recommended (EU) | Risk | Avoid |
|---|---|---|---|
| Brake control unit BCU-7 240 units · 8 suppliers | Elite Systems 250 SUPP_01703 · Belgium · delivery 100% | 15 | SUPP_09733 · risk 87 |
| Bogie frame (motor) 480 units · 8 suppliers | Elite Partners 335 SUPP_09469 · Denmark · delivery 96% | 41 | SUPP_06901 · risk 71 |
| Door drive unit DDU-4 960 units · 8 suppliers | Global Group 353 SUPP_00216 · Hungary · delivery 92% | 37 | SUPP_00255 · risk 69 |
Every figure comes from a tool: pandas, the exact score formula or rule-based what-if. The model selects and explains.
Inline sources on every claim: [data], [doc: file], [email: subject], [web: url].
Country, category, fleets, history and orders are enrichment, labelled SIMULATED wherever they appear.
Recommended actions are marked "need approval". Recommendations require risk < 50; the buyer's priority adjusts the ranking but never overrides risk.
Regex for emails, keyword matching for requests, a persona template for the UI. The app still works when a model call fails.
Step caps (6 / 4 / 3 / 2 per agent), tool output capped at 12k chars, caches for OCR and Tavily, thinking off for latency.
Hidden risks found. Evidence cited. A workspace built for each role.