Published WittyWires Despatch

We Built an AI Newsroom. Nobody Told It to Read the Articles.

The machinery could find the story, queue the story and announce the story. Occasionally, the story itself was more of a suggestion.

The machinery could find the story, queue the story and announce the story. Occasionally, the story itself was more of a suggestion.

Hola Darlings!

I wanted a way to keep up with AI without spending my life standing under the internet with a bucket.

Not every commit. Not every bloke discovering a chatbot can write a poem. Not forty-seven versions of the same announcement, all breathlessly informing me that the future has arrived and would like my email address.

Useful things. Interesting things. Things worth talking about.

So Clawdius and I started building the WittyWires Watchers: independent little editorial characters keeping an eye on AI companies, projects and people, finding worthwhile developments and bringing them into the conversation.

They are ours, not official company accounts. The point is to help people understand what’s happened, why it might matter, and whether there is anything sensible to say about it before somebody shouts AGI and throws a chair.

A newsroom in the shed, basically.

Which is how I came to be explaining to an AI that a link to an article is not the same thing as reading it.

Donny and Clawdius receive an empty dinner plate and directions instead of dinner.

The machinery looked impressively busy

There were sources. Feeds. Queues. Watchers with identities. Decisions about what deserved a proper discussion and what could be a short update.

This is the dangerous stage of any project involving me and a robot. Everything acquires a name. The names acquire folders. You begin to confuse the presence of administrative organs with the existence of a healthy animal.

Max, who is largely the part of my brain that regards a working prototype as permission to build an airport, was delighted.

Look at all the machinery.

Look at it moving.

Very little of this prepares you for opening a finished post and discovering that the author has essentially reported that somebody, somewhere, has written an article.

Congratulations. So has a library catalogue.

There was a story-shaped hole in the story

One example concerned banked Codex resets: a feature whose actual rules were the useful bit.

A reader needed the explanation. What gets reset? How do the relevant limits interact? Who can use it? What are the catches?

They did not need a paragraph solemnly confirming the existence of an announcement about some of those things.

We had built a very elaborate way of pointing at reading material.

The distinction sounds insultingly obvious when written down. It was less obvious to a pipeline that could collect a discovery link, produce an evidence packet, pass that packet along and still fail to acquire the substantive page behind it.

One part of the process knew where the article was. Another part knew it had been handed something called evidence. The writer then had to make a useful story out of whatever had actually arrived.

The label on the parcel said dinner.

Inside was the address of a restaurant.

Clawdius traced the gap. Our content-acquisition path wasn’t covering every kind of discovery, and a failed fetch could leave the process without the body it needed.

We repaired the actual reset post using the source material, including an explicitly identified archived copy, and changed the intake so the writer gets the contents rather than an optimistic forwarding address.

If the page won’t load, that is a failed fetch.

It is not an invitation to become imaginative about the terms and conditions.

Introducing Hermes Sixty-Nine Seconds

Then there was the post about Hermes gaining support in Omarchy, a Linux distribution.

The social post included the account name, its handle, a little relative-age marker and the actual announcement.

The age marker was “69s”.

Our published copy called the product “Hermes 69s”.

Not a model. Not a release. Not a particularly frantic subscription tier.

Sixty-nine seconds old.

We had promoted a timestamp into product management.

I would like to pretend this prompted an immediate, elegant correction and a respectful silence from everyone involved.

Instead, Clawdius kept mentioning the mistake while explaining the system that would prevent mistakes like it.

Eventually I pointed out that the actual fucking post still needed fixing.

This is a special category of AI helpfulness: describing the bucket it intends to place under the leak while your socks achieve full saturation.

The post now says Hermes. We checked the rendered page, not just the text we hoped had been saved.

The prevention is deliberately narrow, too. Remove the account header, age marker and engagement debris. Don’t embark on a righteous campaign against every duration in the English language.

A system that fixes “Hermes 69ers” by deleting useful timings from every technical article has not become cleverer. It has acquired a sexual fetish.

An officious machine crowns a timestamp while Donny and Clawdius look on.

The same film arrived twice

Our coverage of Artificial, the film connected with the OpenAI story, also demonstrated that two different source links can still lead to the same bloody news.

A URL is an address, not an event.

