The problem
Matching 2k+ Pitsco products to each RFP's requirements was manual and inconsistent — a bottleneck that slowed every proposal and let good-fit products slip through.
What I built
- Built a Python FastMCP RAG server with hybrid retrieval — a GIN tsvector (
websearch_to_tsquery) for keyword search and an HNSW pgvector index over OpenAI embeddings for semantic search — fused via Reciprocal Rank Fusion (1/(60+rank)). - Designed a dual datastore: Postgres (catalog + embeddings + full-text) and MongoDB (product docs + AI-note history), with a regex-guarded read-only SQL path for ad-hoc queries.
- Exposed the knowledge base through six MCP tools (semantic, keyword, hybrid, SQL, fetch, lesson-builder) — one interface every agent in the platform shares.
- Added an embedding-refresh path that re-indexes a product the moment its details or AI notes change, keeping retrieval current without re-importing the catalog.
System architecture
🧩
Architecture diagram — coming soon
MCP server · hybrid retrieval (tsvector + pgvector) · RRF · Postgres + MongoDB. (Upload diagram here.)
Demo
▶
Walkthrough video — coming soon
Show a query → hybrid match → ranked products.
Stack
PythonFastMCPpgvectorOpenAI embeddingsPostgres full-textMongoDBRRF
Outcome
~50% faster product matching Gave every agent workflow one grounded product knowledge source.