← All case studies
02 · EDITORIAL AUTOMATION · SHIPPED 2025 · 4 min read

The newsroom runs out of a chat window

The editorial team already lived in Telegram. Tips, pasted links, forwarded press releases, half-formed leads — all of it accumulated in a single channel. The question was never how to move the team into a CMS. It was how to move the CMS into the channel.

4 mintip-to-byline
60+pieces from manual drops
0CMS clicks per piece
1surface for the entire workflow
01 · CONTEXT

01 · CONTEXT

An autonomous newsroom handles the scheduled feed. It pulls, filters, routes, and publishes on its own cadence. But a working vertical also generates a second stream — the human stream. Sources pass along links. An editor spots something in a government portal. A contributor forwards a PDF. These drops do not belong in a scraper queue. They belong in the hands of a drafter who understands the publication's voice.

Historically that meant context-switching into a CMS, pasting, researching, drafting, formatting, tagging, and publishing. Every one of those steps is friction between a tip and a byline. The team was already coordinating in Telegram. The CMS was the bottleneck, not the chat.

02 · WHY

02 · WHY A BOT, NOT A DASHBOARD

A CMS is a filing cabinet. It assumes you already know what you want to write. Editorial tips do not arrive that way. They arrive mid-conversation, half-verified, one line of context attached. The correct surface for that material is the one the team is already looking at.

The operator treated the chat channel as the interface and the CMS as infrastructure. No one opens infrastructure to do their job. They open the thing they already have open. Moving the workflow into Telegram removed every step that was not thinking or editing.

03 · HOW

03 · HOW IT WORKS

Any message dropped into the channel — a URL, a pasted block of text, a forwarded post — is treated as a draft intent. The bot resolves the input, fetches the underlying source, and pulls adjacent web context to establish what is already known and what is new. That context feeds a style-transfer prompt scaffold tuned to the vertical's editorial voice, sentence rhythm, and structural conventions.

The bot drafts a full piece, assigns a slug, attaches metadata, and publishes to the headless CMS. It replies in-thread with a confirmation line: word count, path, and end-to-end duration. Trusted input patterns auto-publish. Ambiguous ones wait on a single operator confirmation in chat. No tab switches.

EDITORIAL BOT · CHAT LOG EDITOR · 09:47https://ec.europa.eu/commission/presscorner/...BOT · 09:48 · PARSING SOURCEBOT · 09:51 · DRAFTED ✓720 words · published to /news/eu-procurement-tranche4m 12s end-to-end
04 · SYSTEM

04 · THE SYSTEM

The bot is a thin Python service sitting between the Telegram Bot API and the headless CMS. GPT-4o handles drafting under a prompt scaffold that encodes the publication's voice as constraints, not examples — cadence, lede structure, how attributions are handled, what the vertical does and does not editorialize on.

Enrichment runs before drafting, not after. The model never sees a naked URL. It sees the resolved source, a short contextual brief, and the editorial constraints. That ordering is the difference between a summary and a piece that reads like the rest of the publication.

Publishing is a direct API call. There is no staging UI, no draft queue, no human-in-the-loop unless the pattern requires it. The operator decides which input shapes are trusted and which are not. Everything else is chat.

The right surface for an editorial workflow is the window the editor already has open. Everything else is a tax on thinking. — The operator
05 · RESULTS

Sixty-plus pieces, zero CMS clicks

Tip-to-byline runs around four minutes. More than sixty pieces have shipped from manual drops since deployment, each one published without a single interaction with the CMS interface. The editorial surface area collapsed to one window.

The deeper result is compositional. The scheduled newsroom and the chat bot share the same voice model, the same publishing path, and the same trust patterns. A tip dropped at 09:47 reads like a piece that was queued overnight. The reader cannot tell which stream produced which article — which is the point.

06 · STACK
Telegram Bot APIPythonGPT-4oHeadless CMSStyle-transfer prompts

A chat bridge between an editorial team and a headless CMS, with voice encoded as constraint.

NEXT CASE STUDY

A private semantic-memory layer across every project I run

Read next →

If this maps to a system you need built or fixed — tell me about it.

WhatsApp → Telegram → Email →