Skip to main content

Business review aggregator and monitoring tool with sentiment analysis

Project description

๐Ÿ• Review Hound

CI Python 3.11+ License: MIT codecov

Stop checking TrustPilot, BBB, and Yelp separately. Review Hound scrapes them all, flags negative reviews, and emails you before customers start talking.

Why? Bad reviews spread. A 1-star complaint on Yelp can sit for days before you notice. Review Hound catches them within hours.

Features

  • One command, three sources: reviewhound scrape --all hits TrustPilot, BBB, and Yelp
  • Sentiment scoring: Flags negative reviews automatically so you know what needs attention
  • Web dashboard: See all your businesses, ratings, and trends in one place
  • Email alerts: Get notified when someone leaves a bad review
  • CLI or web: Use whichever fits your workflow
  • Scheduled scraping: Set it and forget itโ€”runs every few hours
  • CSV export: Pull data out for spreadsheets or reporting

Screenshots

Dashboard

Track all your businesses at a glance with ratings, sentiment breakdowns, and trend indicators.

Dashboard

Business Detail

See individual business metrics with rating trends and quick actions.

Business Detail

Reviews

Browse and filter reviews by source and sentiment, with CSV export support.

Reviews

Settings

Configure API keys for Google Places and Yelp Fusion, plus sentiment analysis tuning.

Settings

Quick Start

Using Docker (Recommended)

# Clone the repository
git clone https://github.com/jonmartin721/review-hound.git
cd review-hound

# Start with Docker Compose
docker-compose up -d

# Access the web dashboard
open http://localhost:5000

Manual Installation

# Clone the repository
git clone https://github.com/jonmartin721/review-hound.git
cd review-hound

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt
pip install -e .

# Run the web dashboard
python -m reviewhound web

CLI Usage

Add a Business

# Add with TrustPilot URL
reviewhound add "Acme Corp" --trustpilot "https://www.trustpilot.com/review/acme.com"

# Add with multiple sources
reviewhound add "Acme Corp" \
  --trustpilot "https://www.trustpilot.com/review/acme.com" \
  --bbb "https://www.bbb.org/..." \
  --yelp "https://www.yelp.com/biz/acme-corp"

Scrape Reviews

# Scrape one business
reviewhound scrape "Acme"
# โ†’ Scraped 47 reviews from 3 sources

# Scrape everything (grab coffee, this takes a minute)
reviewhound scrape --all
# โ†’ Scraped 203 reviews across 5 businesses

View Reviews

# List all businesses
reviewhound list

# View reviews for a business
reviewhound reviews 1 --limit 50

# Filter by sentiment
reviewhound reviews 1 --sentiment negative

# View statistics
reviewhound stats 1

Export Data

# Export to CSV
reviewhound export 1 -o acme_reviews.csv

Email Alerts

# Configure alerts for negative reviews
reviewhound alert 1 alerts@company.com --threshold 3.0

# List alert configurations
reviewhound alerts

Scheduled Scraping

# Run scheduler (scrapes every 6 hours by default)
reviewhound watch

# Custom interval
reviewhound watch --interval 2

# Run web dashboard with scheduler
reviewhound web --with-scheduler

Configuration

Create a .env file in the project root:

# Database
DATABASE_PATH=data/reviews.db

# Scraping
REQUEST_DELAY_MIN=2.0
REQUEST_DELAY_MAX=4.0
MAX_PAGES_PER_SOURCE=3

# Scheduler
SCRAPE_INTERVAL_HOURS=6

# Email Alerts (optional)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-app-password
SMTP_FROM=alerts@yourdomain.com

# Web Dashboard
FLASK_SECRET_KEY=change-this-in-production
FLASK_DEBUG=false

Web Dashboard

The web dashboard provides:

  • Dashboard: Overview of all businesses with sentiment bars and ratings
  • Business Detail: Individual business stats, rating trends, and recent reviews
  • Reviews Page: Filterable list of all reviews with pagination
  • One-Click Scraping: Trigger scrapes directly from the UI

Access at http://localhost:5000 after starting with reviewhound web.

Project Structure

review-hound/
โ”œโ”€โ”€ reviewhound/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ __main__.py
โ”‚   โ”œโ”€โ”€ cli.py              # CLI commands
โ”‚   โ”œโ”€โ”€ config.py           # Configuration
โ”‚   โ”œโ”€โ”€ database.py         # Database setup
โ”‚   โ”œโ”€โ”€ models.py           # SQLAlchemy models
โ”‚   โ”œโ”€โ”€ scheduler.py        # APScheduler setup
โ”‚   โ”œโ”€โ”€ scrapers/
โ”‚   โ”‚   โ”œโ”€โ”€ base.py         # Abstract scraper
โ”‚   โ”‚   โ”œโ”€โ”€ trustpilot.py
โ”‚   โ”‚   โ”œโ”€โ”€ bbb.py
โ”‚   โ”‚   โ””โ”€โ”€ yelp.py
โ”‚   โ”œโ”€โ”€ analysis/
โ”‚   โ”‚   โ””โ”€โ”€ sentiment.py    # TextBlob analysis
โ”‚   โ”œโ”€โ”€ alerts/
โ”‚   โ”‚   โ””โ”€โ”€ email.py        # SMTP alerts
โ”‚   โ””โ”€โ”€ web/
โ”‚       โ”œโ”€โ”€ app.py          # Flask factory
โ”‚       โ”œโ”€โ”€ routes.py       # Web routes
โ”‚       โ”œโ”€โ”€ templates/
โ”‚       โ””โ”€โ”€ static/
โ”œโ”€โ”€ tests/
โ”œโ”€โ”€ data/                   # SQLite database
โ”œโ”€โ”€ exports/                # CSV exports
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ docker-compose.yml
โ””โ”€โ”€ requirements.txt

Development

# Run tests
pytest tests/ -v

# Run with debug mode
reviewhound web --debug

What's Next?

  • Set up email alerts: reviewhound alert 1 you@email.com
  • Run the scheduler for hands-off monitoring: reviewhound watch
  • Found a bug? Open an issue

Disclaimer

Web scraping may violate some websites' Terms of Service. Use responsibly and respect rate limits.

License

MIT License - see LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reviewhound-1.0.0.tar.gz (75.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reviewhound-1.0.0-py3-none-any.whl (75.7 kB view details)

Uploaded Python 3

File details

Details for the file reviewhound-1.0.0.tar.gz.

File metadata

  • Download URL: reviewhound-1.0.0.tar.gz
  • Upload date:
  • Size: 75.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for reviewhound-1.0.0.tar.gz
Algorithm Hash digest
SHA256 47d119713b749bc662233d970665d2f10ccd189bc71c1c4dcc847761dd3a6217
MD5 e35f78e21b048fbe7d2048c682dfea12
BLAKE2b-256 fab68d69bc1f8213b85f455b0ae1415d41020f424adb173fd5ed888febfb9ea3

See more details on using hashes here.

File details

Details for the file reviewhound-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: reviewhound-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 75.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for reviewhound-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e226d32486862016ed8df837929de903a4f63038d2cd6d4cbc28f5bf560cacf3
MD5 2bf12a8d4fddb61f27ccb8a661a5845e
BLAKE2b-256 30bbebe51dd27f7871d2f7dcdfb5687596780f2311376a38535eaecd20666686

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page