An agent-run research and publishing operation
The problem, the architecture, the approval rules, and the checks. Written the way I would document any system I hand over: what it does, where it fails, and what I changed when it did.
Status: live, running daily since October 2026 · Stack: Claude, ChatGPT, Codex, frontier model APIs, Python, scheduled jobs, structured memory
The problem
I run two businesses and a consulting engagement at the same time. The work that keeps them alive is mostly information work: research markets and competitors, turn findings into content, watch prices, deadlines, and inboxes, and prepare applications and documents. Done manually, that is several hours a day. Done carelessly by an agent, it produces confident nonsense at scale. The build had to solve both halves: real throughput, with verification built into the workflow instead of bolted on.
What the system does
- Research pipeline. Sources arrive as links and posts throughout the day. The agent reads each one, checks its claims, and files a structured analysis: what it claims, what holds up, what is unverified, and why it matters. 80+ analyses filed in the first two weeks.
- Publishing operation. Research feeds a weekly content batch. The agent drafts, I approve the week, and the system publishes daily across two platforms, logging every post so nothing ever goes out twice.
- Monitoring watches. Scheduled checks on prices, deadlines, inboxes, and postings. Each watch has strict alert rules: it stays silent unless a threshold is actually hit, because an agent that cries wolf gets ignored.
- Drafting and preparation. Documents, applications, and briefs are prepared end to end: researched, drafted, and checked against their sources, then held for my approval before anything is submitted or sent.
Architecture
Frontier models do the reading, drafting, and analysis. Deterministic code does the counting, deduplication, scheduling, and logging. Every workflow writes to structured files that persist between sessions, so the system remembers what it has already seen, filed, and published. API integrations connect the sources: inboxes, calendars, social platforms, and market data. Python scripts handle the glue: parsing, extraction, and checks that should never be left to a model's judgment.
The split is deliberate. Models handle language. Code handles facts. I handle decisions.
The human and agent split
- The agent acts freely on anything reversible: reading, researching, drafting, filing, organizing.
- Anything that leaves the machine waits for me: a post, a message to a person, a submission, a purchase. The agent prepares it completely, shows me the exact content, and I approve or edit.
- Money never moves on the agent's word alone. Ever.
How quality is checked
Every claim the system files carries a status: verified against a primary source, reported by a named source, or unverified. Numbers get recomputed, not repeated. Visual output gets inspected before it ships, not after. Dedup logs prevent repeat work and double posts. When a source turns out to be wrong, the correction goes into the record the same day, with the earlier claim marked as replaced, so the system does not quietly keep believing it.
What the checks have caught
- A job posting that looked like a perfect US remote role was a Mexico requisition wearing a US-sounding title. The verification step caught it before an application went to the wrong country. The correct US requisition was found and used instead.
- A market statistic repeated across dozens of posts traced back to a single vendor study with an interest in the result. It is filed as a vendor claim, not a fact, and stays out of anything public.
- Generated images with garbled text get rejected and regenerated before publishing, because the inspection step is a gate, not a courtesy.
Results
A daily publication that has not missed a day since launch. A research library my strategy decisions actually run on. Monitoring that surfaces a handful of real alerts a week instead of a feed of noise. And an applications operation that took two tailored job applications from posting to submitted, with every field verified, in a single afternoon.
What broke, and what changed
Early on, the system repeated a deal price from a catalog listing without checking the live page. The live price was different. The rule now: nothing gets reported from a secondary source when the primary page can be checked. Another early failure was enthusiasm: too many alerts, too many suggestions. The alert rules got thresholds, silence became the default, and the system got more useful by saying less. Both changes are the same lesson I teach in enablement work. The tool is the easy part. The workflow rules around it decide whether people trust it.
← Back to home