undoom.news
Good stories from around the world, published in daily editions and ten languages. A map for readers, an editorial workspace behind it, and AI for research, writing and translation.
A place for a different view of the news
undoom.news collects stories about people, science, nature and constructive change. It is a personal, non-commercial project: a way to give developments that are easily lost in the daily news a place of their own. The relaunch rebuilt both the reading experience and the system used to prepare each edition.
The start page gives one story space, with its location marked by a light on the map. Readers can move between stories, explore the map or open an article. The dark background carries through into the article view. Source links remain accessible, and the same content can be read in ten languages, including Arabic, Persian and Hebrew with right-to-left text.
Attention to concrete change
The idea behind undoom is to broaden the view of the world. Alongside reporting on conflict and crises, there are people solving problems, making knowledge accessible or improving living conditions. These developments deserve attention on their own merits. A story should show what has changed, whom it matters to and what supports the account. A good intention alone is not evidence of success.
The map is part of this idea: every story has a place. It makes visible that worthwhile developments come from different regions of the world. A limited daily edition and a quiet presentation give individual stories room. The ten language versions make the same selection accessible to different readers.
AI makes it possible to organise this work as a one-person editorial operation. It assists with reviewing source material, writing, checking and translation. Which texts I approve and bring together in an edition remains an editorial decision. The standard is whether a story is grounded and worth reading.
Grounding claims in sources
The editorial principle is clear: nothing the AI has invented as fact should be published. Fluent writing is not evidence. Claims must be traceable to identifiable source material; anything it does not support needs to be resolved, corrected or left out.
The system therefore separates writing and source review. The review compares claims in the specific article revision against stored source material and classifies them as supported, unsupported, contradicted or not assessable. It records source passages for the claims it evaluates. The code also checks whether quoted evidence actually occurs in the stored original passages. A model cannot simply pass off an invented quotation as valid evidence.
The review result and editorial approval are recorded separately. A positive automated review does not publish an article. Approval applies to a particular revision and is not silently carried over when the text changes. The system also permits explicit manual acceptance by the editor; this is stored as an editorial decision, not as a passed automated fact-check.
This comparison checks fidelity to the source material. It does not independently establish that the original reporting is correct in every respect, and the AI review can also miss things. Source links and recorded findings make the basis of the texts traceable. The aim remains to remove unsupported claims before publication.
An editorial workflow for one person
The editorial workspace separates drafts, edition planning and production status. Drafts appear in a searchable card grid. I can open a text, examine its sources and review findings, edit it and select an image before approving it. Automated source review and editorial approval are recorded separately.
Approved articles move into the planning pool and can be assigned to a day by dragging them into the calendar or choosing a date. Each day is a column, so the composition of an edition stays visible. Production status shows the progress of generation and translation without filling the planning view with technical details.
Publish in German, then translate
Articles are initially produced in German. Only after the German edition is published does the system queue the other nine languages. This avoids translating drafts that will be changed or discarded. Translation includes an automated review and, where needed, one targeted correction pass; remaining language findings do not require me to approve a language I cannot assess.
Publication and generation have separate schedules. The server publishes an approved, scheduled edition at nine in the morning, Oslo time. The midday production job replenishes the draft pool. Translations and new AI work wait if the Mac is offline, while the website and scheduled German publication continue to operate.
Separate production from delivery
React and TypeScript provide the reader and editorial interfaces. PHP handles web access and public delivery; Python coordinates the editorial processing, with PostgreSQL storing the working data and published versions. A worker on my Mac polls the server for AI jobs and returns the results. The server does not need an inbound connection to the laptop or its subscription credentials.
Publication creates a fixed version for readers. Later editorial changes become public through an explicit republication. The public feed uses APCu to reuse prepared responses, with checks for changes to publications, translations and images. The reader therefore does not depend on a model answering a request.
Developed through use
I built the relaunch iteratively with agentic coding. PHP, Python and a modular structure were early decisions; the detailed workflow emerged as I used the system. A small HTML development site kept the architecture, open decisions and next steps connected.
Once the workflow was useful, I consolidated the implementation. Separating overview data from article details, batching queries and checking database indexes reduced unnecessary work. Caching followed that work. These changes improved responsiveness with the existing dataset; they are not a claim that the system has already been tested at very large scale.
Glimpses.
-
The article view keeps the dark palette and links to the source -
The local editorial workspace — drafts ready for review -
The local edition planner — approved articles and a horizontally scrolling calendar