A GitHub-ready project that fetches business reviews from Google Maps (scrape first, API fallback), surfaces top keywords, and runs aspect-based sentiment analysis with a React dashboard.
- Business name or Google Maps URL input
- Scrape Google Maps reviews (Playwright)
- Fallback to Google Places API when scraping fails (if API key present)
- Auto keyword/topic suggestions when user doesn’t provide aspects
- Aspect-level sentiment analysis
- Interactive charts and review explorer
backend/FastAPI service (scraping + analysis)frontend/React (Vite) dashboard*.ipynbOriginal notebooks kept for reference
- Python 3.10+
- Node 18+
cd backend
python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt
python -m playwright installCreate backend/.env based on backend/.env.example if you want API fallback.
You can also set SCRAPE_FIRST=false to skip scraping and go straight to the API.
The scraper is now limited to Google Travel hotel review URLs, but you can also paste a hotel name and it will auto-navigate to the first Google Travel result.
Paste a hotel review URL like:
https://www.google.com/travel/hotels/entity/.../reviews?...
Run:
uvicorn main:app --reload --port 8000cd frontend
npm install
npm run devThe frontend proxies /api to http://localhost:8000 in dev.
Google Maps DOM changes frequently, so scraping can break. The backend always tries scraping first, then uses Places API if a key is available.
- Add caching and rate limiting
- Persist analysis results
- Add user accounts