Start a Project

Disciplined AI News, Down to Your Town

Our Product · AI Newsroom

The World section in MOJ KRAJ.'s English mirror - a calm, content-first front page
The live portal, English mirror: the national front page, a town's local edition, and an article.

MOJ KRAJ. is a Croatian news portal run as a public experiment: can AI hold a newsroom to a higher bar than the average – every article written fresh from cited sources, its claims checked against the source before it publishes – while also covering the towns big media abandoned? A machine doesn't have to pick only the profitable cities.

Every article is written by AI under human editorial oversight, from sources cited on the page – and the portal says exactly that, openly, in its own words. Here transparency isn't a caveat; it's the point.

Checks and steps from the wire to the front page
23
Lines of source text the writer sees: it works from extracted facts
0
Croatian, with an auto-translated mirror
HR + EN
Operator, minutes a day
1

Two Frustrations, One Portal

Two urges: readers tired of the noise, and a studio curious how far AI goes when the bar is set deliberately high.

Enough Clickbait

The average portal packages an ordinary event as drama, because the click matters more than the information. We wanted the opposite: a headline that says what happened, a body that backs it with a source, and then it stops.

"naslovom kaže što se dogodilo, tekstom to potkrijepi izvorom, i tu stane."

A Public Experiment

We work with applied AI every day, so the real question was how far it goes with the bar set high: can it run a newsroom more disciplined than average – one that writes each article fresh from the facts, checks its claims against the source, and grades itself before publishing?

The answer in progress: technology used not to cut costs at the reader's expense, but to raise the standard – with clear rules and human oversight.

A Front Page for Every Town

Most places in Croatia have nobody covering them. A machine, unlike a newsroom, doesn't have to pick only the profitable cities.

So every city, island and county gets its own front page – regional news and neighbourhood service notices in one place. Short local announcements (road closures, outages, council notices) are relayed automatically as "Ukratko iz kraja"; anything with real news weight becomes a full, sourced article on that town's edition. It's the coverage national media skip, made reachable only because the cost of another front page is near zero.

  • Pick a place once – the portal remembers your local edition

  • Official city and county feeds are prioritised – the legally safest sources, and the ones nobody else covers

  • Each article is geotagged and routed to the right town automatically

  • Service notices relayed as short local briefs, not padded into fake articles

From Wire Item to Checked Story

Nothing reaches a reader without passing every stage. The pipeline, not the generation, is what makes the output trustworthy.

  1. Gather Sources

    News-agency wire, verified media feeds and official city and county communications flow into a raw queue – each item tagged with its origin and place.

  2. Write It Fresh

    A purpose-built newsroom agent writes an original Croatian article in house style, with the source attributed. It never sees the source text, only a closed list of facts extracted from it, so it has nothing to copy from, and quotes are checked word for word against the source.

  3. Image Gates

    The portal draws its own illustrations and labels them "Ilustracija: AI". Each passes three gates: no real person in the prompt, nothing explicit in the result, no portrait-sized face. A photo from Wikimedia Commons is used only with a free licence (public domain, CC0, CC BY or BY-SA), and an unverified image never appears.

  4. Eight Checks on Every Draft

    Every draft must pass eight checks: guardrails, specificity, legal over-generalisation, invented names, a quality score, groundedness (up to ten claims judged against the source, quotes re-verified, numbers and dates audited), neutrality and a minimum length. Six are code, two are LLM judges. A draft that fails gets one rewrite; if it fails again, it is discarded.

  5. Human Oversight

    Before an article goes out on its own, a final gate recomputes the scores on the finished text, checks the archive for duplicates and requires a lead image. Anything that fails waits for an editor, who approves or rejects it with one click from an email digest. Sponsored articles always wait for a person.

  6. Publish & Place

    The article goes live with structured news metadata for search, and geotagging drops it onto the right town's local front page as well as its topic section.

  • Next.js 16 & React 19
  • FastAPI & SQLAlchemy 2.0
  • PostgreSQL
  • Claude Code skill
  • Local image generation
  • schema.org NewsArticle
  • Cookieless analytics

Every Check, in Order

Everything an item goes through between the wire and the front page, as the code runs it today. "Blocks" means the article cannot go out until it passes.

