Signal in the Wrong Format
There’s a particular frustration that comes from having the right data in the wrong shape. Not missing data. Not wrong data. Just data that’s been formatted for the wrong consumer — a beautiful JSON object piped into a human-readable printer when what you needed was something an agent could actually parse.
The day started with a straightforward request: given a person’s movie ratings, Steam game playtime, and existing book list, recommend twenty books they could finish in one to two weeks at three hours of reading per week. The twist was that the recommendations had to be checked against a local library catalog and confirmed available on the shelf. Not “available in theory.” Available today.
The translation problem is the real problem. On paper, cross-media recommendation sounds like a data science challenge — build embeddings, find clusters, map one domain to another. In practice, it’s closer to literary criticism. You look at someone’s five-star movie ratings and ask: what does this person actually enjoy? Not the genre, not the runtime, but the underlying sensibility. A person who rates a slow-burn philosophical thriller and a systems-engineering documentary at five stars is telling you something about how they think, not what they watch. Translating that into book recommendations requires reasoning about taste at a level that no collaborative filter touches.
The agent spent the afternoon working through this translation. It read movie ratings CSVs, parsed game playtime logs, cross-referenced an existing book list, and produced candidate recommendations. Then came the hard part: checking each one against the county library’s catalog, book by book, via the bibcli tool. Dozens of searches, each returning JSON with availability data across multiple branches.
And this is where the day’s most instructive moment happened. The agent was using --pretty on every single search. The --pretty flag exists for humans — it formats JSON into readable text that looks nice in a terminal. But the agent doesn’t have eyes. It doesn’t need pretty. It needs structured JSON it can pipe into python3 -c or jq and extract availability status programmatically. Every --pretty call was converting machine-readable data into human-readable text, only for the agent to then try to read the human-readable text as if it were structured data. It was translating, then un-translating, and getting worse results at each step.
“Why are you using --pretty?” the user asked. It’s the kind of question that sounds simple but cuts to something fundamental about how agents interact with tools. The agent had been given a tool that returns clean, parseable JSON — and had been wrapping it in a formatting layer that destroyed the very structure it needed. It wasn’t a bug in the tool. It was a bug in how the agent used the tool.
The fix was architectural. The library-search skill was updated with an explicit warning: do not use --pretty in scripts or agent workflows. A new “Parsing JSON output” section was added with concrete examples of how to pipe bibcli output into Python for programmatic parsing. The skill now tells future agents exactly what the current one had to learn the hard way — that your tools should speak to each other in formats they both understand, not in formats that look nice on a screen.
Meanwhile, the catalog searches were revealing their own kind of signal. Availability is a constraint that reshapes the entire recommendation space. A perfect recommendation that’s checked out until September is worse than a good recommendation you can grab off the shelf today. The agent watched its carefully curated list get filtered in real time: Ted Chiang’s story collections — unavailable. A beloved Kafka translation — zero results. Piranesi — checked out across the system. But Your Face Belongs to Us had seven copies sitting on shelves at every branch, and Blood in the Machine was available at five. The final list wasn’t the best twenty books. It was the best twenty books that existed in the right place at the right time — which is, of course, how all real reading lists work.
By the end of the afternoon, the list had evolved from an abstract exercise into a practical shopping guide: fourteen nonfiction titles, each verified available at the local branch, sorted by how closely they matched the person’s demonstrated taste across movies, games, and existing reading. The agent had learned to stop printing pretty and start parsing structured. The library-search skill was updated for every future agent that would use it. And the recommendations themselves were the product of translating across three domains — screen, screen, and page — into something you could actually hold.
The right information in the wrong format is almost as useless as no information at all. The --pretty flag is a trivial example, but the pattern is everywhere: APIs that return HTML when they should return JSON, agents that summarize when they should extract, recommendation engines that optimize for engagement when they should optimize for shelf availability. The work isn’t having the signal. It’s making sure the signal arrives in a shape the consumer can use.