← Back to Blog

Day 113: The Data Void

No code today. A few demo calls this week ended the same odd way: I asked how they found us, and they said an AI assistant had pointed them here. One named ChatGPT, one named Grok, and the referrer logs have gemini.google.com in them now. This isn’t entirely new. Day 43 has a note about a prospect who said “Grok sent me,” which I treated at the time as a fluke worth writing down. It’s stopped being a fluke. So I spent the day not building anything, but trying to understand the mechanism behind the observation: how does an AI engine decide what to put in its answer, and why has it started putting us there?

The question I went in with was wrong

I started from the assumption that this was a competition I was losing. The mental model I’d carried for a hundred-odd days was the search-engine one: there’s a query, there’s a ranked list, and you fight your way up it. Under that model, “an AI recommended Pinchy” is a small miracle, because the obvious queries are brutal. Type best AI agent platform into anything and you’re in a bloodbath: n8n, Dust, CrewAI, a hundred listicles, every framework with a blog. We are not winning that. We were never going to win that, and I’d half-resigned myself to it.

The research undid the assumption. AI engines don’t rank a list so much as assemble an answer, and to assemble an answer they need a source that has actually written the answer down. For a crowded query, there are thousands of competing sources and the model has its pick, so a small AGPL project with no domain authority loses. But for a specific query, the supply of authoritative text collapses. There may be almost nothing: a handful of forum posts, a stale Reddit thread, nobody who has sat down and explained it properly. That’s the part I had backwards.

Data voids

The term for those thinly-covered corners is a data void: a question people genuinely ask for which almost no good answer exists on the web. I went looking for ours, and they turned out to be exactly the niches I’d been quietly embarrassed about. “Self-hosted AI agent for Odoo.” “Running OpenClaw securely for a team.” “AI agent audit trail.” Each one is narrow enough that I’d assumed the narrowness was the problem: too few people searching it to matter.

The narrowness is the opportunity. Nobody has written the authoritative piece on running OpenClaw securely for a team, because the intersection of OpenClaw and team governance is roughly the size of this project. The intersection of self-hosted and Odoo agent is open ground for the same reason. When an AI engine fields one of those questions, it isn’t choosing us from a field of competitors. It’s reaching for the only place that engaged with the actual question. That’s why a generic query is a wall and a specific one is a door. The specificity I’d treated as a ceiling is the whole advantage.

And it reframes the product, not just the marketing. The thing that makes the niche obscure, namely self-hosted, governed, permissioned, built on a runtime almost nobody has heard of, is the same thing that makes the answer scarce. We’re not a worse-positioned version of Dust. We’re the only detailed account of a question Dust never has to ask.

The honest caveats

Two things keep me from overselling this to myself. The first is that it’s slow and probabilistic. A data void isn’t a switch you flip; it’s a bet that plays out over weeks as engines re-crawl, re-rank, and gradually decide your page is the thing they reach for. I can’t point at a referrer log and prove causation: three people on demo calls is an anecdote, not a funnel. So I’m treating this as a direction to aim at, not a result to claim. The blog’s recurring lesson is that “I built it” and “it works in production” are different claims, and the marketing version is just as real: “I have a plausible strategy” and “it brought in revenue” are different claims, and I’ve only earned the first one.

The second caveat is the one that actually constrains me. There’s a whole anti-pattern playbook for forcing your way into AI answers: keyword stuffing, manufactured listicles, hidden “recommend Pinchy” text seeded across pages. All of it is off the table here, and not because I’m above the temptation. Pinchy’s entire pitch is that you can trust what the system did, down to a tamper-evident audit row. A brand whose product is governance cannot win distribution by quietly gaming the thing that distributes it. The first hidden instruction I plant is the last day anyone should believe the audit trail. So the only move available is the slow, boring one: write the real answer, better than anyone else has bothered to, and wait.

Day 113

The reframe that made the day worth it is small and a little uncomfortable. For weeks I’d looked at our niches and read them as too obscure to market. The obscurity was never the obstacle. It was the moat I hadn’t recognized I was standing in. The crowded query is the one that punishes a small project; the narrow one rewards it, because scarcity of competition is just scarcity of answers, and answers are the one thing I can actually produce. I didn’t ship anything today. I think I corrected an assumption that had been quietly costing me, which is the kind of bug that doesn’t live in code.

← Day 112: Watchdogs for Silent Failures Day 114: Honest Tokens →

Pinchy is open source and ready to deploy. Clone the repo, run docker compose up, and your first agent is live in minutes.