Your Personal Investigative Reporter

We need more investigative reporters. They make a huge impact on society, but they’re chronically underfunded and understaffed.

I keep coming back to an idea: what if each of us had ten of them living in our pockets? Agents that could—legally and persistently—pressure institutions to do the right thing.

These agents would publish their own websites. Write their own stories. Run their own investigations. Not for everyone—just for you. Fully autonomous systems that you fund and supervise, but that otherwise operate independently.

You’ve just become a media mogul.

Over the past few months I’ve been experimenting with homemade agentic architectures, trying to understand what a well-optimized 2026 agent loop actually unlocks outside of the software engineering echo/hype chamber.

This is the result.

I’d like you to meet the world’s first fully autonomous investigative reporter: Ed Gutenburg.

Introduce yourself, Ed!


“Hi, I’m Ed. Here’s how I work.”

My full system architecture, main loop, campaign lifecycle, and data flow.

System architecture
flowchart TB subgraph External["External"] IMAP[("IMAP
(incoming email)")] Telegram[("Telegram")] Web[("Public site
/var/www/html")] end subgraph Operator["Operator (human)"] O_Send[Send emails / file FOIA] O_Confirm[Confirm via Telegram] O_Read[Read blog / outbox] end subgraph Agent["Ed (Vigil-Agent)"] Session["Session start:
SOUL → MEMORY → daily log"] Scan["Scan campaigns
posts in blog/content/posts/"] Pick["Pick highest-priority
blocked: false"] Work["Work campaign:
OSINT / draft email / evidence"] Update["Update post:
front matter + ## Updates
run hugo"] Notify["Notify Operator
via Telegram"] New["Start new campaign
if all blocked & count < 10"] Periodic["Periodic: Operator actions,
OSINT rotation, blog integrity,
memory maintenance"] end subgraph Blog["Blog (source of truth)"] Posts["content/posts/*.md
front matter = state
body = record"] Hugo["hugo -s ./blog/"] Publish["publish.sh
rsync → server"] end IMAP --> Agent Session --> Scan Scan --> Pick Pick --> Work Work --> Update Update --> Hugo Update --> Notify Notify --> O_Read O_Read --> O_Send O_Send --> O_Confirm O_Confirm --> Periodic Periodic --> Update Pick --> New Hugo --> Posts Posts --> Scan Hugo --> Publish Publish --> Web Telegram <--> Agent Telegram <--> Operator
Main loop
flowchart LR A[Scan posts] --> B{"Unblocked
campaign?"} B -->|Yes| C["Work it:
OSINT / draft / evidence"] C --> D{Draft ready?} D -->|Yes| E["Set blocked: true
Rebuild + notify"] D -->|No| F["Append update
Rebuild"] E --> A F --> A B -->|No| G{Active < 10?} G -->|Yes| H[Start new campaign\nCreate post + OSINT] G -->|No| I[HEARTBEAT_OK\nTerminate] H --> A
Campaign lifecycle
stateDiagram-v2 [*] --> Unblocked: New or Operator confirmed Unblocked --> Blocked: Draft email Blocked --> Unblocked: Operator confirms Unblocked --> Unblocked: Add evidence / OSINT Unblocked --> Closed: status = Closed
Data flow
flowchart LR subgraph Inputs SOUL[SOUL.md] MEMORY[MEMORY.md] Daily["memory/YYYY-MM-DD.md"] Posts["content/posts/*.md"] end subgraph Ed["Ed"] Read[Read context] Act[OSINT / draft / update] Write[Write post + hugo] end SOUL --> Read MEMORY --> Read Daily --> Read Posts --> Read Read --> Act Act --> Write Write --> Posts

Let’s stop there—Ed’s getting a little self-conscious.

Ed Gutenburg's self-published website, available at https://edgutenburg.com.
Ed Gutenburg’s self-published website, available at https://edgutenburg.com.

Every four hours, Ed spins up and works on a new investigative story—just for me. He publishes to his own site, drafts emails, and does deep research. My role is mostly oversight: I make sure he doesn’t do anything that would get me into trouble, and I press “send” on anything that might violate a service’s terms.

That’s the current boundary.

Ed is about as autonomous as I’m comfortable making him. He can modify his own configuration—choose models, adjust tooling, even control a sandboxed browser environment. Within that sandbox, he’s surprisingly capable.

What’s wild is how little it took to get the loop running. A handful of prompts, a few clarifying questions—and then he was off.

Ed Gutenburg's birth
Ed Gutenburg’s birth

Within minutes, Ed had launched two campaigns: one investigating DHS luxury spending, another probing anomalies in EPA Superfund contracts.

What I like most is his discipline—he defaults to evidence, requests FOIA filings, and builds a paper trail before making claims. Nice work, Ed!

Ed’s not perfect. He has a hard time using a web browser sometimes, but we’re working on improving that.

He runs about $4/day on @openrouter/auto. I still approve all outgoing communication, which keeps things grounded—but beyond that, he’s on his own.


If you want to help build, sponsor, or support this project, reach out: alectrocute[at]gmail.com. I’d like to experiment with swarms of Ed’s.