Skip to content
hugo.pessoni
Back to cases
RAGAcademic~1 min

Multi-agent analysis for public tenders

An academic MVP: two specialists with separate RAGs and a consolidator with structured output that feeds a dashboard.

Summary

Context

At university, the challenge was to support public-tender analysis: understanding the market before the call for bids, and comparing the candidate companies' documents after it.

Action

I built two specialist agents that are always consulted, a pre-tender one (general data and web) and a post-tender one (company documents), with local Chroma stores separated by sector. A consolidator returns structured output for a dashboard with three charts. Embedding-quota overruns have a fallback.

Result

A working MVP for two sectors (schools and technology), delivered as a UTFPR project.

Lesson

Fan-out to specialists plus a consolidator with a schema is a simple design that solves a lot before you need to think about routers.

Architecture

Multi-agent tender analysisThe query goes to two specialists with separate RAGs; a consolidator produces structured output for the dashboard.Queryregion · item · sectorPre-tendergeneral RAG + webPost-tenderdocuments RAGConsolidatorstructured outputDashboard3 charts

Long version

Design

  • Input: region, material and sector.
  • Specialists (always both, no router): pre-tender, with general data and web, and post-tender, with the candidate companies' documents.
  • Local RAG: Chroma, with stores separated by sector. Gemini handles embeddings and chat.
  • Consolidator: merges the two analyses into structured output that feeds three charts (pre-tender, post-tender and comparative average).

Lessons learned

  • Schema on the output. With structured output, the dashboard consumes the LLM result without brittle parsing.
  • Separate stores. Separate RAGs keep one context from contaminating another.