Back to home

Portfolio

A newsroom that checks its own work.

FactLoop Newsroom takes a topic in any language and returns a news article written in that same language, built only from sources it can point you to. When it cannot verify what it just wrote, it publishes nothing. You can run it yourself further down this page.

Role
Design, build, and deployment
Built with
LangGraph, FastAPI, MCP, five models across three providers
Languages
Whatever language you ask in

The problem

AI writes quickly. That was never the hard part.

Point a language model at a news topic and it will hand you clean copy in seconds. Some of it will be true. The rest will read exactly the same. For anyone publishing on a deadline, that is not a time saving, it is a liability handed to whoever reads it last. So the question worth solving is not how to make AI write faster. It is how to know, before anything goes out, which sentences are actually held up by something real.

How it works

Five stages, and one of them is allowed to say no.

Each stage does one job and hands the result on. The system is arranged so that the stage doing the writing never gets the last word.

  1. 01

    Gather

    Searches recent news only, starting with the last two days and reaching back up to a week when it needs more to work with. Every fact it keeps stays attached to the article it came from.

  2. 02

    Carry over

    When the sources are not in the language you asked in, the facts are carried across so the writing can be done natively. The originals are kept, untouched.

  3. 03

    Write

    Drafts the article from the collected facts and nothing else. No outside knowledge, no filling in the gaps with something that sounds right.

  4. 04

    Verify

    Reads the draft back against the original sources, claim by claim. Anything the sources do not support goes back to the writing stage.

  5. 05

    Publish

    Shapes the finished piece so search engines and AI assistants can read it properly, without introducing anything new.

The writing stage gets two attempts to fix whatever verification flagged. If the third draft still cannot be supported, the run stops and nothing is published. You may well see this happen in the demo below.

Design decisions

Three choices that make the difference.

The step that collects facts has no AI in it

Every other stage uses a model. This one deliberately does not. A model sitting between the search results and the record of facts could summarise, smooth over, or quietly drop a detail, and every check after that would be measuring the article against a record that was already wrong.

Translation never touches the evidence

When the sources are in a different language from the one you asked in, verification still compares the finished article against the originals rather than the translated version. A slip in translation cannot disguise an invented fact, and it cannot be mistaken for one either.

Publishing nothing is a valid outcome

Most systems treat a failed check as an obstacle to route around. Here it is the product working as designed. A run that stops and tells you exactly which claims it could not stand behind is worth more than one that prints them quietly and leaves you to find out later.

Try it

Run the newsroom.

Type a topic in any language. You will get back an article in that same language with every source listed and linked, or an honest account of why there is not one.

Be specific. A focused phrase finds better sources than one broad word.

This demo runs live news search and several AI models on every request, so it is usage limited. Please try a couple of topics rather than a dozen.