A FastAPI-powered web application that generates comprehensive research reports and converts them into engaging podcast-style discussions using OpenAI's text-to-speech capabilities. Also allows you to download the report if reading is preferred.
This application transforms research topics into dynamic content through multiple stages:
- Research Analysis: Generates a team of AI analysts with diverse perspectives/personas
- Report Generation: Creates a detailed research report with citations
- Podcast Conversion: Transforms the report into a natural conversation
- Audio Synthesis: Converts the podcast script into spoken audio using distinct voices for each analyst
Below is a visualization of the research workflow and how different components interact:
Clone and install
git clone https://github.com/andrewlee977/scout.git
cd scout
poetry install
Set up environment variables
Create a .env
file in the root directory:
OPENAI_API_KEY=your_openai_api_key
NEWS_API_KEY=your_newsapi_key
TAVILY_API_KEY=your_tavily_key
Get your API keys from:
Run the app
poetry run uvicorn app.main:app --reload
- Dynamic analyst generation with customizable roles and perspectives
- Research report generation with structured sections (introduction, insights, conclusion)
- Podcast script generation with natural dialogue
- OpenAI TTS integration with voice personality matching
- PDF report generation and download functionality
- Clean, responsive HTML interface
- Real-time loading indicators
- Custom audio player with progress tracking
- Interactive feedback system for analyst selection
- Download options for research reports
- Multi-voice podcast generation using OpenAI's TTS API
- Voice assignment based on analyst gender and role
- Custom voice instructions for personality matching
- Automatic audio segment combination with natural pauses
- Initial topic submission by the user
- Analyst team generation with feedback options
- Report generation with cited sources
- Podcast script creation
- Multi-voice audio synthesis
- FastAPI for async request handling
- Jinja2 templating for dynamic HTML
- PDF report generation with FPDF
- Audio processing with pydub
- Structured logging system
- State management for research workflow