Everyone sees the campaign.

This page is the four layers underneath.

Cross-section of the publishing system, in four layers. Top to bottom: campaigns, what gets published; data, the signal radar and the markdown files; workflows, the skills, the MCP server and the API; and decisions, the human layer. A cobalt line separates decisions from the three automatic layers and is labelled human gate.
  1. 01 Campaigns what you see
  2. 02 Data radar and files
  3. 03 Workflows skills, MCP, API
  4. 04 Decisions human gate
The cobalt line is where the machine stops.

The numbers since launch

148 signals scanned since launch
8 pieces published since launch
62% cleared the gate

Updated Aug. 23, 2026

01 Campaigns

The top layer is the only one that leaves the building. A post on LinkedIn, a long article, the short signal I write when something happens that day. It is what everyone sees, and it is why this page exists: the post that brought most of you here describes a machine, and a machine described is still a machine nobody has seen.

Every piece goes out in Portuguese and in English, written from scratch in both rather than translated line by line. The two versions are tied to each other in the database, which is how the language switch at the top knows where to jump when someone taps it.

02 Data

Underneath sits what feeds the layer above. A radar runs before dawn across eleven code repositories to see what shipped (LangGraph, CrewAI, n8n, Temporal, the MCP spec, the A2A spec, and so on), four publications I follow, arXiv under multi-agent systems, and Hacker News above forty points. It deduplicates, takes the previous twenty-six hours with two of overlap so nothing falls through the seam, and hands back three to five candidates already triaged: react today, keep for a long piece, or noise.

The source of truth for the writing is not this site's database. It is markdown files in a separate repository, with a header holding the title, the summary, the slug, the language and the tags. The site is where the text ends up, not where it lives.

That has a practical consequence which has already saved me more than once: if I break the database tomorrow, the articles are all still next door, in plain text, with a line by line history of every change.

03 Workflows

The third layer is five skills and the plumbing between them. The morning scan reads the radar and proposes the day's candidates. The long-form flow turns a topic into a reference dossier first, and into a draft only after that. One skill exists so the text sounds like me, and another, kept separate on purpose, audits the draft and points at every place it smells of a model. The fifth handles covers: concept line, a prompt ready to use, and the alt text in both languages.

Writing to the site goes through an API with per-user keys, scopes that only ever subtract permissions, and periodic human verification. An MCP server puts all of it within the agent's reach as tools. The importer reads the markdown and converts it properly, because pasting markdown into the admin editor does not work: it lands as one single paragraph, with the hashes and the asterisks showing on the public page.

None of it publishes. That is the one rule the bottom layer imposes on this one.

04 Decisions

The bottom layer is the one that does not run on its own. Choosing the topic is mine: the radar brings five candidates a day and on most days I write about none of them. Choosing the angle is mine. Killing a piece that is already written, after seeing how it turned out, is mine as well, and it happens more often than I would like to admit.

Publishing is the clearest case. The API that writes to this site has no way to publish a page, because the endpoint does not exist: I could have written it on a Saturday afternoon and chose not to. For articles, the catch sits inside the importer's HTTP client, which raises an error if the route it is handed contains the word publish. It could have stopped at intention, a note in the file asking nobody to publish. A note stops nothing at three in the morning, with the agent running and me asleep.

The writing gate is the same principle in a different shape. A draft that sounds like a model does not leave here, and what fails it is a detector that runs against the text before I have even read it. A failed draft goes back and gets rewritten; it does not go out with a small note at the bottom admitting it was generated.

The access keys follow the same line. Each is worth exactly what the permissions of the person who created it are worth, crossed with the key's own scopes, and each needs a human verification that expires: twenty-four hours to operate, fifteen minutes for anything that deletes. The system has to ask me for permission, and the permission runs out by itself.

What runs underneath

gusdias-signal
Morning scan and the signal of the day: one piece of news, the reading of someone who implements, one concrete move for a small firm.
gusdias-article
Long-form: fresh research, a reference dossier, and only then the draft.
de-ai-writing
Returns the text to my voice and strips the model tics, with frequency caps instead of bans.
ai-audit
The detector. Runs against the draft, shows where it sounds like a machine, and fails what does not clear.
gusdias-image
Cover direction: concept line, a prompt ready to use, and the alt text in Portuguese and English.
gem cluster
Sixteen extraction agents, each tuned to one source, turning loose news into a signal with a shape.
signal_monitor.py
The radar: eleven release feeds, four publications, arXiv and Hacker News, deduplicated and triaged into a daily digest.
mcp_server
Puts the site within the agent's reach as tools: list, read, write drafts, upload images.
/api/v1/
Per-user keys with scopes, crossed with the CMS permissions and with human verification over TOTP. Writes drafts.

What I chose not to automate

Publishing. Not for want of technology, which is there. It is that the signature at the end of the piece is mine, and a system cleared to publish on its own ends up, on some ordinary day, publishing something I would not sign.

What that costs: fewer pieces, and some of them late. A signal that should have gone out on Tuesday goes out on Thursday because I was with a client. I take the trade, and I do not find it a hard one. What it buys on the other side is the only thing worth having here, which is someone reading this and knowing the opinion belongs to a person.

What came out of it

Read the latest signal

To talk about building one of these, write to me@gusdias.eu.

Get in touch