Not every company is golden. We sniff out the ones that are.
Reputato is an OSINT (Open Source Intelligence) agent designed to help job seekers and professionals make informed decisions about potential employers. By aggregating and analyzing data from multiple sources including LinkedIn, Glassdoor, Crunchbase, and news articles, Reputato provides comprehensive insights into companies' reputation, work culture, financial health, and recent developments.
Original post on dev.to
Screen.Recording.2025-05-16.at.15-VEED.1.mp4
Screenshots of summaries:
- Multi-Source Data Collection: Gathers information from LinkedIn, Glassdoor, Crunchbase, and news sources
- Real-time Analysis: Uses Bright Data's MCP server to retrieve and process scraping data from various sources
- Comprehensive Insights: Provides a holistic view of companies through various data points
- User-Friendly Interface: Easy-to-use web interface for accessing company information
The backend is built as a FastAPI service that leverages PydanticAI for intelligent agent orchestration. PydanticAI provides a robust framework for building production-grade AI applications with structured data validation and type safety. The system uses Anthropic's models for natural language processing and data analysis. You can configure the model in the environment variables, but by default, it uses GPT-4 for optimal performance.
Note: While Docker and Docker Compose configurations are available, there was a known issue with browser tools in Docker containers. This has been resolved by implementing the solution from Bright Data MCP issue #11: launching the MCP server once at app start-up and keeping it alive across requests, while closing (or timing-out) the browser only after the final multi-step tool call.
- Python 3.12+ (managed via pyenv)
- Bright Data account with API access
- Anthropic API key
Create a .env file in the backend directory with the following variables:
# API Keys
BRIGHTDATA_API_TOKEN=your_brightdata_token
ANTHROPIC_API_KEY=your_anthropic_key
REPUTATO_API_KEY=your_own_generated_api_key
# URLs
FRONTEND_URL=http://localhost:8501
# Bright Data Zones
BRIGHTDATA_LINKEDIN_UNLOCKER_ZONE=your_linkedin_zone
BRIGHTDATA_GLASSDOOR_UNLOCKER_ZONE=your_glassdoor_zone
BRIGHTDATA_CRUNCHBASE_UNLOCKER_ZONE=your_crunchbase_zone
BRIGHTDATA_NEWS_UNLOCKER_ZONE=your_news_zone
# Browser Authentication
BROWSER_AUTH_LINKEDIN=your_linkedin_auth
BROWSER_AUTH_GLASSDOOR=your_glassdoor_auth
BROWSER_AUTH_CRUNCHBASE=your_crunchbase_auth
BROWSER_AUTH_NEWS=your_news_auth
# Optional: Logging Configuration
LOGFIRE_TOKEN=your_logfire_token # Add this to enable logging through LogfireCreate a .streamlit/secrets.toml file in the frontend directory with the following configuration:
[backend]
url = "http://localhost:8000"
apikey = "your_own_generated_api_key"-
Install pyenv (if not already installed):
# macOS brew install pyenv # Linux curl https://pyenv.run | bash
-
Set up Python environment:
brew update && brew upgrade pyenv pyenv install 3.12.2 pyenv virtualenv 3.12.2 reputato pyenv local reputato
-
Set up pre-commit hooks:
# Install pre-commit pip install pre-commit # Install the git hook scripts pre-commit install # Run pre-commit on all files pre-commit run --all-files
-
Set up Bright Data MCP Server:
- Follow the instructions at Bright Data MCP Server Documentation
- Create necessary zones for LinkedIn, Glassdoor, Crunchbase, and News
-
Install dependencies:
# Backend cd backend pip install -r requirements.txt # Frontend cd ../frontend pip install -r requirements.txt
You can run the application either using Docker or locally:
- Build and run with Docker Compose:
docker-compose up --build
-
Start the backend server:
cd backend python run.py -
Start the frontend:
cd frontend streamlit run app.py -
Access the application at
http://localhost:8501
reputato/
├── backend/
│ ├── app/
│ ├── requirements.txt
│ └── run.py
│ └── .env
├── frontend/
│ ├── app.py
│ └── requirements.txt
│ └── .streamlit/secrets.toml
├── Dockerfile
├── docker-compose.yml
└── README.md
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the terms of the license included in the repository.