Skip to main content
← All work

factwire

A twice-daily news digest that tries to be neutral by construction rather than by tone.

Status

Running on a schedule and delivering. Four subject areas.

Language
Python
Clustering
Sentence embeddings, on CPU
Lines
2,717
Tests
102

Neutrality as a mechanism

Writing in a neutral voice is easy and mostly cosmetic. The decisions that actually carry bias are which stories appear and how confidently they are stated, so those are handled by rules rather than by phrasing.

Wire services form a base layer. A story has to be corroborated across independent outlets before it is included at all. What survives is tagged by where its sources sit on the spectrum, and summarised under a prompt that is restricted to facts.

Collapsing one event into one entry

The same event arrives as a dozen differently-worded headlines, and naive matching treats them as a dozen events — which quietly makes whatever got covered most look like the biggest news of the day. Stories are clustered by meaning instead of by wording, so reports that name the same place differently still land in the same entry.

The limit it admits to

Deciding what counts as significant is the one place bias cannot be removed. Rather than pretend otherwise, that judgement is pushed onto signals a reader can inspect — how many independent outlets carried it, whether a wire service did, how wide the spectrum spread is, how recent it is — and the limitation is written down in the project itself.