An automated intelligence briefing engine to stay ahead of the curve. The AI Landscape Monitor automates the creation of weekly intelligence briefings, leveraging large language models (LLMs) to gather, summarize, and format recent information into a clean HTML digest.
📝 Blog Post: Read the announcement on the UNU C3 Blog — "Stop Drowning in AI Information: Meet the AI Landscape Monitor"
The explosive growth of AI research publications has made manual tracking nearly impossible. The AI Landscape Monitor addresses this challenge by automating the gathering, summarization, and formatting processes—transforming hours of manual research into minutes of configuration.
-
Automated Content Generation — Generates four pre-defined sections:
- 📚 Research Highlights: Novel AI research papers with meaningful contributions
- 🌐 News & Trends: Industry news, model releases, partnerships, and policy updates
- ⚙️ Tools & Resources: Open-source projects, datasets, and frameworks
- 💡 Perspectives & Ethics: AI safety, policy, and societal impact discussions
-
Selectable AI Engines — Choose between Perplexity, Anthropic Claude, OpenAI, Brave, or SerpApi (Google), or mix engines per section
-
Customizable Content — Modify prompts, toggle sections, and adapt to any domain (e-government, GovTech, cybersecurity, climate tech, etc.) via the
DOMAIN_KEYWORDconfiguration -
Manual Curation & Synthesis — Add custom links with auto-generated summaries
-
Configurable Citation Styles — Inline or section-style citations with clickable sources
-
REST API — Programmatic access for automation and workflow integration
Full documentation is available at: https://c3.unu.edu/projects/ai/landscapemonitor/
- Python 3.11 or higher
- API keys for one or more: Perplexity, Anthropic Claude, OpenAI, Brave Search, or SerpApi
# Clone the repository
git clone https://github.com/ngstcf/landscapemonitor.git
cd landscapemonitor
# Create a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Copy environment template and configure
cp .env.example .env
# Edit .env with your API keys# Set Flask app and run
FLASK_APP=app.py flask run --port=8000
# Or directly with Python
python app.pyThe application will be available at http://localhost:8000
curl -X POST http://localhost:8000/api/external/generate \
-H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \
-d '{
"api_choice": "claude",
"citation_style": "inline",
"days_delta": 7
}' \
--output digest.htmlcurl http://localhost:8000/healthConfigure your environment variables in .env:
| Variable | Description | Default |
|---|---|---|
PERPLEXITY_API_KEY |
Perplexity API key | - |
CLAUDE_API_KEY |
Anthropic Claude API key | - |
OPENAI_API_KEY |
OpenAI API key | - |
BRAVE_API_KEY |
Brave Search API key | - |
SERPAPI_API_KEY |
SerpApi (Google Search) API key | - |
BRAVE_RATE_LIMIT |
Brave API rate limit (requests/sec) | 1 |
OPENAI_MODEL |
OpenAI model to use | gpt-4.1 |
OPENAI_TIMEOUT |
OpenAI request timeout (seconds) | 300 |
GENERATOR_API_KEY |
External API access key | - |
TIMEDELTA |
Days to look back for sources (uses Perplexity's search_after_date_filter for any number of days) | 7 |
DOMAIN_KEYWORD |
Domain keyword for search queries (e.g., AI, climate tech) | AI |
PPLX_MODEL |
Perplexity model | sonar-pro |
CLAUDE_MODEL |
Claude model | claude-sonnet-4-5 |
The AI Landscape Monitor is built with:
- Flask — Web framework
- Perplexity SDK — Search-augmented generation
- Anthropic SDK — Claude API integration
- OpenAI SDK — GPT models with web search
- Brave Search API — Privacy-focused web search
- SerpApi — Google Search Results API
- BeautifulSoup — Web scraping for manual link synthesis
- Markdown2 — Markdown processing
| Engine | Recency Handling | Best For | Notes |
|---|---|---|---|
| Perplexity | Excellent | General research, tools/resources | Uses search_after_date_filter for precise control (any number of days) |
| Claude | Very Good | Research papers | Effective fallback to extended time windows |
| OpenAI | Very Good | Comprehensive analysis | Detailed coverage with slower speed |
| Brave | Good | Privacy-focused searches | Section-optimized queries with freshness filters; extra snippets |
| SerpApi | Good | Broad Google search | Section-optimized queries with knowledge graph support |
Note: Brave and SerpApi now use section-specific optimized search queries (e.g., "AI news developments model releases partnerships policy updates 7 days") combined with built-in freshness parameters for improved recency accuracy. The domain keyword can be customized via the DOMAIN_KEYWORD environment variable to adapt the monitor to different domains (e.g., "development economics", "climate tech", "cybersecurity").
This is an active research and development project by UNU Campus Computing Centre.
Dr. Ng Chong UNU Campus Computing Centre
This project is licensed under the MIT License - see the LICENSE file for details.
- Powered by Perplexity, Anthropic, OpenAI, Brave Search, and SerpApi
For more information, visit https://c3.unu.edu/projects/ai/landscapemonitor/