JuansWorld.XYZ

← Blog

Statler and Waldorf Get a Newspaper

2026-10-19 · By Jason Spooner

Two Facebook posts sit in the review queue tonight. Both passed the citation audit. Both have their images downloaded and staged in their own folders. The whole day cost five of my ten allowed news requests. The old men in the balcony are now a news desk.

The paper arrives on a budget

The collector, Machine A, now works a NewsAPI beat. The budget is ten requests a day, hard enforced in code, two per run, one hundred articles per request. Seven categories rotate through the week: general, sports, technology, science, business, health, entertainment. Every response is saved raw as a snapshot, and a small state file tracks the daily spend. The timer and my manual runs share that file, so nobody accidentally double counts. It resets at UTC midnight. The API key never touches the logs.

Five spent, five banked, and the cursor says the next categories up are health and entertainment.

Facts with no model in the room

Here is the part I like most. The new fact station is deterministic. No LLM anywhere in it.

It takes the headline and the first sentence of the description, proposes that as the claim, and then checks the quote against the saved snippet. If the words literally appear in the snapshot, the fact is kept, with the title, the outlet, and the image URL attached. If not, it is dropped. There is no model to flatter, no temperature to regret. Code proposes and code disposes in the same breath.

Call it quote-gated. A fact exists only if its words literally appear in the saved article. Everything downstream of the gate can trust the facts, because the gate does not know how to lie.

About four hundred and fifty verified facts have made it through so far.

The debate

Once a day the writer side picks the freshest unused facts and hands them to the hecklers. Statler and Waldorf discuss the topic the way they discuss everything, each voice running on its own machine over an SSH tunnel. The transcript lands in the shared folder where the dashboard can read it.

One operational lesson, printed because I paid for it: the post builder uses port 11436. Port 11435 belongs to the discussion loop, and it dies mid-run if you borrow it. Tunnels, like hecklers, need their own seat.

A paste

The output is what I call a paste. It is a Facebook post built to survive being pasted into a text box.

The cited articles go on top, each with its title, outlet, URL, and the exact quote the fact came from. The discussion goes underneath. The little inline citation tags never reach the copy you paste; the header keeps the real citations, and a deterministic audit at the bottom of the file checks that every citation tag points at a fact that actually exists. The audit runs before I ever see the draft.

The images are staged the same way. At post time the builder downloads only that post's article images, one second apart, and validates each by its magic bytes rather than its file name. Eight megabytes is the cap. Everything lands in one folder per post, and the dashboard shows the thumbnails with the network path, so getting a picture into the post is a drag and a drop.

The posts are built for Facebook. The image folders do not care which app opens them.

The honest queue

The review queue tells the truth about the whole system. The two news posts are waiting on me, audit passed, images ready. Behind them sit fifteen older writer drafts, and ten of those failed the audit. They are quick rejects. The approved folder is empty. The rejected folder is empty. The main to-do in this entire pipeline is a human, and the human is behind.

Nothing publishes without my approval script. Not a post, not a draft, not a particularly confident paragraph. That rule did not bend when the pipeline got faster.

The limits, on the record

CPU inference on these machines runs a 7B model at roughly walking pace, and the Ollama instances are shared between the stations and the discussion loop. Under contention, calls hit the nine hundred second timeout and the run fails as data, logged and skipped. That is the design, not a bug to be fixed later.

Refetching a category is safe because identical responses dedupe by hash, but the request still counts against the ten. The budget is spent in requests, not in new information.

And the standing confession, same as the day this pipeline was two machines and a folder: the audit can catch a fabricated citation or a swapped number. It cannot judge whether a take is fair. That job, like the publish button, stays with me.

Statler and Waldorf spent half a century heckling from a balcony. Now they read the paper, argue about it, and hand me the paste. I still press the button. That part of the loop is mine.