Automated Multi-Source Tech News Aggregation & AI Executive Digest Platform
Powered by a dynamic multi-provider LLM rotation engine (Groq, Gemini, Mistral, OpenRouter, OpenAI, Anthropic).
AI Pulse is an end-to-end tech news intelligence platform designed for developers, engineering managers, and AI researchers. It automatically fetches trending developer news, open-source AI tools, research papers, and discussions across multiple platforms (GitHub, Hacker News, Reddit, Dev.to, Twitter/X), processes them using an intelligent 2-Phase Ingestion Engine, and generates concise, structured daily digests with actionable developer takeaways.
To guarantee high availability and bypass API rate limits, AI Pulse features a Multi-Provider AI Rotation Engine that seamlessly rotates across Groq, Google Gemini, Mistral, OpenRouter, OpenAI, and Anthropic with automatic fallback.
- π Multi-Provider AI Rotation Pool: Dynamically balances load across multiple free and paid LLM providers. If one provider hits rate limits or fails, the engine instantly fails over to the next available provider.
- π° Multi-Source News Aggregation: Ingests high-signal developer content from:
- GitHub: Trending AI repositories, releases, and topics.
- Hacker News: Top story discussions and AI announcements.
- Reddit: Key subreddits (
r/LocalLLaMA,r/MachineLearning,r/artificial). - Dev.to: Community tutorials and tech posts.
- Twitter / X: Curated AI tech tweets.
- β‘ 2-Phase Ingestion Pipeline:
- Phase 1 (Fetch): Ingests raw articles/repos into PostgreSQL without waiting for AI processing.
- Phase 2 (Process): Batches unprocessed items and streams them to the AI rotation pool for TL;DR summaries, key takeaways, relevance scoring, and automatic tagging.
- π Executive Dashboard UI: Modern, responsive React dashboard built with Ant Design & Recharts featuring:
- Digest timeline & calendar browser.
- Category, relevance score, and source filtering.
- Interactive source management & cron status drawer.
- One-click manual ingestion triggers ("Full Sync" vs "Retry AI Only").
- π Enterprise Clean Architecture: Decoupled NestJS architecture using the Repository Pattern and interface abstractions for database, news sources, and AI providers.
βββββββββββββββββββββββββββββββββββββββββββ
β News Sources β
β GitHub | HackerNews | Reddit | Dev.to β
ββββββββββββββββββββββ¬βββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β Phase 1: Fetching β
β Ingestion Orchestrator / Cron Service β
ββββββββββββββββββββββ¬βββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β PostgreSQL Database β
β (DailyDigest & NewsItem models) β
ββββββββββββββββββββββ¬βββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β Phase 2: AI Summarization β
β AI Provider Rotation Pool β
β βββββββββ¬βββββββββ¬ββββββββββ¬βββββββββββ β
β β Groq β Gemini β Mistral βOpenRouterβ β
β βββββββββ΄βββββββββ΄ββββββββββ΄βββββββββββ β
ββββββββββββββββββββββ¬βββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β React Executive Dashboard β
β Vite | Redux Toolkit | Ant Design UI β
βββββββββββββββββββββββββββββββββββββββββββ
ai-pulse/
βββ ai-pulse-backend/ # NestJS REST API & Ingestion Engine
β βββ src/
β β βββ ai/ # Multi-provider LLM adapters & pool rotation logic
β β βββ config/ # Environment configuration service
β β βββ database/ # Prisma ORM & Repository implementations
β β βββ digest/ # Daily Digest & Search REST API controllers
β β βββ ingestion/ # 2-Phase Ingestion pipeline & cron scheduler
β β βββ news-sources/ # Adapters for GitHub, Reddit, HN, Dev.to
β βββ prisma/ # Database schema & migrations
β βββ Dockerfile
βββ ai-pulse-frontend/ # React + Vite Single Page Application
β βββ src/
β β βββ components/ # Reusable UI components & drawers
β β βββ pages/ # HomePage, DigestDetail, SearchPage, StatsPage
β β βββ store/ # RTK Query API slices
β β βββ styles/ # CSS & AntD custom styles
β βββ Dockerfile
βββ docker-compose.yml # Multi-container orchestration
βββ .env.example # Master environment variables structure
βββ README.md
The fastest way to get AI Pulse running locally is using Docker Compose:
git clone https://github.com/your-username/ai-pulse.git
cd ai-pulseCopy .env.example to .env in the root directory and add your API keys:
cp .env.example .envEdit .env and add at least one AI provider key (e.g. GROQ_API_KEY or GEMINI_API_KEY):
GROQ_API_KEY=gsk_your_groq_api_key_here
GEMINI_API_KEY=your_gemini_api_key_heredocker-compose up --buildAccess the application components:
- π Frontend Dashboard: http://localhost:8080
- π Backend REST API: http://localhost:3000
- π Swagger API Docs: http://localhost:3000/api/docs
If you prefer to run services individually without Docker Compose:
- Node.js: v20+
- PostgreSQL: v15+
- npm: v9+
cd ai-pulse-backend
# Install dependencies
npm install
# Setup environment variables
cp .env.example .env
# Run Database Migrations
npx prisma migrate dev
# Seed initial source configuration
npx ts-node seed.ts
# Start backend in development mode
npm run start:devcd ai-pulse-frontend
# Install dependencies
npm install
# Start Vite development server
npm run devThe frontend will start at http://localhost:5173 with automated API proxying to http://localhost:3000.
| Variable | Description | Default / Example | Required |
|---|---|---|---|
NODE_ENV |
Application environment | development |
Yes |
PORT |
Backend port | 3000 |
No |
DATABASE_URL |
PostgreSQL connection string | postgresql://user:pass@localhost:5432/ai_pulse_db |
Yes |
AI_PROVIDER_MODE |
Provider mode (POOL or SINGLE) |
POOL |
Yes |
AI_BATCH_SIZE |
Items processed per AI request | 5 |
No |
AI_INTER_BATCH_DELAY_MS |
Delay between AI batches (ms) | 3000 |
No |
GROQ_API_KEY |
Groq API Key | gsk_... |
Provider dependent |
GEMINI_API_KEY |
Google Gemini API Key | AQ... |
Provider dependent |
MISTRAL_API_KEY |
Mistral AI Key | Cup9... |
Provider dependent |
OPENROUTER_API_KEY |
OpenRouter API Key | sk-or-... |
Provider dependent |
GITHUB_TOKEN |
GitHub Personal Access Token | github_pat_... |
Recommended |
INGESTION_CRON_SCHEDULE |
Cron syntax for daily automated fetch | 0 0 * * * |
No |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/digests/latest |
Fetch the latest processed daily digest |
GET |
/api/digests/:id |
Fetch digest by UUID |
GET |
/api/digests |
Paginated list of historical digests |
POST |
/api/ingestion/trigger |
Trigger immediate manual news ingestion |
GET |
/api/sources |
Get active source configurations & status |
PATCH |
/api/sources/:source |
Enable/disable source or update fetch intervals |
GET |
/api/stats/overview |
Ingestion metrics, source breakdown & AI stats |
GET |
/api/search |
Search news items by query, source, or tags |
Full API documentation with response schemas is available via Swagger UI at /api/docs.
# Run backend unit tests
cd ai-pulse-backend
npm run test
# Run ESLint validation
npm run lint
# Format code with Prettier
npm run formatThis project is licensed under the MIT License - see the LICENSE file for details.