ProposalIQ thumbnail

ProposalIQ

About this project

  • Federal solicitations turn on exact identifiers — clause numbers, CLINs, section references. Pure semantic search kept missing them, which is the reason this system is hybrid rather than dense-only.
  • A production RAG pipeline over Qdrant fuses dense embeddings (text-embedding-3-large, 3072 dimensions) with BM25 sparse retrieval using Reciprocal Rank Fusion at k=60. I chose hybrid after watching semantic search repeatedly miss the exact identifiers the documents hinge on.
  • Claude, GPT-4o and Gemini sit behind a unified layer with per-model token and cost accounting. Opportunity sourcing is agentic: SAM.gov via MCP tools driven by a Claude tool-use loop, alongside the HigherGov REST feed.
  • I built an evaluation subsystem for A/B model judgments and weighted rubric scoring across writing quality, completeness and accuracy, surfacing win-rate and tie analytics. Prompt and model changes get compared on results instead of intuition.
  • React SPA, an Express API with 162 endpoints across 33 data models, and a Python retrieval service. SSE-streamed drafting, real-time collaborative DOCX editing over Socket.IO, 442 automated tests, and CI/CD to Oracle Cloud through GitHub Actions, pm2, Nginx and a Dockerized OnlyOffice.

Key Features

  • Dense and sparse retrieval, fused with Reciprocal Rank Fusion
  • Three model providers behind one accounted layer
  • Agentic opportunity sourcing over SAM.gov via MCP
  • Model choices decided by measurement, not intuition
  • Real-time collaborative DOCX editing over Socket.IO
  • 442 automated tests and CI/CD to Oracle Cloud

Technologies Used

TypeScriptPythonQdrantRedisSocket.IODockerOCI