Building an
AI-First Team
A case study in AI-augmented software delivery: 5 engineers modernizing a legacy .NET monolith into microservices, with an Agentic RAG system that lets AI query 10 years of system history.
System Architecture
Strangler Fig pattern — incremental migration via YARP gateway
Migration Timeline
4 phases over 9 months — Phase 0 invests in AI foundation
Services
5 services to extract + Payment (frozen in monolith)
Travel Booking
M3Handles all travel booking operations including itineraries, supplier integrations, and pricing. The highest-value core domain with the most complex business rules.
Event Management
M4Manages events, venues, schedules, and attendees. Complex scheduling logic with venue capacity constraints and multi-day event support.
Workforce + Allocation
M6Manages staff profiles, skills, shift allocations, and availability. Subscribes to Travel and Event domain events to coordinate staffing needs.
Communications
M7Cross-cutting notification service handling email, SMS, and push notifications. Subscribes to ALL domain events across the system to trigger appropriate communications.
Reporting (CQRS)
M7Read-only reporting service using CQRS pattern. Aggregates data from all services via CDC and event projections to build cross-module dashboards and reports.
Payment (Legacy)
FrozenPayment processing and invoicing — remains in the legacy monolith during Phase 1 due to the constraint. New services access it via an Anti-Corruption Layer (ACL) adapter pattern.
AI Knowledge System
How we built an Agentic RAG pipeline so AI can query 10 years of legacy history
1. RAG Pipeline — Building the Knowledge Base
Python scripts generate realistic 10-year artifacts: 13K+ JIRA tickets, 667 incidents, 500+ deployments, team events, code, configs, meeting notes
All artifacts chunked and embedded using all-MiniLM-L6-v2 (local, 384 dims, no API needed) into ChromaDB vector store
21,127 documents in ChromaDB (311 MB) — searchable by semantic similarity, doc type, module, era, year
2. Agentic RAG — AI Decides What to Search
Traditional RAG: embed question → find similar docs → paste into prompt. Works but no reasoning about WHAT to search
LLM receives 13 tools as function declarations. It decides which tools to call, chains multiple searches, then synthesizes
Multi-step: LLM can call tools → read results → call MORE tools → synthesize. Up to 5 iterations of reasoning
Two Access Patterns — Same RAG Backend
Developer asks in VS Code Chat
→ Copilot analyzes question
→ calls MCP tools (stdio JSON-RPC)
→ ChromaDB returns docs
→ Copilot synthesizes answer
✓ Zero API cost — Copilot is the LLM
✓ 13 tools via MCP server
User asks on Ask AI page
→ Gemini receives 13 tool definitions
→ decides which tools to call
→ Python API → ChromaDB returns docs
→ Gemini synthesizes answer
✓ Same tools, different LLM
✓ Deployable as web app
13 RAG Tools Available
search_legacy_historysearch_by_typesearch_by_modulesearch_timelinesearch_combinedsearch_codeget_system_overviewget_incident_statsget_code_inventoryget_team_timelineget_module_healthfind_related_artifactslist_available_filters