How Bynamely uses AI

Yes, this is an AI product — and the interesting half is what the AI is not allowed to do. It writes the summary. It does not decide what matters, who a story is about, or whether it is true, and it cannot publish a sentence the reporting does not support.

Two jobs, and only two

A model is called in exactly two places in the whole pipeline.

Sorting the ambiguous
Rules settle most headlines on their own. The ones they cannot call — a name in a listicle, a passing mention — go to a model, which answers only whether it is real news about that person.
Writing the summary
One call per update, never per article. The model is shown the attached reports and nothing else, and asked to compress them.

What the AI does not do

These are the decisions that determine what reaches you, and not one of them is a model. They are rules — the kind you could work through by hand and get the same answer.

  • Who a report is about. Exact name matching, then fuzzy string comparison against the registry. No model is asked to identify anybody.
  • Which reports are the same story. A weighted score over shared names, headline similarity and timing. Deliberately not semantic similarity.
  • How important something is. A short fixed formula: a baseline for the kind of event, plus a step for each additional outlet reporting it, plus a bonus if one of them is the person’s own channel.
  • Whether it is confirmed, reported or unverified. Four rules over the evidence — how many outlets, how reliable, whether any is official. It never sees the story, only the shape of the sourcing.

That split is the point. If a model scored importance, an important-sounding rumour would get help from sounding important. Keeping the two apart is why a rumour can be marked urgent and still never be sent.

The check that is not an AI

Before any summary is published, every name, number and date in it is read back against the reports the model was shown. Anything not found there is, by definition, invented.

It is all-or-nothing, and it never edits. One unmatched name and the entire summary is discarded — not softened, not rewritten. The update keeps whatever headline it already had and the reports stay attached, because they were always the record.

The check is string comparison, not a second model. Asking an AI whether another AI made something up is expensive and circular: it is the same kind of system, with the same failure, being asked to audit itself. Names, numbers and dates are where fabrication actually shows up, and those can be checked mechanically.

What it forgives, and the line it will not cross

A summary is not a quotation, so the check has to tolerate the same fact written differently. It treats ’90s and 1990s as one claim, accepts 56 where an outlet wrote 56th, and lets a name be spelled out or abbreviated in either direction.

What it refuses is a claim getting sharper. If the reporting says ’90s, nothing licenses the model to write 1994 — naming a year is a stronger statement than naming a decade, and the evidence did not make it.

It also refuses near-misses on names, and the clearest example is one where the model was right. An outlet misspelled an actor as Prithiviraj; the summary corrected it to Prithviraj, and the check threw the summary away. That is annoying and it stays, because close-enough name matching is the exact hole a real fabrication walks through — two different people are often one letter apart.

The numbers

Measured on everything published so far, not projected, and read live from the same endpoint the front page uses.

36 of 36
published updates carry an AI summary that passed the check
0
rumours have ever been sent as an alert
0
published with no summary, because nothing we wrote stayed inside the evidence

The last of those is the one worth reading twice. When a summary cannot be written inside the evidence, the update ships without one and says so — you will see “nothing we could write stayed inside what the reports actually say” in place of the prose. An empty summary is a check that worked.

What we never send to a model

The model is shown the attached reports and the names of the people the update is about. That is the entire prompt.

It is never shown who you are, who you follow, what you have read, or anything else about your account — there is no path in the code from a reader to a prompt. Nothing you do here trains any model, and we do not build one.

Which models, and why more than one

Commercial models, reached over an API. We run more than one provider because free capacity runs out: when one refuses a request, the same work goes to the other rather than an update going unwritten. Which one answered is recorded against every summary.

The check above applies identically whichever answered. A provider change cannot loosen what a summary is allowed to say.

If we get it wrong

The check catches invention, not every possible error — a summary can be faithful to the reporting and the reporting can still be wrong. When that happens we correct or withdraw the update at its original address rather than deleting the page, so a link we emailed you takes you to the withdrawal instead of a 404.

Every update lists the outlets it was built from, by name and by link, so you can go and read them. More on how we source and correct.