Case study · Media tech · AI-driven news

Portal das Eleições

A news portal for people who read in short bursts. A Python pipeline pulls stories from eight outlets once or twice a day; LLMs summarize, classify and filter around 400 to 500 of them daily, and each summary becomes audio. The system tracks extraction success for every outlet and flags when a source needs remapping — which can also be done by hand. Live vote counting, integrated with Brazil’s electoral court (TSE), comes into use on election day.

Status
In use
Product
Own product
My Role
Tech Lead & Systems Architect
Stack
Python, Next.js, LLMs, Edge CDN & Cache, TTS Áudio
Core Focus
Autonomous Scraping, Audio & Edge Performance
Live site
portaldaseleicoes.com ↗
Portal das Eleições home: the lead story with the 60-second summary and calm-reading buttons, rows of stories by topic and the election timeline.

The challenge

Build an election news aggregator. On layout, something new for news portals: appealing to a younger audience and following each reader’s pace — a quick take or a slow read, as needed. On AI and the back end, run the crawls so they barely touch the database or the site; hence the CDN and dedicated capture scripts.

Key Engineering & Architecture Decisions

Dynamic Consumption Modes

Interfaces tailored for modern reading habits — offering '60s Highlights', deep calm reading and AI audio playback directly in the stream.

A Python pipeline that grades itself

Eight outlets, one or two runs a day: capture, classification, summary and audio narration for 400 to 500 stories daily. Extraction success is tracked per outlet, and a drop triggers remapping of that source — automatic or manual.

Edge caching for election season

Distributed edge cache with per-publish invalidation, designed for election-season traffic spikes without loading the origin.

Operational Backoffice

Administrative control panel for monitoring ingestion feeds, managing news sources, curating covers and auditing autonomous publication flows.

Results

400–500stories a day, summarized, classified and narrated
8outlets monitored, with extraction success tracked for each
1–2×pipeline runs a day

Stack

PythonNext.jsLLMsEdge CDN & CacheTTS Áudio