
An AI-powered platform that automatically collects, processes, summarizes, ranks, and delivers personalized AI news based on a user's interests and technical profile.




This project is an AI-powered personalized news aggregation system designed to turn a large amount of AI-related content into a concise and personalized knowledge feed.
It automatically collects content from RSS sources and YouTube channels, processes the content, generates AI-powered digests, ranks the content according to a user's interests, and delivers the final curated digest through email.
The main goal is not just to collect AI news, but to build an automated pipeline that can discover, understand, personalize, and deliver useful technical information.
┌─────────────────────┐
│ RSS Sources │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ YouTube Channels │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Scrapers │
│ │
│ RSS Scraper │
│ YouTube Scraper │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ PostgreSQL │
│ │
│ Articles / Videos │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Content Processing │
│ │
│ RSS → Markdown │
│ YouTube → Transcript│
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Digest Agent │
│ LLM │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Curator Agent │
│ │
│ User Profile │
│ Relevance Ranking │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Email Agent │
│ │
│ Personalized Email │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ Resend │
└──────────┬──────────┘
│
▼
User Inbox
The system is divided into separate stages so that scraping, content processing, AI generation, curation, and delivery remain independent components.
The system collects AI-related content from 22 sources across RSS feeds and YouTube channels.
The project currently integrates 16 RSS feeds from major AI companies, research organizations, developers, and AI communities.
| Source | Feeds |
|---|---|
| Anthropic | 3 |
| OpenAI | 3 |
| Hugging Face | 1 |
| Google / DeepMind | 2 |
| Meta AI | 1 |
| Mistral | 1 |
| xAI | 1 |
| Ollama | 1 |
| The Batch — DeepLearning.AI | 1 |
| Simon Willison | 1 |
| Cohere | 1 |
| Total | 16 |
The project also collects content from 6 AI-focused YouTube channels:
This combination allows the system to collect information from both official AI sources and independent technical content creators.
The project uses three main AI agents, each responsible for a different part of the pipeline.
The Digest Agent converts processed content into a concise and useful digest.
It receives the article content or YouTube transcript and generates:
The agent is instructed to focus on meaningful content and avoid unnecessary elements such as navigation, promotional content, social links, and other irrelevant page information.
Processed Content
│
▼
Digest Agent
│
▼
Title + Summary
The Curator Agent determines how relevant each generated digest is to the user.
It uses a structured user profile containing information such as:
The agent then analyzes the generated digests and assigns relevance scores and rankings.
User Profile ──────┐
│
▼
Curator Agent
▲
│
Generated Digests
│
▼
Ranked AI Content
This allows the system to prioritize content that is more useful to the specific user instead of treating every AI article equally.
The Email Agent prepares the final personalized email experience.
It generates the introduction for the email and works with the ranked articles to produce the final digest.
Ranked Content
│
▼
Email Agent
│
▼
Personalized Email
│
▼
Resend
│
▼
User Inbox
One important part of the pipeline is handling situations where a YouTube transcript is not available.
The system does not depend completely on transcripts for digest generation.
YouTube Video
│
▼
Try to Get Transcript
│
▼
┌───────────────────────┐
│ Transcript Available? │
└───────────┬───────────┘
│
┌────┴────┐
YES NO
│ │
▼ ▼
Use Transcript Check Failure
│ │
│ ┌────┴─────────────┐
│ │ │
│ Temporary IP Blocked
│ Failure │
│ │ │
│ ▼ ▼
│ Retry Stop Retry
│ │
│ ▼
│ Retry
│ │
│ ▼
│ Retry
│
└──────────────┬──────────────┘
▼
Digest Generation
When transcript retrieval fails because of a temporary problem, the system can retry the transcript retrieval up to three times.
Attempt 1
│
├── Success → Continue
│
└── Failure
↓
Attempt 2
│
├── Success → Continue
│
└── Failure
↓
Attempt 3
│
├── Success → Continue
│
└── Failure → Continue without transcript
However, an IP-blocked condition is treated differently.
If the system detects that the IP is blocked, there is no reason to repeatedly retry the same request. The retry loop is immediately stopped and the pipeline continues using the available metadata.
If a transcript cannot be obtained, the system can still generate a digest using the information available from the YouTube video:
YouTube Video
│
├── Title
│
├── Description
│
└── Transcript
│
▼
Transcript Available?
/ \
YES NO
│ │
▼ ▼
Full Content Title +
Description
│ │
└──────┬──────┘
▼
Digest Agent
│
▼
AI Digest
When the transcript is unavailable, the title and meaningful description are used as the fallback context.
The model is instructed to generate the digest only from the information available and not invent details that are not supported by the source.
This allows the pipeline to continue processing useful content even when transcript extraction is unavailable.
Multi-source AI content collection
Automated content processing
LLM-powered digest generation
Personalized content curation
Automated email generation
Automated delivery
Fault-tolerant transcript processing
The complete processing workflow can be represented as:
DISCOVER
│
▼
RSS + YouTube
│
▼
SCRAPING
│
▼
PostgreSQL
│
▼
PROCESSING
┌────┴────┐
│ │
RSS YouTube
│ │
▼ ▼
Markdown Transcript
│ │
└────┬────┘
▼
UNDERSTAND
│
▼
Digest Agent
│
▼
PERSONALIZE
│
▼
Curator Agent
│
▼
RANKED DATA
│
▼
EMAIL
│
▼
Email Agent
│
▼
Resend
│
▼
User Inbox
PostgreSQL acts as the persistent storage layer of the application.
The system stores:
SQLAlchemy is used as the database ORM and repository layer.
This separates the persistent data layer from the scraping, processing, and AI components.
The project is built around the idea of turning information overload into personalized knowledge.
Instead of manually visiting multiple AI websites, reading dozens of articles, watching videos, and deciding what is relevant, the system automates the entire process:
Discover
↓
Process
↓
Understand
↓
Personalize
↓
Deliver
The project also demonstrates how different AI engineering concepts can work together in a practical application:
LLMs + AI Agents + Backend Systems + Databases + APIs + Automation
The focus is on building a complete AI-powered system rather than using an LLM as an isolated feature.