Field notes from the warehouse
Engineering write-ups about how DataAgent is built, and what we got wrong on the way. One post is published; the rest are in progress.
Why local-first analytics wins for teams that can't share their data
Cloud BI made everyone faster — until the compliance review. Here's how a local LLM plus an embedded DuckDB warehouse keeps the speed without shipping rows anywhere, and where the trade-offs really are.
Read the article →Generated SQL you can actually trust
How the model is constrained, how the query is validated before it runs, and why parameterization is non-negotiable. Drafted, not published.
Not published yetOne writer to rule them all: DuckDB on Windows
Opening a DuckDB file read-write from two processes on Windows fails loudly. The single-writer discipline that made our ETL boring — in the good way.
Not published yetWhat the .pbix round trip actually writes
A real Power BI Desktop file: the data model, the DAX measures, the theme, the slicers that cross-filter. What is in the archive, and how we verify it.
Not published yetTen providers, one runtime config
Ollama on the laptop, a hosted model in CI, a different one behind the VPN. How llm_runtime.json keeps swaps boring.
Secrets that never reach the model context
JWT signing keys, DB credentials, OAuth state — where they live, how they're redacted, and the checklist we run before anything touches a log.
Not published yetShipping a desktop app and a web app from one repo
PyInstaller for the desktop build, one FastAPI core behind it, and a portable .exe for anyone who would rather not install. What we'd do the same and what we'd change.
Not published yet