Toolkit · Audience insight
Reviews
Daily review monitoring, sentiment and response triage across four platforms.
The problem
Reputation platforms charge hundreds a month to tell a small institution what its visitors are saying. Most nonprofits instead check Google reviews manually, occasionally, and never systematically enough to spot a trend.
How it works
A daily job collects reviews from Google, TripAdvisor, Yelp and Facebook, classifies each against a theme vocabulary your team writes by hand, tracks sentiment over time, and flags which reviews still need a response. It also screens quotes for a public pull-quote widget you can embed.
Worth knowing
Two design decisions worth stealing. New themes have to earn their place — a theme only enters the vocabulary after appearing in three reviews across at least fourteen days, so a single unusual complaint doesn't become a permanent category.
And the failure handling came from a real incident, documented in the repo: a model endpoint began returning a retirement error, the fallback silently swallowed it, and the pipeline produced pure regex output under a model's name for several days without complaint. The validation step that now blocks bad output exists because of that.
Using it at your organization
- Set your organization and listing IDs in the config file.
- Write your own theme vocabulary — this is the part that shouldn't be automated.
- Note the small running cost: a scraping service and a small model, a few dollars a year.
Stack: Python 3.12 · GitHub Actions (daily) · static HTML dashboard
Licence: MIT — use, modify and redistribute freely, commercially or not.
Hosting: static files; no server required.
Related tools
Built for the Theodore Roosevelt Presidential Library and released for anyone to use. See all 19 tools, or read how the whole system is built.


