| Capture |
Playwright + authenticated request replay |
Reliable for login/session handling and better than brittle DOM scraping when internal APIs are available. |
Used to capture review, one-on-one, and recognition payloads from Paycor Talent Development / 7Geese. |
| System of record |
SQLite |
Simple, durable, fast enough for the proof-of-concept scale, and easy to back up and inspect. |
Stores normalized people, cycles, documents, review answers, segments, raw records, and ingest runs. |
| Lexical search |
SQLite FTS5 |
Strong for exact terms, names, review phrases, and constrained metadata-aware retrieval. |
Indexes document segments for exact-text retrieval and complements vector retrieval. |
| Semantic search |
Chroma + sentence-transformers |
Useful when users ask conceptually similar questions that do not match the original wording in a note or review. |
Embeds document segments and merges vector results with BM25 results. |
| Application services |
FastAPI |
Fast to build, clear request models, and a good fit for protected JSON endpoints and lightweight server-rendered pages. |
Hosts the public briefing site, `/health`, and the protected `/api/*` surface. |
| LLM integration |
FastMCP with OAuth |
Allows modern LLM clients to discover tools and resources instead of forcing bespoke client integration. |
Exposes digests, search, coverage, and drill-down workflows over MCP at `/mcp`. |
| Deployment |
nginx + systemd |
Straightforward, durable Linux operating model with clear separation between public proxying and local services. |
Routes traffic for the public site, API, MCP transport, and OAuth discovery endpoints. |