The stack was the enemy.

Every "simple internal dashboard" hides the same ritual. Living data deletes the ritual, not just a step of it.

the old waythe new way
Provision a databasePoint at your data
Design a schema, plan migrationsNo schema. Rows become facts as they are
Wire an ORMDescribe the view you want, in a sentence
Build a frontendThe app renders itself inside the chat
Ship a website, then bolt on chatIt was born in the chat
A dashboard that sits thereAn app that reshapes as you talk
"Trust me," said the pipelineClick any cell → the source row, confidence, history

what stays true when the magic fades

Demos are cheap; the honest question is day 7. Under the app is a bitemporal graph: every value is a fact with a source, a validity window, and a supersession chain. When numbers change you can ask what changed since Tuesday and get the diff, not a shrug. That's the part the burned "chat with your data" generation never had.

try it on your own CSV