JSONCRM

Almost every company, from one founder in a garage to NVIDIA itself, runs its most important data, which is the list of people who will give them money, in one of two places: a spreadsheet, or someone else’s database.

The spreadsheet treats your pipeline like an accounting exercise from 1979. It has no idea what a “stage” is. It will happily accept “Costumer” in the Status column. Its version control is a filename. We have all worked with pipeline_FINAL_v3_real_FINAL.xlsx.

The SaaS CRM treats your pipeline like a rental. Sure, it knows what a stage is. But your data lives in their database, behind their forms, at their price per seat per month, and the moment you ask a real question (show me everything that changed this week) you discover the API has a rate limit and the export is a CSV that lies.

Most significantly, now we are starting to have colleagues who are AI agents. And it doesn’t make much sense to force them to use crappy UIs designed for humans, when command lines and APIs are so much more effective.

So when I started tracking customer data at Pauling.AI, that was bothering me.

A CRM is not an app. A CRM is a shared, structured understanding of who is in your pipeline and what should happen next. The app is decoration. Once you accept that, most of the industry looks like an elaborate workaround for refusing to store the state in a format anyone can use.

Programmers solved this decades ago, for the one data type they care about most. Source code is plain text in a version control system. Nobody pays per seat to edit text. Audit log, collaboration, rollback, review — all of it comes free from the format, not from the app.

So I applied that to our pipeline. Leads, prospects, customers: one JSON file per stage, flat records, in a git repo. Git is the audit log. A local web UI for humans and a CLI for AI agents. Because it is 2026, and AI agents are first-class users of the CRM instead of screen-scraping tourists.

That last part is what makes this more than nostalgia for files. Agents read and write JSON natively. Hand an agent a form-based app and you get UI automation, which is comedy. Hand it structured state with real commands and you get a pipeline that scores itself. The only question left is safety, so every write has a dry-run: the agent proposes, the preview shows exactly which fields would change, and nothing lands until I say apply. My agents now operate my pipeline with better guardrails than most humans get.

It’s called JSONCRM, it’s free and open source, it has zero dependencies, and we run our entire outbound pipeline on it daily. You can try it without installing anything:

uvx jsoncrm stats

There is a longer version of this argument, including why JSON instead of Markdown and why the agent story drove every design decision, at jsoncrm.dev/philosophy.

The short version: your pipeline is too important to rent and too structured for a spreadsheet. It’s data. Treat it like data.

JSONCRM

Written on October 29, 2026