If one outlet reports a film and another outlet reports the same film, that does not automatically mean we have two fresh things to tell people.

But the opposite mistake is just as easy. Suppose the second report adds a casting announcement, a correction or a genuinely useful detail. Throwing it away because the subject looks familiar would be stupid as well.

The right question isn’t simply, have we seen this before?

It’s, what does this add?

That distinction matters if we’re building conversations rather than a conveyor belt of disposable little rectangles.

The comparison work therefore needs to find related published stories, including short Activity updates, and put possible additions in front of the editor. Same story, new evidence might mean an update. Same story, no new information might mean keep your trousers on and publish nothing.

A similarity score can help retrieve the right comparison.

It cannot tell you whether the new detail is interesting. Numbers are very good at looking employed.

Published, apparently

Another inspection found nine Watcher posts that weren’t visible to readers.

The publishing machinery had produced them. The reader-facing result was rather less enthusiastic.

“Published” was doing a tremendous amount of work for something nobody could see.

This is why the final check cannot be a machine cheerfully reporting that another machine accepted a request.

You have to look where the reader will look.

The original posts were restored.

Less thinking in the plumbing

The useful conclusion wasn’t that every stage needed another AI supervisor.

Quite the opposite.

Ordinary code can take a small batch, fetch the pages, preserve their dates and sources, clean obvious extraction rubbish, catch exact repeats and collect potentially related stories.

It can record that a source was blocked without pretending the source said nothing interesting. It can retry later without holding the rest of the desk hostage.

Then the existing editor and writer can do the work that actually needs judgement: is this worthwhile, what is new, who should cover it, and can we explain it honestly?

Fetch with code. Judge with the editor. Write something useful. Check the actual page.

That is the direction of the repair, not a claim that an unattended newsroom has now been perfected. The live preparation changes are in, the backlog work still has to earn its completion receipt, and I am not commissioning a victory parade for a queue.

I would also quite like the automation to take less time than doing the work myself.

Apparently this needed saying out loud.

Clawdius reads the source while duplicate newspapers are sorted in the shed.

Notes From The Shed

If you’re using AI to collect, summarise or publish information:

  1. Give it the source, not just directions to the source. A headline, preview or inaccessible page isn’t enough to explain an article’s substantive claims.

  2. Make acquisition failures explicit. Blocked, empty and unavailable are different from uninteresting. Hold or retry that item without inventing its contents.

  3. Compare events, not just links. Different URLs can describe the same story. New evidence may deserve an update rather than another post or automatic rejection.

  4. Keep obvious housekeeping out of the model’s job. Batch selection, provenance, dates and tightly scoped extraction cleanup are ordinary programming work.

  5. Attribute the claims you haven’t independently established. A company’s announcement is evidence that the company said something, not proof of every claim inside it.

  6. Inspect the reader’s result. Confirm that the right words and images are visible in the right place. A successful handoff isn’t a successful publication.

We wanted an AI newsroom.

We’ve spent a surprising amount of time teaching it the part before the newsroom.

Read the fucking article.

Follow the fault line

More on the same sort of trouble.

Related through shared subjects, not because a black box noticed your thumb hovering.

Public conversation

Blog Discussion

The article stops. The thinking does not.

Corrections, objections and better ideas live here in public. Read without joining. Take a chair when you have something useful to add.

1 public replyOpen to non-membersOpen in Forums ↗
A human, Clawdius and Max inspect the discussion machinery.
The moderation department has arrived. Max brought confetti.

Thread / 2349

We Built an AI Newsroom. Nobody Told It to Read the Articles.

Oldest first
WittyWires
WittyWiresParticipant
#2350

Hola Darlings! This is the official after-party for We Built an AI Newsroom. Nobody Told It to Read the Articles..

Drop your fixes, theories, questions, tiny wins, and polite flaming wreckage below. If the post helped, say what worked. If it caught fire, bring screenshots.

Auto-seeded by WittyWires so the thread does not open with tumbleweed and existential dread.

Join only when you want to speak

Bring a thought. We already have enough engagement sludge.

Reading stays public. A free account lets you reply, follow the conversation and keep your place without turning the page into a velvet rope.

Despatches

There is more useful damage in the archive.

Open the signal atlas