StageCheckWhat it doesDone byIf it fails
IntakeDuplicate itemsThe same content is taken in once; feed items older than 60 days are droppedCodeDropped
IntakeSame story, several outletsItems are grouped only when similarity is at least 0.72 and they share a name or a number; at most 4 sources per articleCode + embeddingsKept apart
TriageNews, notice, section, localFour questions on the title and summaryLocal model, LLM when unsureNot news, or a service notice: skipped
FactsSource pageThe fetched page must contain the headline's words and at least 80 characters of textCodeNot used
FactsFact extractionA closed list of facts; a long source that yields under 5 is retried, and under 2 means no articleLLMNo article
WritingFacts onlyThe writer works from the fact list and never sees the source textBy design–
DraftGuardrailsPlaceholders, filler, "as an AI model" phrases, secrets, fewer than 100 wordsCodeBlocks
DraftSpecificityAt least 35% of the names, places and numbers in the facts must reach the textCodeBlocks
DraftLegal over-generalisation"The law prescribes…" next to a figure, when the source never mentions the lawCodeBlocks
DraftInvented namesA capitalised name that is neither in the dictionary nor in the sourceCode + dictionaryBlocks
DraftQuality scoreSEO, readability, flow and house style, combined score of at least 75CodeBlocks
DraftGroundednessUp to 10 claims judged against the source, quotes re-verified word for word, numbers and dates audited; score of at least 65LLM + codeBlocks
DraftNeutralityLoaded framing, one-sided sourcing, a tone gap between the people involved; score of at least 65LLMBlocks
DraftLengthAt least 170 words, or 90 when the source has few factsCodeBlocks
ProofreadingSpelling, agreement, vocabularyHints for a proofreading pass, whose result is kept only if the length stays within 0.8–1.25×Code + LLMOriginal kept
ArchiveDuplicate articleClose to an article from the last 72 hours and sharing names or numbers with itCode + embeddingsDropped
ImagePerson in the promptA prompt that names or shows a person is rewritten; if the checker is down, flagged prompts are refusedLLM, fails closedRewritten or refused
ImageExplicit contentThe generated image itself is checkedVision LLM, fails closedBlocks
ImagePortrait sizeA large human face in frame triggers one retry with a brief that has no peopleVision LLMRetried
ImageLicenceA Wikimedia Commons photo must be public domain, CC0, CC BY or BY-SA; unverified images never appearCodeNot used
PublishFinal gateScores recomputed on the final text, duplicates checked again, a lead image requiredCodeHeld for an editor
ReviewEditorOne-click approve or reject from an email digest; sponsored articles always wait for a personHumanRejected
DailySelf-testEach screen gets a test case it must catch, and the result goes into the daily reportCode + LLMFlagged in the report

Rules That Don't Bend

The experiment only means something if the rules are real. These are enforced in the pipeline, and stated openly to the reader.

Facts Only, From the Source

A claim may come only from the article's cited source. Quotes are never fabricated. Every article is rewritten in original Croatian – facts are free, expression is copyrighted, and it's respected as such.

Labeled, Always

AI-made illustrations carry "Ilustracija: AI". Sponsored material is marked "SPONZORIRANI SADRŽAJ" with the partner named, and never mixed into editorial choices. The reader always knows what they're looking at.

Wrong? We Fix It.

A public corrections address, source links on every article, and a full impressum. Accuracy over speed is the stated rule – it's better that the news be right than first.

The rule the whole thing runs on: getting it right matters more than getting it first.

"važnije da vijest bude točna nego da bude prva" — from the MOJ KRAJ. About page

Noticed by Journalism Researchers

MOJ KRAJ. is listed in J·Index, the Journalism AI Index: an open database, built by Ukrainian journalist Katya Gorchinskaya, of more than 3,000 cases of AI use in news organisations across 142 countries. Its entry files MOJ KRAJ. under editorial production, AI-led with human oversight, and it is one of eight cases from six Croatian news organisations in the index.

That entry is how Gretel Kahn of the Reuters Institute for the Study of Journalism at Oxford found us. She interviewed our founder about MOJ KRAJ. while reporting on J·Index. Her published piece is about the database and does not name MOJ KRAJ., but several of the methods we talked through appear in it among the ways newsrooms use AI: image generation, spellchecking and fact-checking.

Why It's in Our Portfolio

MOJ KRAJ. is the clearest version yet of a belief that runs through everything we build: when generation gets cheap, the value moves to the discipline around it – the sourcing rules, the groundedness and neutrality checks, the license gate, the human who owns the standard. It's the same thesis as our other work, pointed at one of the harder places to earn trust: the news. And it's a deliberate argument, in public, that AI can be used to raise a standard rather than quietly lower one – which is the only kind of AI product we're interested in building, for ourselves or for anyone else.

Want a Content Engine You Can Stand Behind?

A pipeline that generates at scale but checks itself, cites its sources and labels its outputs – in your domain, your language, your standard. Read MOJ KRAJ. first, then let's talk about yours.