Production system 03 / 03
News Pipeline
Real-time and historical news ingestion — deduplicated, embedded, and served back as semantic search.
Pipeline
- Real timeGDELT ingest as the news breaks
- Shardedvector indexes in production
- Self-serviceretrieval for other internal teams
The pipeline
GDELT publishes machine-readable article files every minute. The pipeline consumes them in two modes off one code path: a realtime poller working a rolling window, and a historical backfill that walks a date range backwards and checkpoints as it goes, so a crash resumes exactly where it stopped.
Everything after fetch is shared — parse and country enrichment, then two-stage deduplication that drops exact URL matches before paying to embed anything and near-duplicates after, then batched embedding into sharded vector indexes. What used to be keyword hunting is now search by meaning.
Who uses it
A Python client library on top made the store self-service for other internal teams: semantic search with date, country, language and source filters, streaming bulk export for large pulls, and an agentic mode that answers questions with citations.
Reliability
I own pipeline reliability end to end: observability and alerting, so failures surface instead of passing silently.
- Stack
-
- Python · asyncio
- Amazon S3 Vectors
- OpenAI-compatible embeddings
- AWS
- Docker
- Observability