Notimia: an AI Newsroom That Turns Local News Into Ready Posts and a City Agenda

A local news channel lives on speed, but a small team cannot read fifty sites a day and rewrite every story by hand. Notimia reads the sources for them, groups the news into stories, drafts posts from the facts and sends them to Telegram, with a person deciding what goes out.

Notimia: an AI Newsroom That Turns Local News Into Ready Posts and a City Agenda - Inbox

The Challenge

A local news channel or city portal competes on speed and coverage. The news is spread across dozens of places: regional newspapers, town halls, the official gazette, YouTube channels, press releases in someone’s inbox. The same event is reported five times with different headlines, and the important one is often buried under the noise.

A small team spends most of its day reading, not writing. And rewriting other outlets’ articles is slow and risky: a text that follows its source too closely is a copy.

We built Notimia, an AI newsroom that does the reading, sorting and first drafts, so the editors only decide what to publish and how.

Collecting News From Dozens of Sources

Each source is connected through its own adapter, chosen automatically when you add a source by its URL:

  • RSS feeds and news sitemaps of newspapers and portals.
  • Websites without a feed, read directly, with a headless browser for sites that only render in JavaScript.
  • YouTube channels, with transcripts of the videos when they are needed.
  • The official gazette (BOE), so official documents arrive next to the news.
  • An email inbox for press releases and newsletters.

Failing sources are flagged. Near-duplicates are caught early: when a regional agency piece is reprinted by several sites, the reprints point to the original instead of counting as new news.

Articles Grouped Into Stories

Every article is turned into a set of facts: who, what, where, when, the figures and the quotes, plus its topics and places. Each article also gets a vector, a numerical fingerprint of its meaning.

An incoming article is compared with the open stories of recent days. If it is about the same event, it joins that story; if not, it starts a new one. A story keeps its member articles, the list of outlets that covered it with times, and a merged list of facts, each with the number of sources that confirm it. When the automatic grouping is wrong, an administrator can merge stories, split them or detach an article by hand.

The Inbox: Ranked by What You Asked For

A project describes what it cares about in briefs: topics, places, language, the style and length of posts, and the mode - drafts for review, automatic publishing, or digests only.

Stories are ranked against each brief by meaning, not by keywords, and land in the Inbox with a score, the number of outlets and the place. Ranking uses vector search alone, so filling the Inbox costs nothing in AI calls. One click opens the story: the summary, the confirmed facts and the coverage. From there the editor writes a post, adds the story to a collection, hides it, or asks the system not to show similar stories again. A Chat tab answers questions about a story from its own material.

Posts Written From the Facts, Then Checked

When an editor clicks “Write a post”, the AI receives the story’s facts and the brief’s settings, never the source articles themselves. The draft is then checked in several ways before anyone approves it:

  • The first check looks for overlap with the sources: Notimia finds the longest run of words the draft shares with any source text. From six words in a row the draft is regenerated; from eight, approval is blocked. Names and attributed quotes don’t count. This is an engineering safeguard against accidental copying, not a legal guarantee.
  • Every figure, amount and date in the draft must appear in the facts. This check is done by code, not by a model, because models are unreliable with numbers.
  • Finally, the draft gets an AI review: a separate model pass looks for claims the facts don’t support, for opinions in a news text, and for prohibited content.

A draft that fails is regenerated once and then flagged for a person. The editor can make it shorter or longer, change the style, translate it, find or generate an image, compare versions, or send a review link to a client who approves it without an account.

Publishing to Telegram, With an AI Label

Telegram is the publishing channel that is built today. A channel is connected through the service bot, and the editor sees a preview of exactly what the channel will receive. Anything published without a person’s approval carries an AI label at the top - “Contenido generado automáticamente con inteligencia artificial” in Spanish - and the label is rendered by one component for every channel, so it cannot be forgotten. Posts can be published at once or put on a calendar, and the system plans posting slots for each brief.

One Story, Several Formats

Besides a post, the same material can become a digest of the day or week, a newsletter, a script for a video with a teleprompter view, slides for a carousel, a short push text, or an audio episode read by a synthetic voice and published as a podcast feed. Several stories can be merged into one post.

A City Agenda With Its Own Bot

Notimia also collects events: concerts, exhibitions, talks, markets, workshops. It reads calendar feeds, event markup on venue websites and event listings, merges the same event announced by several sources, and notices when an event is moved, changed or cancelled.

The result is a public agenda page in Spanish, English, Russian and Ukrainian, with filters for today, tonight, the weekend, categories, free and child-friendly events. Each event links to the source that announced it and can be added to a calendar. Residents can subscribe to a digest, and a Telegram bot asks for language, town and interests, then sends a weekend selection; signed-in users get a reminder before an event they saved. Organisers can suggest an event, which a moderator approves.

The Trending screen shows which stories are spreading right now: how many outlets picked them up and how fast, whether a story is breaking, and a coverage timeline that tells the editor how late the channel is compared with the first outlet. The Uncovered screen lists official documents that no outlet has written about yet.

For Other Platforms and Teams

Notimia is built as a multi-project platform. Each project has members with roles - owner, editor, client reviewer - and its own spend. Everything is available through a REST API with project keys and scopes, documented with OpenAPI, plus signed webhooks, RSS, Atom and JSON feeds, and an embeddable news widget for websites.

All AI calls go through one gateway. Each call is logged with its model and cost, the spend is visible per project and per task, and the administrator chooses which model runs each task. Simple yes/no decisions go to a dedicated decision model instead of a full text generation call, and work that can wait is sent through batch processing at half price.

Tech Stack

- Backend: Laravel 13 (modular monolith), PHP 8.5
- Admin panel: Inertia + React 19 + Ant Design
- Database: PostgreSQL 18 (search, analytics and partitioned logs)
- Vector search: Qdrant (articles, stories, briefs, events)
- Queues and real time: Redis, Horizon, Reverb WebSockets
- AI: Anthropic Claude and OpenAI through one gateway, Voyage embeddings
- Speech: transcription and text-to-speech providers for audio formats
- Rendering: headless Chromium for JavaScript sites, Gotenberg for exports
- Publishing: Telegram Bot API
- Infrastructure: Docker, k3s manifests, GitLab CI

Result

Instead of reading dozens of sites, the editor opens an Inbox of stories ranked for their channel, with the facts already extracted and the coverage in one place. A draft written from those facts and checked against the sources is a click away, the Telegram preview shows what readers will see, and the city agenda fills itself. Status: Notimia is in development and not yet in production; the full pipeline runs on real news from the province of Alicante, and Telegram is the only publishing channel built so far.