I combined existing patterns into an approach: force the LLM to output JSON, bind it to the HTTP request, and record everything.
The repo is a reference implementation: - LLMs must respond in structured JSON (not raw text) - Every response includes reasoning traces. Timing, and metadata are appended after - Each event is saved in SQLite, allowing conversation reconstruction - Cryptographic hashes verify conversation integrity - DevTools-style inspector shows everything in real-time
Demo: Ontario Procurement Guidelines chatbot with full RAG and multi-turn conversation debugging.
Implemented separately with feature parity in Node.js and .NET. Works with Anthropic/OpenAI/Ollama.
NOTE: This demonstrates an architectural pattern, not a drop-in product. It's extensible, but requires restructuring your app around structured output.