Logo Lanfrica

xeroxzen/rooibos-radar-ai-agent

Domain:

digital infrastructure

Record type:

software
Creator:
xer
Host:
An AI-powered content assistant for [Rooibos Radar](rooibosradar.com) — your go-to newsletter covering African startups, innovation, and policy. The agent automates **topic discovery**, **research**, **draft writing**, and **Substack draft publishing**. # Rooibos Radar AI Agent An AI-powered content assistant for Rooibos Radar — your go-to newsletter covering African startups, innovation, and policy. The agent automates **topic discovery**, **research**, **draft writing**, and **Substack draft publishing**. --- ## 🚀 Features - Collects trending African tech news from RSS feeds & curated sources. - Summarizes and indexes content in a vector database. - Uses LLM + RAG to generate newsletter-ready drafts in the Rooibos Radar voice. - Provides citations for all claims. - Exports drafts directly to Substack for final editing. --- ## 🛠 Tech Stack - **Backend**: Python, FastAPI - **Worker Queue**: Celery + Redis - **Vector DB**: Chroma - **Embeddings**: OpenAI - **Scraping**: Playwright / Newspaper3k - **Deployment**: Docker, Render/Vercel --- ## 📂 Project Structure ```bash rooibos-radar-ai-agent/ │ ├── src/ # All application source code │ ├── __init__.py │ ├── main.py # FastAPI entrypoint │ ├── config.py # Settings/env variables │ ├── ingestion/ # Feed & web scraping │ │ ├── __init__.py │ │ ├── rss_collector.py │ │ └── web_scraper.py │ ├── indexing/ # Embedding & vector DB ops │ │ ├── __init__.py │ │ ├── embedder.py │ │ └── indexer.py │ ├── generation/ # LLM & prompt templates │ │ ├── __init__.py │ │ ├── prompt_templates.py │ │ ├── rag_pipeline.py │ │ └── draft_writer.py │ ├── publishing/ # Draft export & Substack integration │ │ ├── __init__.py │ │ ├── substack_api.py │ │ └── formatter.py │ └── utils/ # Helpers │ ├── __init__.py │ ├── text_cleaner.py │ └── logger.py │ ├── tests/ # Unit & integration tests │ ├── __init__.py │ ├── test_ingestion.py │ ├── test_indexing.py │ └── test_generation.py │ ├── data/ # Sample feeds, cached pages (gitignored) │ └── sample_feeds.json │ ├── …