LLMs Don't Think in JSON, They Think in Code: A Devlog on a Bad Data-Model Bet
Watch on TikTok
The core claim: representing your app's data as a strongly typed JSON structure feels responsible, but it lobotomizes the coding agents you later want to build on top of it. In this day-57 devlog, the builder behind Adler Builds walks through a design decision he now regrets, using the Notion MCP as the cautionary example and his own website builder as the confession.
The Notion MCP Problem
The opening argument is about why the Notion MCP feels bad to work with: it doesn't return Markdown, which is what the model was trained on. Instead it emits an arbitrary JSON block structure with references. The model has to decode a format it never saw much of during training, so every interaction fights the grain of how the model actually reasons. His framing is blunt: LLMs don't think in JSON, they think in code.

The Same Flaw in His Own Builder
Then he turns the critique on himself. Early on, he chose to represent websites inside his own website builder as a strongly typed data structure, nodes and references that serialize to JSON. At the time it was the right call for good reasons: it was great for real-time collaboration, clean for undo and redo, machine-processable, and easy to lint. He had confidence in the decision.
The problem showed up later, when he started implementing agentic coding. The models go "brain dead" trying to make even the smallest change to the model, because they don't understand how the custom structure works. Every action forces the agent back to the documentation to look up how the format is shaped. The very structure that made collaboration and linting easy made the AI slow and error-prone.

What He Wishes He Had Built
In hindsight, he would have represented websites internally as a small file system, where each project is just a collection of files. Agentic coding systems could then navigate and mutate those files freely, fixing errors along the way, the same loop they already do well in real codebases. As a bonus, a file-based model would have opened the door to the Next.js ecosystem, letting him consume his own application more like a library than a locked-in framework.
The Real Lesson: Premature Optimization
The takeaway he lands on is about timing, not JSON versus files specifically. He optimized early for multiplayer collaboration, and that optimization quietly foreclosed the agentic-coding path that mattered more later. Every design decision has tradeoffs, no free lunch, and the grass is always greener, but the concrete mistake here was committing to a rigid representation before he knew which capability would matter most. He calls it a bad call and admits he's unclear on what to do next.
Key Takeaways
- Models work best with formats they were trained on (code, Markdown); custom JSON block structures with references force the model to fight its own instincts
- The Notion MCP is a real-world example: it returns arbitrary JSON instead of Markdown, which degrades AI interaction
- A strongly typed, reference-heavy data model can be great for collaboration, undo/redo, and linting while being terrible for agentic editing
- A file-system representation lets coding agents navigate and mutate a project the way they already handle real codebases, and unlocks existing ecosystems like Next.js
- The underlying mistake was premature optimization: he optimized for multiplayer before knowing agentic coding would matter more
Resources
- @adler.builds on TikTok — Daily "build in public" devlog, posting until the business succeeds
- Model Context Protocol — The MCP standard referenced via the Notion MCP critique
- Next.js — The ecosystem a file-based representation would have made available
Published June 10, 2026. Writeup generated from a favorited TikTok.