Google Reviews Pain Detector
v1.0.0Scrapes Google reviews for businesses to identify pain words related to missed calls and poor phone coverage, scoring lead quality for AI receptionist sales.
Security Scan
OpenClaw
Suspicious
high confidencePurpose & Capability
Name/description (detect pain words in reviews) match the code's behavior (scrapes Google/Yelp/Maps and searches review sites). However the script depends on a local 'scrapling' virtualenv at an absolute user path and reads/writes a master lead list at a hardcoded path (/Users/wlc-studio/...). Those local path dependencies are not declared in the skill metadata (requires.env/config paths = none) and are specific to the pack author's environment.
Instruction Scope
SKILL.md instructs scanning single businesses or the full master list and saving HOT leads. The runtime instructions + code will perform headless stealth scraping of Google Search and Google Maps (via StealthyFetcher with cloudflare solving), follow external review links, and (per SKILL.md/flags) can append back to the MASTER_LEAD_LIST. That gives the skill the ability to perform bulk scraping and to read/modify a local lead file — behavior not emphasized in the metadata and potentially unexpected by users.
Install Mechanism
No install spec (instruction-only) which reduces installer risk. But the script forcibly boots a site-packages path for a local virtualenv (/Users/wlc-studio/…/scrapling/.venv/lib/python3.14/site-packages) and will exit if it can't import Scrapling. The lack of an explicit dependency declaration or a standard install step is a usability and coherence issue (the skill relies on an out-of-band local package).
Credentials
Metadata declares no required env vars or config paths, yet the code uses hardcoded filesystem locations (SCRAPLING_VENV_SITE and MASTER_LEAD_LIST) and will read and (per SKILL.md) append to that master lead list. This is a mismatch: the skill silently requires access to specific local files and directories which grant access to potentially sensitive lead data.
Persistence & Privilege
The skill does not request always:true and is user-invocable only. It does not attempt to modify other skills or system-wide configurations in the visible code. Its principal effect on the system is reading/parsing and potentially appending to the MASTER_LEAD_LIST file.
What to consider before installing
This skill appears to implement the advertised scraping and pain-word detection, but it is not self-contained: it expects a local 'scrapling' virtualenv at a hardcoded absolute path and accesses a hardcoded MASTER_LEAD_LIST file in /Users/wlc-studio/. Before installing or running: (1) Verify the scrapling dependency exists and inspect that code (StealthyFetcher can run a headless browser and bypass protections). (2) Back up the MASTER_LEAD_LIST file and confirm you want this skill to read/modify it; the metadata does not declare this required path. (3) Review the rest of detector.py (saving logic) for any network callbacks or hidden uploads (the provided file was truncated). (4) Consider running the script in a sandboxed or isolated environment to avoid large-scale scraping or unintended modifications. (5) Be aware scraping Google/Maps/Yelp may violate terms of service or trigger rate-limiting; if you only need one-off lookups, run per-business rather than --list to reduce blast radius.Like a lobster shell, security has layers — review code before you run it.
latest
Google Reviews Pain Detector
Skill: google-reviews-pain-detector
Purpose: Scrape Google reviews for businesses and detect "pain words" that signal missed calls, poor phone coverage, and lost customers — hot signals for Gracie AI Receptionist leads.
What It Does
- Accepts a business name (+ optional address) as input
- Searches Google for
[business name] reviewsand scrapes result pages - Also attempts to scrape Google Maps reviews directly
- Scans all review text for pain words indicating missed calls / unreachable staff
- Outputs: business name, matched pain words, example snippets, and a PAIN SCORE (0–10)
- Can run against the full Master Lead List with
--list - Can append HOT-tagged leads (score ≥ 3) to the Master Lead List with
--save
Pain Words Detected
voicemail, no answer, hard to reach, couldn't get through, called 3 times,
never called back, missed call, didn't answer, goes to voicemail,
unanswered, unreachable, left a message
Usage
Single business
cd ~/StudioBrain/00_SYSTEM/skills/google-reviews-pain-detector
python3 detector.py "P.A.C. Plumbing Staten Island"
python3 detector.py "Victory Auto Repair" --address "3735 Victory Blvd, SI"
Full lead list scan
python3 detector.py --list
Scan + save HOT leads (score ≥ 3) back to master list
python3 detector.py --list --save
JSON output
python3 detector.py "Rafi's Auto Repair" --json
python3 detector.py --list --json
Output Example
══════════════════════════════════════════════════════
🔍 P.A.C. Plumbing, Heating & A/C
══════════════════════════════════════════════════════
📍 Address: 545 Port Richmond Ave, SI 10302
🔥 PAIN SCORE: 6/10
🎯 Pain Words Found: voicemail (3), no answer (1), never called back (1)
📋 Example Snippets:
• "...went to voicemail every time I called after hours..."
• "...no answer on Saturday, had to find another plumber..."
• "...never called back after leaving a message..."
✅ HOT LEAD — Strong signal for Gracie AI Receptionist pitch
Dependencies
- Python 3.9+
- Scrapling skill at
~/StudioBrain/00_SYSTEM/skills/scrapling/(with.venv) - No additional installs required
Files
| File | Purpose |
|---|---|
SKILL.md | This file |
detector.py | Main script |
Comments
Loading comments...
