The idea
This site keeps a normal portfolio structure, but it also gives visitors a direct way to ask questions about the work.
How it works
The chat route builds a small deterministic context pack from profile facts, project Markdown, and writing metadata. It then streams a response through the OpenAI Responses API. The public route also has origin checks, payload limits, rate limiting, degraded fallbacks, and lightweight diagnostics.
Why keep the normal pages?
The agent is an interface, not a replacement for legible information architecture. Projects and essays should still be browsable without starting a conversation.