How much of your automated outreach is just shouting into a void because your system has no idea who it's actually talking to?
That was the honest answer for the Substack Notes commenter I've been running. It had a pool of roughly 410 creators to engage, and it treated all of them identically. Same prompt structure, same generic rapport scaffold, zero awareness of what any given writer actually cares about or has been writing lately. The comments it generated were technically on topic but contextually shallow in the way that makes people feel like a form letter landed in their feed.
The fix was a dossier layer. I ran a swarm workflow that pulled and structured data on Substack creators in the AI and tech space and ended up with 908 records. After QA filtering out duplicate hosts and wrong niche flags, 875 survive into the live index. Those dossiers carry fields like known_for, recent_themes, the creator's hook and voice angle, and an explicit avoid list for things that would produce a misaligned comment.
Wiring that into the commenter does three things. First, the creator pool itself expands from around 410 to around 1094 because load_authors now unions in the enriched set alongside the original hand curated list. More targets with known context beats a smaller list with none. Second, the generation prompt gets an enrichment block injected after the no first person claims rule, so the model is reasoning about this specific writer rather than a generic Substack person. Third, target selection gets a light scoring nudge based on tier and confidence, bounded to a 15 percent factor either direction so it influences priority without overriding the core slot logic.
The reversibility part matters more than it sounds. Two env flags let you strip either the full enrichment layer or just the scoring nudge independently. When you are running something that touches outbound comments at scale, you want the ability to pull any piece of the new behavior without collapsing the system. The join key is the normalized host, lowercase, scheme and path stripped, which is dumb and fast and correct for the vast majority of cases.
What actually changed in output quality is harder to measure in a single week, but the structural argument is straightforward. A commenter that knows a creator writes primarily about inference optimization and has been running a series on context window tradeoffs will generate a meaningfully different comment than one operating on name plus niche label alone. The dossier does not make the model smarter. It narrows the generation space toward comments that would actually be worth reading.
The test suite added 11 new cases covering index construction, the pool union, enrichment block gating at the confidence floor, and the scoring factor bounds. Full personal site suite at 50 passed.
Building the dossier swarm was the expensive part. Wiring it in took an afternoon.