feat: Add Chatwoot Agent Bot prototype and FAQ knowledge base
- Created chatwoot-agent-bot/ with Node.js webhook server - Bot detects intent (greeting, billing, technical, features, account) - Auto-responds from FAQ knowledge base or escalates to human - FAQ-KB.md: Living knowledge base that grows with customer questions - CHATWOOT-SETUP.md: Complete deployment and configuration guide - Supports Telegram notifications on escalation - Bot runs on port 3001, ready for Chatwoot webhook integration
This commit is contained in:
BIN
agents/sales-prospector/.DS_Store
vendored
Normal file
BIN
agents/sales-prospector/.DS_Store
vendored
Normal file
Binary file not shown.
40
agents/sales-prospector/MONITOR.md
Normal file
40
agents/sales-prospector/MONITOR.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# Sales Prospector Monitoring
|
||||
|
||||
## Current Status (v8)
|
||||
- **Runtime:** ~15 minutes
|
||||
- **Leads found:** 7
|
||||
- **Rate:** ~28 leads/hour
|
||||
- **CRM:** All pushed successfully (201)
|
||||
- **Quality:** COLD (HOA websites, minimal emails)
|
||||
|
||||
## Active Process
|
||||
```
|
||||
PID: 58289
|
||||
Script: prospector-v8.py
|
||||
```
|
||||
|
||||
## Monitoring Commands
|
||||
```bash
|
||||
# Quick status
|
||||
tail -10 logs/prospector-v8-*.log
|
||||
cat state/prospector-v8-state.json
|
||||
|
||||
# Leads count
|
||||
ls leads/ | wc -l
|
||||
|
||||
# CRM check (last 5 notes)
|
||||
curl -s https://salesforce.hoaledgeriq.com/rest/notes -H "Authorization: Bearer $TWENTY_TOKEN" | jq '.data.notes[:5]'
|
||||
```
|
||||
|
||||
## Expected Behavior
|
||||
- Cycles every ~30 seconds
|
||||
- 3 searches per metro
|
||||
- 6 URLs per search
|
||||
- Saves ANY HOA domain as lead
|
||||
- Rate: 25-60 leads/hour
|
||||
|
||||
## Alert Conditions
|
||||
- No new leads for >10 minutes
|
||||
- CRM push failures
|
||||
- Rate limit errors (429)
|
||||
- Process not running
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
24
agents/sales-prospector/check.sh
Executable file
24
agents/sales-prospector/check.sh
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
# Quick health check for prospector
|
||||
cd /Users/claw/.openclaw/workspace/agents/sales-prospector
|
||||
|
||||
# Check if running
|
||||
if ! pgrep -f prospector-v8.py > /dev/null; then
|
||||
echo "ALERT: Prospector not running!"
|
||||
echo "Restarting..."
|
||||
python3 prospector-v8.py > /dev/null 2>&1 &
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check recent activity (last 10 min)
|
||||
LEADS=$(cat state/prospector-v8-state.json 2>/dev/null | jq -r '.leads // 0')
|
||||
CYLETIME=$(stat -c %Y logs/prospector-v8-$(date +%Y%m%d).log 2>/dev/null || echo 0)
|
||||
NOW=$(date +%s)
|
||||
DIFF=$((NOW - CYLETIME))
|
||||
|
||||
if [ $DIFF -gt 600 ]; then
|
||||
echo "ALERT: No activity in ${DIFF}s"
|
||||
echo "Leads: $LEADS"
|
||||
fi
|
||||
|
||||
echo "OK: $LEADS leads, last activity ${DIFF}s ago"
|
||||
26
agents/sales-prospector/launcher.sh
Executable file
26
agents/sales-prospector/launcher.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
# Sales Prospector Launcher
|
||||
# Runs prospector and restarts on error
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
LOG_FILE="$SCRIPT_DIR/logs/launcher.log"
|
||||
|
||||
echo "$(date): Sales Prospector launcher started" >> "$LOG_FILE"
|
||||
|
||||
while true; do
|
||||
echo "$(date): Starting prospector..." >> "$LOG_FILE"
|
||||
|
||||
"$SCRIPT_DIR/prospector.sh" >> "$LOG_FILE" 2>&1
|
||||
|
||||
EXIT_CODE=$?
|
||||
echo "$(date): Prospector exited with code $EXIT_CODE" >> "$LOG_FILE"
|
||||
|
||||
# Restart logic
|
||||
if [[ $EXIT_CODE -eq 0 ]]; then
|
||||
echo "$(date): Restarting in 30s..." >> "$LOG_FILE"
|
||||
sleep 30
|
||||
else
|
||||
echo "$(date): Crash, restarting in 60s..." >> "$LOG_FILE"
|
||||
sleep 60
|
||||
fi
|
||||
done
|
||||
9
agents/sales-prospector/leads/3pmhoa.com.json
Normal file
9
agents/sales-prospector/leads/3pmhoa.com.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "3Pmhoa HOA",
|
||||
"metro": "Denver CO",
|
||||
"url": "https://3pmhoa.com/",
|
||||
"domain": "3pmhoa.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:39:31.447828"
|
||||
}
|
||||
9
agents/sales-prospector/leads/advancehoa.com.json
Normal file
9
agents/sales-prospector/leads/advancehoa.com.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Advancehoa HOA",
|
||||
"metro": "Denver CO",
|
||||
"url": "https://www.advancehoa.com/",
|
||||
"domain": "advancehoa.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:39:28.478795"
|
||||
}
|
||||
11
agents/sales-prospector/leads/amphoa.com.json
Normal file
11
agents/sales-prospector/leads/amphoa.com.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Amphoa HOA",
|
||||
"metro": "Nashville TN",
|
||||
"url": "https://www.amphoa.com/",
|
||||
"domain": "amphoa.com",
|
||||
"emails": [
|
||||
"info@amphoa.com"
|
||||
],
|
||||
"quality": "WARM",
|
||||
"found": "2026-03-14T15:39:35.497248"
|
||||
}
|
||||
9
agents/sales-prospector/leads/amshoa.com.json
Normal file
9
agents/sales-prospector/leads/amshoa.com.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Amshoa HOA",
|
||||
"metro": "Charlotte NC",
|
||||
"url": "https://amshoa.com/",
|
||||
"domain": "amshoa.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T14:43:04.088565"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Atlantacommunityservices HOA",
|
||||
"metro": "Atlanta GA",
|
||||
"url": "https://www.atlantacommunityservices.com",
|
||||
"domain": "atlantacommunityservices.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T14:48:56.434831"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Beaconcommunitymanagement HOA",
|
||||
"metro": "Orlando FL",
|
||||
"url": "https://beaconcommunitymanagement.com/",
|
||||
"domain": "beaconcommunitymanagement.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:38:10.837766"
|
||||
}
|
||||
9
agents/sales-prospector/leads/cmshoamanagement.com.json
Normal file
9
agents/sales-prospector/leads/cmshoamanagement.com.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Cmshoamanagement HOA",
|
||||
"metro": "Denver CO",
|
||||
"url": "https://cmshoamanagement.com/",
|
||||
"domain": "cmshoamanagement.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:39:29.999420"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Communityassociationmanagement HOA",
|
||||
"metro": "Charlotte NC",
|
||||
"url": "https://communityassociationmanagement.com/charlotte-nc-hoa-management-company/",
|
||||
"domain": "communityassociationmanagement.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T14:43:02.746510"
|
||||
}
|
||||
13
agents/sales-prospector/leads/condoblackbook.com.json
Normal file
13
agents/sales-prospector/leads/condoblackbook.com.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "Condoblackbook HOA",
|
||||
"metro": "Miami FL",
|
||||
"url": "https://www.condoblackbook.com/blog/miami-condo-association-hoa-contact-page",
|
||||
"domain": "condoblackbook.com",
|
||||
"emails": [],
|
||||
"phones": [
|
||||
"3052851269",
|
||||
"3053797305"
|
||||
],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T10:51:06.697701"
|
||||
}
|
||||
9
agents/sales-prospector/leads/condocontrol.com.json
Normal file
9
agents/sales-prospector/leads/condocontrol.com.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Condocontrol HOA",
|
||||
"metro": "Dallas TX",
|
||||
"url": "https://www.condocontrol.com/blog/top-10-hoa-management-companies-in-dallas/",
|
||||
"domain": "condocontrol.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:39:59.521211"
|
||||
}
|
||||
9
agents/sales-prospector/leads/cpihoa.com.json
Normal file
9
agents/sales-prospector/leads/cpihoa.com.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Cpihoa HOA",
|
||||
"metro": "Phoenix AZ",
|
||||
"url": "https://cpihoa.com/",
|
||||
"domain": "cpihoa.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:39:19.166496"
|
||||
}
|
||||
11
agents/sales-prospector/leads/empirehoa.com.json
Normal file
11
agents/sales-prospector/leads/empirehoa.com.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Empirehoa HOA",
|
||||
"metro": "Orlando FL",
|
||||
"url": "https://empirehoa.com/",
|
||||
"domain": "empirehoa.com",
|
||||
"emails": [
|
||||
"hoa@empirehoa.com"
|
||||
],
|
||||
"quality": "WARM",
|
||||
"found": "2026-03-14T15:38:15.268228"
|
||||
}
|
||||
9
agents/sales-prospector/leads/hoa-usa.com.json
Normal file
9
agents/sales-prospector/leads/hoa-usa.com.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Hoa Usa HOA",
|
||||
"metro": "Phoenix AZ",
|
||||
"url": "https://hoa-usa.com/arizona-hoa-management-companies/",
|
||||
"domain": "hoa-usa.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:39:20.977261"
|
||||
}
|
||||
9
agents/sales-prospector/leads/hoa.texas.gov.json
Normal file
9
agents/sales-prospector/leads/hoa.texas.gov.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Hoa HOA",
|
||||
"metro": "Austin TX",
|
||||
"url": "https://hoa.texas.gov/",
|
||||
"domain": "hoa.texas.gov",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:39:23.323466"
|
||||
}
|
||||
9
agents/sales-prospector/leads/hoadv.com.json
Normal file
9
agents/sales-prospector/leads/hoadv.com.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Hoadv HOA",
|
||||
"metro": "Atlanta GA",
|
||||
"url": "https://hoadv.com/",
|
||||
"domain": "hoadv.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T14:48:54.527514"
|
||||
}
|
||||
9
agents/sales-prospector/leads/hoamanagement.com.json
Normal file
9
agents/sales-prospector/leads/hoamanagement.com.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Hoamanagement HOA",
|
||||
"metro": "Atlanta GA",
|
||||
"url": "https://www.hoamanagement.com/city/atlanta/",
|
||||
"domain": "hoamanagement.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T14:48:54.122880"
|
||||
}
|
||||
9
agents/sales-prospector/leads/hoaservicesinc.com.json
Normal file
9
agents/sales-prospector/leads/hoaservicesinc.com.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Hoaservicesinc HOA",
|
||||
"metro": "Atlanta GA",
|
||||
"url": "https://www.hoaservicesinc.com/",
|
||||
"domain": "hoaservicesinc.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T14:48:58.124721"
|
||||
}
|
||||
9
agents/sales-prospector/leads/houstonhoa.net.json
Normal file
9
agents/sales-prospector/leads/houstonhoa.net.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Houstonhoa HOA",
|
||||
"metro": "Houston TX",
|
||||
"url": "https://houstonhoa.net/",
|
||||
"domain": "houstonhoa.net",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:40:02.840438"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Lifetimehoamanagement HOA",
|
||||
"metro": "Austin TX",
|
||||
"url": "https://lifetimehoamanagement.com/austin-hoa-management/",
|
||||
"domain": "lifetimehoamanagement.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:39:26.912114"
|
||||
}
|
||||
9
agents/sales-prospector/leads/microhoa.com.json
Normal file
9
agents/sales-prospector/leads/microhoa.com.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Microhoa HOA",
|
||||
"metro": "Charlotte NC",
|
||||
"url": "https://microhoa.com/locations/north-carolina/charlotte/",
|
||||
"domain": "microhoa.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T14:43:06.138325"
|
||||
}
|
||||
14
agents/sales-prospector/leads/myoakcreekcommunity.net.json
Normal file
14
agents/sales-prospector/leads/myoakcreekcommunity.net.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "Myoakcreekcommunity HOA",
|
||||
"metro": "Tampa FL",
|
||||
"url": "https://www.myoakcreekcommunity.net/hoa",
|
||||
"domain": "myoakcreekcommunity.net",
|
||||
"emails": [
|
||||
"andrea.cedres@inframark.com",
|
||||
"balair@wisepropertymanagement.com",
|
||||
"dlabrador@castlegroup.com",
|
||||
"wfaison@homeriver.com"
|
||||
],
|
||||
"quality": "HOT",
|
||||
"found": "2026-03-14T14:35:16.365231"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Nashvillehoamanagement HOA",
|
||||
"metro": "Nashville TN",
|
||||
"url": "https://nashvillehoamanagement.com/",
|
||||
"domain": "nashvillehoamanagement.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:39:33.073828"
|
||||
}
|
||||
11
agents/sales-prospector/leads/onioncreekhoa.org.json
Normal file
11
agents/sales-prospector/leads/onioncreekhoa.org.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Onioncreekhoa HOA",
|
||||
"metro": "Austin TX",
|
||||
"url": "https://www.onioncreekhoa.org",
|
||||
"domain": "onioncreekhoa.org",
|
||||
"emails": [
|
||||
"office@onioncreekhoa.com"
|
||||
],
|
||||
"quality": "WARM",
|
||||
"found": "2026-03-14T15:39:25.159489"
|
||||
}
|
||||
9
agents/sales-prospector/leads/properhoamanage.com.json
Normal file
9
agents/sales-prospector/leads/properhoamanage.com.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Properhoamanage HOA",
|
||||
"metro": "Dallas TX",
|
||||
"url": "https://www.properhoamanage.com/",
|
||||
"domain": "properhoamanage.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:39:59.063664"
|
||||
}
|
||||
9
agents/sales-prospector/leads/southbayhoa.org.json
Normal file
9
agents/sales-prospector/leads/southbayhoa.org.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Southbayhoa HOA",
|
||||
"metro": "Orlando FL",
|
||||
"url": "https://southbayhoa.org/",
|
||||
"domain": "southbayhoa.org",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:38:12.528140"
|
||||
}
|
||||
9
agents/sales-prospector/leads/wakehoa.com.json
Normal file
9
agents/sales-prospector/leads/wakehoa.com.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "Wakehoa HOA",
|
||||
"metro": "Raleigh NC",
|
||||
"url": "https://www.wakehoa.com/",
|
||||
"domain": "wakehoa.com",
|
||||
"emails": [],
|
||||
"quality": "COLD",
|
||||
"found": "2026-03-14T15:39:36.900279"
|
||||
}
|
||||
468
agents/sales-prospector/logs/launcher.log
Normal file
468
agents/sales-prospector/logs/launcher.log
Normal file
@@ -0,0 +1,468 @@
|
||||
Fri Mar 13 12:34:14 EDT 2026: Sales Prospector launcher started
|
||||
Fri Mar 13 12:34:14 EDT 2026: Starting prospector...
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 239: syntax error near unexpected token `)'
|
||||
Fri Mar 13 12:34:14 EDT 2026: Prospector exited with code 2
|
||||
Fri Mar 13 12:34:14 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:35:14 EDT 2026: Starting prospector...
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 239: syntax error near unexpected token `)'
|
||||
Fri Mar 13 12:35:14 EDT 2026: Prospector exited with code 2
|
||||
Fri Mar 13 12:35:14 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:36:14 EDT 2026: Starting prospector...
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 239: syntax error near unexpected token `)'
|
||||
Fri Mar 13 12:36:15 EDT 2026: Prospector exited with code 2
|
||||
Fri Mar 13 12:36:15 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:37:15 EDT 2026: Starting prospector...
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 239: syntax error near unexpected token `)'
|
||||
Fri Mar 13 12:37:15 EDT 2026: Prospector exited with code 2
|
||||
Fri Mar 13 12:37:15 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:38:15 EDT 2026: Starting prospector...
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 239: syntax error near unexpected token `)'
|
||||
Fri Mar 13 12:38:15 EDT 2026: Prospector exited with code 2
|
||||
Fri Mar 13 12:38:15 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:39:15 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:39:15] === Sales Prospector Started ===
|
||||
[2026-03-13 12:39:15] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:39:15 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:39:15 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:39:41 EDT 2026: Sales Prospector launcher started
|
||||
Fri Mar 13 12:39:41 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:39:41] === Sales Prospector Started ===
|
||||
[2026-03-13 12:39:41] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:39:41 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:39:41 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:40:15 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:40:15] === Sales Prospector Started ===
|
||||
[2026-03-13 12:40:15] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:40:15 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:40:15 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:40:41 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:40:41] === Sales Prospector Started ===
|
||||
[2026-03-13 12:40:41] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:40:41 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:40:41 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:41:15 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:41:15] === Sales Prospector Started ===
|
||||
[2026-03-13 12:41:15] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:41:15 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:41:15 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:41:41 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:41:41] === Sales Prospector Started ===
|
||||
[2026-03-13 12:41:41] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:41:41 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:41:41 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:42:15 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:42:15] === Sales Prospector Started ===
|
||||
[2026-03-13 12:42:15] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:42:15 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:42:15 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:42:41 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:42:41] === Sales Prospector Started ===
|
||||
[2026-03-13 12:42:41] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:42:41 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:42:41 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:43:15 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:43:15] === Sales Prospector Started ===
|
||||
[2026-03-13 12:43:15] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:43:15 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:43:15 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:43:41 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:43:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:43:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:43:42 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:43:42 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:44:15 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:44:15] === Sales Prospector Started ===
|
||||
[2026-03-13 12:44:15] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:44:15 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:44:15 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:44:42 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:44:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:44:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:44:42 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:44:42 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:45:16 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:45:16] === Sales Prospector Started ===
|
||||
[2026-03-13 12:45:16] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:45:16 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:45:16 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:45:42 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:45:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:45:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:45:42 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:45:42 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:46:16 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:46:16] === Sales Prospector Started ===
|
||||
[2026-03-13 12:46:16] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:46:16 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:46:16 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:46:42 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:46:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:46:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:46:42 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:46:42 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:47:16 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:47:16] === Sales Prospector Started ===
|
||||
[2026-03-13 12:47:16] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:47:16 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:47:16 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:47:42 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:47:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:47:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:47:42 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:47:42 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:48:16 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:48:16] === Sales Prospector Started ===
|
||||
[2026-03-13 12:48:16] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:48:16 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:48:16 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:48:42 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:48:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:48:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:48:42 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:48:42 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:49:16 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:49:16] === Sales Prospector Started ===
|
||||
[2026-03-13 12:49:16] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:49:16 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:49:16 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:49:42 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:49:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:49:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:49:42 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:49:42 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:50:16 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:50:16] === Sales Prospector Started ===
|
||||
[2026-03-13 12:50:16] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:50:16 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:50:16 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:50:42 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:50:43] === Sales Prospector Started ===
|
||||
[2026-03-13 12:50:43] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:50:43 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:50:43 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:51:17 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:51:17] === Sales Prospector Started ===
|
||||
[2026-03-13 12:51:17] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:51:17 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:51:17 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:51:43 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:51:43] === Sales Prospector Started ===
|
||||
[2026-03-13 12:51:43] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:51:43 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:51:43 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:52:17 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:52:17] === Sales Prospector Started ===
|
||||
[2026-03-13 12:52:17] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:52:17 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:52:17 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:52:43 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:52:43] === Sales Prospector Started ===
|
||||
[2026-03-13 12:52:43] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:52:43 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:52:43 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:53:17 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:53:17] === Sales Prospector Started ===
|
||||
[2026-03-13 12:53:17] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 31: null: unbound variable
|
||||
Fri Mar 13 12:53:17 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 12:53:17 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 12:53:43 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:53:43] === Sales Prospector Started ===
|
||||
[2026-03-13 12:53:43] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:53:43] Working on: Charlotte NC
|
||||
[2026-03-13 12:53:43] Search: "Charlotte NC" HOA "board of directors" (throttle: 180s)
|
||||
Fri Mar 13 12:54:17 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:54:17] === Sales Prospector Started ===
|
||||
[2026-03-13 12:54:17] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:54:17] Working on: Charlotte NC
|
||||
[2026-03-13 12:54:17] Search: "Charlotte NC" HOA "board of directors" (throttle: 180s)
|
||||
[2026-03-13 12:56:43] Shutting down...
|
||||
Fri Mar 13 12:56:43 EDT 2026: Prospector exited with code 0
|
||||
Fri Mar 13 12:56:43 EDT 2026: Restarting in 30s...
|
||||
Fri Mar 13 12:57:13 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:57:13] === Sales Prospector Started ===
|
||||
[2026-03-13 12:57:13] Metro: Charlotte NC
|
||||
[2026-03-13 12:57:13] Query: Charlotte NC HOA board (wait 180s)
|
||||
[2026-03-13 12:57:17] Shutting down...
|
||||
Fri Mar 13 12:57:17 EDT 2026: Prospector exited with code 0
|
||||
Fri Mar 13 12:57:17 EDT 2026: Restarting in 30s...
|
||||
Fri Mar 13 12:57:47 EDT 2026: Starting prospector...
|
||||
[2026-03-13 12:57:47] === Sales Prospector Started ===
|
||||
[2026-03-13 12:57:47] Metro: Charlotte NC
|
||||
[2026-03-13 12:57:47] Query: Charlotte NC HOA board (wait 180s)
|
||||
[2026-03-13 13:00:13] Query: Charlotte NC homeowners association (wait 180s)
|
||||
[2026-03-13 13:00:48] Query: Charlotte NC homeowners association (wait 180s)
|
||||
[2026-03-13 13:03:13] Next metro: Orlando FL
|
||||
[2026-03-13 13:03:23] Metro: Orlando FL
|
||||
[2026-03-13 13:03:24] Query: Orlando FL HOA board (wait 180s)
|
||||
[2026-03-13 13:03:48] Next metro: Phoenix AZ
|
||||
[2026-03-13 13:03:58] Metro: Phoenix AZ
|
||||
[2026-03-13 13:03:58] Query: Phoenix AZ HOA board (wait 180s)
|
||||
[2026-03-13 13:06:24] Query: Orlando FL homeowners association (wait 180s)
|
||||
[2026-03-13 13:06:58] Query: Phoenix AZ homeowners association (wait 180s)
|
||||
[2026-03-13 13:09:24] Next metro: Atlanta GA
|
||||
[2026-03-13 13:09:34] Metro: Atlanta GA
|
||||
[2026-03-13 13:09:34] Query: Atlanta GA HOA board (wait 180s)
|
||||
[2026-03-13 13:09:58] Next metro: Orlando FL
|
||||
[2026-03-13 13:10:08] Metro: Orlando FL
|
||||
[2026-03-13 13:10:08] Query: Orlando FL HOA board (wait 180s)
|
||||
[2026-03-13 13:13:09] Query: Orlando FL homeowners association (wait 180s)
|
||||
[2026-03-13 13:16:09] Next metro: Charlotte NC
|
||||
[2026-03-13 13:16:19] Metro: Charlotte NC
|
||||
[2026-03-13 13:16:19] Query: Charlotte NC HOA board (wait 180s)
|
||||
[2026-03-13 13:19:19] Query: Charlotte NC homeowners association (wait 180s)
|
||||
[2026-03-13 13:22:19] Next metro: Orlando FL
|
||||
[2026-03-13 13:22:29] Metro: Orlando FL
|
||||
[2026-03-13 13:22:29] Query: Orlando FL HOA board (wait 180s)
|
||||
Fri Mar 13 13:24:45 EDT 2026: Prospector exited with code 143
|
||||
Fri Mar 13 13:24:45 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:25:45 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:25:45] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:25:46 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:25:46 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:26:46 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:26:46] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:26:46 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:26:46 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:27:46 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:27:46] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:27:46 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:27:46 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:28:46 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:28:46] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:28:46 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:28:46 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:29:46 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:29:46] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:29:46 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:29:46 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:30:46 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:30:46] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:30:46 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:30:46 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:31:46 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:31:46] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:31:46 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:31:46 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:32:47 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:32:47] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:32:47 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:32:47 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:33:47 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:33:47] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:33:47 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:33:47 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:34:47 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:34:47] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:34:47 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:34:47 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:35:47 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:35:47] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:35:47 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:35:47 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:36:47 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:36:47] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:36:47 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:36:47 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:37:47 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:37:47] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:37:47 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:37:47 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:38:48 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:38:48] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:38:48 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:38:48 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:39:48 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:39:48] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:39:48 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:39:48 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:40:48 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:40:48] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:40:48 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:40:48 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:41:48 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:41:48] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:41:48 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:41:48 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:42:48 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:42:48] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:42:48 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:42:48 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:43:48 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:43:48] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:43:48 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:43:48 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:44:49 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:44:49] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:44:49 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:44:49 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:45:49 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:45:49] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:45:49 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:45:49 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:46:49 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:46:49] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:46:49 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:46:49 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:47:49 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:47:49] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:47:49 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:47:49 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:48:49 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:48:49] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:48:49 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:48:49 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:49:49 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:49:49] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:49:49 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:49:49 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:50:49 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:50:49] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:50:49 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:50:49 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:51:49 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:51:49] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:51:49 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:51:49 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:52:50 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:52:50] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:52:50 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:52:50 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:53:50 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:53:50] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:53:50 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:53:50 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:54:50 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:54:50] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:54:50 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:54:50 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:55:50 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:55:50] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:55:50 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:55:50 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:56:50 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:56:50] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:56:50 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:56:50 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:57:50 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:57:50] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:57:50 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:57:50 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:58:50 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:58:50] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:58:50 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:58:50 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 13:59:51 EDT 2026: Starting prospector...
|
||||
[2026-03-13 13:59:51] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 13:59:51 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 13:59:51 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 14:00:51 EDT 2026: Starting prospector...
|
||||
[2026-03-13 14:00:51] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 14:00:51 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 14:00:51 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 14:01:51 EDT 2026: Starting prospector...
|
||||
[2026-03-13 14:01:51] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 14:01:51 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 14:01:51 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 14:02:51 EDT 2026: Starting prospector...
|
||||
[2026-03-13 14:02:51] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 14:02:51 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 14:02:51 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 14:03:51 EDT 2026: Starting prospector...
|
||||
[2026-03-13 14:03:51] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 14:03:51 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 14:03:51 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 14:04:51 EDT 2026: Starting prospector...
|
||||
[2026-03-13 14:04:51] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 14:04:51 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 14:04:51 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 14:05:51 EDT 2026: Starting prospector...
|
||||
[2026-03-13 14:05:51] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 14:05:51 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 14:05:51 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 14:06:51 EDT 2026: Starting prospector...
|
||||
[2026-03-13 14:06:51] === Sales Prospector Started ===
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 162: local: can only be used in a function
|
||||
Fri Mar 13 14:06:51 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 14:06:51 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 14:07:51 EDT 2026: Starting prospector...
|
||||
[2026-03-13 14:07:51] === Sales Prospector Started ===
|
||||
[2026-03-13 14:07:51] Metro: Orlando FL
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 175: local: can only be used in a function
|
||||
Fri Mar 13 14:07:51 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 14:07:51 EDT 2026: Crash, restarting in 60s...
|
||||
Fri Mar 13 14:08:51 EDT 2026: Starting prospector...
|
||||
[2026-03-13 14:08:51] === Sales Prospector Started ===
|
||||
[2026-03-13 14:08:51] Metro: Orlando FL
|
||||
/Users/claw/.openclaw/workspace/agents/sales-prospector/prospector.sh: line 175: local: can only be used in a function
|
||||
Fri Mar 13 14:08:51 EDT 2026: Prospector exited with code 1
|
||||
Fri Mar 13 14:08:51 EDT 2026: Crash, restarting in 60s...
|
||||
901
agents/sales-prospector/logs/prospector-20260313.log
Normal file
901
agents/sales-prospector/logs/prospector-20260313.log
Normal file
@@ -0,0 +1,901 @@
|
||||
[2026-03-13 12:39:15] === Sales Prospector Started ===
|
||||
[2026-03-13 12:39:15] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:39:41] === Sales Prospector Started ===
|
||||
[2026-03-13 12:39:41] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:40:15] === Sales Prospector Started ===
|
||||
[2026-03-13 12:40:15] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:40:41] === Sales Prospector Started ===
|
||||
[2026-03-13 12:40:41] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:41:15] === Sales Prospector Started ===
|
||||
[2026-03-13 12:41:15] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:41:41] === Sales Prospector Started ===
|
||||
[2026-03-13 12:41:41] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:42:15] === Sales Prospector Started ===
|
||||
[2026-03-13 12:42:15] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:42:41] === Sales Prospector Started ===
|
||||
[2026-03-13 12:42:41] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:43:15] === Sales Prospector Started ===
|
||||
[2026-03-13 12:43:15] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:43:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:43:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:44:15] === Sales Prospector Started ===
|
||||
[2026-03-13 12:44:15] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:44:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:44:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:45:16] === Sales Prospector Started ===
|
||||
[2026-03-13 12:45:16] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:45:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:45:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:46:16] === Sales Prospector Started ===
|
||||
[2026-03-13 12:46:16] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:46:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:46:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:47:16] === Sales Prospector Started ===
|
||||
[2026-03-13 12:47:16] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:47:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:47:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:48:16] === Sales Prospector Started ===
|
||||
[2026-03-13 12:48:16] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:48:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:48:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:49:16] === Sales Prospector Started ===
|
||||
[2026-03-13 12:49:16] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:49:42] === Sales Prospector Started ===
|
||||
[2026-03-13 12:49:42] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:50:16] === Sales Prospector Started ===
|
||||
[2026-03-13 12:50:16] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:50:43] === Sales Prospector Started ===
|
||||
[2026-03-13 12:50:43] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:51:17] === Sales Prospector Started ===
|
||||
[2026-03-13 12:51:17] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:51:43] === Sales Prospector Started ===
|
||||
[2026-03-13 12:51:43] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:52:17] === Sales Prospector Started ===
|
||||
[2026-03-13 12:52:17] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:52:43] === Sales Prospector Started ===
|
||||
[2026-03-13 12:52:43] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:53:17] === Sales Prospector Started ===
|
||||
[2026-03-13 12:53:17] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:53:43] === Sales Prospector Started ===
|
||||
[2026-03-13 12:53:43] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:53:43] Working on: Charlotte NC
|
||||
[2026-03-13 12:53:43] Search: "Charlotte NC" HOA "board of directors" (throttle: 180s)
|
||||
[2026-03-13 12:54:17] === Sales Prospector Started ===
|
||||
[2026-03-13 12:54:17] Metros: Charlotte NC Atlanta GA Orlando FL Phoenix AZ
|
||||
[2026-03-13 12:54:17] Working on: Charlotte NC
|
||||
[2026-03-13 12:54:17] Search: "Charlotte NC" HOA "board of directors" (throttle: 180s)
|
||||
[2026-03-13 12:56:09] === Sales Prospector Started ===
|
||||
[2026-03-13 12:56:09] Metro: Charlotte NC
|
||||
[2026-03-13 12:56:09] Query: Charlotte NC HOA board (wait 180s)
|
||||
[2026-03-13 12:56:43] Shutting down...
|
||||
[2026-03-13 12:57:13] === Sales Prospector Started ===
|
||||
[2026-03-13 12:57:13] Metro: Charlotte NC
|
||||
[2026-03-13 12:57:13] Query: Charlotte NC HOA board (wait 180s)
|
||||
[2026-03-13 12:57:17] Shutting down...
|
||||
[2026-03-13 12:57:47] === Sales Prospector Started ===
|
||||
[2026-03-13 12:57:47] Metro: Charlotte NC
|
||||
[2026-03-13 12:57:47] Query: Charlotte NC HOA board (wait 180s)
|
||||
[2026-03-13 12:59:09] Query: Charlotte NC homeowners association (wait 180s)
|
||||
[2026-03-13 13:00:13] Query: Charlotte NC homeowners association (wait 180s)
|
||||
[2026-03-13 13:00:48] Query: Charlotte NC homeowners association (wait 180s)
|
||||
[2026-03-13 13:02:09] Next metro: Atlanta GA
|
||||
[2026-03-13 13:02:19] Metro: Atlanta GA
|
||||
[2026-03-13 13:02:19] Query: Atlanta GA HOA board (wait 180s)
|
||||
[2026-03-13 13:03:13] Next metro: Orlando FL
|
||||
[2026-03-13 13:03:23] Metro: Orlando FL
|
||||
[2026-03-13 13:03:24] Query: Orlando FL HOA board (wait 180s)
|
||||
[2026-03-13 13:03:48] Next metro: Phoenix AZ
|
||||
[2026-03-13 13:03:58] Metro: Phoenix AZ
|
||||
[2026-03-13 13:03:58] Query: Phoenix AZ HOA board (wait 180s)
|
||||
[2026-03-13 13:05:19] Query: Atlanta GA homeowners association (wait 180s)
|
||||
[2026-03-13 13:06:24] Query: Orlando FL homeowners association (wait 180s)
|
||||
[2026-03-13 13:06:58] Query: Phoenix AZ homeowners association (wait 180s)
|
||||
[2026-03-13 13:08:19] Next metro: Charlotte NC
|
||||
[2026-03-13 13:08:30] Metro: Charlotte NC
|
||||
[2026-03-13 13:08:30] Query: Charlotte NC HOA board (wait 180s)
|
||||
[2026-03-13 13:09:24] Next metro: Atlanta GA
|
||||
[2026-03-13 13:09:34] Metro: Atlanta GA
|
||||
[2026-03-13 13:09:34] Query: Atlanta GA HOA board (wait 180s)
|
||||
[2026-03-13 13:09:58] Next metro: Orlando FL
|
||||
[2026-03-13 13:10:08] Metro: Orlando FL
|
||||
[2026-03-13 13:10:08] Query: Orlando FL HOA board (wait 180s)
|
||||
[2026-03-13 13:11:30] Query: Charlotte NC homeowners association (wait 180s)
|
||||
[2026-03-13 13:13:09] Query: Orlando FL homeowners association (wait 180s)
|
||||
[2026-03-13 13:14:30] Next metro: Phoenix AZ
|
||||
[2026-03-13 13:14:40] Metro: Phoenix AZ
|
||||
[2026-03-13 13:14:40] Query: Phoenix AZ HOA board (wait 180s)
|
||||
[2026-03-13 13:16:09] Next metro: Charlotte NC
|
||||
[2026-03-13 13:16:19] Metro: Charlotte NC
|
||||
[2026-03-13 13:16:19] Query: Charlotte NC HOA board (wait 180s)
|
||||
[2026-03-13 13:17:40] Query: Phoenix AZ homeowners association (wait 180s)
|
||||
[2026-03-13 13:19:19] Query: Charlotte NC homeowners association (wait 180s)
|
||||
[2026-03-13 13:20:40] Next metro: Atlanta GA
|
||||
[2026-03-13 13:20:50] Metro: Atlanta GA
|
||||
[2026-03-13 13:20:50] Query: Atlanta GA HOA board (wait 180s)
|
||||
[2026-03-13 13:22:19] Next metro: Orlando FL
|
||||
[2026-03-13 13:22:29] Metro: Orlando FL
|
||||
[2026-03-13 13:22:29] Query: Orlando FL HOA board (wait 180s)
|
||||
[2026-03-13 13:23:51] Query: Atlanta GA homeowners association (wait 180s)
|
||||
[2026-03-13 13:24:45] === Sales Prospector Started ===
|
||||
[2026-03-13 13:25:45] === Sales Prospector Started ===
|
||||
[2026-03-13 13:26:46] === Sales Prospector Started ===
|
||||
[2026-03-13 13:27:46] === Sales Prospector Started ===
|
||||
[2026-03-13 13:28:46] === Sales Prospector Started ===
|
||||
[2026-03-13 13:29:46] === Sales Prospector Started ===
|
||||
[2026-03-13 13:30:46] === Sales Prospector Started ===
|
||||
[2026-03-13 13:31:46] === Sales Prospector Started ===
|
||||
[2026-03-13 13:32:47] === Sales Prospector Started ===
|
||||
[2026-03-13 13:33:47] === Sales Prospector Started ===
|
||||
[2026-03-13 13:34:47] === Sales Prospector Started ===
|
||||
[2026-03-13 13:35:47] === Sales Prospector Started ===
|
||||
[2026-03-13 13:36:47] === Sales Prospector Started ===
|
||||
[2026-03-13 13:37:47] === Sales Prospector Started ===
|
||||
[2026-03-13 13:38:48] === Sales Prospector Started ===
|
||||
[2026-03-13 13:39:48] === Sales Prospector Started ===
|
||||
[2026-03-13 13:40:48] === Sales Prospector Started ===
|
||||
[2026-03-13 13:41:48] === Sales Prospector Started ===
|
||||
[2026-03-13 13:42:48] === Sales Prospector Started ===
|
||||
[2026-03-13 13:43:48] === Sales Prospector Started ===
|
||||
[2026-03-13 13:44:49] === Sales Prospector Started ===
|
||||
[2026-03-13 13:45:49] === Sales Prospector Started ===
|
||||
[2026-03-13 13:46:49] === Sales Prospector Started ===
|
||||
[2026-03-13 13:47:49] === Sales Prospector Started ===
|
||||
[2026-03-13 13:48:49] === Sales Prospector Started ===
|
||||
[2026-03-13 13:49:49] === Sales Prospector Started ===
|
||||
[2026-03-13 13:50:49] === Sales Prospector Started ===
|
||||
[2026-03-13 13:51:49] === Sales Prospector Started ===
|
||||
[2026-03-13 13:52:50] === Sales Prospector Started ===
|
||||
[2026-03-13 13:53:50] === Sales Prospector Started ===
|
||||
[2026-03-13 13:54:50] === Sales Prospector Started ===
|
||||
[2026-03-13 13:55:50] === Sales Prospector Started ===
|
||||
[2026-03-13 13:56:50] === Sales Prospector Started ===
|
||||
[2026-03-13 13:57:50] === Sales Prospector Started ===
|
||||
[2026-03-13 13:58:50] === Sales Prospector Started ===
|
||||
[2026-03-13 13:59:51] === Sales Prospector Started ===
|
||||
[2026-03-13 14:00:51] === Sales Prospector Started ===
|
||||
[2026-03-13 14:01:51] === Sales Prospector Started ===
|
||||
[2026-03-13 14:02:51] === Sales Prospector Started ===
|
||||
[2026-03-13 14:03:51] === Sales Prospector Started ===
|
||||
[2026-03-13 14:04:51] === Sales Prospector Started ===
|
||||
[2026-03-13 14:05:51] === Sales Prospector Started ===
|
||||
[2026-03-13 14:06:51] === Sales Prospector Started ===
|
||||
[2026-03-13 14:07:51] === Sales Prospector Started ===
|
||||
[2026-03-13 14:07:51] Metro: Orlando FL
|
||||
[2026-03-13 14:08:51] === Sales Prospector Started ===
|
||||
[2026-03-13 14:08:51] Metro: Orlando FL
|
||||
[2026-03-13 14:09:39] === Sales Prospector Started ===
|
||||
[2026-03-13 14:09:39] Metro: Orlando FL
|
||||
[2026-03-13 14:36:36] === Sales Prospector Started ===
|
||||
[2026-03-13 14:36:36] Throttle: 10min business / 5min overnight
|
||||
[2026-03-13 14:36:36] === CYCLE 1: Orlando FL ===
|
||||
[2026-03-13 14:36:36] SEARCH: Orlando FL HOA board
|
||||
[2026-03-13 14:36:36] THROTTLE: sleeping 600s
|
||||
[2026-03-13 14:39:16] === Sales Prospector Started ===
|
||||
[2026-03-13 14:39:16] Throttle: 10min business / 5min overnight
|
||||
[2026-03-13 14:39:16] === CYCLE 1: Orlando FL ===
|
||||
[2026-03-13 14:39:16] SEARCH: Orlando FL HOA board
|
||||
[2026-03-13 14:39:16] THROTTLE: sleeping 600s
|
||||
[2026-03-13 14:41:58] === Sales Prospector Started ===
|
||||
[2026-03-13 14:41:58] Throttle: 10min business / 5min overnight
|
||||
[2026-03-13 14:41:58] === CYCLE 1: Orlando FL ===
|
||||
[2026-03-13 14:41:58] SEARCH: Orlando FL HOA board
|
||||
[2026-03-13 14:41:58] THROTTLE: sleeping 600s
|
||||
[2026-03-13 14:45:13] === Sales Prospector Started ===
|
||||
[2026-03-13 14:45:13] Throttle: 10min business / 5min overnight
|
||||
[2026-03-13 14:45:13] === CYCLE 1: Orlando FL ===
|
||||
[2026-03-13 14:45:13] SEARCH: Orlando FL HOA board
|
||||
[2026-03-13 14:45:13] THROTTLE: sleeping 600s
|
||||
[2026-03-13 14:50:44] === Sales Prospector Started ===
|
||||
[2026-03-13 14:50:44] Throttle: 10min business hours / 5min overnight
|
||||
[2026-03-13 14:50:44] CYCLE 1: Orlando FL
|
||||
[2026-03-13 14:50:44] Searching: Orlando FL HOA board
|
||||
[2026-03-13 14:50:44] Sleeping 600s (throttle)...
|
||||
[2026-03-13 15:00:44] Cycle complete
|
||||
[2026-03-13 15:00:44] CYCLE 2: Phoenix AZ
|
||||
[2026-03-13 15:00:44] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 15:00:44] Sleeping 600s (throttle)...
|
||||
[2026-03-13 15:10:44] Cycle complete
|
||||
[2026-03-13 15:10:44] CYCLE 3: Charlotte NC
|
||||
[2026-03-13 15:10:44] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 15:10:44] Sleeping 600s (throttle)...
|
||||
[2026-03-13 18:25:56] === Sales Prospector Started ===
|
||||
[2026-03-13 18:25:56] Throttle: 10min business hours / 5min overnight
|
||||
[2026-03-13 18:25:56] CYCLE 1: Charlotte NC
|
||||
[2026-03-13 18:25:56] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 18:25:56] Sleeping 300s (throttle)...
|
||||
[2026-03-13 18:30:56] Cycle complete
|
||||
[2026-03-13 18:30:56] CYCLE 2: Atlanta GA
|
||||
[2026-03-13 18:30:56] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 18:30:56] Sleeping 300s (throttle)...
|
||||
[2026-03-13 18:35:56] Cycle complete
|
||||
[2026-03-13 18:35:56] CYCLE 3: Orlando FL
|
||||
[2026-03-13 18:35:56] Searching: Orlando FL HOA board
|
||||
[2026-03-13 18:35:56] Sleeping 300s (throttle)...
|
||||
[2026-03-13 18:40:56] Cycle complete
|
||||
[2026-03-13 18:40:56] CYCLE 4: Phoenix AZ
|
||||
[2026-03-13 18:40:56] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 18:40:56] Sleeping 300s (throttle)...
|
||||
[2026-03-13 18:45:57] Cycle complete
|
||||
[2026-03-13 18:45:57] CYCLE 5: Charlotte NC
|
||||
[2026-03-13 18:45:57] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 18:45:57] Sleeping 300s (throttle)...
|
||||
[2026-03-13 18:50:57] Cycle complete
|
||||
[2026-03-13 18:50:57] CYCLE 6: Atlanta GA
|
||||
[2026-03-13 18:50:57] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 18:50:57] Sleeping 300s (throttle)...
|
||||
[2026-03-13 18:55:57] Cycle complete
|
||||
[2026-03-13 18:55:57] CYCLE 7: Orlando FL
|
||||
[2026-03-13 18:55:57] Searching: Orlando FL HOA board
|
||||
[2026-03-13 18:55:57] Sleeping 300s (throttle)...
|
||||
[2026-03-13 19:00:57] Cycle complete
|
||||
[2026-03-13 19:00:57] CYCLE 8: Phoenix AZ
|
||||
[2026-03-13 19:00:57] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 19:00:57] Sleeping 300s (throttle)...
|
||||
[2026-03-13 19:05:57] Cycle complete
|
||||
[2026-03-13 19:05:57] CYCLE 9: Charlotte NC
|
||||
[2026-03-13 19:05:57] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 19:05:57] Sleeping 300s (throttle)...
|
||||
[2026-03-13 19:10:58] Cycle complete
|
||||
[2026-03-13 19:10:58] CYCLE 10: Atlanta GA
|
||||
[2026-03-13 19:10:58] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 19:10:58] Sleeping 300s (throttle)...
|
||||
[2026-03-13 19:15:58] Cycle complete
|
||||
[2026-03-13 19:15:58] CYCLE 11: Orlando FL
|
||||
[2026-03-13 19:15:58] Searching: Orlando FL HOA board
|
||||
[2026-03-13 19:15:58] Sleeping 300s (throttle)...
|
||||
[2026-03-13 19:20:58] Cycle complete
|
||||
[2026-03-13 19:20:58] CYCLE 12: Phoenix AZ
|
||||
[2026-03-13 19:20:58] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 19:20:58] Sleeping 300s (throttle)...
|
||||
[2026-03-13 19:25:58] Cycle complete
|
||||
[2026-03-13 19:25:58] CYCLE 13: Charlotte NC
|
||||
[2026-03-13 19:25:58] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 19:25:58] Sleeping 300s (throttle)...
|
||||
[2026-03-13 19:30:58] Cycle complete
|
||||
[2026-03-13 19:30:58] CYCLE 14: Atlanta GA
|
||||
[2026-03-13 19:30:58] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 19:30:58] Sleeping 300s (throttle)...
|
||||
[2026-03-13 19:35:59] Cycle complete
|
||||
[2026-03-13 19:35:59] CYCLE 15: Orlando FL
|
||||
[2026-03-13 19:35:59] Searching: Orlando FL HOA board
|
||||
[2026-03-13 19:35:59] Sleeping 300s (throttle)...
|
||||
[2026-03-13 19:40:59] Cycle complete
|
||||
[2026-03-13 19:40:59] CYCLE 16: Phoenix AZ
|
||||
[2026-03-13 19:40:59] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 19:40:59] Sleeping 300s (throttle)...
|
||||
[2026-03-13 19:45:59] Cycle complete
|
||||
[2026-03-13 19:45:59] CYCLE 17: Charlotte NC
|
||||
[2026-03-13 19:45:59] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 19:45:59] Sleeping 300s (throttle)...
|
||||
[2026-03-13 19:50:59] Cycle complete
|
||||
[2026-03-13 19:50:59] CYCLE 18: Atlanta GA
|
||||
[2026-03-13 19:50:59] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 19:50:59] Sleeping 300s (throttle)...
|
||||
[2026-03-13 19:55:59] Cycle complete
|
||||
[2026-03-13 19:55:59] CYCLE 19: Orlando FL
|
||||
[2026-03-13 19:55:59] Searching: Orlando FL HOA board
|
||||
[2026-03-13 19:55:59] Sleeping 300s (throttle)...
|
||||
[2026-03-13 20:00:59] Cycle complete
|
||||
[2026-03-13 20:00:59] CYCLE 20: Phoenix AZ
|
||||
[2026-03-13 20:00:59] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 20:00:59] Sleeping 300s (throttle)...
|
||||
[2026-03-13 20:06:00] Cycle complete
|
||||
[2026-03-13 20:06:00] CYCLE 21: Charlotte NC
|
||||
[2026-03-13 20:06:00] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 20:06:00] Sleeping 300s (throttle)...
|
||||
[2026-03-13 20:11:00] Cycle complete
|
||||
[2026-03-13 20:11:00] CYCLE 22: Atlanta GA
|
||||
[2026-03-13 20:11:00] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 20:11:00] Sleeping 300s (throttle)...
|
||||
[2026-03-13 20:16:00] Cycle complete
|
||||
[2026-03-13 20:16:00] CYCLE 23: Orlando FL
|
||||
[2026-03-13 20:16:00] Searching: Orlando FL HOA board
|
||||
[2026-03-13 20:16:00] Sleeping 300s (throttle)...
|
||||
[2026-03-13 20:21:00] Cycle complete
|
||||
[2026-03-13 20:21:00] CYCLE 24: Phoenix AZ
|
||||
[2026-03-13 20:21:00] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 20:21:00] Sleeping 300s (throttle)...
|
||||
[2026-03-13 20:26:00] Cycle complete
|
||||
[2026-03-13 20:26:00] CYCLE 25: Charlotte NC
|
||||
[2026-03-13 20:26:00] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 20:26:00] Sleeping 300s (throttle)...
|
||||
[2026-03-13 20:31:00] Cycle complete
|
||||
[2026-03-13 20:31:00] CYCLE 26: Atlanta GA
|
||||
[2026-03-13 20:31:00] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 20:31:01] Sleeping 300s (throttle)...
|
||||
[2026-03-13 20:36:01] Cycle complete
|
||||
[2026-03-13 20:36:01] CYCLE 27: Orlando FL
|
||||
[2026-03-13 20:36:01] Searching: Orlando FL HOA board
|
||||
[2026-03-13 20:36:01] Sleeping 300s (throttle)...
|
||||
[2026-03-13 20:41:01] Cycle complete
|
||||
[2026-03-13 20:41:01] CYCLE 28: Phoenix AZ
|
||||
[2026-03-13 20:41:01] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 20:41:01] Sleeping 300s (throttle)...
|
||||
[2026-03-13 20:46:01] Cycle complete
|
||||
[2026-03-13 20:46:01] CYCLE 29: Charlotte NC
|
||||
[2026-03-13 20:46:01] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 20:46:01] Sleeping 300s (throttle)...
|
||||
[2026-03-13 20:51:01] Cycle complete
|
||||
[2026-03-13 20:51:01] CYCLE 30: Atlanta GA
|
||||
[2026-03-13 20:51:01] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 20:51:01] Sleeping 300s (throttle)...
|
||||
[2026-03-13 20:56:02] Cycle complete
|
||||
[2026-03-13 20:56:02] CYCLE 31: Orlando FL
|
||||
[2026-03-13 20:56:02] Searching: Orlando FL HOA board
|
||||
[2026-03-13 20:56:02] Sleeping 300s (throttle)...
|
||||
[2026-03-13 21:01:02] Cycle complete
|
||||
[2026-03-13 21:01:02] CYCLE 32: Phoenix AZ
|
||||
[2026-03-13 21:01:02] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 21:01:02] Sleeping 300s (throttle)...
|
||||
[2026-03-13 21:06:02] Cycle complete
|
||||
[2026-03-13 21:06:02] CYCLE 33: Charlotte NC
|
||||
[2026-03-13 21:06:02] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 21:06:02] Sleeping 300s (throttle)...
|
||||
[2026-03-13 21:11:02] Cycle complete
|
||||
[2026-03-13 21:11:02] CYCLE 34: Atlanta GA
|
||||
[2026-03-13 21:11:02] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 21:11:02] Sleeping 300s (throttle)...
|
||||
[2026-03-13 21:16:02] Cycle complete
|
||||
[2026-03-13 21:16:02] CYCLE 35: Orlando FL
|
||||
[2026-03-13 21:16:02] Searching: Orlando FL HOA board
|
||||
[2026-03-13 21:16:02] Sleeping 300s (throttle)...
|
||||
[2026-03-13 21:21:03] Cycle complete
|
||||
[2026-03-13 21:21:03] CYCLE 36: Phoenix AZ
|
||||
[2026-03-13 21:21:03] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 21:21:03] Sleeping 300s (throttle)...
|
||||
[2026-03-13 21:26:03] Cycle complete
|
||||
[2026-03-13 21:26:03] CYCLE 37: Charlotte NC
|
||||
[2026-03-13 21:26:03] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 21:26:03] Sleeping 300s (throttle)...
|
||||
[2026-03-13 21:31:03] Cycle complete
|
||||
[2026-03-13 21:31:03] CYCLE 38: Atlanta GA
|
||||
[2026-03-13 21:31:03] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 21:31:03] Sleeping 300s (throttle)...
|
||||
[2026-03-13 21:36:03] Cycle complete
|
||||
[2026-03-13 21:36:03] CYCLE 39: Orlando FL
|
||||
[2026-03-13 21:36:03] Searching: Orlando FL HOA board
|
||||
[2026-03-13 21:36:03] Sleeping 300s (throttle)...
|
||||
[2026-03-13 21:41:03] Cycle complete
|
||||
[2026-03-13 21:41:03] CYCLE 40: Phoenix AZ
|
||||
[2026-03-13 21:41:03] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 21:41:03] Sleeping 300s (throttle)...
|
||||
[2026-03-13 21:46:03] Cycle complete
|
||||
[2026-03-13 21:46:03] CYCLE 41: Charlotte NC
|
||||
[2026-03-13 21:46:03] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 21:46:03] Sleeping 300s (throttle)...
|
||||
[2026-03-13 21:51:03] Cycle complete
|
||||
[2026-03-13 21:51:03] CYCLE 42: Atlanta GA
|
||||
[2026-03-13 21:51:03] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 21:51:03] Sleeping 300s (throttle)...
|
||||
[2026-03-13 21:56:04] Cycle complete
|
||||
[2026-03-13 21:56:04] CYCLE 43: Orlando FL
|
||||
[2026-03-13 21:56:04] Searching: Orlando FL HOA board
|
||||
[2026-03-13 21:56:04] Sleeping 300s (throttle)...
|
||||
[2026-03-13 22:01:04] Cycle complete
|
||||
[2026-03-13 22:01:04] CYCLE 44: Phoenix AZ
|
||||
[2026-03-13 22:01:04] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 22:01:04] Sleeping 300s (throttle)...
|
||||
[2026-03-13 22:06:04] Cycle complete
|
||||
[2026-03-13 22:06:04] CYCLE 45: Charlotte NC
|
||||
[2026-03-13 22:06:04] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 22:06:04] Sleeping 300s (throttle)...
|
||||
[2026-03-13 22:11:04] Cycle complete
|
||||
[2026-03-13 22:11:04] CYCLE 46: Atlanta GA
|
||||
[2026-03-13 22:11:04] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 22:11:04] Sleeping 300s (throttle)...
|
||||
[2026-03-13 22:16:04] Cycle complete
|
||||
[2026-03-13 22:16:04] CYCLE 47: Orlando FL
|
||||
[2026-03-13 22:16:04] Searching: Orlando FL HOA board
|
||||
[2026-03-13 22:16:04] Sleeping 300s (throttle)...
|
||||
[2026-03-13 22:21:05] Cycle complete
|
||||
[2026-03-13 22:21:05] CYCLE 48: Phoenix AZ
|
||||
[2026-03-13 22:21:05] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 22:21:05] Sleeping 300s (throttle)...
|
||||
[2026-03-13 22:26:05] Cycle complete
|
||||
[2026-03-13 22:26:05] CYCLE 49: Charlotte NC
|
||||
[2026-03-13 22:26:05] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 22:26:05] Sleeping 300s (throttle)...
|
||||
[2026-03-13 22:31:05] Cycle complete
|
||||
[2026-03-13 22:31:05] CYCLE 50: Atlanta GA
|
||||
[2026-03-13 22:31:05] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 22:31:05] Sleeping 300s (throttle)...
|
||||
[2026-03-13 22:36:05] Cycle complete
|
||||
[2026-03-13 22:36:05] CYCLE 51: Orlando FL
|
||||
[2026-03-13 22:36:05] Searching: Orlando FL HOA board
|
||||
[2026-03-13 22:36:05] Sleeping 300s (throttle)...
|
||||
[2026-03-13 22:41:05] Cycle complete
|
||||
[2026-03-13 22:41:05] CYCLE 52: Phoenix AZ
|
||||
[2026-03-13 22:41:05] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 22:41:05] Sleeping 300s (throttle)...
|
||||
[2026-03-13 22:46:06] Cycle complete
|
||||
[2026-03-13 22:46:06] CYCLE 53: Charlotte NC
|
||||
[2026-03-13 22:46:06] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 22:46:06] Sleeping 300s (throttle)...
|
||||
[2026-03-13 22:51:06] Cycle complete
|
||||
[2026-03-13 22:51:06] CYCLE 54: Atlanta GA
|
||||
[2026-03-13 22:51:06] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 22:51:06] Sleeping 300s (throttle)...
|
||||
[2026-03-13 22:56:06] Cycle complete
|
||||
[2026-03-13 22:56:06] CYCLE 55: Orlando FL
|
||||
[2026-03-13 22:56:06] Searching: Orlando FL HOA board
|
||||
[2026-03-13 22:56:06] Sleeping 300s (throttle)...
|
||||
[2026-03-13 23:01:06] Cycle complete
|
||||
[2026-03-13 23:01:06] CYCLE 56: Phoenix AZ
|
||||
[2026-03-13 23:01:06] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 23:01:06] Sleeping 300s (throttle)...
|
||||
[2026-03-13 23:06:06] Cycle complete
|
||||
[2026-03-13 23:06:06] CYCLE 57: Charlotte NC
|
||||
[2026-03-13 23:06:06] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 23:06:06] Sleeping 300s (throttle)...
|
||||
[2026-03-13 23:11:07] Cycle complete
|
||||
[2026-03-13 23:11:07] CYCLE 58: Atlanta GA
|
||||
[2026-03-13 23:11:07] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 23:11:07] Sleeping 300s (throttle)...
|
||||
[2026-03-13 23:16:07] Cycle complete
|
||||
[2026-03-13 23:16:07] CYCLE 59: Orlando FL
|
||||
[2026-03-13 23:16:07] Searching: Orlando FL HOA board
|
||||
[2026-03-13 23:16:07] Sleeping 300s (throttle)...
|
||||
[2026-03-13 23:21:07] Cycle complete
|
||||
[2026-03-13 23:21:07] CYCLE 60: Phoenix AZ
|
||||
[2026-03-13 23:21:07] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 23:21:07] Sleeping 300s (throttle)...
|
||||
[2026-03-13 23:26:07] Cycle complete
|
||||
[2026-03-13 23:26:07] CYCLE 61: Charlotte NC
|
||||
[2026-03-13 23:26:07] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 23:26:07] Sleeping 300s (throttle)...
|
||||
[2026-03-13 23:31:07] Cycle complete
|
||||
[2026-03-13 23:31:07] CYCLE 62: Atlanta GA
|
||||
[2026-03-13 23:31:07] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 23:31:07] Sleeping 300s (throttle)...
|
||||
[2026-03-13 23:36:08] Cycle complete
|
||||
[2026-03-13 23:36:08] CYCLE 63: Orlando FL
|
||||
[2026-03-13 23:36:08] Searching: Orlando FL HOA board
|
||||
[2026-03-13 23:36:08] Sleeping 300s (throttle)...
|
||||
[2026-03-13 23:41:08] Cycle complete
|
||||
[2026-03-13 23:41:08] CYCLE 64: Phoenix AZ
|
||||
[2026-03-13 23:41:08] Searching: Phoenix AZ HOA board
|
||||
[2026-03-13 23:41:08] Sleeping 300s (throttle)...
|
||||
[2026-03-13 23:46:08] Cycle complete
|
||||
[2026-03-13 23:46:08] CYCLE 65: Charlotte NC
|
||||
[2026-03-13 23:46:08] Searching: Charlotte NC HOA board
|
||||
[2026-03-13 23:46:08] Sleeping 300s (throttle)...
|
||||
[2026-03-13 23:51:08] Cycle complete
|
||||
[2026-03-13 23:51:08] CYCLE 66: Atlanta GA
|
||||
[2026-03-13 23:51:08] Searching: Atlanta GA HOA board
|
||||
[2026-03-13 23:51:08] Sleeping 300s (throttle)...
|
||||
[2026-03-13 23:56:08] Cycle complete
|
||||
[2026-03-13 23:56:08] CYCLE 67: Orlando FL
|
||||
[2026-03-13 23:56:08] Searching: Orlando FL HOA board
|
||||
[2026-03-13 23:56:08] Sleeping 300s (throttle)...
|
||||
[2026-03-14 00:01:09] Cycle complete
|
||||
[2026-03-14 00:01:09] CYCLE 68: Phoenix AZ
|
||||
[2026-03-14 00:01:09] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 00:01:09] Sleeping 300s (throttle)...
|
||||
[2026-03-14 00:06:09] Cycle complete
|
||||
[2026-03-14 00:06:09] CYCLE 69: Charlotte NC
|
||||
[2026-03-14 00:06:09] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 00:06:09] Sleeping 300s (throttle)...
|
||||
[2026-03-14 00:11:09] Cycle complete
|
||||
[2026-03-14 00:11:09] CYCLE 70: Atlanta GA
|
||||
[2026-03-14 00:11:09] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 00:11:09] Sleeping 300s (throttle)...
|
||||
[2026-03-14 00:16:09] Cycle complete
|
||||
[2026-03-14 00:16:09] CYCLE 71: Orlando FL
|
||||
[2026-03-14 00:16:09] Searching: Orlando FL HOA board
|
||||
[2026-03-14 00:16:09] Sleeping 300s (throttle)...
|
||||
[2026-03-14 00:21:09] Cycle complete
|
||||
[2026-03-14 00:21:09] CYCLE 72: Phoenix AZ
|
||||
[2026-03-14 00:21:09] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 00:21:09] Sleeping 300s (throttle)...
|
||||
[2026-03-14 00:26:10] Cycle complete
|
||||
[2026-03-14 00:26:10] CYCLE 73: Charlotte NC
|
||||
[2026-03-14 00:26:10] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 00:26:10] Sleeping 300s (throttle)...
|
||||
[2026-03-14 00:31:10] Cycle complete
|
||||
[2026-03-14 00:31:10] CYCLE 74: Atlanta GA
|
||||
[2026-03-14 00:31:10] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 00:31:10] Sleeping 300s (throttle)...
|
||||
[2026-03-14 00:36:10] Cycle complete
|
||||
[2026-03-14 00:36:10] CYCLE 75: Orlando FL
|
||||
[2026-03-14 00:36:10] Searching: Orlando FL HOA board
|
||||
[2026-03-14 00:36:10] Sleeping 300s (throttle)...
|
||||
[2026-03-14 00:41:10] Cycle complete
|
||||
[2026-03-14 00:41:10] CYCLE 76: Phoenix AZ
|
||||
[2026-03-14 00:41:10] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 00:41:10] Sleeping 300s (throttle)...
|
||||
[2026-03-14 00:46:10] Cycle complete
|
||||
[2026-03-14 00:46:10] CYCLE 77: Charlotte NC
|
||||
[2026-03-14 00:46:10] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 00:46:10] Sleeping 300s (throttle)...
|
||||
[2026-03-14 00:51:11] Cycle complete
|
||||
[2026-03-14 00:51:11] CYCLE 78: Atlanta GA
|
||||
[2026-03-14 00:51:11] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 00:51:11] Sleeping 300s (throttle)...
|
||||
[2026-03-14 00:56:11] Cycle complete
|
||||
[2026-03-14 00:56:11] CYCLE 79: Orlando FL
|
||||
[2026-03-14 00:56:11] Searching: Orlando FL HOA board
|
||||
[2026-03-14 00:56:11] Sleeping 300s (throttle)...
|
||||
[2026-03-14 01:01:11] Cycle complete
|
||||
[2026-03-14 01:01:11] CYCLE 80: Phoenix AZ
|
||||
[2026-03-14 01:01:11] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 01:01:11] Sleeping 300s (throttle)...
|
||||
[2026-03-14 01:06:11] Cycle complete
|
||||
[2026-03-14 01:06:11] CYCLE 81: Charlotte NC
|
||||
[2026-03-14 01:06:11] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 01:06:11] Sleeping 300s (throttle)...
|
||||
[2026-03-14 01:11:11] Cycle complete
|
||||
[2026-03-14 01:11:11] CYCLE 82: Atlanta GA
|
||||
[2026-03-14 01:11:11] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 01:11:11] Sleeping 300s (throttle)...
|
||||
[2026-03-14 01:16:12] Cycle complete
|
||||
[2026-03-14 01:16:12] CYCLE 83: Orlando FL
|
||||
[2026-03-14 01:16:12] Searching: Orlando FL HOA board
|
||||
[2026-03-14 01:16:12] Sleeping 300s (throttle)...
|
||||
[2026-03-14 01:21:12] Cycle complete
|
||||
[2026-03-14 01:21:12] CYCLE 84: Phoenix AZ
|
||||
[2026-03-14 01:21:12] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 01:21:12] Sleeping 300s (throttle)...
|
||||
[2026-03-14 01:26:12] Cycle complete
|
||||
[2026-03-14 01:26:12] CYCLE 85: Charlotte NC
|
||||
[2026-03-14 01:26:12] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 01:26:12] Sleeping 300s (throttle)...
|
||||
[2026-03-14 01:31:12] Cycle complete
|
||||
[2026-03-14 01:31:12] CYCLE 86: Atlanta GA
|
||||
[2026-03-14 01:31:12] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 01:31:12] Sleeping 300s (throttle)...
|
||||
[2026-03-14 01:36:12] Cycle complete
|
||||
[2026-03-14 01:36:12] CYCLE 87: Orlando FL
|
||||
[2026-03-14 01:36:12] Searching: Orlando FL HOA board
|
||||
[2026-03-14 01:36:12] Sleeping 300s (throttle)...
|
||||
[2026-03-14 01:41:13] Cycle complete
|
||||
[2026-03-14 01:41:13] CYCLE 88: Phoenix AZ
|
||||
[2026-03-14 01:41:13] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 01:41:13] Sleeping 300s (throttle)...
|
||||
[2026-03-14 01:46:13] Cycle complete
|
||||
[2026-03-14 01:46:13] CYCLE 89: Charlotte NC
|
||||
[2026-03-14 01:46:13] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 01:46:13] Sleeping 300s (throttle)...
|
||||
[2026-03-14 01:51:13] Cycle complete
|
||||
[2026-03-14 01:51:13] CYCLE 90: Atlanta GA
|
||||
[2026-03-14 01:51:13] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 01:51:13] Sleeping 300s (throttle)...
|
||||
[2026-03-14 01:56:13] Cycle complete
|
||||
[2026-03-14 01:56:13] CYCLE 91: Orlando FL
|
||||
[2026-03-14 01:56:13] Searching: Orlando FL HOA board
|
||||
[2026-03-14 01:56:13] Sleeping 300s (throttle)...
|
||||
[2026-03-14 02:01:13] Cycle complete
|
||||
[2026-03-14 02:01:13] CYCLE 92: Phoenix AZ
|
||||
[2026-03-14 02:01:13] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 02:01:13] Sleeping 300s (throttle)...
|
||||
[2026-03-14 02:06:14] Cycle complete
|
||||
[2026-03-14 02:06:14] CYCLE 93: Charlotte NC
|
||||
[2026-03-14 02:06:14] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 02:06:14] Sleeping 300s (throttle)...
|
||||
[2026-03-14 02:11:14] Cycle complete
|
||||
[2026-03-14 02:11:14] CYCLE 94: Atlanta GA
|
||||
[2026-03-14 02:11:14] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 02:11:14] Sleeping 300s (throttle)...
|
||||
[2026-03-14 02:16:14] Cycle complete
|
||||
[2026-03-14 02:16:14] CYCLE 95: Orlando FL
|
||||
[2026-03-14 02:16:14] Searching: Orlando FL HOA board
|
||||
[2026-03-14 02:16:14] Sleeping 300s (throttle)...
|
||||
[2026-03-14 02:21:14] Cycle complete
|
||||
[2026-03-14 02:21:14] CYCLE 96: Phoenix AZ
|
||||
[2026-03-14 02:21:14] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 02:21:14] Sleeping 300s (throttle)...
|
||||
[2026-03-14 02:26:14] Cycle complete
|
||||
[2026-03-14 02:26:14] CYCLE 97: Charlotte NC
|
||||
[2026-03-14 02:26:14] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 02:26:14] Sleeping 300s (throttle)...
|
||||
[2026-03-14 02:31:15] Cycle complete
|
||||
[2026-03-14 02:31:15] CYCLE 98: Atlanta GA
|
||||
[2026-03-14 02:31:15] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 02:31:15] Sleeping 300s (throttle)...
|
||||
[2026-03-14 02:36:15] Cycle complete
|
||||
[2026-03-14 02:36:15] CYCLE 99: Orlando FL
|
||||
[2026-03-14 02:36:15] Searching: Orlando FL HOA board
|
||||
[2026-03-14 02:36:15] Sleeping 300s (throttle)...
|
||||
[2026-03-14 02:41:15] Cycle complete
|
||||
[2026-03-14 02:41:15] CYCLE 100: Phoenix AZ
|
||||
[2026-03-14 02:41:15] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 02:41:15] Sleeping 300s (throttle)...
|
||||
[2026-03-14 02:46:15] Cycle complete
|
||||
[2026-03-14 02:46:15] CYCLE 101: Charlotte NC
|
||||
[2026-03-14 02:46:15] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 02:46:15] Sleeping 300s (throttle)...
|
||||
[2026-03-14 02:51:15] Cycle complete
|
||||
[2026-03-14 02:51:15] CYCLE 102: Atlanta GA
|
||||
[2026-03-14 02:51:15] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 02:51:15] Sleeping 300s (throttle)...
|
||||
[2026-03-14 02:56:15] Cycle complete
|
||||
[2026-03-14 02:56:15] CYCLE 103: Orlando FL
|
||||
[2026-03-14 02:56:15] Searching: Orlando FL HOA board
|
||||
[2026-03-14 02:56:15] Sleeping 300s (throttle)...
|
||||
[2026-03-14 03:01:16] Cycle complete
|
||||
[2026-03-14 03:01:16] CYCLE 104: Phoenix AZ
|
||||
[2026-03-14 03:01:16] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 03:01:16] Sleeping 300s (throttle)...
|
||||
[2026-03-14 03:06:16] Cycle complete
|
||||
[2026-03-14 03:06:16] CYCLE 105: Charlotte NC
|
||||
[2026-03-14 03:06:16] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 03:06:16] Sleeping 300s (throttle)...
|
||||
[2026-03-14 03:11:16] Cycle complete
|
||||
[2026-03-14 03:11:16] CYCLE 106: Atlanta GA
|
||||
[2026-03-14 03:11:16] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 03:11:16] Sleeping 300s (throttle)...
|
||||
[2026-03-14 03:16:16] Cycle complete
|
||||
[2026-03-14 03:16:16] CYCLE 107: Orlando FL
|
||||
[2026-03-14 03:16:16] Searching: Orlando FL HOA board
|
||||
[2026-03-14 03:16:16] Sleeping 300s (throttle)...
|
||||
[2026-03-14 03:21:16] Cycle complete
|
||||
[2026-03-14 03:21:16] CYCLE 108: Phoenix AZ
|
||||
[2026-03-14 03:21:16] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 03:21:16] Sleeping 300s (throttle)...
|
||||
[2026-03-14 03:26:17] Cycle complete
|
||||
[2026-03-14 03:26:17] CYCLE 109: Charlotte NC
|
||||
[2026-03-14 03:26:17] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 03:26:17] Sleeping 300s (throttle)...
|
||||
[2026-03-14 03:31:17] Cycle complete
|
||||
[2026-03-14 03:31:17] CYCLE 110: Atlanta GA
|
||||
[2026-03-14 03:31:17] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 03:31:17] Sleeping 300s (throttle)...
|
||||
[2026-03-14 03:36:17] Cycle complete
|
||||
[2026-03-14 03:36:17] CYCLE 111: Orlando FL
|
||||
[2026-03-14 03:36:17] Searching: Orlando FL HOA board
|
||||
[2026-03-14 03:36:17] Sleeping 300s (throttle)...
|
||||
[2026-03-14 03:41:17] Cycle complete
|
||||
[2026-03-14 03:41:17] CYCLE 112: Phoenix AZ
|
||||
[2026-03-14 03:41:17] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 03:41:17] Sleeping 300s (throttle)...
|
||||
[2026-03-14 03:46:17] Cycle complete
|
||||
[2026-03-14 03:46:17] CYCLE 113: Charlotte NC
|
||||
[2026-03-14 03:46:17] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 03:46:17] Sleeping 300s (throttle)...
|
||||
[2026-03-14 03:51:18] Cycle complete
|
||||
[2026-03-14 03:51:18] CYCLE 114: Atlanta GA
|
||||
[2026-03-14 03:51:18] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 03:51:18] Sleeping 300s (throttle)...
|
||||
[2026-03-14 03:56:18] Cycle complete
|
||||
[2026-03-14 03:56:18] CYCLE 115: Orlando FL
|
||||
[2026-03-14 03:56:18] Searching: Orlando FL HOA board
|
||||
[2026-03-14 03:56:18] Sleeping 300s (throttle)...
|
||||
[2026-03-14 04:01:18] Cycle complete
|
||||
[2026-03-14 04:01:18] CYCLE 116: Phoenix AZ
|
||||
[2026-03-14 04:01:18] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 04:01:18] Sleeping 300s (throttle)...
|
||||
[2026-03-14 04:06:18] Cycle complete
|
||||
[2026-03-14 04:06:18] CYCLE 117: Charlotte NC
|
||||
[2026-03-14 04:06:18] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 04:06:18] Sleeping 300s (throttle)...
|
||||
[2026-03-14 04:11:18] Cycle complete
|
||||
[2026-03-14 04:11:18] CYCLE 118: Atlanta GA
|
||||
[2026-03-14 04:11:18] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 04:11:18] Sleeping 300s (throttle)...
|
||||
[2026-03-14 04:16:19] Cycle complete
|
||||
[2026-03-14 04:16:19] CYCLE 119: Orlando FL
|
||||
[2026-03-14 04:16:19] Searching: Orlando FL HOA board
|
||||
[2026-03-14 04:16:19] Sleeping 300s (throttle)...
|
||||
[2026-03-14 04:21:19] Cycle complete
|
||||
[2026-03-14 04:21:19] CYCLE 120: Phoenix AZ
|
||||
[2026-03-14 04:21:19] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 04:21:19] Sleeping 300s (throttle)...
|
||||
[2026-03-14 04:26:19] Cycle complete
|
||||
[2026-03-14 04:26:19] CYCLE 121: Charlotte NC
|
||||
[2026-03-14 04:26:19] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 04:26:19] Sleeping 300s (throttle)...
|
||||
[2026-03-14 04:31:19] Cycle complete
|
||||
[2026-03-14 04:31:19] CYCLE 122: Atlanta GA
|
||||
[2026-03-14 04:31:19] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 04:31:19] Sleeping 300s (throttle)...
|
||||
[2026-03-14 04:36:19] Cycle complete
|
||||
[2026-03-14 04:36:19] CYCLE 123: Orlando FL
|
||||
[2026-03-14 04:36:19] Searching: Orlando FL HOA board
|
||||
[2026-03-14 04:36:19] Sleeping 300s (throttle)...
|
||||
[2026-03-14 04:41:19] Cycle complete
|
||||
[2026-03-14 04:41:19] CYCLE 124: Phoenix AZ
|
||||
[2026-03-14 04:41:19] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 04:41:19] Sleeping 300s (throttle)...
|
||||
[2026-03-14 04:46:19] Cycle complete
|
||||
[2026-03-14 04:46:19] CYCLE 125: Charlotte NC
|
||||
[2026-03-14 04:46:19] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 04:46:19] Sleeping 300s (throttle)...
|
||||
[2026-03-14 04:51:19] Cycle complete
|
||||
[2026-03-14 04:51:19] CYCLE 126: Atlanta GA
|
||||
[2026-03-14 04:51:19] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 04:51:19] Sleeping 300s (throttle)...
|
||||
[2026-03-14 04:56:19] Cycle complete
|
||||
[2026-03-14 04:56:20] CYCLE 127: Orlando FL
|
||||
[2026-03-14 04:56:20] Searching: Orlando FL HOA board
|
||||
[2026-03-14 04:56:20] Sleeping 300s (throttle)...
|
||||
[2026-03-14 05:01:20] Cycle complete
|
||||
[2026-03-14 05:01:20] CYCLE 128: Phoenix AZ
|
||||
[2026-03-14 05:01:20] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 05:01:20] Sleeping 300s (throttle)...
|
||||
[2026-03-14 05:06:20] Cycle complete
|
||||
[2026-03-14 05:06:20] CYCLE 129: Charlotte NC
|
||||
[2026-03-14 05:06:20] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 05:06:20] Sleeping 300s (throttle)...
|
||||
[2026-03-14 05:11:20] Cycle complete
|
||||
[2026-03-14 05:11:20] CYCLE 130: Atlanta GA
|
||||
[2026-03-14 05:11:20] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 05:11:20] Sleeping 300s (throttle)...
|
||||
[2026-03-14 05:16:20] Cycle complete
|
||||
[2026-03-14 05:16:20] CYCLE 131: Orlando FL
|
||||
[2026-03-14 05:16:20] Searching: Orlando FL HOA board
|
||||
[2026-03-14 05:16:20] Sleeping 300s (throttle)...
|
||||
[2026-03-14 05:21:20] Cycle complete
|
||||
[2026-03-14 05:21:20] CYCLE 132: Phoenix AZ
|
||||
[2026-03-14 05:21:20] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 05:21:20] Sleeping 300s (throttle)...
|
||||
[2026-03-14 05:26:20] Cycle complete
|
||||
[2026-03-14 05:26:20] CYCLE 133: Charlotte NC
|
||||
[2026-03-14 05:26:20] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 05:26:20] Sleeping 300s (throttle)...
|
||||
[2026-03-14 05:31:21] Cycle complete
|
||||
[2026-03-14 05:31:21] CYCLE 134: Atlanta GA
|
||||
[2026-03-14 05:31:21] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 05:31:21] Sleeping 300s (throttle)...
|
||||
[2026-03-14 05:36:21] Cycle complete
|
||||
[2026-03-14 05:36:21] CYCLE 135: Orlando FL
|
||||
[2026-03-14 05:36:21] Searching: Orlando FL HOA board
|
||||
[2026-03-14 05:36:21] Sleeping 300s (throttle)...
|
||||
[2026-03-14 05:41:21] Cycle complete
|
||||
[2026-03-14 05:41:21] CYCLE 136: Phoenix AZ
|
||||
[2026-03-14 05:41:21] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 05:41:21] Sleeping 300s (throttle)...
|
||||
[2026-03-14 05:46:21] Cycle complete
|
||||
[2026-03-14 05:46:21] CYCLE 137: Charlotte NC
|
||||
[2026-03-14 05:46:21] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 05:46:21] Sleeping 300s (throttle)...
|
||||
[2026-03-14 05:51:21] Cycle complete
|
||||
[2026-03-14 05:51:21] CYCLE 138: Atlanta GA
|
||||
[2026-03-14 05:51:21] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 05:51:21] Sleeping 300s (throttle)...
|
||||
[2026-03-14 05:56:21] Cycle complete
|
||||
[2026-03-14 05:56:21] CYCLE 139: Orlando FL
|
||||
[2026-03-14 05:56:21] Searching: Orlando FL HOA board
|
||||
[2026-03-14 05:56:21] Sleeping 300s (throttle)...
|
||||
[2026-03-14 06:01:22] Cycle complete
|
||||
[2026-03-14 06:01:22] CYCLE 140: Phoenix AZ
|
||||
[2026-03-14 06:01:22] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 06:01:22] Sleeping 300s (throttle)...
|
||||
[2026-03-14 06:06:22] Cycle complete
|
||||
[2026-03-14 06:06:22] CYCLE 141: Charlotte NC
|
||||
[2026-03-14 06:06:22] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 06:06:22] Sleeping 300s (throttle)...
|
||||
[2026-03-14 06:11:22] Cycle complete
|
||||
[2026-03-14 06:11:22] CYCLE 142: Atlanta GA
|
||||
[2026-03-14 06:11:22] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 06:11:22] Sleeping 300s (throttle)...
|
||||
[2026-03-14 06:16:22] Cycle complete
|
||||
[2026-03-14 06:16:22] CYCLE 143: Orlando FL
|
||||
[2026-03-14 06:16:22] Searching: Orlando FL HOA board
|
||||
[2026-03-14 06:16:22] Sleeping 300s (throttle)...
|
||||
[2026-03-14 06:21:22] Cycle complete
|
||||
[2026-03-14 06:21:22] CYCLE 144: Phoenix AZ
|
||||
[2026-03-14 06:21:22] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 06:21:22] Sleeping 300s (throttle)...
|
||||
[2026-03-14 06:26:23] Cycle complete
|
||||
[2026-03-14 06:26:23] CYCLE 145: Charlotte NC
|
||||
[2026-03-14 06:26:23] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 06:26:23] Sleeping 300s (throttle)...
|
||||
[2026-03-14 06:31:23] Cycle complete
|
||||
[2026-03-14 06:31:23] CYCLE 146: Atlanta GA
|
||||
[2026-03-14 06:31:23] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 06:31:23] Sleeping 300s (throttle)...
|
||||
[2026-03-14 06:36:23] Cycle complete
|
||||
[2026-03-14 06:36:23] CYCLE 147: Orlando FL
|
||||
[2026-03-14 06:36:23] Searching: Orlando FL HOA board
|
||||
[2026-03-14 06:36:23] Sleeping 300s (throttle)...
|
||||
[2026-03-14 06:41:23] Cycle complete
|
||||
[2026-03-14 06:41:23] CYCLE 148: Phoenix AZ
|
||||
[2026-03-14 06:41:23] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 06:41:23] Sleeping 300s (throttle)...
|
||||
[2026-03-14 06:46:23] Cycle complete
|
||||
[2026-03-14 06:46:23] CYCLE 149: Charlotte NC
|
||||
[2026-03-14 06:46:23] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 06:46:23] Sleeping 300s (throttle)...
|
||||
[2026-03-14 06:51:23] Cycle complete
|
||||
[2026-03-14 06:51:23] CYCLE 150: Atlanta GA
|
||||
[2026-03-14 06:51:23] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 06:51:23] Sleeping 300s (throttle)...
|
||||
[2026-03-14 06:56:24] Cycle complete
|
||||
[2026-03-14 06:56:24] CYCLE 151: Orlando FL
|
||||
[2026-03-14 06:56:24] Searching: Orlando FL HOA board
|
||||
[2026-03-14 06:56:24] Sleeping 300s (throttle)...
|
||||
[2026-03-14 07:01:24] Cycle complete
|
||||
[2026-03-14 07:01:24] CYCLE 152: Phoenix AZ
|
||||
[2026-03-14 07:01:24] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 07:01:24] Sleeping 300s (throttle)...
|
||||
[2026-03-14 07:06:24] Cycle complete
|
||||
[2026-03-14 07:06:24] CYCLE 153: Charlotte NC
|
||||
[2026-03-14 07:06:24] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 07:06:24] Sleeping 300s (throttle)...
|
||||
[2026-03-14 07:11:24] Cycle complete
|
||||
[2026-03-14 07:11:24] CYCLE 154: Atlanta GA
|
||||
[2026-03-14 07:11:24] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 07:11:24] Sleeping 300s (throttle)...
|
||||
[2026-03-14 07:16:24] Cycle complete
|
||||
[2026-03-14 07:16:24] CYCLE 155: Orlando FL
|
||||
[2026-03-14 07:16:24] Searching: Orlando FL HOA board
|
||||
[2026-03-14 07:16:24] Sleeping 300s (throttle)...
|
||||
[2026-03-14 07:21:25] Cycle complete
|
||||
[2026-03-14 07:21:25] CYCLE 156: Phoenix AZ
|
||||
[2026-03-14 07:21:25] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 07:21:25] Sleeping 300s (throttle)...
|
||||
[2026-03-14 07:26:25] Cycle complete
|
||||
[2026-03-14 07:26:25] CYCLE 157: Charlotte NC
|
||||
[2026-03-14 07:26:25] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 07:26:25] Sleeping 300s (throttle)...
|
||||
[2026-03-14 07:31:25] Cycle complete
|
||||
[2026-03-14 07:31:25] CYCLE 158: Atlanta GA
|
||||
[2026-03-14 07:31:25] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 07:31:25] Sleeping 300s (throttle)...
|
||||
[2026-03-14 07:36:25] Cycle complete
|
||||
[2026-03-14 07:36:25] CYCLE 159: Orlando FL
|
||||
[2026-03-14 07:36:25] Searching: Orlando FL HOA board
|
||||
[2026-03-14 07:36:25] Sleeping 300s (throttle)...
|
||||
[2026-03-14 07:41:25] Cycle complete
|
||||
[2026-03-14 07:41:25] CYCLE 160: Phoenix AZ
|
||||
[2026-03-14 07:41:25] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 07:41:25] Sleeping 300s (throttle)...
|
||||
[2026-03-14 07:46:26] Cycle complete
|
||||
[2026-03-14 07:46:26] CYCLE 161: Charlotte NC
|
||||
[2026-03-14 07:46:26] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 07:46:26] Sleeping 300s (throttle)...
|
||||
[2026-03-14 07:51:26] Cycle complete
|
||||
[2026-03-14 07:51:26] CYCLE 162: Atlanta GA
|
||||
[2026-03-14 07:51:26] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 07:51:26] Sleeping 300s (throttle)...
|
||||
[2026-03-14 07:56:26] Cycle complete
|
||||
[2026-03-14 07:56:26] CYCLE 163: Orlando FL
|
||||
[2026-03-14 07:56:26] Searching: Orlando FL HOA board
|
||||
[2026-03-14 07:56:26] Sleeping 300s (throttle)...
|
||||
[2026-03-14 08:01:26] Cycle complete
|
||||
[2026-03-14 08:01:26] CYCLE 164: Phoenix AZ
|
||||
[2026-03-14 08:01:26] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 08:01:26] Sleeping 300s (throttle)...
|
||||
[2026-03-14 08:06:26] Cycle complete
|
||||
[2026-03-14 08:06:26] CYCLE 165: Charlotte NC
|
||||
[2026-03-14 08:06:26] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 08:06:26] Sleeping 300s (throttle)...
|
||||
[2026-03-14 08:11:27] Cycle complete
|
||||
[2026-03-14 08:11:27] CYCLE 166: Atlanta GA
|
||||
[2026-03-14 08:11:27] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 08:11:27] Sleeping 300s (throttle)...
|
||||
[2026-03-14 08:16:27] Cycle complete
|
||||
[2026-03-14 08:16:27] CYCLE 167: Orlando FL
|
||||
[2026-03-14 08:16:27] Searching: Orlando FL HOA board
|
||||
[2026-03-14 08:16:27] Sleeping 300s (throttle)...
|
||||
[2026-03-14 08:21:27] Cycle complete
|
||||
[2026-03-14 08:21:27] CYCLE 168: Phoenix AZ
|
||||
[2026-03-14 08:21:27] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 08:21:27] Sleeping 300s (throttle)...
|
||||
[2026-03-14 08:26:27] Cycle complete
|
||||
[2026-03-14 08:26:27] CYCLE 169: Charlotte NC
|
||||
[2026-03-14 08:26:27] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 08:26:27] Sleeping 300s (throttle)...
|
||||
[2026-03-14 08:31:27] Cycle complete
|
||||
[2026-03-14 08:31:27] CYCLE 170: Atlanta GA
|
||||
[2026-03-14 08:31:27] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 08:31:27] Sleeping 300s (throttle)...
|
||||
[2026-03-14 08:36:28] Cycle complete
|
||||
[2026-03-14 08:36:28] CYCLE 171: Orlando FL
|
||||
[2026-03-14 08:36:28] Searching: Orlando FL HOA board
|
||||
[2026-03-14 08:36:28] Sleeping 300s (throttle)...
|
||||
[2026-03-14 08:41:28] Cycle complete
|
||||
[2026-03-14 08:41:28] CYCLE 172: Phoenix AZ
|
||||
[2026-03-14 08:41:28] Searching: Phoenix AZ HOA board
|
||||
[2026-03-14 08:41:28] Sleeping 300s (throttle)...
|
||||
[2026-03-14 08:46:28] Cycle complete
|
||||
[2026-03-14 08:46:28] CYCLE 173: Charlotte NC
|
||||
[2026-03-14 08:46:28] Searching: Charlotte NC HOA board
|
||||
[2026-03-14 08:46:28] Sleeping 300s (throttle)...
|
||||
[2026-03-14 08:51:28] Cycle complete
|
||||
[2026-03-14 08:51:28] CYCLE 174: Atlanta GA
|
||||
[2026-03-14 08:51:28] Searching: Atlanta GA HOA board
|
||||
[2026-03-14 08:51:28] Sleeping 300s (throttle)...
|
||||
[2026-03-14 08:56:28] Cycle complete
|
||||
[2026-03-14 08:56:28] CYCLE 175: Orlando FL
|
||||
[2026-03-14 08:56:28] Searching: Orlando FL HOA board
|
||||
[2026-03-14 08:56:28] Sleeping 300s (throttle)...
|
||||
820
agents/sales-prospector/logs/prospector-v10-20260315.log
Normal file
820
agents/sales-prospector/logs/prospector-v10-20260315.log
Normal file
@@ -0,0 +1,820 @@
|
||||
[07:53:11] === Prospector v10 Started ===
|
||||
[07:53:11] CYCLE 1: Charlotte NC
|
||||
[07:53:11] SEARCH: Charlotte NC HOA
|
||||
[07:53:11] -> 0 URLs
|
||||
[07:53:20] SEARCH: Charlotte NC homeowners association
|
||||
[07:53:21] -> 0 URLs
|
||||
[07:53:34] SEARCH: Charlotte NC HOA management
|
||||
[07:53:35] -> 0 URLs
|
||||
[07:53:35] Done: 0 new, 0 total, 24.0s
|
||||
[07:54:05] CYCLE 2: Atlanta GA
|
||||
[07:54:05] SEARCH: Atlanta GA HOA
|
||||
[07:54:05] -> 0 URLs
|
||||
[07:54:13] SEARCH: Atlanta GA homeowners association
|
||||
[07:54:14] -> 0 URLs
|
||||
[07:54:27] SEARCH: Atlanta GA HOA management
|
||||
[07:54:28] -> 0 URLs
|
||||
[07:54:28] Done: 0 new, 0 total, 23.2s
|
||||
[07:54:58] CYCLE 3: Orlando FL
|
||||
[07:54:58] SEARCH: Orlando FL HOA
|
||||
[07:54:59] -> 0 URLs
|
||||
[07:55:08] SEARCH: Orlando FL homeowners association
|
||||
[07:55:08] -> 0 URLs
|
||||
[07:55:16] SEARCH: Orlando FL HOA management
|
||||
[07:55:17] -> 0 URLs
|
||||
[07:55:17] Done: 0 new, 0 total, 18.5s
|
||||
[07:55:47] CYCLE 4: Phoenix AZ
|
||||
[07:55:47] SEARCH: Phoenix AZ HOA
|
||||
[07:55:47] -> 0 URLs
|
||||
[07:55:56] SEARCH: Phoenix AZ homeowners association
|
||||
[07:55:57] -> 0 URLs
|
||||
[07:56:10] SEARCH: Phoenix AZ HOA management
|
||||
[07:56:10] -> 0 URLs
|
||||
[07:56:10] Done: 0 new, 0 total, 23.4s
|
||||
[07:56:40] CYCLE 5: Austin TX
|
||||
[07:56:40] SEARCH: Austin TX HOA
|
||||
[07:56:41] -> 0 URLs
|
||||
[07:56:53] SEARCH: Austin TX homeowners association
|
||||
[07:56:53] -> 0 URLs
|
||||
[07:57:04] SEARCH: Austin TX HOA management
|
||||
[07:57:05] -> 0 URLs
|
||||
[07:57:05] Done: 0 new, 0 total, 24.4s
|
||||
[07:57:35] CYCLE 6: Denver CO
|
||||
[07:57:35] SEARCH: Denver CO HOA
|
||||
[07:57:35] -> 0 URLs
|
||||
[07:57:48] SEARCH: Denver CO homeowners association
|
||||
[07:57:48] -> 0 URLs
|
||||
[07:57:56] SEARCH: Denver CO HOA management
|
||||
[07:57:57] -> 0 URLs
|
||||
[07:57:57] Done: 0 new, 0 total, 22.0s
|
||||
[07:58:27] CYCLE 7: Nashville TN
|
||||
[07:58:27] SEARCH: Nashville TN HOA
|
||||
[07:58:27] -> 0 URLs
|
||||
[07:58:37] SEARCH: Nashville TN homeowners association
|
||||
[07:58:38] -> 0 URLs
|
||||
[07:58:51] SEARCH: Nashville TN HOA management
|
||||
[07:58:52] -> 0 URLs
|
||||
[07:58:52] Done: 0 new, 0 total, 25.0s
|
||||
[07:59:22] CYCLE 8: Raleigh NC
|
||||
[07:59:22] SEARCH: Raleigh NC HOA
|
||||
[07:59:22] -> 0 URLs
|
||||
[07:59:30] SEARCH: Raleigh NC homeowners association
|
||||
[07:59:30] -> 0 URLs
|
||||
[07:59:45] SEARCH: Raleigh NC HOA management
|
||||
[07:59:45] -> 0 URLs
|
||||
[07:59:45] Done: 0 new, 0 total, 23.1s
|
||||
[08:00:15] CYCLE 9: Tampa FL
|
||||
[08:00:15] SEARCH: Tampa FL HOA
|
||||
[08:00:16] -> 0 URLs
|
||||
[08:00:23] SEARCH: Tampa FL homeowners association
|
||||
[08:00:24] -> 0 URLs
|
||||
[08:00:34] SEARCH: Tampa FL HOA management
|
||||
[08:00:35] -> 0 URLs
|
||||
[08:00:35] Done: 0 new, 0 total, 19.6s
|
||||
[08:01:05] CYCLE 10: Dallas TX
|
||||
[08:01:05] SEARCH: Dallas TX HOA
|
||||
[08:01:05] -> 0 URLs
|
||||
[08:01:17] SEARCH: Dallas TX homeowners association
|
||||
[08:01:18] -> 0 URLs
|
||||
[08:01:27] SEARCH: Dallas TX HOA management
|
||||
[08:01:27] -> 0 URLs
|
||||
[08:01:27] Done: 0 new, 0 total, 22.5s
|
||||
[08:01:58] CYCLE 11: Houston TX
|
||||
[08:01:58] SEARCH: Houston TX HOA
|
||||
[08:01:58] -> 0 URLs
|
||||
[08:02:12] SEARCH: Houston TX homeowners association
|
||||
[08:02:13] -> 0 URLs
|
||||
[08:02:22] SEARCH: Houston TX HOA management
|
||||
[08:02:22] -> 0 URLs
|
||||
[08:02:22] Done: 0 new, 0 total, 24.3s
|
||||
[08:02:52] CYCLE 12: Miami FL
|
||||
[08:02:52] SEARCH: Miami FL HOA
|
||||
[08:02:52] -> 0 URLs
|
||||
[08:03:00] SEARCH: Miami FL homeowners association
|
||||
[08:03:01] -> 0 URLs
|
||||
[08:03:15] SEARCH: Miami FL HOA management
|
||||
[08:03:15] -> 0 URLs
|
||||
[08:03:15] Done: 0 new, 0 total, 23.4s
|
||||
[08:03:46] CYCLE 13: Charlotte NC
|
||||
[08:03:46] SEARCH: Charlotte NC HOA
|
||||
[08:03:46] -> 0 URLs
|
||||
[08:03:54] SEARCH: Charlotte NC homeowners association
|
||||
[08:03:55] -> 0 URLs
|
||||
[08:04:04] SEARCH: Charlotte NC HOA management
|
||||
[08:04:04] -> 0 URLs
|
||||
[08:04:04] Done: 0 new, 0 total, 18.8s
|
||||
[08:04:35] CYCLE 14: Atlanta GA
|
||||
[08:04:35] SEARCH: Atlanta GA HOA
|
||||
[08:04:35] -> 0 URLs
|
||||
[08:04:48] SEARCH: Atlanta GA homeowners association
|
||||
[08:04:48] -> 0 URLs
|
||||
[08:04:57] SEARCH: Atlanta GA HOA management
|
||||
[08:04:57] -> 0 URLs
|
||||
[08:04:57] Done: 0 new, 0 total, 22.4s
|
||||
[08:05:27] CYCLE 15: Orlando FL
|
||||
[08:05:27] SEARCH: Orlando FL HOA
|
||||
[08:05:28] -> 0 URLs
|
||||
[08:05:41] SEARCH: Orlando FL homeowners association
|
||||
[08:05:42] -> 0 URLs
|
||||
[08:05:53] SEARCH: Orlando FL HOA management
|
||||
[08:05:53] -> 0 URLs
|
||||
[08:05:53] Done: 0 new, 0 total, 26.3s
|
||||
[08:06:24] CYCLE 16: Phoenix AZ
|
||||
[08:06:24] SEARCH: Phoenix AZ HOA
|
||||
[08:06:24] -> 0 URLs
|
||||
[08:06:34] SEARCH: Phoenix AZ homeowners association
|
||||
[08:06:35] -> 0 URLs
|
||||
[08:06:49] SEARCH: Phoenix AZ HOA management
|
||||
[08:06:49] -> 0 URLs
|
||||
[08:06:49] Done: 0 new, 0 total, 25.6s
|
||||
[08:07:19] CYCLE 17: Austin TX
|
||||
[08:07:19] SEARCH: Austin TX HOA
|
||||
[08:07:20] -> 0 URLs
|
||||
[08:07:29] SEARCH: Austin TX homeowners association
|
||||
[08:07:29] -> 0 URLs
|
||||
[08:07:42] SEARCH: Austin TX HOA management
|
||||
[08:07:42] -> 0 URLs
|
||||
[08:07:42] Done: 0 new, 0 total, 23.0s
|
||||
[08:08:12] CYCLE 18: Denver CO
|
||||
[08:08:12] SEARCH: Denver CO HOA
|
||||
[08:08:13] -> 0 URLs
|
||||
[08:08:27] SEARCH: Denver CO homeowners association
|
||||
[08:08:27] -> 0 URLs
|
||||
[08:08:36] SEARCH: Denver CO HOA management
|
||||
[08:08:36] -> 0 URLs
|
||||
[08:08:36] Done: 0 new, 0 total, 23.9s
|
||||
[08:09:06] CYCLE 19: Nashville TN
|
||||
[08:09:06] SEARCH: Nashville TN HOA
|
||||
[08:09:07] -> 0 URLs
|
||||
[08:09:19] SEARCH: Nashville TN homeowners association
|
||||
[08:09:20] -> 0 URLs
|
||||
[08:09:32] SEARCH: Nashville TN HOA management
|
||||
[08:09:33] -> 0 URLs
|
||||
[08:09:33] Done: 0 new, 0 total, 26.3s
|
||||
[08:10:03] CYCLE 20: Raleigh NC
|
||||
[08:10:03] SEARCH: Raleigh NC HOA
|
||||
[08:10:03] -> 0 URLs
|
||||
[08:10:15] SEARCH: Raleigh NC homeowners association
|
||||
[08:10:16] -> 0 URLs
|
||||
[08:10:24] SEARCH: Raleigh NC HOA management
|
||||
[08:10:25] -> 0 URLs
|
||||
[08:10:25] Done: 0 new, 0 total, 21.8s
|
||||
[08:10:55] CYCLE 21: Tampa FL
|
||||
[08:10:55] SEARCH: Tampa FL HOA
|
||||
[08:10:55] -> 0 URLs
|
||||
[08:11:06] SEARCH: Tampa FL homeowners association
|
||||
[08:11:07] -> 0 URLs
|
||||
[08:11:17] SEARCH: Tampa FL HOA management
|
||||
[08:11:18] -> 0 URLs
|
||||
[08:11:18] Done: 0 new, 0 total, 23.3s
|
||||
[08:11:48] CYCLE 22: Dallas TX
|
||||
[08:11:48] SEARCH: Dallas TX HOA
|
||||
[08:11:48] -> 0 URLs
|
||||
[08:12:03] SEARCH: Dallas TX homeowners association
|
||||
[08:12:03] -> 0 URLs
|
||||
[08:12:11] SEARCH: Dallas TX HOA management
|
||||
[08:12:11] -> 0 URLs
|
||||
[08:12:11] Done: 0 new, 0 total, 23.4s
|
||||
[08:12:42] CYCLE 23: Houston TX
|
||||
[08:12:42] SEARCH: Houston TX HOA
|
||||
[08:12:42] -> 0 URLs
|
||||
[08:12:52] SEARCH: Houston TX homeowners association
|
||||
[08:12:52] -> 0 URLs
|
||||
[08:13:01] SEARCH: Houston TX HOA management
|
||||
[08:13:02] -> 0 URLs
|
||||
[08:13:02] Done: 0 new, 0 total, 20.2s
|
||||
[08:13:32] CYCLE 24: Miami FL
|
||||
[08:13:32] SEARCH: Miami FL HOA
|
||||
[08:13:32] -> 0 URLs
|
||||
[08:13:41] SEARCH: Miami FL homeowners association
|
||||
[08:13:42] -> 0 URLs
|
||||
[08:13:50] SEARCH: Miami FL HOA management
|
||||
[08:13:51] -> 0 URLs
|
||||
[08:13:51] Done: 0 new, 0 total, 18.7s
|
||||
[08:14:21] CYCLE 25: Charlotte NC
|
||||
[08:14:21] SEARCH: Charlotte NC HOA
|
||||
[08:14:21] -> 0 URLs
|
||||
[08:14:33] SEARCH: Charlotte NC homeowners association
|
||||
[08:14:34] -> 0 URLs
|
||||
[08:14:47] SEARCH: Charlotte NC HOA management
|
||||
[08:14:47] -> 0 URLs
|
||||
[08:14:47] Done: 0 new, 0 total, 26.8s
|
||||
[08:15:18] CYCLE 26: Atlanta GA
|
||||
[08:15:18] SEARCH: Atlanta GA HOA
|
||||
[08:15:18] -> 0 URLs
|
||||
[08:15:32] SEARCH: Atlanta GA homeowners association
|
||||
[08:15:32] -> 0 URLs
|
||||
[08:15:41] SEARCH: Atlanta GA HOA management
|
||||
[08:15:41] -> 0 URLs
|
||||
[08:15:41] Done: 0 new, 0 total, 23.4s
|
||||
[08:16:11] CYCLE 27: Orlando FL
|
||||
[08:16:11] SEARCH: Orlando FL HOA
|
||||
[08:16:12] -> 0 URLs
|
||||
[08:16:23] SEARCH: Orlando FL homeowners association
|
||||
[08:16:23] -> 0 URLs
|
||||
[08:16:32] SEARCH: Orlando FL HOA management
|
||||
[08:16:32] -> 0 URLs
|
||||
[08:16:32] Done: 0 new, 0 total, 21.3s
|
||||
[08:17:03] CYCLE 28: Phoenix AZ
|
||||
[08:17:03] SEARCH: Phoenix AZ HOA
|
||||
[08:17:03] -> 0 URLs
|
||||
[08:17:14] SEARCH: Phoenix AZ homeowners association
|
||||
[08:17:15] -> 0 URLs
|
||||
[08:17:28] SEARCH: Phoenix AZ HOA management
|
||||
[08:17:29] -> 0 URLs
|
||||
[08:17:29] Done: 0 new, 0 total, 26.2s
|
||||
[08:17:59] CYCLE 29: Austin TX
|
||||
[08:17:59] SEARCH: Austin TX HOA
|
||||
[08:17:59] -> 0 URLs
|
||||
[08:18:08] SEARCH: Austin TX homeowners association
|
||||
[08:18:08] -> 0 URLs
|
||||
[08:18:19] SEARCH: Austin TX HOA management
|
||||
[08:18:19] -> 0 URLs
|
||||
[08:18:19] Done: 0 new, 0 total, 20.4s
|
||||
[08:18:49] CYCLE 30: Denver CO
|
||||
[08:18:49] SEARCH: Denver CO HOA
|
||||
[08:18:50] -> 0 URLs
|
||||
[08:19:00] SEARCH: Denver CO homeowners association
|
||||
[08:19:01] -> 0 URLs
|
||||
[08:19:10] SEARCH: Denver CO HOA management
|
||||
[08:19:11] -> 0 URLs
|
||||
[08:19:11] Done: 0 new, 0 total, 21.2s
|
||||
[08:19:41] CYCLE 31: Nashville TN
|
||||
[08:19:41] SEARCH: Nashville TN HOA
|
||||
[08:19:41] -> 0 URLs
|
||||
[08:19:54] SEARCH: Nashville TN homeowners association
|
||||
[08:19:54] -> 0 URLs
|
||||
[08:20:08] SEARCH: Nashville TN HOA management
|
||||
[08:20:09] -> 0 URLs
|
||||
[08:20:09] Done: 0 new, 0 total, 27.8s
|
||||
[08:20:39] CYCLE 32: Raleigh NC
|
||||
[08:20:39] SEARCH: Raleigh NC HOA
|
||||
[08:20:39] -> 0 URLs
|
||||
[08:20:49] SEARCH: Raleigh NC homeowners association
|
||||
[08:20:49] -> 0 URLs
|
||||
[08:21:02] SEARCH: Raleigh NC HOA management
|
||||
[08:21:03] -> 0 URLs
|
||||
[08:21:03] Done: 0 new, 0 total, 23.8s
|
||||
[08:21:33] CYCLE 33: Tampa FL
|
||||
[08:21:33] SEARCH: Tampa FL HOA
|
||||
[08:21:33] -> 0 URLs
|
||||
[08:21:48] SEARCH: Tampa FL homeowners association
|
||||
[08:21:48] -> 0 URLs
|
||||
[08:22:02] SEARCH: Tampa FL HOA management
|
||||
[08:22:02] -> 0 URLs
|
||||
[08:22:02] Done: 0 new, 0 total, 29.6s
|
||||
[08:22:32] CYCLE 34: Dallas TX
|
||||
[08:22:32] SEARCH: Dallas TX HOA
|
||||
[08:22:33] -> 0 URLs
|
||||
[08:22:43] SEARCH: Dallas TX homeowners association
|
||||
[08:22:43] -> 0 URLs
|
||||
[08:22:57] SEARCH: Dallas TX HOA management
|
||||
[08:22:57] -> 0 URLs
|
||||
[08:22:57] Done: 0 new, 0 total, 24.8s
|
||||
[08:23:27] CYCLE 35: Houston TX
|
||||
[08:23:27] SEARCH: Houston TX HOA
|
||||
[08:23:28] -> 0 URLs
|
||||
[08:23:36] SEARCH: Houston TX homeowners association
|
||||
[08:23:37] -> 0 URLs
|
||||
[08:23:51] SEARCH: Houston TX HOA management
|
||||
[08:23:52] -> 0 URLs
|
||||
[08:23:52] Done: 0 new, 0 total, 24.5s
|
||||
[08:24:22] CYCLE 36: Miami FL
|
||||
[08:24:22] SEARCH: Miami FL HOA
|
||||
[08:24:22] -> 0 URLs
|
||||
[08:24:37] SEARCH: Miami FL homeowners association
|
||||
[08:24:37] -> 0 URLs
|
||||
[08:24:45] SEARCH: Miami FL HOA management
|
||||
[08:24:45] -> 0 URLs
|
||||
[08:24:45] Done: 0 new, 0 total, 23.6s
|
||||
[08:25:16] CYCLE 37: Charlotte NC
|
||||
[08:25:16] SEARCH: Charlotte NC HOA
|
||||
[08:25:16] -> 0 URLs
|
||||
[08:25:25] SEARCH: Charlotte NC homeowners association
|
||||
[08:25:25] -> 0 URLs
|
||||
[08:25:36] SEARCH: Charlotte NC HOA management
|
||||
[08:25:36] -> 0 URLs
|
||||
[08:25:36] Done: 0 new, 0 total, 20.5s
|
||||
[08:26:06] CYCLE 38: Atlanta GA
|
||||
[08:26:06] SEARCH: Atlanta GA HOA
|
||||
[08:26:07] -> 0 URLs
|
||||
[08:26:18] SEARCH: Atlanta GA homeowners association
|
||||
[08:26:18] -> 0 URLs
|
||||
[08:26:31] SEARCH: Atlanta GA HOA management
|
||||
[08:26:31] -> 0 URLs
|
||||
[08:26:31] Done: 0 new, 0 total, 25.0s
|
||||
[08:27:01] CYCLE 39: Orlando FL
|
||||
[08:27:01] SEARCH: Orlando FL HOA
|
||||
[08:27:02] -> 0 URLs
|
||||
[08:27:10] SEARCH: Orlando FL homeowners association
|
||||
[08:27:10] -> 0 URLs
|
||||
[08:27:19] SEARCH: Orlando FL HOA management
|
||||
[08:27:19] -> 0 URLs
|
||||
[08:27:19] Done: 0 new, 0 total, 17.9s
|
||||
[08:27:49] CYCLE 40: Phoenix AZ
|
||||
[08:27:49] SEARCH: Phoenix AZ HOA
|
||||
[08:27:50] -> 0 URLs
|
||||
[08:28:03] SEARCH: Phoenix AZ homeowners association
|
||||
[08:28:03] -> 0 URLs
|
||||
[08:28:17] SEARCH: Phoenix AZ HOA management
|
||||
[08:28:18] -> 0 URLs
|
||||
[08:28:18] Done: 0 new, 0 total, 28.4s
|
||||
[08:28:48] CYCLE 41: Austin TX
|
||||
[08:28:48] SEARCH: Austin TX HOA
|
||||
[08:28:48] -> 0 URLs
|
||||
[08:29:01] SEARCH: Austin TX homeowners association
|
||||
[08:29:02] -> 0 URLs
|
||||
[08:29:13] SEARCH: Austin TX HOA management
|
||||
[08:29:14] -> 0 URLs
|
||||
[08:29:14] Done: 0 new, 0 total, 25.9s
|
||||
[08:29:44] CYCLE 42: Denver CO
|
||||
[08:29:44] SEARCH: Denver CO HOA
|
||||
[08:29:44] -> 0 URLs
|
||||
[08:29:54] SEARCH: Denver CO homeowners association
|
||||
[08:29:54] -> 0 URLs
|
||||
[08:30:08] SEARCH: Denver CO HOA management
|
||||
[08:30:08] -> 0 URLs
|
||||
[08:30:08] Done: 0 new, 0 total, 24.3s
|
||||
[08:30:38] CYCLE 43: Nashville TN
|
||||
[08:30:38] SEARCH: Nashville TN HOA
|
||||
[08:30:39] -> 0 URLs
|
||||
[08:30:53] SEARCH: Nashville TN homeowners association
|
||||
[08:30:53] -> 0 URLs
|
||||
[08:31:04] SEARCH: Nashville TN HOA management
|
||||
[08:31:04] -> 0 URLs
|
||||
[08:31:04] Done: 0 new, 0 total, 25.8s
|
||||
[08:31:34] CYCLE 44: Raleigh NC
|
||||
[08:31:34] SEARCH: Raleigh NC HOA
|
||||
[08:31:35] -> 0 URLs
|
||||
[08:31:45] SEARCH: Raleigh NC homeowners association
|
||||
[08:31:45] -> 0 URLs
|
||||
[08:31:55] SEARCH: Raleigh NC HOA management
|
||||
[08:31:56] -> 0 URLs
|
||||
[08:31:56] Done: 0 new, 0 total, 21.4s
|
||||
[08:32:26] CYCLE 45: Tampa FL
|
||||
[08:32:26] SEARCH: Tampa FL HOA
|
||||
[08:32:26] -> 0 URLs
|
||||
[08:32:39] SEARCH: Tampa FL homeowners association
|
||||
[08:32:39] -> 0 URLs
|
||||
[08:32:51] SEARCH: Tampa FL HOA management
|
||||
[08:32:51] -> 0 URLs
|
||||
[08:32:51] Done: 0 new, 0 total, 25.5s
|
||||
[08:33:21] CYCLE 46: Dallas TX
|
||||
[08:33:21] SEARCH: Dallas TX HOA
|
||||
[08:33:22] -> 0 URLs
|
||||
[08:33:35] SEARCH: Dallas TX homeowners association
|
||||
[08:33:36] -> 0 URLs
|
||||
[08:33:45] SEARCH: Dallas TX HOA management
|
||||
[08:33:46] -> 0 URLs
|
||||
[08:33:46] Done: 0 new, 0 total, 24.1s
|
||||
[08:34:16] CYCLE 47: Houston TX
|
||||
[08:34:16] SEARCH: Houston TX HOA
|
||||
[08:34:16] -> 0 URLs
|
||||
[08:34:24] SEARCH: Houston TX homeowners association
|
||||
[08:34:24] -> 0 URLs
|
||||
[08:34:34] SEARCH: Houston TX HOA management
|
||||
[08:34:35] -> 0 URLs
|
||||
[08:34:35] Done: 0 new, 0 total, 18.9s
|
||||
[08:35:05] CYCLE 48: Miami FL
|
||||
[08:35:05] SEARCH: Miami FL HOA
|
||||
[08:35:05] -> 0 URLs
|
||||
[08:35:14] SEARCH: Miami FL homeowners association
|
||||
[08:35:14] -> 0 URLs
|
||||
[08:35:23] SEARCH: Miami FL HOA management
|
||||
[08:35:23] -> 0 URLs
|
||||
[08:35:23] Done: 0 new, 0 total, 18.3s
|
||||
[08:35:53] CYCLE 49: Charlotte NC
|
||||
[08:35:53] SEARCH: Charlotte NC HOA
|
||||
[08:35:53] -> 0 URLs
|
||||
[08:36:07] SEARCH: Charlotte NC homeowners association
|
||||
[08:36:08] -> 0 URLs
|
||||
[08:36:22] SEARCH: Charlotte NC HOA management
|
||||
[08:36:22] -> 0 URLs
|
||||
[08:36:22] Done: 0 new, 0 total, 29.2s
|
||||
[08:36:52] CYCLE 50: Atlanta GA
|
||||
[08:36:52] SEARCH: Atlanta GA HOA
|
||||
[08:36:53] -> 0 URLs
|
||||
[08:37:01] SEARCH: Atlanta GA homeowners association
|
||||
[08:37:02] -> 0 URLs
|
||||
[08:37:12] SEARCH: Atlanta GA HOA management
|
||||
[08:37:12] -> 0 URLs
|
||||
[08:37:12] Done: 0 new, 0 total, 19.8s
|
||||
[08:37:42] CYCLE 51: Orlando FL
|
||||
[08:37:42] SEARCH: Orlando FL HOA
|
||||
[08:37:43] -> 0 URLs
|
||||
[08:37:52] SEARCH: Orlando FL homeowners association
|
||||
[08:37:52] -> 0 URLs
|
||||
[08:38:01] SEARCH: Orlando FL HOA management
|
||||
[08:38:02] -> 0 URLs
|
||||
[08:38:02] Done: 0 new, 0 total, 19.5s
|
||||
[08:38:32] CYCLE 52: Phoenix AZ
|
||||
[08:38:32] SEARCH: Phoenix AZ HOA
|
||||
[08:38:32] -> 0 URLs
|
||||
[08:38:41] SEARCH: Phoenix AZ homeowners association
|
||||
[08:38:41] -> 0 URLs
|
||||
[08:38:53] SEARCH: Phoenix AZ HOA management
|
||||
[08:38:53] -> 0 URLs
|
||||
[08:38:53] Done: 0 new, 0 total, 21.2s
|
||||
[08:39:23] CYCLE 53: Austin TX
|
||||
[08:39:23] SEARCH: Austin TX HOA
|
||||
[08:39:24] -> 0 URLs
|
||||
[08:39:37] SEARCH: Austin TX homeowners association
|
||||
[08:39:38] -> 0 URLs
|
||||
[08:39:52] SEARCH: Austin TX HOA management
|
||||
[08:39:53] -> 0 URLs
|
||||
[08:39:53] Done: 0 new, 0 total, 29.2s
|
||||
[08:40:23] CYCLE 54: Denver CO
|
||||
[08:40:23] SEARCH: Denver CO HOA
|
||||
[08:40:23] -> 0 URLs
|
||||
[08:40:32] SEARCH: Denver CO homeowners association
|
||||
[08:40:33] -> 0 URLs
|
||||
[08:40:43] SEARCH: Denver CO HOA management
|
||||
[08:40:44] -> 0 URLs
|
||||
[08:40:44] Done: 0 new, 0 total, 21.2s
|
||||
[08:41:14] CYCLE 55: Nashville TN
|
||||
[08:41:14] SEARCH: Nashville TN HOA
|
||||
[08:41:14] -> 0 URLs
|
||||
[08:41:26] SEARCH: Nashville TN homeowners association
|
||||
[08:41:26] -> 0 URLs
|
||||
[08:41:34] SEARCH: Nashville TN HOA management
|
||||
[08:41:35] -> 0 URLs
|
||||
[08:41:35] Done: 0 new, 0 total, 20.7s
|
||||
[08:42:05] CYCLE 56: Raleigh NC
|
||||
[08:42:05] SEARCH: Raleigh NC HOA
|
||||
[08:42:05] -> 0 URLs
|
||||
[08:42:19] SEARCH: Raleigh NC homeowners association
|
||||
[08:42:19] -> 0 URLs
|
||||
[08:42:31] SEARCH: Raleigh NC HOA management
|
||||
[08:42:31] -> 0 URLs
|
||||
[08:42:31] Done: 0 new, 0 total, 26.7s
|
||||
[08:43:02] CYCLE 57: Tampa FL
|
||||
[08:43:02] SEARCH: Tampa FL HOA
|
||||
[08:43:02] -> 0 URLs
|
||||
[08:43:12] SEARCH: Tampa FL homeowners association
|
||||
[08:43:12] -> 0 URLs
|
||||
[08:43:21] SEARCH: Tampa FL HOA management
|
||||
[08:43:21] -> 0 URLs
|
||||
[08:43:21] Done: 0 new, 0 total, 19.6s
|
||||
[08:43:51] CYCLE 58: Dallas TX
|
||||
[08:43:51] SEARCH: Dallas TX HOA
|
||||
[08:43:52] -> 0 URLs
|
||||
[08:44:06] SEARCH: Dallas TX homeowners association
|
||||
[08:44:06] -> 0 URLs
|
||||
[08:44:20] SEARCH: Dallas TX HOA management
|
||||
[08:44:20] -> 0 URLs
|
||||
[08:44:20] Done: 0 new, 0 total, 28.9s
|
||||
[08:44:50] CYCLE 59: Houston TX
|
||||
[08:44:50] SEARCH: Houston TX HOA
|
||||
[08:44:51] -> 0 URLs
|
||||
[08:45:05] SEARCH: Houston TX homeowners association
|
||||
[08:45:05] -> 0 URLs
|
||||
[08:45:18] SEARCH: Houston TX HOA management
|
||||
[08:45:19] -> 0 URLs
|
||||
[08:45:19] Done: 0 new, 0 total, 28.2s
|
||||
[08:45:49] CYCLE 60: Miami FL
|
||||
[08:45:49] SEARCH: Miami FL HOA
|
||||
[08:45:49] -> 0 URLs
|
||||
[08:46:03] SEARCH: Miami FL homeowners association
|
||||
[08:46:03] -> 0 URLs
|
||||
[08:46:11] SEARCH: Miami FL HOA management
|
||||
[08:46:11] -> 0 URLs
|
||||
[08:46:11] Done: 0 new, 0 total, 22.3s
|
||||
[08:46:41] CYCLE 61: Charlotte NC
|
||||
[08:46:41] SEARCH: Charlotte NC HOA
|
||||
[08:46:42] -> 0 URLs
|
||||
[08:46:51] SEARCH: Charlotte NC homeowners association
|
||||
[08:46:51] -> 0 URLs
|
||||
[08:47:04] SEARCH: Charlotte NC HOA management
|
||||
[08:47:04] -> 0 URLs
|
||||
[08:47:04] Done: 0 new, 0 total, 22.8s
|
||||
[08:47:34] CYCLE 62: Atlanta GA
|
||||
[08:47:34] SEARCH: Atlanta GA HOA
|
||||
[08:47:35] -> 0 URLs
|
||||
[08:47:44] SEARCH: Atlanta GA homeowners association
|
||||
[08:47:45] -> 0 URLs
|
||||
[08:47:57] SEARCH: Atlanta GA HOA management
|
||||
[08:47:58] -> 0 URLs
|
||||
[08:47:58] Done: 0 new, 0 total, 23.7s
|
||||
[08:48:28] CYCLE 63: Orlando FL
|
||||
[08:48:28] SEARCH: Orlando FL HOA
|
||||
[08:48:28] -> 0 URLs
|
||||
[08:48:40] SEARCH: Orlando FL homeowners association
|
||||
[08:48:40] -> 0 URLs
|
||||
[08:48:53] SEARCH: Orlando FL HOA management
|
||||
[08:48:54] -> 0 URLs
|
||||
[08:48:54] Done: 0 new, 0 total, 25.7s
|
||||
[08:49:24] CYCLE 64: Phoenix AZ
|
||||
[08:49:24] SEARCH: Phoenix AZ HOA
|
||||
[08:49:24] -> 0 URLs
|
||||
[08:49:37] SEARCH: Phoenix AZ homeowners association
|
||||
[08:49:37] -> 0 URLs
|
||||
[08:49:50] SEARCH: Phoenix AZ HOA management
|
||||
[08:49:50] -> 0 URLs
|
||||
[08:49:50] Done: 0 new, 0 total, 26.5s
|
||||
[08:50:20] CYCLE 65: Austin TX
|
||||
[08:50:20] SEARCH: Austin TX HOA
|
||||
[08:50:21] -> 0 URLs
|
||||
[08:50:33] SEARCH: Austin TX homeowners association
|
||||
[08:50:34] -> 0 URLs
|
||||
[08:50:43] SEARCH: Austin TX HOA management
|
||||
[08:50:44] -> 0 URLs
|
||||
[08:50:44] Done: 0 new, 0 total, 23.2s
|
||||
[08:51:14] CYCLE 66: Denver CO
|
||||
[08:51:14] SEARCH: Denver CO HOA
|
||||
[08:51:14] -> 0 URLs
|
||||
[08:51:27] SEARCH: Denver CO homeowners association
|
||||
[08:51:28] -> 0 URLs
|
||||
[08:51:40] SEARCH: Denver CO HOA management
|
||||
[08:51:40] -> 0 URLs
|
||||
[08:51:40] Done: 0 new, 0 total, 26.2s
|
||||
[08:52:10] CYCLE 67: Nashville TN
|
||||
[08:52:10] SEARCH: Nashville TN HOA
|
||||
[08:52:11] -> 0 URLs
|
||||
[08:52:24] SEARCH: Nashville TN homeowners association
|
||||
[08:52:24] -> 0 URLs
|
||||
[08:52:38] SEARCH: Nashville TN HOA management
|
||||
[08:52:39] -> 0 URLs
|
||||
[08:52:39] Done: 0 new, 0 total, 28.4s
|
||||
[08:53:09] CYCLE 68: Raleigh NC
|
||||
[08:53:09] SEARCH: Raleigh NC HOA
|
||||
[08:53:09] -> 0 URLs
|
||||
[08:53:21] SEARCH: Raleigh NC homeowners association
|
||||
[08:53:21] -> 0 URLs
|
||||
[08:53:36] SEARCH: Raleigh NC HOA management
|
||||
[08:53:36] -> 0 URLs
|
||||
[08:53:36] Done: 0 new, 0 total, 27.2s
|
||||
[08:54:06] CYCLE 69: Tampa FL
|
||||
[08:54:06] SEARCH: Tampa FL HOA
|
||||
[08:54:06] -> 0 URLs
|
||||
[08:54:18] SEARCH: Tampa FL homeowners association
|
||||
[08:54:19] -> 0 URLs
|
||||
[08:54:33] SEARCH: Tampa FL HOA management
|
||||
[08:54:33] -> 0 URLs
|
||||
[08:54:33] Done: 0 new, 0 total, 27.2s
|
||||
[08:55:03] CYCLE 70: Dallas TX
|
||||
[08:55:03] SEARCH: Dallas TX HOA
|
||||
[08:55:04] -> 0 URLs
|
||||
[08:55:15] SEARCH: Dallas TX homeowners association
|
||||
[08:55:16] -> 0 URLs
|
||||
[08:55:28] SEARCH: Dallas TX HOA management
|
||||
[08:55:29] -> 0 URLs
|
||||
[08:55:29] Done: 0 new, 0 total, 25.2s
|
||||
[08:55:59] CYCLE 71: Houston TX
|
||||
[08:55:59] SEARCH: Houston TX HOA
|
||||
[08:55:59] -> 0 URLs
|
||||
[08:56:10] SEARCH: Houston TX homeowners association
|
||||
[08:56:11] -> 0 URLs
|
||||
[08:56:22] SEARCH: Houston TX HOA management
|
||||
[08:56:22] -> 0 URLs
|
||||
[08:56:22] Done: 0 new, 0 total, 23.6s
|
||||
[08:56:52] CYCLE 72: Miami FL
|
||||
[08:56:52] SEARCH: Miami FL HOA
|
||||
[08:56:53] -> 0 URLs
|
||||
[08:57:05] SEARCH: Miami FL homeowners association
|
||||
[08:57:05] -> 0 URLs
|
||||
[08:57:16] SEARCH: Miami FL HOA management
|
||||
[08:57:17] -> 0 URLs
|
||||
[08:57:17] Done: 0 new, 0 total, 24.2s
|
||||
[08:57:47] CYCLE 73: Charlotte NC
|
||||
[08:57:47] SEARCH: Charlotte NC HOA
|
||||
[08:57:47] -> 0 URLs
|
||||
[08:57:58] SEARCH: Charlotte NC homeowners association
|
||||
[08:57:58] -> 0 URLs
|
||||
[08:58:10] SEARCH: Charlotte NC HOA management
|
||||
[08:58:11] -> 0 URLs
|
||||
[08:58:11] Done: 0 new, 0 total, 23.7s
|
||||
[08:58:41] CYCLE 74: Atlanta GA
|
||||
[08:58:41] SEARCH: Atlanta GA HOA
|
||||
[08:58:41] -> 0 URLs
|
||||
[08:58:53] SEARCH: Atlanta GA homeowners association
|
||||
[08:58:53] -> 0 URLs
|
||||
[08:59:04] SEARCH: Atlanta GA HOA management
|
||||
[08:59:04] -> 0 URLs
|
||||
[08:59:04] Done: 0 new, 0 total, 23.7s
|
||||
[08:59:34] CYCLE 75: Orlando FL
|
||||
[08:59:34] SEARCH: Orlando FL HOA
|
||||
[08:59:35] -> 0 URLs
|
||||
[08:59:44] SEARCH: Orlando FL homeowners association
|
||||
[08:59:44] -> 0 URLs
|
||||
[08:59:57] SEARCH: Orlando FL HOA management
|
||||
[08:59:58] -> 0 URLs
|
||||
[08:59:58] Done: 0 new, 0 total, 23.2s
|
||||
[09:00:28] CYCLE 76: Phoenix AZ
|
||||
[09:00:28] SEARCH: Phoenix AZ HOA
|
||||
[09:00:28] -> 0 URLs
|
||||
[09:00:37] SEARCH: Phoenix AZ homeowners association
|
||||
[09:00:37] -> 0 URLs
|
||||
[09:00:49] SEARCH: Phoenix AZ HOA management
|
||||
[09:00:50] -> 0 URLs
|
||||
[09:00:50] Done: 0 new, 0 total, 21.8s
|
||||
[09:01:20] CYCLE 77: Austin TX
|
||||
[09:01:20] SEARCH: Austin TX HOA
|
||||
[09:01:20] -> 0 URLs
|
||||
[09:01:30] SEARCH: Austin TX homeowners association
|
||||
[09:01:30] -> 0 URLs
|
||||
[09:01:42] SEARCH: Austin TX HOA management
|
||||
[09:01:42] -> 0 URLs
|
||||
[09:01:42] Done: 0 new, 0 total, 22.7s
|
||||
[09:02:12] CYCLE 78: Denver CO
|
||||
[09:02:12] SEARCH: Denver CO HOA
|
||||
[09:02:13] -> 0 URLs
|
||||
[09:02:22] SEARCH: Denver CO homeowners association
|
||||
[09:02:22] -> 0 URLs
|
||||
[09:02:35] SEARCH: Denver CO HOA management
|
||||
[09:02:36] -> 0 URLs
|
||||
[09:02:36] Done: 0 new, 0 total, 23.2s
|
||||
[09:03:06] CYCLE 79: Nashville TN
|
||||
[09:03:06] SEARCH: Nashville TN HOA
|
||||
[09:03:06] -> 0 URLs
|
||||
[09:03:18] SEARCH: Nashville TN homeowners association
|
||||
[09:03:18] -> 0 URLs
|
||||
[09:03:26] SEARCH: Nashville TN HOA management
|
||||
[09:03:27] -> 0 URLs
|
||||
[09:03:27] Done: 0 new, 0 total, 20.8s
|
||||
[09:03:57] CYCLE 80: Raleigh NC
|
||||
[09:03:57] SEARCH: Raleigh NC HOA
|
||||
[09:03:57] -> 0 URLs
|
||||
[09:04:11] SEARCH: Raleigh NC homeowners association
|
||||
[09:04:12] -> 0 URLs
|
||||
[09:04:20] SEARCH: Raleigh NC HOA management
|
||||
[09:04:21] -> 0 URLs
|
||||
[09:04:21] Done: 0 new, 0 total, 23.9s
|
||||
[09:04:51] CYCLE 81: Tampa FL
|
||||
[09:04:51] SEARCH: Tampa FL HOA
|
||||
[09:04:51] -> 0 URLs
|
||||
[09:05:02] SEARCH: Tampa FL homeowners association
|
||||
[09:05:03] -> 0 URLs
|
||||
[09:05:14] SEARCH: Tampa FL HOA management
|
||||
[09:05:14] -> 0 URLs
|
||||
[09:05:14] Done: 0 new, 0 total, 23.3s
|
||||
[09:05:44] CYCLE 82: Dallas TX
|
||||
[09:05:44] SEARCH: Dallas TX HOA
|
||||
[09:05:45] -> 0 URLs
|
||||
[09:05:58] SEARCH: Dallas TX homeowners association
|
||||
[09:05:58] -> 0 URLs
|
||||
[09:06:08] SEARCH: Dallas TX HOA management
|
||||
[09:06:09] -> 0 URLs
|
||||
[09:06:09] Done: 0 new, 0 total, 24.5s
|
||||
[09:06:39] CYCLE 83: Houston TX
|
||||
[09:06:39] SEARCH: Houston TX HOA
|
||||
[09:06:39] -> 0 URLs
|
||||
[09:06:49] SEARCH: Houston TX homeowners association
|
||||
[09:06:50] -> 0 URLs
|
||||
[09:07:03] SEARCH: Houston TX HOA management
|
||||
[09:07:04] -> 0 URLs
|
||||
[09:07:04] Done: 0 new, 0 total, 25.0s
|
||||
[09:07:34] CYCLE 84: Miami FL
|
||||
[09:07:34] SEARCH: Miami FL HOA
|
||||
[09:07:34] -> 0 URLs
|
||||
[09:07:49] SEARCH: Miami FL homeowners association
|
||||
[09:07:49] -> 0 URLs
|
||||
[09:07:57] SEARCH: Miami FL HOA management
|
||||
[09:07:57] -> 0 URLs
|
||||
[09:07:57] Done: 0 new, 0 total, 23.5s
|
||||
[09:08:28] CYCLE 85: Charlotte NC
|
||||
[09:08:28] SEARCH: Charlotte NC HOA
|
||||
[09:08:28] -> 0 URLs
|
||||
[09:08:40] SEARCH: Charlotte NC homeowners association
|
||||
[09:08:41] -> 0 URLs
|
||||
[09:08:52] SEARCH: Charlotte NC HOA management
|
||||
[09:08:52] -> 0 URLs
|
||||
[09:08:52] Done: 0 new, 0 total, 25.0s
|
||||
[09:09:23] CYCLE 86: Atlanta GA
|
||||
[09:09:23] SEARCH: Atlanta GA HOA
|
||||
[09:09:23] -> 0 URLs
|
||||
[09:09:31] SEARCH: Atlanta GA homeowners association
|
||||
[09:09:31] -> 0 URLs
|
||||
[09:09:43] SEARCH: Atlanta GA HOA management
|
||||
[09:09:44] -> 0 URLs
|
||||
[09:09:44] Done: 0 new, 0 total, 21.0s
|
||||
[09:10:14] CYCLE 87: Orlando FL
|
||||
[09:10:14] SEARCH: Orlando FL HOA
|
||||
[09:10:14] -> 0 URLs
|
||||
[09:10:23] SEARCH: Orlando FL homeowners association
|
||||
[09:10:24] -> 0 URLs
|
||||
[09:10:36] SEARCH: Orlando FL HOA management
|
||||
[09:10:37] -> 0 URLs
|
||||
[09:10:37] Done: 0 new, 0 total, 22.8s
|
||||
[09:11:07] CYCLE 88: Phoenix AZ
|
||||
[09:11:07] SEARCH: Phoenix AZ HOA
|
||||
[09:11:07] -> 0 URLs
|
||||
[09:11:18] SEARCH: Phoenix AZ homeowners association
|
||||
[09:11:19] -> 0 URLs
|
||||
[09:11:29] SEARCH: Phoenix AZ HOA management
|
||||
[09:11:29] -> 0 URLs
|
||||
[09:11:29] Done: 0 new, 0 total, 22.6s
|
||||
[09:11:59] CYCLE 89: Austin TX
|
||||
[09:11:59] SEARCH: Austin TX HOA
|
||||
[09:12:00] -> 0 URLs
|
||||
[09:12:13] SEARCH: Austin TX homeowners association
|
||||
[09:12:14] -> 0 URLs
|
||||
[09:12:23] SEARCH: Austin TX HOA management
|
||||
[09:12:24] -> 0 URLs
|
||||
[09:12:24] Done: 0 new, 0 total, 24.6s
|
||||
[09:12:54] CYCLE 90: Denver CO
|
||||
[09:12:54] SEARCH: Denver CO HOA
|
||||
[09:12:55] -> 0 URLs
|
||||
[09:13:09] SEARCH: Denver CO homeowners association
|
||||
[09:13:10] -> 0 URLs
|
||||
[09:13:23] SEARCH: Denver CO HOA management
|
||||
[09:13:23] -> 0 URLs
|
||||
[09:13:23] Done: 0 new, 0 total, 29.3s
|
||||
[09:13:54] CYCLE 91: Nashville TN
|
||||
[09:13:54] SEARCH: Nashville TN HOA
|
||||
[09:13:54] -> 0 URLs
|
||||
[09:14:08] SEARCH: Nashville TN homeowners association
|
||||
[09:14:09] -> 0 URLs
|
||||
[09:14:17] SEARCH: Nashville TN HOA management
|
||||
[09:14:18] -> 0 URLs
|
||||
[09:14:18] Done: 0 new, 0 total, 24.0s
|
||||
[09:14:48] CYCLE 92: Raleigh NC
|
||||
[09:14:48] SEARCH: Raleigh NC HOA
|
||||
[09:14:48] -> 0 URLs
|
||||
[09:14:58] SEARCH: Raleigh NC homeowners association
|
||||
[09:14:59] -> 0 URLs
|
||||
[09:15:08] SEARCH: Raleigh NC HOA management
|
||||
[09:15:09] -> 0 URLs
|
||||
[09:15:09] Done: 0 new, 0 total, 21.0s
|
||||
[09:15:39] CYCLE 93: Tampa FL
|
||||
[09:15:39] SEARCH: Tampa FL HOA
|
||||
[09:15:39] -> 0 URLs
|
||||
[09:15:51] SEARCH: Tampa FL homeowners association
|
||||
[09:15:52] -> 0 URLs
|
||||
[09:16:05] SEARCH: Tampa FL HOA management
|
||||
[09:16:06] -> 0 URLs
|
||||
[09:16:06] Done: 0 new, 0 total, 27.2s
|
||||
[09:16:36] CYCLE 94: Dallas TX
|
||||
[09:16:36] SEARCH: Dallas TX HOA
|
||||
[09:16:37] -> 0 URLs
|
||||
[09:16:44] SEARCH: Dallas TX homeowners association
|
||||
[09:16:45] -> 0 URLs
|
||||
[09:16:58] SEARCH: Dallas TX HOA management
|
||||
[09:16:58] -> 0 URLs
|
||||
[09:16:58] Done: 0 new, 0 total, 22.1s
|
||||
[09:17:28] CYCLE 95: Houston TX
|
||||
[09:17:28] SEARCH: Houston TX HOA
|
||||
[09:17:29] -> 0 URLs
|
||||
[09:17:40] SEARCH: Houston TX homeowners association
|
||||
[09:17:41] -> 0 URLs
|
||||
[09:17:54] SEARCH: Houston TX HOA management
|
||||
[09:17:55] -> 0 URLs
|
||||
[09:17:55] Done: 0 new, 0 total, 26.3s
|
||||
[09:18:25] CYCLE 96: Miami FL
|
||||
[09:18:25] SEARCH: Miami FL HOA
|
||||
[09:18:25] -> 0 URLs
|
||||
[09:18:38] SEARCH: Miami FL homeowners association
|
||||
[09:18:38] -> 0 URLs
|
||||
[09:18:48] SEARCH: Miami FL HOA management
|
||||
[09:18:49] -> 0 URLs
|
||||
[09:18:49] Done: 0 new, 0 total, 24.0s
|
||||
[09:19:19] CYCLE 97: Charlotte NC
|
||||
[09:19:19] SEARCH: Charlotte NC HOA
|
||||
[09:19:19] -> 0 URLs
|
||||
[09:19:29] SEARCH: Charlotte NC homeowners association
|
||||
[09:19:29] -> 0 URLs
|
||||
[09:19:41] SEARCH: Charlotte NC HOA management
|
||||
[09:19:42] -> 0 URLs
|
||||
[09:19:42] Done: 0 new, 0 total, 23.1s
|
||||
[09:20:12] CYCLE 98: Atlanta GA
|
||||
[09:20:12] SEARCH: Atlanta GA HOA
|
||||
[09:20:12] -> 0 URLs
|
||||
[09:20:23] SEARCH: Atlanta GA homeowners association
|
||||
[09:20:23] -> 0 URLs
|
||||
[09:20:33] SEARCH: Atlanta GA HOA management
|
||||
[09:20:33] -> 0 URLs
|
||||
[09:20:33] Done: 0 new, 0 total, 21.2s
|
||||
[09:21:03] CYCLE 99: Orlando FL
|
||||
[09:21:03] SEARCH: Orlando FL HOA
|
||||
[09:21:04] -> 0 URLs
|
||||
[09:21:14] SEARCH: Orlando FL homeowners association
|
||||
[09:21:14] -> 0 URLs
|
||||
[09:21:22] SEARCH: Orlando FL HOA management
|
||||
[09:21:23] -> 0 URLs
|
||||
[09:21:23] Done: 0 new, 0 total, 19.7s
|
||||
[09:21:53] CYCLE 100: Phoenix AZ
|
||||
[09:21:53] SEARCH: Phoenix AZ HOA
|
||||
[09:21:53] -> 0 URLs
|
||||
[09:22:05] SEARCH: Phoenix AZ homeowners association
|
||||
[09:22:05] -> 0 URLs
|
||||
[09:22:20] SEARCH: Phoenix AZ HOA management
|
||||
[09:22:20] -> 0 URLs
|
||||
[09:22:20] Done: 0 new, 0 total, 27.1s
|
||||
[09:22:50] CYCLE 101: Austin TX
|
||||
[09:22:50] SEARCH: Austin TX HOA
|
||||
[09:22:51] -> 0 URLs
|
||||
[09:23:04] SEARCH: Austin TX homeowners association
|
||||
[09:23:05] -> 0 URLs
|
||||
[09:23:16] SEARCH: Austin TX HOA management
|
||||
[09:23:17] -> 0 URLs
|
||||
[09:23:17] Done: 0 new, 0 total, 26.3s
|
||||
[09:23:47] CYCLE 102: Denver CO
|
||||
[09:23:47] SEARCH: Denver CO HOA
|
||||
[09:23:47] -> 0 URLs
|
||||
[09:24:01] SEARCH: Denver CO homeowners association
|
||||
[09:24:02] -> 0 URLs
|
||||
[09:24:15] SEARCH: Denver CO HOA management
|
||||
[09:24:16] -> 0 URLs
|
||||
[09:24:16] Done: 0 new, 0 total, 28.9s
|
||||
[09:24:46] CYCLE 103: Nashville TN
|
||||
[09:24:46] SEARCH: Nashville TN HOA
|
||||
[09:24:46] -> 0 URLs
|
||||
2187
agents/sales-prospector/logs/prospector-v12-20260315.log
Normal file
2187
agents/sales-prospector/logs/prospector-v12-20260315.log
Normal file
File diff suppressed because it is too large
Load Diff
11577
agents/sales-prospector/logs/prospector-v14-20260315.log
Normal file
11577
agents/sales-prospector/logs/prospector-v14-20260315.log
Normal file
File diff suppressed because it is too large
Load Diff
43329
agents/sales-prospector/logs/prospector-v14-20260317.log
Normal file
43329
agents/sales-prospector/logs/prospector-v14-20260317.log
Normal file
File diff suppressed because it is too large
Load Diff
0
agents/sales-prospector/logs/prospector-v3.log
Normal file
0
agents/sales-prospector/logs/prospector-v3.log
Normal file
296
agents/sales-prospector/logs/prospector-v4-20260314.log
Normal file
296
agents/sales-prospector/logs/prospector-v4-20260314.log
Normal file
@@ -0,0 +1,296 @@
|
||||
[2026-03-14 09:14:01] === Prospector v4 Started ===
|
||||
[2026-03-14 09:14:01] === CYCLE 1: Charlotte NC ===
|
||||
[2026-03-14 09:14:01] SEARCH: Charlotte NC HOA contact email
|
||||
[2026-03-14 09:14:04] SEARCH: Charlotte NC homeowners association
|
||||
[2026-03-14 09:14:05] SEARCH: Charlotte NC HOA management company
|
||||
[2026-03-14 09:14:06] Found 0 URLs to check
|
||||
[2026-03-14 09:14:06] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:14:06] Sleeping 120s...
|
||||
[2026-03-14 09:16:07] === CYCLE 2: Atlanta GA ===
|
||||
[2026-03-14 09:16:07] SEARCH: Atlanta GA HOA contact email
|
||||
[2026-03-14 09:16:08] SEARCH: Atlanta GA homeowners association
|
||||
[2026-03-14 09:16:09] SEARCH: Atlanta GA HOA management company
|
||||
[2026-03-14 09:16:10] Found 0 URLs to check
|
||||
[2026-03-14 09:16:10] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:16:10] Sleeping 120s...
|
||||
[2026-03-14 09:16:17] === Prospector v4 Started ===
|
||||
[2026-03-14 09:16:17] === CYCLE 1: Atlanta GA ===
|
||||
[2026-03-14 09:16:17] SEARCH: Atlanta GA HOA contact email
|
||||
[2026-03-14 09:16:18] SEARCH: Atlanta GA homeowners association
|
||||
[2026-03-14 09:16:19] SEARCH: Atlanta GA HOA management company
|
||||
[2026-03-14 09:16:20] Found 0 URLs to check
|
||||
[2026-03-14 09:16:20] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:16:20] Sleeping 120s...
|
||||
[2026-03-14 09:18:10] === CYCLE 3: Orlando FL ===
|
||||
[2026-03-14 09:18:10] SEARCH: Orlando FL HOA contact email
|
||||
[2026-03-14 09:18:11] SEARCH: Orlando FL homeowners association
|
||||
[2026-03-14 09:18:12] SEARCH: Orlando FL HOA management company
|
||||
[2026-03-14 09:18:14] Found 0 URLs to check
|
||||
[2026-03-14 09:18:14] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:18:14] Sleeping 120s...
|
||||
[2026-03-14 09:20:14] === CYCLE 4: Phoenix AZ ===
|
||||
[2026-03-14 09:20:14] SEARCH: Phoenix AZ HOA contact email
|
||||
[2026-03-14 09:20:15] SEARCH: Phoenix AZ homeowners association
|
||||
[2026-03-14 09:20:16] SEARCH: Phoenix AZ HOA management company
|
||||
[2026-03-14 09:20:17] Found 0 URLs to check
|
||||
[2026-03-14 09:20:17] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:20:17] Sleeping 120s...
|
||||
[2026-03-14 09:22:17] === CYCLE 5: Charlotte NC ===
|
||||
[2026-03-14 09:22:17] SEARCH: Charlotte NC HOA contact email
|
||||
[2026-03-14 09:22:19] SEARCH: Charlotte NC homeowners association
|
||||
[2026-03-14 09:22:20] SEARCH: Charlotte NC HOA management company
|
||||
[2026-03-14 09:22:21] Found 0 URLs to check
|
||||
[2026-03-14 09:22:21] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:22:21] Sleeping 120s...
|
||||
[2026-03-14 09:24:21] === CYCLE 6: Atlanta GA ===
|
||||
[2026-03-14 09:24:21] SEARCH: Atlanta GA HOA contact email
|
||||
[2026-03-14 09:24:22] SEARCH: Atlanta GA homeowners association
|
||||
[2026-03-14 09:24:23] SEARCH: Atlanta GA HOA management company
|
||||
[2026-03-14 09:24:24] Found 0 URLs to check
|
||||
[2026-03-14 09:24:24] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:24:24] Sleeping 120s...
|
||||
[2026-03-14 09:26:25] === CYCLE 7: Orlando FL ===
|
||||
[2026-03-14 09:26:25] SEARCH: Orlando FL HOA contact email
|
||||
[2026-03-14 09:26:26] SEARCH: Orlando FL homeowners association
|
||||
[2026-03-14 09:26:27] SEARCH: Orlando FL HOA management company
|
||||
[2026-03-14 09:26:28] Found 0 URLs to check
|
||||
[2026-03-14 09:26:28] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:26:28] Sleeping 120s...
|
||||
[2026-03-14 09:28:28] === CYCLE 8: Phoenix AZ ===
|
||||
[2026-03-14 09:28:28] SEARCH: Phoenix AZ HOA contact email
|
||||
[2026-03-14 09:28:30] SEARCH: Phoenix AZ homeowners association
|
||||
[2026-03-14 09:28:31] SEARCH: Phoenix AZ HOA management company
|
||||
[2026-03-14 09:28:32] Found 0 URLs to check
|
||||
[2026-03-14 09:28:32] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:28:32] Sleeping 120s...
|
||||
[2026-03-14 09:30:32] === CYCLE 9: Charlotte NC ===
|
||||
[2026-03-14 09:30:32] SEARCH: Charlotte NC HOA contact email
|
||||
[2026-03-14 09:30:33] SEARCH: Charlotte NC homeowners association
|
||||
[2026-03-14 09:30:34] SEARCH: Charlotte NC HOA management company
|
||||
[2026-03-14 09:30:35] Found 0 URLs to check
|
||||
[2026-03-14 09:30:35] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:30:35] Sleeping 120s...
|
||||
[2026-03-14 09:32:36] === CYCLE 10: Atlanta GA ===
|
||||
[2026-03-14 09:32:36] SEARCH: Atlanta GA HOA contact email
|
||||
[2026-03-14 09:32:37] SEARCH: Atlanta GA homeowners association
|
||||
[2026-03-14 09:32:38] SEARCH: Atlanta GA HOA management company
|
||||
[2026-03-14 09:32:39] Found 0 URLs to check
|
||||
[2026-03-14 09:32:39] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:32:39] Sleeping 120s...
|
||||
[2026-03-14 09:34:39] === CYCLE 11: Orlando FL ===
|
||||
[2026-03-14 09:34:39] SEARCH: Orlando FL HOA contact email
|
||||
[2026-03-14 09:34:40] SEARCH: Orlando FL homeowners association
|
||||
[2026-03-14 09:34:42] SEARCH: Orlando FL HOA management company
|
||||
[2026-03-14 09:34:43] Found 0 URLs to check
|
||||
[2026-03-14 09:34:43] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:34:43] Sleeping 120s...
|
||||
[2026-03-14 09:36:43] === CYCLE 12: Phoenix AZ ===
|
||||
[2026-03-14 09:36:43] SEARCH: Phoenix AZ HOA contact email
|
||||
[2026-03-14 09:36:44] SEARCH: Phoenix AZ homeowners association
|
||||
[2026-03-14 09:36:45] SEARCH: Phoenix AZ HOA management company
|
||||
[2026-03-14 09:36:46] Found 0 URLs to check
|
||||
[2026-03-14 09:36:46] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:36:46] Sleeping 120s...
|
||||
[2026-03-14 09:38:46] === CYCLE 13: Charlotte NC ===
|
||||
[2026-03-14 09:38:46] SEARCH: Charlotte NC HOA contact email
|
||||
[2026-03-14 09:38:48] SEARCH: Charlotte NC homeowners association
|
||||
[2026-03-14 09:38:49] SEARCH: Charlotte NC HOA management company
|
||||
[2026-03-14 09:38:50] Found 0 URLs to check
|
||||
[2026-03-14 09:38:50] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:38:50] Sleeping 120s...
|
||||
[2026-03-14 09:40:50] === CYCLE 14: Atlanta GA ===
|
||||
[2026-03-14 09:40:50] SEARCH: Atlanta GA HOA contact email
|
||||
[2026-03-14 09:40:51] SEARCH: Atlanta GA homeowners association
|
||||
[2026-03-14 09:40:52] SEARCH: Atlanta GA HOA management company
|
||||
[2026-03-14 09:40:53] Found 0 URLs to check
|
||||
[2026-03-14 09:40:53] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:40:53] Sleeping 120s...
|
||||
[2026-03-14 09:42:54] === CYCLE 15: Orlando FL ===
|
||||
[2026-03-14 09:42:54] SEARCH: Orlando FL HOA contact email
|
||||
[2026-03-14 09:42:55] SEARCH: Orlando FL homeowners association
|
||||
[2026-03-14 09:42:56] SEARCH: Orlando FL HOA management company
|
||||
[2026-03-14 09:42:57] Found 0 URLs to check
|
||||
[2026-03-14 09:42:57] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:42:57] Sleeping 120s...
|
||||
[2026-03-14 09:44:57] === CYCLE 16: Phoenix AZ ===
|
||||
[2026-03-14 09:44:57] SEARCH: Phoenix AZ HOA contact email
|
||||
[2026-03-14 09:44:58] SEARCH: Phoenix AZ homeowners association
|
||||
[2026-03-14 09:45:00] SEARCH: Phoenix AZ HOA management company
|
||||
[2026-03-14 09:45:01] Found 0 URLs to check
|
||||
[2026-03-14 09:45:01] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:45:01] Sleeping 120s...
|
||||
[2026-03-14 09:47:01] === CYCLE 17: Charlotte NC ===
|
||||
[2026-03-14 09:47:01] SEARCH: Charlotte NC HOA contact email
|
||||
[2026-03-14 09:47:02] SEARCH: Charlotte NC homeowners association
|
||||
[2026-03-14 09:47:03] SEARCH: Charlotte NC HOA management company
|
||||
[2026-03-14 09:47:04] Found 0 URLs to check
|
||||
[2026-03-14 09:47:04] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:47:04] Sleeping 120s...
|
||||
[2026-03-14 09:49:04] === CYCLE 18: Atlanta GA ===
|
||||
[2026-03-14 09:49:04] SEARCH: Atlanta GA HOA contact email
|
||||
[2026-03-14 09:49:06] SEARCH: Atlanta GA homeowners association
|
||||
[2026-03-14 09:49:07] SEARCH: Atlanta GA HOA management company
|
||||
[2026-03-14 09:49:08] Found 0 URLs to check
|
||||
[2026-03-14 09:49:08] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:49:08] Sleeping 120s...
|
||||
[2026-03-14 09:51:08] === CYCLE 19: Orlando FL ===
|
||||
[2026-03-14 09:51:08] SEARCH: Orlando FL HOA contact email
|
||||
[2026-03-14 09:51:09] SEARCH: Orlando FL homeowners association
|
||||
[2026-03-14 09:51:10] SEARCH: Orlando FL HOA management company
|
||||
[2026-03-14 09:51:11] Found 0 URLs to check
|
||||
[2026-03-14 09:51:11] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:51:11] Sleeping 120s...
|
||||
[2026-03-14 09:53:12] === CYCLE 20: Phoenix AZ ===
|
||||
[2026-03-14 09:53:12] SEARCH: Phoenix AZ HOA contact email
|
||||
[2026-03-14 09:53:13] SEARCH: Phoenix AZ homeowners association
|
||||
[2026-03-14 09:53:14] SEARCH: Phoenix AZ HOA management company
|
||||
[2026-03-14 09:53:15] Found 0 URLs to check
|
||||
[2026-03-14 09:53:15] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:53:15] Sleeping 120s...
|
||||
[2026-03-14 09:55:15] === CYCLE 21: Charlotte NC ===
|
||||
[2026-03-14 09:55:15] SEARCH: Charlotte NC HOA contact email
|
||||
[2026-03-14 09:55:16] SEARCH: Charlotte NC homeowners association
|
||||
[2026-03-14 09:55:18] SEARCH: Charlotte NC HOA management company
|
||||
[2026-03-14 09:55:19] Found 0 URLs to check
|
||||
[2026-03-14 09:55:19] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:55:19] Sleeping 120s...
|
||||
[2026-03-14 09:57:19] === CYCLE 22: Atlanta GA ===
|
||||
[2026-03-14 09:57:19] SEARCH: Atlanta GA HOA contact email
|
||||
[2026-03-14 09:57:20] SEARCH: Atlanta GA homeowners association
|
||||
[2026-03-14 09:57:21] SEARCH: Atlanta GA HOA management company
|
||||
[2026-03-14 09:57:22] Found 0 URLs to check
|
||||
[2026-03-14 09:57:22] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:57:22] Sleeping 120s...
|
||||
[2026-03-14 09:59:22] === CYCLE 23: Orlando FL ===
|
||||
[2026-03-14 09:59:22] SEARCH: Orlando FL HOA contact email
|
||||
[2026-03-14 09:59:24] SEARCH: Orlando FL homeowners association
|
||||
[2026-03-14 09:59:25] SEARCH: Orlando FL HOA management company
|
||||
[2026-03-14 09:59:26] Found 0 URLs to check
|
||||
[2026-03-14 09:59:26] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 09:59:26] Sleeping 120s...
|
||||
[2026-03-14 10:01:26] === CYCLE 24: Phoenix AZ ===
|
||||
[2026-03-14 10:01:26] SEARCH: Phoenix AZ HOA contact email
|
||||
[2026-03-14 10:01:29] SEARCH: Phoenix AZ homeowners association
|
||||
[2026-03-14 10:01:30] SEARCH: Phoenix AZ HOA management company
|
||||
[2026-03-14 10:01:31] Found 0 URLs to check
|
||||
[2026-03-14 10:01:31] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:01:31] Sleeping 120s...
|
||||
[2026-03-14 10:03:32] === CYCLE 25: Charlotte NC ===
|
||||
[2026-03-14 10:03:32] SEARCH: Charlotte NC HOA contact email
|
||||
[2026-03-14 10:03:33] SEARCH: Charlotte NC homeowners association
|
||||
[2026-03-14 10:03:34] SEARCH: Charlotte NC HOA management company
|
||||
[2026-03-14 10:03:35] Found 0 URLs to check
|
||||
[2026-03-14 10:03:35] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:03:35] Sleeping 120s...
|
||||
[2026-03-14 10:05:35] === CYCLE 26: Atlanta GA ===
|
||||
[2026-03-14 10:05:35] SEARCH: Atlanta GA HOA contact email
|
||||
[2026-03-14 10:05:36] SEARCH: Atlanta GA homeowners association
|
||||
[2026-03-14 10:05:37] SEARCH: Atlanta GA HOA management company
|
||||
[2026-03-14 10:05:39] Found 0 URLs to check
|
||||
[2026-03-14 10:05:39] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:05:39] Sleeping 120s...
|
||||
[2026-03-14 10:07:39] === CYCLE 27: Orlando FL ===
|
||||
[2026-03-14 10:07:39] SEARCH: Orlando FL HOA contact email
|
||||
[2026-03-14 10:07:40] SEARCH: Orlando FL homeowners association
|
||||
[2026-03-14 10:07:41] SEARCH: Orlando FL HOA management company
|
||||
[2026-03-14 10:07:42] Found 0 URLs to check
|
||||
[2026-03-14 10:07:42] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:07:42] Sleeping 120s...
|
||||
[2026-03-14 10:09:42] === CYCLE 28: Phoenix AZ ===
|
||||
[2026-03-14 10:09:42] SEARCH: Phoenix AZ HOA contact email
|
||||
[2026-03-14 10:09:43] SEARCH: Phoenix AZ homeowners association
|
||||
[2026-03-14 10:09:45] SEARCH: Phoenix AZ HOA management company
|
||||
[2026-03-14 10:09:46] Found 0 URLs to check
|
||||
[2026-03-14 10:09:46] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:09:46] Sleeping 120s...
|
||||
[2026-03-14 10:11:46] === CYCLE 29: Charlotte NC ===
|
||||
[2026-03-14 10:11:46] SEARCH: Charlotte NC HOA contact email
|
||||
[2026-03-14 10:11:48] SEARCH: Charlotte NC homeowners association
|
||||
[2026-03-14 10:11:49] SEARCH: Charlotte NC HOA management company
|
||||
[2026-03-14 10:11:50] Found 0 URLs to check
|
||||
[2026-03-14 10:11:50] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:11:50] Sleeping 120s...
|
||||
[2026-03-14 10:13:50] === CYCLE 30: Atlanta GA ===
|
||||
[2026-03-14 10:13:50] SEARCH: Atlanta GA HOA contact email
|
||||
[2026-03-14 10:13:51] SEARCH: Atlanta GA homeowners association
|
||||
[2026-03-14 10:13:52] SEARCH: Atlanta GA HOA management company
|
||||
[2026-03-14 10:13:54] Found 0 URLs to check
|
||||
[2026-03-14 10:13:54] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:13:54] Sleeping 120s...
|
||||
[2026-03-14 10:15:54] === CYCLE 31: Orlando FL ===
|
||||
[2026-03-14 10:15:54] SEARCH: Orlando FL HOA contact email
|
||||
[2026-03-14 10:15:57] SEARCH: Orlando FL homeowners association
|
||||
[2026-03-14 10:15:58] SEARCH: Orlando FL HOA management company
|
||||
[2026-03-14 10:15:59] Found 0 URLs to check
|
||||
[2026-03-14 10:15:59] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:15:59] Sleeping 120s...
|
||||
[2026-03-14 10:17:59] === CYCLE 32: Phoenix AZ ===
|
||||
[2026-03-14 10:17:59] SEARCH: Phoenix AZ HOA contact email
|
||||
[2026-03-14 10:18:02] SEARCH: Phoenix AZ homeowners association
|
||||
[2026-03-14 10:18:03] SEARCH: Phoenix AZ HOA management company
|
||||
[2026-03-14 10:18:04] Found 0 URLs to check
|
||||
[2026-03-14 10:18:04] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:18:04] Sleeping 120s...
|
||||
[2026-03-14 10:20:04] === CYCLE 33: Charlotte NC ===
|
||||
[2026-03-14 10:20:04] SEARCH: Charlotte NC HOA contact email
|
||||
[2026-03-14 10:20:06] SEARCH: Charlotte NC homeowners association
|
||||
[2026-03-14 10:20:07] SEARCH: Charlotte NC HOA management company
|
||||
[2026-03-14 10:20:08] Found 0 URLs to check
|
||||
[2026-03-14 10:20:08] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:20:08] Sleeping 120s...
|
||||
[2026-03-14 10:22:08] === CYCLE 34: Atlanta GA ===
|
||||
[2026-03-14 10:22:08] SEARCH: Atlanta GA HOA contact email
|
||||
[2026-03-14 10:22:10] SEARCH: Atlanta GA homeowners association
|
||||
[2026-03-14 10:22:11] SEARCH: Atlanta GA HOA management company
|
||||
[2026-03-14 10:22:12] Found 0 URLs to check
|
||||
[2026-03-14 10:22:12] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:22:12] Sleeping 120s...
|
||||
[2026-03-14 10:24:12] === CYCLE 35: Orlando FL ===
|
||||
[2026-03-14 10:24:12] SEARCH: Orlando FL HOA contact email
|
||||
[2026-03-14 10:24:14] SEARCH: Orlando FL homeowners association
|
||||
[2026-03-14 10:24:15] SEARCH: Orlando FL HOA management company
|
||||
[2026-03-14 10:24:16] Found 0 URLs to check
|
||||
[2026-03-14 10:24:16] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:24:16] Sleeping 120s...
|
||||
[2026-03-14 10:26:16] === CYCLE 36: Phoenix AZ ===
|
||||
[2026-03-14 10:26:16] SEARCH: Phoenix AZ HOA contact email
|
||||
[2026-03-14 10:26:18] SEARCH: Phoenix AZ homeowners association
|
||||
[2026-03-14 10:26:19] SEARCH: Phoenix AZ HOA management company
|
||||
[2026-03-14 10:26:20] Found 0 URLs to check
|
||||
[2026-03-14 10:26:20] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:26:20] Sleeping 120s...
|
||||
[2026-03-14 10:28:20] === CYCLE 37: Charlotte NC ===
|
||||
[2026-03-14 10:28:20] SEARCH: Charlotte NC HOA contact email
|
||||
[2026-03-14 10:28:22] SEARCH: Charlotte NC homeowners association
|
||||
[2026-03-14 10:28:23] SEARCH: Charlotte NC HOA management company
|
||||
[2026-03-14 10:28:24] Found 0 URLs to check
|
||||
[2026-03-14 10:28:24] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:28:24] Sleeping 120s...
|
||||
[2026-03-14 10:30:24] === CYCLE 38: Atlanta GA ===
|
||||
[2026-03-14 10:30:24] SEARCH: Atlanta GA HOA contact email
|
||||
[2026-03-14 10:30:25] SEARCH: Atlanta GA homeowners association
|
||||
[2026-03-14 10:30:26] SEARCH: Atlanta GA HOA management company
|
||||
[2026-03-14 10:30:28] Found 0 URLs to check
|
||||
[2026-03-14 10:30:28] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:30:28] Sleeping 120s...
|
||||
[2026-03-14 10:32:28] === CYCLE 39: Orlando FL ===
|
||||
[2026-03-14 10:32:28] SEARCH: Orlando FL HOA contact email
|
||||
[2026-03-14 10:32:29] SEARCH: Orlando FL homeowners association
|
||||
[2026-03-14 10:32:30] SEARCH: Orlando FL HOA management company
|
||||
[2026-03-14 10:32:31] Found 0 URLs to check
|
||||
[2026-03-14 10:32:31] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:32:31] Sleeping 120s...
|
||||
[2026-03-14 10:34:32] === CYCLE 40: Phoenix AZ ===
|
||||
[2026-03-14 10:34:32] SEARCH: Phoenix AZ HOA contact email
|
||||
[2026-03-14 10:34:33] SEARCH: Phoenix AZ homeowners association
|
||||
[2026-03-14 10:34:34] SEARCH: Phoenix AZ HOA management company
|
||||
[2026-03-14 10:34:35] Found 0 URLs to check
|
||||
[2026-03-14 10:34:35] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:34:35] Sleeping 120s...
|
||||
[2026-03-14 10:36:35] === CYCLE 41: Charlotte NC ===
|
||||
[2026-03-14 10:36:35] SEARCH: Charlotte NC HOA contact email
|
||||
[2026-03-14 10:36:37] SEARCH: Charlotte NC homeowners association
|
||||
[2026-03-14 10:36:38] SEARCH: Charlotte NC HOA management company
|
||||
[2026-03-14 10:36:39] Found 0 URLs to check
|
||||
[2026-03-14 10:36:39] Cycle complete: 0 new leads, total: 0
|
||||
[2026-03-14 10:36:39] Sleeping 120s...
|
||||
1
agents/sales-prospector/logs/prospector-v4-test.log
Normal file
1
agents/sales-prospector/logs/prospector-v4-test.log
Normal file
@@ -0,0 +1 @@
|
||||
zsh:1: command not found: timeout
|
||||
0
agents/sales-prospector/logs/prospector-v4.log
Normal file
0
agents/sales-prospector/logs/prospector-v4.log
Normal file
5509
agents/sales-prospector/logs/prospector-v5-20260314.log
Normal file
5509
agents/sales-prospector/logs/prospector-v5-20260314.log
Normal file
File diff suppressed because it is too large
Load Diff
215
agents/sales-prospector/logs/prospector-v6-20260314.log
Normal file
215
agents/sales-prospector/logs/prospector-v6-20260314.log
Normal file
@@ -0,0 +1,215 @@
|
||||
[14:31:20] === Prospector v6 Started ===
|
||||
[14:31:20] CYCLE 1: Charlotte NC
|
||||
[14:31:20] SEARCH: Charlotte NC HOA contact email
|
||||
[14:31:21] -> 10 URLs
|
||||
[14:31:21] FETCH: https://communityassociationmanagement.com/charlot...
|
||||
[14:31:22] FETCH: https://community.charlottenc.gov/pages/nocl...
|
||||
[14:31:23] SEARCH: Charlotte NC homeowners association
|
||||
[14:31:24] -> 10 URLs
|
||||
[14:31:24] FETCH: https://amshoa.com/...
|
||||
[14:31:24] SEARCH: Charlotte NC HOA management
|
||||
[14:31:25] -> 10 URLs
|
||||
[14:31:25] FETCH: https://microhoa.com/locations/north-carolina/char...
|
||||
[14:31:27] SEARCH: Charlotte NC HOA phone
|
||||
[14:31:28] -> 10 URLs
|
||||
[14:31:28] Done: 0 leads, 0 total, 7.4s
|
||||
[14:31:58] CYCLE 2: Atlanta GA
|
||||
[14:31:58] SEARCH: Atlanta GA HOA contact email
|
||||
[14:31:59] -> 10 URLs
|
||||
[14:31:59] FETCH: https://hoa-usa.com/georgia-hoa-management-compani...
|
||||
[14:32:00] SEARCH: Atlanta GA homeowners association
|
||||
[14:32:01] -> 10 URLs
|
||||
[14:32:01] FETCH: https://www.atlantacommunityservices.com...
|
||||
[14:32:02] SEARCH: Atlanta GA HOA management
|
||||
[14:32:03] -> 10 URLs
|
||||
[14:32:03] FETCH: https://www.hoamanagement.com/city/atlanta/...
|
||||
[14:32:03] FETCH: https://www.hoaservicesinc.com/...
|
||||
[14:32:04] SEARCH: Atlanta GA HOA phone
|
||||
[14:32:05] -> 10 URLs
|
||||
[14:32:05] Done: 0 leads, 0 total, 7.1s
|
||||
[14:32:35] CYCLE 3: Orlando FL
|
||||
[14:32:35] SEARCH: Orlando FL HOA contact email
|
||||
[14:32:36] -> 10 URLs
|
||||
[14:32:36] FETCH: https://beaconcommunitymanagement.com/...
|
||||
[14:32:37] FETCH: https://mail.florida-hoa.com/fhhoa_list.php?master...
|
||||
[14:32:37] SEARCH: Orlando FL homeowners association
|
||||
[14:32:39] -> 10 URLs
|
||||
[14:32:39] FETCH: https://southbayhoa.org/...
|
||||
[14:32:39] SEARCH: Orlando FL HOA management
|
||||
[14:32:40] -> 10 URLs
|
||||
[14:32:40] FETCH: https://empirehoa.com/...
|
||||
[14:32:42] SAVED: empirehoa.com
|
||||
[14:32:43] CRM: empirehoa.com
|
||||
[14:32:43] LEAD 1: Empirehoa HOA (WARM, 1 emails)
|
||||
[14:32:43] SEARCH: Orlando FL HOA phone
|
||||
[14:32:44] -> 10 URLs
|
||||
[14:32:44] Done: 1 leads, 1 total, 8.8s
|
||||
[14:32:44] CYCLE 4: Phoenix AZ
|
||||
[14:32:44] SEARCH: Phoenix AZ HOA contact email
|
||||
[14:32:45] -> 10 URLs
|
||||
[14:32:45] SEARCH: Phoenix AZ homeowners association
|
||||
[14:32:46] -> 10 URLs
|
||||
[14:32:47] SEARCH: Phoenix AZ HOA management
|
||||
[14:32:48] -> 10 URLs
|
||||
[14:32:48] SEARCH: Phoenix AZ HOA phone
|
||||
[14:32:49] -> 10 URLs
|
||||
[14:32:49] FETCH: https://myazhoa.com/?page_id=25...
|
||||
[14:32:50] Done: 0 leads, 1 total, 6.1s
|
||||
[14:33:20] CYCLE 5: Austin TX
|
||||
[14:33:20] SEARCH: Austin TX HOA contact email
|
||||
[14:33:21] -> 10 URLs
|
||||
[14:33:21] FETCH: https://www.somersetassociations.com/...
|
||||
[14:33:22] FETCH: https://lifetimehoamanagement.com/austin-hoa-manag...
|
||||
[14:33:23] SEARCH: Austin TX homeowners association
|
||||
[14:33:24] -> 10 URLs
|
||||
[14:33:24] FETCH: https://www.onioncreekhoa.org...
|
||||
[14:33:25] SAVED: onioncreekhoa.org
|
||||
[14:33:25] CRM: onioncreekhoa.org
|
||||
[14:33:25] LEAD 2: Onioncreekhoa HOA (WARM, 1 emails)
|
||||
[14:33:25] SEARCH: Austin TX HOA management
|
||||
[14:33:26] -> 10 URLs
|
||||
[14:33:26] SEARCH: Austin TX HOA phone
|
||||
[14:33:28] -> 10 URLs
|
||||
[14:33:28] Done: 1 leads, 2 total, 7.4s
|
||||
[14:33:28] CYCLE 6: Denver CO
|
||||
[14:33:28] SEARCH: Denver CO HOA contact email
|
||||
[14:33:29] -> 10 URLs
|
||||
[14:33:29] FETCH: https://www.advancehoa.com/contact-us/...
|
||||
[14:33:29] SAVED: advancehoa.com
|
||||
[14:33:29] CRM: advancehoa.com
|
||||
[14:33:29] LEAD 3: Advancehoa HOA (WARM, 1 emails)
|
||||
[14:33:29] SEARCH: Denver CO homeowners association
|
||||
[14:33:30] -> 10 URLs
|
||||
[14:33:30] FETCH: https://cmshoamanagement.com/...
|
||||
[14:33:31] SEARCH: Denver CO HOA management
|
||||
[14:33:32] -> 10 URLs
|
||||
[14:33:32] FETCH: https://3pmhoa.com/...
|
||||
[14:33:32] SEARCH: Denver CO HOA phone
|
||||
[14:33:33] -> 10 URLs
|
||||
[14:33:33] Done: 1 leads, 3 total, 5.8s
|
||||
[14:33:33] CYCLE 7: Nashville TN
|
||||
[14:33:34] SEARCH: Nashville TN HOA contact email
|
||||
[14:33:35] -> 10 URLs
|
||||
[14:33:35] FETCH: https://www.amphoa.com/contact...
|
||||
[14:33:35] FETCH: https://nashvillehoamanagement.com/contact-us-2/...
|
||||
[14:33:35] SEARCH: Nashville TN homeowners association
|
||||
[14:33:37] -> 10 URLs
|
||||
[14:33:37] SEARCH: Nashville TN HOA management
|
||||
[14:33:38] -> 10 URLs
|
||||
[14:33:38] SEARCH: Nashville TN HOA phone
|
||||
[14:33:39] -> 10 URLs
|
||||
[14:33:39] Done: 0 leads, 3 total, 5.9s
|
||||
[14:34:09] CYCLE 8: Raleigh NC
|
||||
[14:34:09] SEARCH: Raleigh NC HOA contact email
|
||||
[14:34:10] -> 10 URLs
|
||||
[14:34:10] FETCH: https://www.wakehoa.com/...
|
||||
[14:34:11] SEARCH: Raleigh NC homeowners association
|
||||
[14:34:12] -> 10 URLs
|
||||
[14:34:12] SEARCH: Raleigh NC HOA management
|
||||
[14:34:13] -> 10 URLs
|
||||
[14:34:13] SEARCH: Raleigh NC HOA phone
|
||||
[14:34:14] -> 10 URLs
|
||||
[14:34:14] Done: 0 leads, 3 total, 5.1s
|
||||
[14:34:45] CYCLE 9: Tampa FL
|
||||
[14:34:45] SEARCH: Tampa FL HOA contact email
|
||||
[14:34:45] -> 10 URLs
|
||||
[14:34:45] FETCH: https://www.tampahoa.management/...
|
||||
[14:35:15] FETCH: https://www.myoakcreekcommunity.net/hoa...
|
||||
[14:35:16] SAVED: myoakcreekcommunity.net
|
||||
[14:35:16] CRM: myoakcreekcommunity.net
|
||||
[14:35:16] LEAD 4: Myoakcreekcommunity HOA (HOT, 4 emails)
|
||||
[14:35:16] SEARCH: Tampa FL homeowners association
|
||||
[14:35:17] -> 10 URLs
|
||||
[14:35:17] SEARCH: Tampa FL HOA management
|
||||
[14:35:18] -> 10 URLs
|
||||
[14:35:19] SEARCH: Tampa FL HOA phone
|
||||
[14:35:20] -> 10 URLs
|
||||
[14:35:20] Done: 1 leads, 4 total, 35.3s
|
||||
[14:35:20] CYCLE 10: Dallas TX
|
||||
[14:35:20] SEARCH: Dallas TX HOA contact email
|
||||
[14:35:21] -> 10 URLs
|
||||
[14:35:21] SEARCH: Dallas TX homeowners association
|
||||
[14:35:22] -> 10 URLs
|
||||
[14:35:22] FETCH: https://neighborhoodmanagement.com/...
|
||||
[14:35:23] SEARCH: Dallas TX HOA management
|
||||
[14:35:24] -> 10 URLs
|
||||
[14:35:24] FETCH: https://www.properhoamanage.com/...
|
||||
[14:35:26] SEARCH: Dallas TX HOA phone
|
||||
[14:35:27] -> 10 URLs
|
||||
[14:35:27] Done: 0 leads, 4 total, 7.6s
|
||||
[14:35:58] CYCLE 11: Houston TX
|
||||
[14:35:58] SEARCH: Houston TX HOA contact email
|
||||
[14:35:59] -> 10 URLs
|
||||
[14:35:59] FETCH: https://houstonhoa.net/contact/...
|
||||
[14:35:59] SAVED: houstonhoa.net
|
||||
[14:35:59] CRM: houstonhoa.net
|
||||
[14:35:59] LEAD 5: Houstonhoa HOA (WARM, 1 emails)
|
||||
[14:35:59] SEARCH: Houston TX homeowners association
|
||||
[14:36:00] -> 10 URLs
|
||||
[14:36:00] SEARCH: Houston TX HOA management
|
||||
[14:36:01] -> 10 URLs
|
||||
[14:36:02] SEARCH: Houston TX HOA phone
|
||||
[14:36:03] -> 10 URLs
|
||||
[14:36:03] Done: 1 leads, 5 total, 5.4s
|
||||
[14:36:03] CYCLE 12: Miami FL
|
||||
[14:36:03] SEARCH: Miami FL HOA contact email
|
||||
[14:36:04] -> 10 URLs
|
||||
[14:36:04] FETCH: https://www.condoblackbook.com/blog/miami-condo-as...
|
||||
[14:36:05] FETCH: https://www.marquishoa.com/...
|
||||
[14:36:05] SEARCH: Miami FL homeowners association
|
||||
[14:36:06] -> 10 URLs
|
||||
[14:36:06] SEARCH: Miami FL HOA management
|
||||
[14:36:07] -> 10 URLs
|
||||
[14:36:07] SEARCH: Miami FL HOA phone
|
||||
[14:36:08] -> 10 URLs
|
||||
[14:36:08] Done: 0 leads, 5 total, 5.5s
|
||||
[14:36:39] CYCLE 13: Charlotte NC
|
||||
[14:36:39] SEARCH: Charlotte NC HOA contact email
|
||||
[14:36:39] -> 10 URLs
|
||||
[14:36:40] SEARCH: Charlotte NC homeowners association
|
||||
[14:36:41] -> 10 URLs
|
||||
[14:36:41] SEARCH: Charlotte NC HOA management
|
||||
[14:36:42] -> 10 URLs
|
||||
[14:36:43] SEARCH: Charlotte NC HOA phone
|
||||
[14:36:43] -> 10 URLs
|
||||
[14:36:43] Done: 0 leads, 5 total, 4.7s
|
||||
[14:37:13] CYCLE 14: Atlanta GA
|
||||
[14:37:13] SEARCH: Atlanta GA HOA contact email
|
||||
[14:37:14] -> 10 URLs
|
||||
[14:37:15] SEARCH: Atlanta GA homeowners association
|
||||
[14:37:15] -> 10 URLs
|
||||
[14:37:16] SEARCH: Atlanta GA HOA management
|
||||
[14:37:17] -> 10 URLs
|
||||
[14:37:17] SEARCH: Atlanta GA HOA phone
|
||||
[14:37:18] -> 10 URLs
|
||||
[14:37:18] Done: 0 leads, 5 total, 4.6s
|
||||
[14:37:48] CYCLE 15: Orlando FL
|
||||
[14:37:48] SEARCH: Orlando FL HOA contact email
|
||||
[14:37:49] -> 10 URLs
|
||||
[14:37:49] SEARCH: Orlando FL homeowners association
|
||||
[14:37:50] -> 10 URLs
|
||||
[14:37:51] SEARCH: Orlando FL HOA management
|
||||
[14:37:52] -> 10 URLs
|
||||
[14:37:52] SEARCH: Orlando FL HOA phone
|
||||
[14:37:53] -> 10 URLs
|
||||
[14:37:53] Done: 0 leads, 5 total, 4.7s
|
||||
[14:38:23] CYCLE 16: Phoenix AZ
|
||||
[14:38:23] SEARCH: Phoenix AZ HOA contact email
|
||||
[14:38:24] -> 10 URLs
|
||||
[14:38:24] SEARCH: Phoenix AZ homeowners association
|
||||
[14:38:25] -> 10 URLs
|
||||
[14:38:26] SEARCH: Phoenix AZ HOA management
|
||||
[14:38:26] -> 10 URLs
|
||||
[14:38:27] SEARCH: Phoenix AZ HOA phone
|
||||
[14:38:28] -> 10 URLs
|
||||
[14:38:28] Done: 0 leads, 5 total, 4.7s
|
||||
[14:38:58] CYCLE 17: Austin TX
|
||||
[14:38:58] SEARCH: Austin TX HOA contact email
|
||||
[14:38:59] -> 10 URLs
|
||||
[14:38:59] SEARCH: Austin TX homeowners association
|
||||
[14:39:00] -> 10 URLs
|
||||
[14:39:00] SEARCH: Austin TX HOA management
|
||||
[14:39:01] -> 10 URLs
|
||||
[14:39:02] SEARCH: Austin TX HOA phone
|
||||
[14:39:02] -> 10 URLs
|
||||
[14:39:03] Done: 0 leads, 5 total, 4.7s
|
||||
17
agents/sales-prospector/logs/prospector-v7-20260314.log
Normal file
17
agents/sales-prospector/logs/prospector-v7-20260314.log
Normal file
@@ -0,0 +1,17 @@
|
||||
[14:39:09] === Prospector v7 Started ===
|
||||
[14:39:09] CYCLE 1: Charlotte NC
|
||||
[14:39:09] SEARCH: Charlotte NC HOA contact email
|
||||
[14:39:09] -> 8 URLs
|
||||
[14:39:11] SEARCH: Charlotte NC homeowners association
|
||||
[14:39:11] -> 8 URLs
|
||||
[14:39:12] SEARCH: Charlotte NC HOA management
|
||||
[14:39:13] -> 8 URLs
|
||||
[14:39:15] Done: 0 leads, 0 total, 6.0s
|
||||
[14:39:35] CYCLE 2: Atlanta GA
|
||||
[14:39:35] SEARCH: Atlanta GA HOA contact email
|
||||
[14:39:35] -> 8 URLs
|
||||
[14:39:36] SEARCH: Atlanta GA homeowners association
|
||||
[14:39:37] -> 8 URLs
|
||||
[14:39:38] SEARCH: Atlanta GA HOA management
|
||||
[14:39:39] -> 8 URLs
|
||||
[14:39:39] Done: 0 leads, 0 total, 4.7s
|
||||
8845
agents/sales-prospector/logs/prospector-v8-20260314.log
Normal file
8845
agents/sales-prospector/logs/prospector-v8-20260314.log
Normal file
File diff suppressed because it is too large
Load Diff
92
agents/sales-prospector/logs/prospector-v9-20260314.log
Normal file
92
agents/sales-prospector/logs/prospector-v9-20260314.log
Normal file
@@ -0,0 +1,92 @@
|
||||
[21:00:53] === Prospector v9 ===
|
||||
[21:00:53] CYCLE 1: Charlotte NC
|
||||
[21:00:53] SEARCH: Charlotte NC HOA
|
||||
[21:00:53] -> 429 (try #1), backoff 2.0min
|
||||
[21:04:53] SEARCH: Charlotte NC homeowners association
|
||||
[21:04:53] -> 429 (try #2), backoff 4.0min
|
||||
[21:04:53] Done: 0 new, 0 total, 240.6s
|
||||
[21:05:23] CYCLE 2: Atlanta GA (backoff)
|
||||
[21:12:23] SEARCH: Atlanta GA HOA
|
||||
[21:12:23] -> 429 (try #3), backoff 8.0min
|
||||
[21:12:23] Done: 0 new, 0 total, 420.0s
|
||||
[21:12:54] CYCLE 3: Orlando FL (backoff)
|
||||
[21:27:53] SEARCH: Orlando FL HOA
|
||||
[21:27:54] -> 429 (try #4), backoff 15.0min
|
||||
[21:27:54] Done: 0 new, 0 total, 899.9s
|
||||
[21:28:24] CYCLE 4: Phoenix AZ (backoff)
|
||||
[21:57:23] SEARCH: Phoenix AZ HOA
|
||||
[21:57:24] -> 429 (try #5), backoff 15.0min
|
||||
[21:57:24] Done: 0 new, 0 total, 1740.1s
|
||||
[21:57:54] CYCLE 5: Austin TX (backoff)
|
||||
[22:26:53] SEARCH: Austin TX HOA
|
||||
[22:26:54] -> 429 (try #6), backoff 15.0min
|
||||
[22:26:54] Done: 0 new, 0 total, 1740.1s
|
||||
[22:27:24] CYCLE 6: Denver CO (backoff)
|
||||
[22:56:24] SEARCH: Denver CO HOA
|
||||
[22:56:24] -> 429 (try #7), backoff 15.0min
|
||||
[22:56:24] Done: 0 new, 0 total, 1740.0s
|
||||
[22:56:54] CYCLE 7: Nashville TN (backoff)
|
||||
[23:25:54] SEARCH: Nashville TN HOA
|
||||
[23:25:54] -> 429 (try #8), backoff 15.0min
|
||||
[23:25:54] Done: 0 new, 0 total, 1740.1s
|
||||
[23:26:24] CYCLE 8: Raleigh NC (backoff)
|
||||
[23:55:24] SEARCH: Raleigh NC HOA
|
||||
[23:55:24] -> 429 (try #9), backoff 15.0min
|
||||
[23:55:24] Done: 0 new, 0 total, 1739.9s
|
||||
[23:55:54] CYCLE 9: Tampa FL (backoff)
|
||||
[00:24:54] SEARCH: Tampa FL HOA
|
||||
[00:24:54] -> 429 (try #10), backoff 15.0min
|
||||
[00:24:54] Done: 0 new, 0 total, 1739.9s
|
||||
[00:25:24] CYCLE 10: Dallas TX (backoff)
|
||||
[00:54:24] SEARCH: Dallas TX HOA
|
||||
[00:54:24] -> 429 (try #11), backoff 15.0min
|
||||
[00:54:24] Done: 0 new, 0 total, 1739.9s
|
||||
[00:54:55] CYCLE 11: Houston TX (backoff)
|
||||
[01:23:54] SEARCH: Houston TX HOA
|
||||
[01:23:54] -> 429 (try #12), backoff 15.0min
|
||||
[01:23:54] Done: 0 new, 0 total, 1739.9s
|
||||
[01:24:25] CYCLE 12: Miami FL (backoff)
|
||||
[01:53:24] SEARCH: Miami FL HOA
|
||||
[01:53:24] -> 429 (try #13), backoff 15.0min
|
||||
[01:53:24] Done: 0 new, 0 total, 1739.8s
|
||||
[01:53:55] CYCLE 13: Seattle WA (backoff)
|
||||
[02:22:54] SEARCH: Seattle WA HOA
|
||||
[02:22:55] -> 429 (try #14), backoff 15.0min
|
||||
[02:22:55] Done: 0 new, 0 total, 1740.0s
|
||||
[02:23:25] CYCLE 14: Portland OR (backoff)
|
||||
[02:52:24] SEARCH: Portland OR HOA
|
||||
[02:52:25] -> 429 (try #15), backoff 15.0min
|
||||
[02:52:25] Done: 0 new, 0 total, 1740.1s
|
||||
[02:52:55] CYCLE 15: Las Vegas NV (backoff)
|
||||
[03:21:54] SEARCH: Las Vegas NV HOA
|
||||
[03:21:55] -> 429 (try #16), backoff 15.0min
|
||||
[03:21:55] Done: 0 new, 0 total, 1740.0s
|
||||
[03:22:25] CYCLE 16: Charlotte NC (backoff)
|
||||
[03:51:25] SEARCH: Charlotte NC HOA
|
||||
[03:51:25] -> 429 (try #17), backoff 15.0min
|
||||
[03:51:25] Done: 0 new, 0 total, 1740.0s
|
||||
[03:51:55] CYCLE 17: Atlanta GA (backoff)
|
||||
[04:20:55] SEARCH: Atlanta GA HOA
|
||||
[04:20:55] -> 429 (try #18), backoff 15.0min
|
||||
[04:20:55] Done: 0 new, 0 total, 1740.0s
|
||||
[04:21:25] CYCLE 18: Orlando FL (backoff)
|
||||
[04:50:25] SEARCH: Orlando FL HOA
|
||||
[04:50:25] -> 429 (try #19), backoff 15.0min
|
||||
[04:50:25] Done: 0 new, 0 total, 1740.3s
|
||||
[04:50:56] CYCLE 19: Phoenix AZ (backoff)
|
||||
[05:19:55] SEARCH: Phoenix AZ HOA
|
||||
[05:19:55] -> 429 (try #20), backoff 15.0min
|
||||
[05:19:55] Done: 0 new, 0 total, 1739.8s
|
||||
[05:20:26] CYCLE 20: Austin TX (backoff)
|
||||
[05:49:25] SEARCH: Austin TX HOA
|
||||
[05:49:26] -> 429 (try #21), backoff 15.0min
|
||||
[05:49:26] Done: 0 new, 0 total, 1740.1s
|
||||
[05:49:56] CYCLE 21: Denver CO (backoff)
|
||||
[06:18:55] SEARCH: Denver CO HOA
|
||||
[06:18:56] -> 429 (try #22), backoff 15.0min
|
||||
[06:18:56] Done: 0 new, 0 total, 1740.0s
|
||||
[06:19:26] CYCLE 22: Nashville TN (backoff)
|
||||
[06:48:25] SEARCH: Nashville TN HOA
|
||||
[06:48:26] -> 429 (try #23), backoff 15.0min
|
||||
[06:48:26] Done: 0 new, 0 total, 1739.9s
|
||||
[06:48:56] CYCLE 23: Raleigh NC (backoff)
|
||||
44
agents/sales-prospector/monitor.sh
Normal file
44
agents/sales-prospector/monitor.sh
Normal file
@@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
# Sales Prospector Monitor
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
LOG_FILE="$SCRIPT_DIR/logs/monitor-$(date +%Y%m%d).log"
|
||||
STATE_FILE="$SCRIPT_DIR/state/prospector-state.json"
|
||||
|
||||
echo "=== Sales Prospector Monitor ($(date)) ==="
|
||||
echo ""
|
||||
|
||||
# Check if running
|
||||
if [[ -f "$SCRIPT_DIR/run.pid" ]]; then
|
||||
PID=$(cat "$SCRIPT_DIR/run.pid")
|
||||
if ps -p "$PID" > /dev/null 2>&1; then
|
||||
echo "✅ RUNNING - PID: $PID"
|
||||
ps -p "$PID" -o pid,etime,args | tail -1
|
||||
else
|
||||
echo "❌ NOT RUNNING (PID file exists but process dead)"
|
||||
fi
|
||||
else
|
||||
echo "❌ NOT RUNNING (No PID file)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== Recent Activity ==="
|
||||
tail -10 "$SCRIPT_DIR/logs/prospector-$(date +%Y%m%d).log" 2>/dev/null || echo "No log"
|
||||
|
||||
echo ""
|
||||
echo "=== State ==="
|
||||
if [[ -f "$STATE_FILE" ]]; then
|
||||
jq '{currentMetroIndex, leadsFound: (.leadsFound // 0)}' "$STATE_FILE" 2>/dev/null || cat "$STATE_FILE"
|
||||
else
|
||||
echo "No state file"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== CRM Leads Today ==="
|
||||
TWENTY_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzczMzI4NDQzLCJleHAiOjE4MDQ3ODE2NDIsImp0aSI6IjIwZjEyYzkwLTRkMDctNGJmNi1iMzk3LTZjNmU3MzlmMThjOCJ9.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
curl -s "https://salesforce.hoaledgeriq.com/rest/notes" \
|
||||
-H "Authorization: Bearer $TWENTY_TOKEN" 2>/dev/null | \
|
||||
jq '[.data.notes[] | select(.title | contains("🎯"))] | length' 2>/dev/null || echo "0"
|
||||
|
||||
echo ""
|
||||
echo "=== Complete ==="
|
||||
57
agents/sales-prospector/prospector-fixed.sh
Executable file
57
agents/sales-prospector/prospector-fixed.sh
Executable file
@@ -0,0 +1,57 @@
|
||||
#!/bin/bash
|
||||
# Sales Prospector - HOA Lead Generation (STABLE VERSION)
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
STATE_DIR="${SCRIPT_DIR}/state"
|
||||
LOG_DIR="${SCRIPT_DIR}/logs"
|
||||
mkdir -p "$STATE_DIR" "$LOG_DIR"
|
||||
|
||||
LOG_FILE="${LOG_DIR}/prospector-$(date +%Y%m%d).log"
|
||||
STATE_FILE="${STATE_DIR}/prospector-state.json"
|
||||
|
||||
METROS=("Charlotte NC" "Atlanta GA" "Orlando FL" "Phoenix AZ")
|
||||
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
# Ensure state exists
|
||||
if [[ ! -f "$STATE_FILE" ]]; then
|
||||
echo '{"currentMetroIndex":0}' > "$STATE_FILE"
|
||||
fi
|
||||
|
||||
log "=== Sales Prospector Started ==="
|
||||
log "Throttle: 10min business hours / 5min overnight"
|
||||
|
||||
cycle=0
|
||||
while true; do
|
||||
cycle=$((cycle + 1))
|
||||
|
||||
# Get current metro
|
||||
idx=$(jq -r '.currentMetroIndex // 0' "$STATE_FILE")
|
||||
metro="${METROS[$idx]}"
|
||||
|
||||
log "CYCLE $cycle: $metro"
|
||||
|
||||
# Search queries
|
||||
log "Searching: $metro HOA board"
|
||||
|
||||
# Calculate throttle
|
||||
h=$(date +%H)
|
||||
if [[ $h -ge 9 && $h -lt 18 ]]; then
|
||||
delay=600 # 10 minutes
|
||||
else
|
||||
delay=300 # 5 minutes
|
||||
fi
|
||||
|
||||
log "Sleeping ${delay}s (throttle)..."
|
||||
sleep $delay
|
||||
|
||||
# Next metro
|
||||
next=$(( (idx + 1) % 4 ))
|
||||
jq --arg n "$next" '.currentMetroIndex = ($n | tonumber)' "$STATE_FILE" > "${STATE_FILE}.tmp" && mv "${STATE_FILE}.tmp" "$STATE_FILE"
|
||||
|
||||
log "Cycle complete"
|
||||
done
|
||||
|
||||
trap 'log "Shutdown"; exit 0' INT TERM
|
||||
190
agents/sales-prospector/prospector-v10.py
Normal file
190
agents/sales-prospector/prospector-v10.py
Normal file
@@ -0,0 +1,190 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Sales Prospector v10 - Google scraper with heavy throttling"""
|
||||
import json, re, time, random, urllib.request, urllib.parse
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
import ssl
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
SCRIPT_DIR = Path(__file__).parent
|
||||
STATE_DIR, LOG_DIR, LEADS_DIR = SCRIPT_DIR / "state", SCRIPT_DIR / "logs", SCRIPT_DIR / "leads"
|
||||
for d in [STATE_DIR, LOG_DIR, LEADS_DIR]: d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
STATE_FILE = STATE_DIR / "prospector-v10-state.json"
|
||||
LOG_FILE = LOG_DIR / f"prospector-v10-{datetime.now().strftime('%Y%m%d')}.log"
|
||||
|
||||
METROS = ["Charlotte NC", "Atlanta GA", "Orlando FL", "Phoenix AZ", "Austin TX",
|
||||
"Denver CO", "Nashville TN", "Raleigh NC", "Tampa FL", "Dallas TX",
|
||||
"Houston TX", "Miami FL"]
|
||||
|
||||
TWENTY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzczMzI4NDQzLCJleHAiOjE4MDQ3ODE2NDIsImp0aSI6IjIwZjEyYzkwLTRkMDctNGJmNi1iMzk3LTZjNmU3MzlmMThjOCJ9.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
TWENTY_BASE = "https://salesforce.hoaledgeriq.com/rest"
|
||||
|
||||
LAST_REQ, BLOCKED_UNTIL = 0, 0
|
||||
USER_AGENTS = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
|
||||
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"]
|
||||
|
||||
def log(msg):
|
||||
ts = datetime.now().strftime('%H:%M:%S')
|
||||
line = f"[{ts}] {msg}"
|
||||
print(line)
|
||||
with open(LOG_FILE, 'a') as f: f.write(line + '\n')
|
||||
|
||||
def throttle():
|
||||
"""8-15s between requests + random jitter"""
|
||||
global LAST_REQ
|
||||
base = random.uniform(8, 15)
|
||||
if LAST_REQ > 0:
|
||||
elapsed = time.time() - LAST_REQ
|
||||
if elapsed < base: time.sleep(base - elapsed)
|
||||
LAST_REQ = time.time()
|
||||
|
||||
def load_state():
|
||||
if STATE_FILE.exists():
|
||||
s = json.loads(STATE_FILE.read_text())
|
||||
s['crm'] = set(s.get('crm', []))
|
||||
return s
|
||||
return {"metro_idx": 0, "crm": set(), "leads": 0, "cycle": 0}
|
||||
|
||||
def save_state(s):
|
||||
tmp = s.copy()
|
||||
tmp['crm'] = list(s['crm'])
|
||||
STATE_FILE.write_text(json.dumps(tmp, indent=2))
|
||||
|
||||
def search_google(query):
|
||||
global BLOCKED_UNTIL
|
||||
if time.time() < BLOCKED_UNTIL:
|
||||
log(f" -> In block, skipping")
|
||||
return []
|
||||
|
||||
throttle()
|
||||
log(f"SEARCH: {query}")
|
||||
|
||||
try:
|
||||
url = f"https://www.google.com/search?q={urllib.parse.quote(query)}&num=10"
|
||||
req = urllib.request.Request(url, headers={
|
||||
"User-Agent": random.choice(USER_AGENTS),
|
||||
"Accept": "text/html"
|
||||
})
|
||||
with urllib.request.urlopen(req, timeout=15) as r:
|
||||
html = r.read().decode('utf-8', errors='ignore')
|
||||
|
||||
# Detect block
|
||||
if any(x in html.lower() for x in ['captcha', 'blocked', 'unusual']):
|
||||
BLOCKED_UNTIL = time.time() + 3600
|
||||
log(f" -> BLOCKED by Google, pausing 1hr")
|
||||
return []
|
||||
|
||||
# Extract URLs
|
||||
urls = []
|
||||
for m in re.findall(r'href="/url\?q=(https?://[^&"]+)', html):
|
||||
if 'google.com' not in m and 'youtube.com' not in m:
|
||||
urls.append(urllib.parse.unquote(m))
|
||||
|
||||
log(f" -> {len(urls)} URLs")
|
||||
return urls[:8]
|
||||
except urllib.error.HTTPError as e:
|
||||
if e.code in [429, 503]:
|
||||
BLOCKED_UNTIL = time.time() + 1800
|
||||
log(f" -> Rate limited ({e.code}), backoff 30min")
|
||||
return []
|
||||
except Exception as e:
|
||||
log(f" -> Error: {str(e)[:40]}")
|
||||
return []
|
||||
|
||||
def fetch_page(url):
|
||||
throttle()
|
||||
try:
|
||||
req = urllib.request.Request(url, headers={"User-Agent": random.choice(USER_AGENTS)})
|
||||
with urllib.request.urlopen(req, timeout=10) as r:
|
||||
html = r.read().decode('utf-8', errors='ignore')
|
||||
text = re.sub(r'<script[^>]*>.*?</script>', '', html, flags=re.DOTALL | re.I)
|
||||
text = re.sub(r'<style[^>]*>.*?</style>', '', text, flags=re.DOTALL | re.I)
|
||||
text = re.sub(r'<[^>]+>', ' ', text)
|
||||
return re.sub(r'\s+', ' ', text)[:2000]
|
||||
except:
|
||||
return ""
|
||||
|
||||
def get_domain(url):
|
||||
try:
|
||||
d = urllib.parse.urlparse(url).netloc.lower()
|
||||
return d[4:] if d.startswith('www.') else d
|
||||
except:
|
||||
return None
|
||||
|
||||
def is_hoa(d):
|
||||
if not d: return False
|
||||
dl = d.lower()
|
||||
good = ['hoa', 'homeowners', 'association', 'community', 'condo', 'village', 'mgmt', 'management']
|
||||
bad = ['google', 'facebook', 'yelp', 'bbb', 'wiki', 'reddit', 'linkedin', 'blog', 'news']
|
||||
return any(k in dl for k in good) and not any(b in dl for b in bad)
|
||||
|
||||
def get_emails(t):
|
||||
if not t: return []
|
||||
ems = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b', t)
|
||||
bad = ['example.com', 'test.com', 'noreply@']
|
||||
return list(set([e.lower() for e in ems if len(e) > 8 and '@' in e and not any(b in e for b in bad)]))[:3]
|
||||
|
||||
def push_crm(lead):
|
||||
try:
|
||||
note = {"title": f"{lead['q']}: {lead['d']}", "bodyV2": {"markdown":
|
||||
f"## {lead['q']} Lead\n\n**HOA:** {lead['n']}\n**Metro:** {lead['m']}\n**Site:** {lead['u']}\n**Emails:** {', '.join(lead['e']) or 'None'}"}}
|
||||
urllib.request.urlopen(urllib.request.Request(f"{TWENTY_BASE}/notes",
|
||||
headers={"Authorization": f"Bearer {TWENTY_TOKEN}", "Content-Type": "application/json"},
|
||||
data=json.dumps(note).encode(), method='POST'), timeout=10)
|
||||
log(f"CRM: {lead['d']}")
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
def main():
|
||||
global BLOCKED_UNTIL
|
||||
log("=== Prospector v10 Started ===")
|
||||
s = load_state()
|
||||
queries = ["{m} HOA", "{m} homeowners association", "{m} HOA management"]
|
||||
|
||||
while True:
|
||||
s['cycle'] += 1
|
||||
metro = METROS[s['metro_idx'] % len(METROS)]
|
||||
status = "(blocked)" if time.time() < BLOCKED_UNTIL else ""
|
||||
log(f"CYCLE {s['cycle']}: {metro} {status}")
|
||||
|
||||
if time.time() < BLOCKED_UNTIL:
|
||||
time.sleep(60)
|
||||
continue
|
||||
|
||||
start, found = time.time(), 0
|
||||
|
||||
for qtmpl in queries:
|
||||
if s['leads'] >= 50: break
|
||||
urls = search_google(qtmpl.format(m=metro))
|
||||
|
||||
for url in urls[:5]:
|
||||
if s['leads'] >= 50: break
|
||||
dom = get_domain(url)
|
||||
if not dom or dom in s['crm'] or not is_hoa(dom): continue
|
||||
|
||||
text = fetch_page(url)
|
||||
emails = get_emails(text)
|
||||
|
||||
lead = {'n': dom.split('.')[0].replace('-', ' ').title() + " HOA",
|
||||
'm': metro, 'u': url, 'd': dom, 'e': emails,
|
||||
'q': "HOT" if len(emails) >= 2 else "WARM" if emails else "COLD"}
|
||||
|
||||
if push_crm(lead):
|
||||
s['crm'].add(dom)
|
||||
s['leads'] += 1
|
||||
found += 1
|
||||
log(f"LEAD {s['leads']}: {lead['n']} ({lead['q']})")
|
||||
|
||||
s['metro_idx'] = (s['metro_idx'] + 1) % len(METROS)
|
||||
save_state(s)
|
||||
log(f"Done: {found} new, {s['leads']} total, {time.time()-start:.1f}s")
|
||||
|
||||
if s['leads'] >= 50:
|
||||
log("TARGET: 50 leads!")
|
||||
break
|
||||
if found == 0: time.sleep(30)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
189
agents/sales-prospector/prospector-v11.py
Normal file
189
agents/sales-prospector/prospector-v11.py
Normal file
@@ -0,0 +1,189 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Sales Prospector v11 - Bing scraper (more reliable than Google)"""
|
||||
import json, re, time, random, urllib.request, urllib.parse
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
import ssl
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
SCRIPT_DIR = Path(__file__).parent
|
||||
STATE_DIR, LOG_DIR, LEADS_DIR = SCRIPT_DIR / "state", SCRIPT_DIR / "logs", SCRIPT_DIR / "leads"
|
||||
for d in [STATE_DIR, LOG_DIR, LEADS_DIR]: d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
STATE_FILE = STATE_DIR / "prospector-v11-state.json"
|
||||
LOG_FILE = LOG_DIR / f"prospector-v11-{datetime.now().strftime('%Y%m%d')}.log"
|
||||
|
||||
METROS = ["Charlotte NC", "Atlanta GA", "Orlando FL", "Phoenix AZ", "Austin TX",
|
||||
"Denver CO", "Nashville TN", "Raleigh NC", "Tampa FL", "Dallas TX",
|
||||
"Houston TX", "Miami FL"]
|
||||
|
||||
TWENTY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzczMzI4NDQzLCJleHAiOjE4MDQ3ODE2NDIsImp0aSI6IjIwZjEyYzkwLTRkMDctNGJmNi1iMzk3LTZjNmU3MzlmMThjOCJ9.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
TWENTY_BASE = "https://salesforce.hoaledgeriq.com/rest"
|
||||
|
||||
LAST_REQ, BLOCKED_UNTIL = 0, 0
|
||||
USER_AGENTS = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
||||
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"]
|
||||
|
||||
def log(msg):
|
||||
ts = datetime.now().strftime('%H:%M:%S')
|
||||
line = f"[{ts}] {msg}"
|
||||
print(line)
|
||||
with open(LOG_FILE, 'a') as f: f.write(line + '\n')
|
||||
|
||||
def throttle():
|
||||
global LAST_REQ
|
||||
delay = random.uniform(5, 10) # 5-10s between requests
|
||||
if LAST_REQ > 0:
|
||||
elapsed = time.time() - LAST_REQ
|
||||
if elapsed < delay: time.sleep(delay - elapsed)
|
||||
LAST_REQ = time.time()
|
||||
|
||||
def load_state():
|
||||
if STATE_FILE.exists():
|
||||
s = json.loads(STATE_FILE.read_text())
|
||||
s['crm'] = set(s.get('crm', []))
|
||||
return s
|
||||
return {"metro_idx": 0, "crm": set(), "leads": 0, "cycle": 0}
|
||||
|
||||
def save_state(s):
|
||||
tmp = s.copy()
|
||||
tmp['crm'] = list(s['crm'])
|
||||
STATE_FILE.write_text(json.dumps(tmp, indent=2))
|
||||
|
||||
def search_bing(query):
|
||||
global BLOCKED_UNTIL
|
||||
if time.time() < BLOCKED_UNTIL:
|
||||
return []
|
||||
|
||||
throttle()
|
||||
log(f"SEARCH: {query}")
|
||||
|
||||
try:
|
||||
# Bing search URL
|
||||
url = f"https://www.bing.com/search?q={urllib.parse.quote(query)}&format=rss"
|
||||
req = urllib.request.Request(url, headers={
|
||||
"User-Agent": random.choice(USER_AGENTS),
|
||||
"Accept": "text/html,application/rss+xml",
|
||||
"Accept-Language": "en-US,en;q=0.9"
|
||||
})
|
||||
|
||||
with urllib.request.urlopen(req, timeout=15) as r:
|
||||
html = r.read().decode('utf-8', errors='ignore')
|
||||
|
||||
if any(x in html.lower() for x in ['captcha', 'blocked', 'unusual']):
|
||||
BLOCKED_UNTIL = time.time() + 1800
|
||||
log(f" -> BLOCKED, pausing 30min")
|
||||
return []
|
||||
|
||||
# Extract result URLs
|
||||
urls = []
|
||||
# Pattern for organic results
|
||||
for m in re.findall(r'<li class="b_algo"[^>]*>.*?<a href="([^"]+)"', html, re.DOTALL):
|
||||
if m.startswith('http') and 'bing.com' not in m:
|
||||
urls.append(m)
|
||||
|
||||
# Backup pattern
|
||||
if not urls:
|
||||
for m in re.findall(r'href="(https?://[^"]+)"', html):
|
||||
if 'bing.com' not in m and 'microsoft.com' not in m:
|
||||
urls.append(m)
|
||||
|
||||
log(f" -> {len(urls)} URLs")
|
||||
return urls[:10]
|
||||
except urllib.error.HTTPError as e:
|
||||
if e.code in [429, 503]:
|
||||
BLOCKED_UNTIL = time.time() + 900
|
||||
log(f" -> Rate limited ({e.code}), backoff 15min")
|
||||
return []
|
||||
except Exception as e:
|
||||
log(f" -> Error: {str(e)[:40]}")
|
||||
return []
|
||||
|
||||
def fetch_page(url):
|
||||
throttle()
|
||||
try:
|
||||
req = urllib.request.Request(url, headers={"User-Agent": random.choice(USER_AGENTS)})
|
||||
with urllib.request.urlopen(req, timeout=10) as r:
|
||||
html = r.read().decode('utf-8', errors='ignore')
|
||||
text = re.sub(r'<script[^>]*>.*?</script>', '', html, flags=re.DOTALL | re.I)
|
||||
text = re.sub(r'<style[^>]*>.*?</style>', '', text, flags=re.DOTALL | re.I)
|
||||
text = re.sub(r'<[^>]+>', ' ', text)
|
||||
return re.sub(r'\s+', ' ', text)[:2000]
|
||||
except:
|
||||
return ""
|
||||
|
||||
def get_domain(url):
|
||||
try:
|
||||
d = urllib.parse.urlparse(url).netloc.lower()
|
||||
return d[4:] if d.startswith('www.') else d
|
||||
except:
|
||||
return None
|
||||
|
||||
def is_hoa(d):
|
||||
if not d: return False
|
||||
dl = d.lower()
|
||||
good = ['hoa', 'homeowners', 'association', 'community', 'condo', 'village', 'creek', 'estates', 'mgmt', 'management']
|
||||
bad = ['bing.com', 'microsoft.com', 'facebook.com', 'yelp.com', 'bbb.org']
|
||||
return any(k in dl for k in good) and not any(b in dl for b in bad)
|
||||
|
||||
def get_emails(t):
|
||||
if not t: return []
|
||||
ems = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b', t)
|
||||
bad = ['example.com', 'test.com', 'noreply@']
|
||||
return list(set([e.lower() for e in ems if len(e) > 8 and '@' in e and not any(b in e for b in bad)]))[:3]
|
||||
|
||||
def push_crm(lead):
|
||||
try:
|
||||
note = {"title": f"{lead['q']}: {lead['d']}", "bodyV2": {"markdown":
|
||||
f"## {lead['q']} Lead\n\n**HOA:** {lead['n']}\n**Metro:** {lead['m']}\n**Site:** {lead['u']}\n**Emails:** {', '.join(lead['e']) or 'None'}"}}
|
||||
urllib.request.urlopen(urllib.request.Request(f"{TWENTY_BASE}/notes",
|
||||
headers={"Authorization": f"Bearer {TWENTY_TOKEN}", "Content-Type": "application/json"},
|
||||
data=json.dumps(note).encode(), method='POST'), timeout=10)
|
||||
log(f"CRM: {lead['d']}")
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
def main():
|
||||
global BLOCKED_UNTIL
|
||||
log("=== Prospector v11 Started (Bing scraper) ===")
|
||||
s = load_state()
|
||||
queries = ["{m} HOA", "{m} homeowners association", "{m} HOA management"]
|
||||
|
||||
while True:
|
||||
s['cycle'] += 1
|
||||
metro = METROS[s['metro_idx'] % len(METROS)]
|
||||
status = "(blocked)" if time.time() < BLOCKED_UNTIL else ""
|
||||
log(f"CYCLE {s['cycle']}: {metro} {status}")
|
||||
|
||||
if time.time() < BLOCKED_UNTIL:
|
||||
time.sleep(60)
|
||||
continue
|
||||
|
||||
start, found = time.time(), 0
|
||||
|
||||
for qtmpl in queries:
|
||||
if s['leads'] >= 50: break
|
||||
urls = search_bing(qtmpl.format(m=metro))
|
||||
|
||||
for url in urls[:6]:
|
||||
if s['leads'] >= 50: break
|
||||
dom = get_domain(url)
|
||||
if not dom or dom in s['crm'] or not is_hoa(dom): continue
|
||||
|
||||
text = fetch_page(url)
|
||||
emails = get_emails(text)
|
||||
|
||||
lead = {'n': dom.split('.')[0].replace('-', ' ').title() + " HOA",
|
||||
'm': metro, 'u': url, 'd': dom, 'e': emails,
|
||||
'q': "HOT" if len(emails) >= 2 else "WARM" if emails else "COLD"}
|
||||
|
||||
if push_crm(lead):
|
||||
s['crm'].add(dom)
|
||||
s['leads'] += 1
|
||||
found += 1
|
||||
log(f"LEAD {s['leads']}: {lead['n']} ({lead['q']})")
|
||||
|
||||
s['metro_idx'] = (s['metro_idx'] + 1) % len(METROS)
|
||||
save_state(s)
|
||||
log(f"Done: {found} new, {s['
|
||||
144
agents/sales-prospector/prospector-v12.py
Normal file
144
agents/sales-prospector/prospector-v12.py
Normal file
@@ -0,0 +1,144 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Sales Prospector v12b - Aggressive SearXNG harvesting"""
|
||||
import json, re, time, random, urllib.request, urllib.parse
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
import ssl
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
for d in [Path(__file__).parent / x for x in ["state", "logs", "leads"]]:
|
||||
d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
STATE_FILE = Path(__file__).parent / "state" / "prospector-v12-state.json"
|
||||
LOG_FILE = Path(__file__).parent / "logs" / f"prospector-v12-{datetime.now().strftime('%Y%m%d')}.log"
|
||||
|
||||
METROS = ["Charlotte NC", "Atlanta GA", "Orlando FL", "Phoenix AZ", "Austin TX",
|
||||
"Denver CO", "Nashville TN", "Raleigh NC", "Tampa FL", "Dallas TX",
|
||||
"Houston TX", "Miami FL", "Seattle WA", "Portland OR", "Las Vegas NV",
|
||||
"San Antonio TX", "Indianapolis IN", "Columbus OH", "Kansas City MO",
|
||||
"Salt Lake City UT", "San Diego CA", "Sacramento CA", "San Jose CA",
|
||||
"New Orleans LA", "Oklahoma City OK"]
|
||||
|
||||
SEARXNG = "https://search.sensetostyle.com"
|
||||
TWENTY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzczMzI4NDQzLCJleHAiOjE4MDQ3ODE2NDIsImp0aSI6IjIwZjEyYzkwLTRkMDctNGJmNi1iMzk3LTZjNmU3MzlmMThjOCJ9.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
TWENTY_BASE = "https://salesforce.hoaledgeriq.com/rest"
|
||||
LAST_REQ = 0
|
||||
|
||||
def log(m):
|
||||
ts = datetime.now().strftime('%H:%M:%S')
|
||||
print(f"[{ts}] {m}")
|
||||
with open(LOG_FILE, 'a') as f: f.write(f"[{ts}] {m}\n")
|
||||
|
||||
def throttle():
|
||||
global LAST_REQ
|
||||
dly = random.uniform(2, 4)
|
||||
if LAST_REQ > 0 and (time.time() - LAST_REQ) < dly:
|
||||
time.sleep(dly - (time.time() - LAST_REQ))
|
||||
LAST_REQ = time.time()
|
||||
|
||||
def load():
|
||||
if STATE_FILE.exists():
|
||||
s = json.loads(STATE_FILE.read_text())
|
||||
s['crm'] = set(s.get('crm', []))
|
||||
return s
|
||||
return {"m": 0, "crm": set(), "leads": 0, "cycle": 0}
|
||||
|
||||
def save(s):
|
||||
tmp = s.copy()
|
||||
tmp['crm'] = list(s['crm'])
|
||||
STATE_FILE.write_text(json.dumps(tmp, indent=2))
|
||||
|
||||
def search(q):
|
||||
throttle()
|
||||
try:
|
||||
url = f"{SEARXNG}/search?q={urllib.parse.quote(q)}"
|
||||
with urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}), timeout=15) as r:
|
||||
html = r.read().decode('utf-8', errors='ignore')
|
||||
urls = [m for m in re.findall(r'href="(https?://[^"]+)"', html)
|
||||
if 'sensetostyle' not in m and 'archive.org' not in m]
|
||||
return list(dict.fromkeys(urls))[:15]
|
||||
except:
|
||||
return []
|
||||
|
||||
def get_dom(url):
|
||||
try:
|
||||
d = urllib.parse.urlparse(url).netloc.lower()
|
||||
return d[4:] if d.startswith('www.') else d
|
||||
except: return None
|
||||
|
||||
def is_hoa(d):
|
||||
if not d: return False
|
||||
dl = d.lower()
|
||||
good = ['hoa', 'homeowners', 'association', 'community', 'condo', 'village', 'mgmt', 'management', 'hood']
|
||||
bad = ['sensetostyle', 'archive.org', 'google', 'facebook', 'yelp', 'bbb', 'wiki', 'reddit', 'linkedin']
|
||||
return any(k in dl for k in good) and not any(b in dl for b in bad)
|
||||
|
||||
def fetch(url):
|
||||
throttle()
|
||||
try:
|
||||
with urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}), timeout=8) as r:
|
||||
t = re.sub(r'<script.*?script>', '', r.read().decode('utf-8', errors='ignore'), flags=re.DOTALL|re.I)
|
||||
t = re.sub(r'<style.*?style>', '', t, flags=re.DOTALL|re.I)
|
||||
return re.sub(r'\s+', ' ', re.sub(r'<[^>]+>', ' ', t))[:1500]
|
||||
except: return ""
|
||||
|
||||
def get_emails(t):
|
||||
ems = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b', t)
|
||||
return list(set([e.lower() for e in ems if len(e) > 8 and '@' in e]))[:3] or []
|
||||
|
||||
def crm_push(lead):
|
||||
try:
|
||||
note = {"title": f"{lead['q']}: {lead['d']}",
|
||||
"bodyV2": {"markdown": f"## {lead['q']} Lead\n\n**HOA:** {lead['n']}\n**Metro:** {lead['m']}\n**Site:** {lead['u']}\n**Emails:** {', '.join(lead['e']) or 'None'}"}}
|
||||
urllib.request.urlopen(urllib.request.Request(f"{TWENTY_BASE}/notes",
|
||||
headers={"Authorization": f"Bearer {TWENTY_TOKEN}", "Content-Type": "application/json"},
|
||||
data=json.dumps(note).encode(), method='POST'), timeout=10)
|
||||
log(f"CRM: {lead['d']}")
|
||||
return True
|
||||
except Exception as e:
|
||||
log(f"FAIL: {e}")
|
||||
return False
|
||||
|
||||
def main():
|
||||
log("=== v12 RESTART ===")
|
||||
s = load()
|
||||
queries = ["{m} HOA", "{m} homeowners association", "{m} HOA management contact",
|
||||
"{m} condo association", "{m} community management", "{m} HOA board"]
|
||||
|
||||
while True:
|
||||
s['cycle'] += 1
|
||||
metro = METROS[s['m'] % len(METROS)]
|
||||
log(f"CYCLE {s['cycle']}: {metro} | Leads: {s['leads']}")
|
||||
|
||||
new = 0
|
||||
for qt in queries:
|
||||
if s['leads'] >= 200: break
|
||||
urls = search(qt.format(m=metro))
|
||||
if urls: log(f" Got {len(urls)} URLs")
|
||||
|
||||
for url in urls[:5]:
|
||||
if s['leads'] >= 200: break
|
||||
dom = get_dom(url)
|
||||
if not dom or dom in s['crm'] or not is_hoa(dom): continue
|
||||
|
||||
txt = fetch(url)
|
||||
lead = {'n': dom.split('.')[0].replace('-', ' ').title()[:30] + " HOA",
|
||||
'm': metro, 'u': url, 'd': dom,
|
||||
'e': get_emails(txt),
|
||||
'q': "HOT" if len(get_emails(txt)) >= 2 else "WARM" if get_emails(txt) else "COLD"}
|
||||
|
||||
if crm_push(lead):
|
||||
s['crm'].add(dom)
|
||||
s['leads'] += 1
|
||||
new += 1
|
||||
log(f"LEAD {s['leads']}: {lead['n']}")
|
||||
|
||||
s['m'] = (s['m'] + 1) % len(METROS)
|
||||
save(s)
|
||||
log(f"Done: {new} new | {s['leads']} total")
|
||||
|
||||
if s['leads'] >= 200: log("TARGET 200!"); break
|
||||
if new == 0: time.sleep(10)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
208
agents/sales-prospector/prospector-v14.py
Normal file
208
agents/sales-prospector/prospector-v14.py
Normal file
@@ -0,0 +1,208 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Sales Prospector v14 - 50 metros + suburbs"""
|
||||
import json, re, time, random, urllib.request, urllib.parse
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
import ssl
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
for d in [Path(__file__).parent / x for x in ["state", "logs", "leads"]]:
|
||||
d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
STATE_FILE = Path(__file__).parent / "state" / "prospector-v14-state.json"
|
||||
LOG_FILE = Path(__file__).parent / "logs" / f"prospector-v14-{datetime.now().strftime('%Y%m%d')}.log"
|
||||
|
||||
# TOP 50 METROS + surrounding cities
|
||||
METROS = [
|
||||
# Top 20 major metros
|
||||
("New York NY", ["Manhattan", "Brooklyn", "Queens", "Bronx", "Staten Island", "Jersey City", "Newark"]),
|
||||
("Los Angeles CA", ["Santa Monica", "Pasadena", "Burbank", "Glendale", "Long Beach", "Anaheim"]),
|
||||
("Chicago IL", ["Evanston", "Oak Park", "Naperville", "Schaumburg", "Skokie"]),
|
||||
("Houston TX", ["Sugar Land", "The Woodlands", "Katy", "Pearland", "Baytown"]),
|
||||
("Phoenix AZ", ["Scottsdale", "Tempe", "Mesa", "Chandler", "Glendale"]),
|
||||
("Philadelphia PA", ["Camden", "Chester", "Upper Darby"]),
|
||||
("San Antonio TX", ["New Braunfels", "Schertz", "Cibolo"]),
|
||||
("San Diego CA", ["Chula Vista", "Oceanside", "Escondido", "Carlsbad"]),
|
||||
("Dallas TX", ["Fort Worth", "Arlington", "Plano", "Irving", "Frisco", "McKinney"]),
|
||||
("San Jose CA", ["Sunnyvale", "Santa Clara", "Mountain View", "Palo Alto"]),
|
||||
("Austin TX", ["Round Rock", "Cedar Park", "Georgetown", "Pflugerville"]),
|
||||
("Jacksonville FL", ["Orange Park", "St. Augustine", "Ponte Vedra"]),
|
||||
("Columbus OH", ["Dublin", "Westerville", "Gahanna", "Reynoldsburg"]),
|
||||
("Charlotte NC", ["Matthews", "Mint Hill", "Huntersville", "Concord", "Gastonia"]),
|
||||
("Indianapolis IN", ["Carmel", "Fishers", "Noblesville", "Greenwood"]),
|
||||
("San Francisco CA", ["Oakland", "Berkeley", "Richmond", "Walnut Creek"]),
|
||||
("Seattle WA", ["Bellevue", "Redmond", "Tacoma", "Kirkland", "Renton"]),
|
||||
("Denver CO", ["Aurora", "Lakewood", "Thornton", "Westminster", "Boulder"]),
|
||||
("Oklahoma City OK", ["Edmond", "Norman", "Moore", "Midwest City"]),
|
||||
("Boston MA", ["Cambridge", "Somerville", "Brookline", "Newton"]),
|
||||
# Next 30 metros
|
||||
("Portland OR", ["Beaverton", "Gresham", "Hillsboro", "Lake Oswego"]),
|
||||
("Las Vegas NV", ["Henderson", "North Las Vegas", "Summerlin"]),
|
||||
("Nashville TN", ["Franklin", "Brentwood", "Hendersonville", "Murfreesboro"]),
|
||||
("Detroit MI", ["Warren", "Sterling Heights", "Dearborn", "Livonia"]),
|
||||
("Oklahoma City OK", ["Edmond", "Norman", "Moore"]),
|
||||
("Memphis TN", ["Germantown", "Collierville", "Bartlett"]),
|
||||
("Louisville KY", ["Jeffersonville", "New Albany", "Elizabethtown"]),
|
||||
("Milwaukee WI", ["Waukesha", "West Allis", "Wauwatosa"]),
|
||||
("Baltimore MD", ["Columbia", "Ellicott City", "Towson"]),
|
||||
("Albuquerque NM", ["Rio Rancho", "Santa Fe", "Los Lunas"]),
|
||||
("Tucson AZ", ["Marana", "Oro Valley", "Sahuarita"]),
|
||||
("Mesa AZ", ["Gilbert", "Chandler", "Tempe"]),
|
||||
("Fresno CA", ["Clovis", "Madera", "Sanger"]),
|
||||
("Atlanta GA", ["Sandy Springs", "Roswell", "Johns Creek", "Alpharetta", "Marietta"]),
|
||||
("Sacramento CA", ["Elk Grove", "Roseville", "Folsom", "Davis"]),
|
||||
("Kansas City MO", ["Overland Park", "Olathe", "Independence", "Leawood"]),
|
||||
("Colorado Springs CO", ["Fountain", "Monument", "Woodland Park"]),
|
||||
("Raleigh NC", ["Cary", "Apex", "Holly Springs", "Wake Forest"]),
|
||||
("Omaha NE", ["Bellevue", "Papillion", "La Vista"]),
|
||||
("Miami FL", ["Miami Beach", "Coral Gables", "Hialeah", "Fort Lauderdale"]),
|
||||
("Long Beach CA", ["Lakewood", "Signal Hill"]),
|
||||
("Virginia Beach VA", ["Norfolk", "Chesapeake", "Newport News", "Hampton"]),
|
||||
("Oakland CA", ["Berkeley", "Alameda", "San Leandro"]),
|
||||
("Minneapolis MN", ["St. Paul", "Bloomington", "Plymouth", "Edina"]),
|
||||
("Tulsa OK", ["Broken Arrow", "Bixby", "Jenks"]),
|
||||
("Tampa FL", ["St. Petersburg", "Clearwater", "Brandon", "Lutz"]),
|
||||
("Arlington TX", ["Grand Prairie", "Euless", "Bedford"]),
|
||||
("Wichita KS", ["Overland Park", "Lenexa", "Shawnee"]),
|
||||
("Bakersfield CA", ["Delano", "Oildale", "Rosedale"]),
|
||||
("Aurora CO", ["Centennial", "Parker", "Englewood"]),
|
||||
("Anaheim CA", ["Fullerton", "Orange", "Garden Grove", "Brea"]),
|
||||
("Santa Ana CA", ["Irvine", "Costa Mesa", "Tustin", "Newport Beach"]),
|
||||
("Corpus Christi TX", ["Portland", "Kingsville", "Alice"]),
|
||||
("Riverside CA", ["Moreno Valley", "Corona", "Jurupa Valley", "Norco"]),
|
||||
("Lexington KY", ["Georgetown", "Richmond", "Winchester"]),
|
||||
("Stockton CA", ["Lodi", "Tracy", "Manteca"])
|
||||
]
|
||||
|
||||
SEARXNG = "https://search.sensetostyle.com"
|
||||
TWENTY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzczMzI4NDQzLCJleHAiOjE4MDQ3ODE2NDIsImp0aSI6IjIwZjEyYzkwLTRkMDctNGJmNi1iMzk3LTZjNmU3MzlmMThjOCJ9.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
TWENTY_BASE = "https://salesforce.hoaledgeriq.com/rest"
|
||||
|
||||
LAST_REQ = 0
|
||||
|
||||
def log(m):
|
||||
ts = datetime.now().strftime('%H:%M:%S')
|
||||
print(f"[{ts}] {m}")
|
||||
with open(LOG_FILE, 'a') as f: f.write(f"[{ts}] {m}\n")
|
||||
|
||||
def throttle():
|
||||
global LAST_REQ
|
||||
dly = random.uniform(3, 6)
|
||||
if LAST_REQ > 0 and (time.time() - LAST_REQ) < dly:
|
||||
time.sleep(dly - (time.time() - LAST_REQ))
|
||||
LAST_REQ = time.time()
|
||||
|
||||
def load():
|
||||
if STATE_FILE.exists():
|
||||
s = json.loads(STATE_FILE.read_text())
|
||||
s['crm'] = set(s.get('crm', []))
|
||||
return s
|
||||
return {"m": 0, "crm": set(), "leads": 0, "cycle": 0}
|
||||
|
||||
def save(s):
|
||||
tmp = s.copy()
|
||||
tmp['crm'] = list(s['crm'])
|
||||
STATE_FILE.write_text(json.dumps(tmp, indent=2))
|
||||
|
||||
def search(q):
|
||||
throttle()
|
||||
try:
|
||||
url = f"{SEARXNG}/search?q={urllib.parse.quote(q)}"
|
||||
with urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}), timeout=15) as r:
|
||||
html = r.read().decode('utf-8', errors='ignore')
|
||||
urls = [m for m in re.findall(r'href="(https?://[^"]+)"', html)
|
||||
if 'sensetostyle' not in m and 'archive.org' not in m]
|
||||
return list(dict.fromkeys(urls))[:12]
|
||||
except: return []
|
||||
|
||||
def get_dom(url):
|
||||
try:
|
||||
d = urllib.parse.urlparse(url).netloc.lower()
|
||||
return d[4:] if d.startswith('www.') else d
|
||||
except: return None
|
||||
|
||||
def is_hoa(d):
|
||||
if not d: return False
|
||||
dl = d.lower()
|
||||
good = ['hoa', 'homeowners', 'association', 'community', 'condo', 'village',
|
||||
'mgmt', 'management', 'properties', 'realty']
|
||||
bad = ['sensetostyle', 'archive.org', 'google', 'facebook', 'yelp', 'bbb',
|
||||
'wiki', 'reddit', 'linkedin', 'trulia', 'realtor', 'zillow']
|
||||
return any(k in dl for k in good) and not any(b in dl for b in bad)
|
||||
|
||||
def fetch(url):
|
||||
throttle()
|
||||
try:
|
||||
with urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}), timeout=10) as r:
|
||||
t = re.sub(r'<script.*?script>', '', r.read().decode('utf-8', errors='ignore'), flags=re.DOTALL|re.I)
|
||||
t = re.sub(r'<style.*?style>', '', t, flags=re.DOTALL|re.I)
|
||||
return re.sub(r'\s+', ' ', resub(r'<[^>]+>', ' ', t))[:2000]
|
||||
except: return ""
|
||||
|
||||
def get_emails(t):
|
||||
if not t: return []
|
||||
ems = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b', t)
|
||||
return list(set([e.lower() for e in ems if len(e) > 8 and '@' in e]))[:3] or []
|
||||
|
||||
def crm_push(lead):
|
||||
try:
|
||||
note = {"title": f"{lead['q']}: {lead['d']}",
|
||||
"bodyV2": {"markdown": f"## {lead['q']} Lead\n\n**HOA:** {lead['n']}\n**Metro:** {lead['m']}\n**City:** {lead['c']}\n**Site:** {lead['u']}\n**Emails:** {', '.join(lead['e']) or 'None'}"}}
|
||||
urllib.request.urlopen(urllib.request.Request(f"{TWENTY_BASE}/notes",
|
||||
headers={"Authorization": f"Bearer {TWENTY_TOKEN}", "Content-Type": "application/json"},
|
||||
data=json.dumps(note).encode(), method='POST'), timeout=10)
|
||||
log(f"CRM: {lead['d']}")
|
||||
return True
|
||||
except: return False
|
||||
|
||||
def main():
|
||||
log("=== v14 STARTED - 50 Metros + Suburbs ===")
|
||||
s = load()
|
||||
|
||||
queries = ["{loc} HOA", "{loc} homeowners association", "{loc} HOA management"]
|
||||
|
||||
while True:
|
||||
s['cycle'] += 1
|
||||
metro_pack = METROS[s['m'] % len(METROS)]
|
||||
metro_name = metro_pack[0]
|
||||
suburbs = metro_pack[1]
|
||||
|
||||
# Search metro + each suburb
|
||||
search_locations = [metro_name] + [f"{sub} {metro_name.split()[-1]}" for sub in suburbs[:3]]
|
||||
|
||||
log(f"CYCLE {s['cycle']}: {metro_name} (+{len(suburbs)} suburbs) | Leads: {s['leads']}")
|
||||
|
||||
new = 0
|
||||
for city in search_locations[:4]: # metro + 3 suburbs
|
||||
if s['leads'] >= 750: break
|
||||
for qt in queries:
|
||||
if s['leads'] >= 750: break
|
||||
urls = search(qt.format(loc=city))
|
||||
if urls: log(f" | {city}: {len(urls)} URLs")
|
||||
|
||||
for url in urls[:4]:
|
||||
if s['leads'] >= 750: break
|
||||
dom = get_dom(url)
|
||||
if not dom or dom in s['crm'] or not is_hoa(dom): continue
|
||||
|
||||
txt = fetch(url)
|
||||
lead = {'n': dom.split('.')[0].replace('-', ' ').title()[:30],
|
||||
'm': metro_name, 'c': city, 'u': url, 'd': dom,
|
||||
'e': get_emails(txt),
|
||||
'q': "HOT" if len(get_emails(txt)) >= 2 else "WARM" if get_emails(txt) else "COLD"}
|
||||
|
||||
if crm_push(lead):
|
||||
s['crm'].add(dom)
|
||||
s['leads'] += 1
|
||||
new += 1
|
||||
log(f"LEAD {s['leads']}: {lead['n']}")
|
||||
|
||||
s['m'] = (s['m'] + 1) % len(METROS)
|
||||
save(s)
|
||||
log(f"Done: {new} new | {s['leads']} total")
|
||||
|
||||
if s['leads'] >= 750: log("TARGET 750!"); break
|
||||
if new == 0: time.sleep(20)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
40
agents/sales-prospector/prospector-v15.py
Normal file
40
agents/sales-prospector/prospector-v15.py
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Sales Prospector v15 - MAXIMUM suburb expansion"""
|
||||
import json, re, time, random, urllib.request, urllib.parse
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
import ssl
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
for d in [Path(__file__).parent / x for x in ["state", "logs", "leads"]]:
|
||||
d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
STATE_FILE = Path(__file__).parent / "state" / "prospector-v15-state.json"
|
||||
LOG_FILE = Path(__file__).parent / "logs" / f"prospector-v15-{datetime.now().strftime('%Y%m%d')}.log"
|
||||
|
||||
# 50 METROS with 8-15 SUBURBS EACH - MAXIMUM COVERAGE
|
||||
METROS = [
|
||||
# 1-10: Top tier
|
||||
("New York NY", ["Manhattan", "Brooklyn", "Queens", "Bronx", "Staten Island", "Jersey City", "Newark", "Yonkers", "Stamford", "White Plains", "Greenwich", "Long Island", "Hoboken", "Bayonne", "Elizabeth"]),
|
||||
("Los Angeles CA", ["Santa Monica", "Pasadena", "Burbank", "Glendale", "Long Beach", "Anaheim", "Irvine", "Newport Beach", "Santa Ana", "Torrance", "Beverly Hills", "West Hollywood", "Culver City", "Inglewood", "Compton"]),
|
||||
("Chicago IL", ["Evanston", "Oak Park", "Naperville", "Schaumburg", "Skokie", "Des Plaines", "Arlington Heights", "Elmhurst", "Wheaton", "Aurora", "Joliet", "Elgin", "Barrington", "Wilmette", "Highland Park"]),
|
||||
("Houston TX", ["Sugar Land", "The Woodlands", "Katy", "Pearland", "Baytown", "Spring", "Humble", "Kingwood", "Cypress", "Missouri City", "Pasadena", "League City", "Friendswood", "Clear Lake", "Conroe"]),
|
||||
("Phoenix AZ", ["Scottsdale", "Tempe", "Mesa", "Chandler", "Glendale", "Peoria", "Surprise", "Goodyear", "Gilbert", "Queen Creek", "Avondale", "Buckeye", "Fountain Hills", "Paradise Valley", "Sun City"]),
|
||||
("Philadelphia PA", ["Camden", "Chester", "Upper Darby", "Lower Merion", "Haverford", "Radnor", "Media", "West Chester", "King of Prussia", "Conshohocken", "Ambler", "Doylestown", "Newtown", "Bryn Mawr", "Ardmore"]),
|
||||
("San Antonio TX", ["New Braunfels", "Schertz", "Cibolo", "Converse", "Universal City", "Live Oak", "Leon Valley", "Alamo Heights", "Terrell Hills", "Hollywood Park", "Stone Oak", "Boerne", "Kerrville", "Seguin", "Floresville"]),
|
||||
("San Diego CA", ["Chula Vista", "Oceanside", "Escondido", "Carlsbad", "El Cajon", "Vista", "San Marcos", "Encinitas", "La Jolla", "Del Mar", "Solana Beach", "Rancho Santa Fe", "Poway", "Santee", "La Mesa"]),
|
||||
("Dallas TX", ["Fort Worth", "Arlington", "Plano", "Irving", "Frisco", "McKinney", "Allen", "Richardson", "Garland", "Mesquite", "Carrollton", "Lewisville", "Flower Mound", "Southlake", "Grapevine", "Keller"]),
|
||||
("San Jose CA", ["Sunnyvale", "Santa Clara", "Mountain View", "Palo Alto", "Cupertino", "Los Gatos", "Saratoga", "Campbell", "Milpitas", "Fremont", "Menlo Park", "Atherton", "Portola Valley", "Woodside", "East Palo Alto"]),
|
||||
|
||||
# 11-20
|
||||
("Austin TX", ["Round Rock", "Cedar Park", "Georgetown", "Pflugerville", "Leander", "Lakeway", "Westlake", "Bee Cave", "Dripping Springs", "Buda", "Kyle", "San Marcos", "Bastrop", "Taylor", "Elgin"]),
|
||||
("Jacksonville FL", ["Orange Park", "St. Augustine", "Ponte Vedra", "Fleming Island", "Green Cove Springs", "Middleburg", "Nocatee", "Atlantic Beach", "Neptune Beach", "Jacksonville Beach", "Yulee", "Fernandina Beach", "Amelia Island", "Callahan", "Macclenny"]),
|
||||
("Columbus OH", ["Dublin", "Westerville", "Gahanna", "Reynoldsburg", "Upper Arlington", "Worthington", "New Albany", "Powell", "Hilliard", "Grove City", "Delaware", "Lewis Center", "Pickerington", "Canal Winchester", "Pataskala"]),
|
||||
("Charlotte NC", ["Matthews", "Mint Hill", "Huntersville", "Concord", "Gastonia", "Fort Mill SC", "Rock Hill SC", "Mooresville", "Cornelius", "Davidson", "Lake Norman", "Waxhaw", "Weddington", "Pineville", "Ballantyne"]),
|
||||
("Indianapolis IN", ["Carmel", "Fishers", "Noblesville", "Greenwood", "Zionsville", "Westfield", "Avon", "Plainfield", "Brownsburg", "Greenfield", "New Palestine", "McCordsville", "Lawrence", "Beech Grove", "Speedway"]),
|
||||
("San Francisco CA", ["Oakland", "Berkeley", "Richmond", "Walnut Creek", "San Rafael", "Sausalito", "Mill Valley", "Larkspur", "Corte Madera", "Tiburon", "Belvedere", "Alameda", "Emeryville", "Albany", "El Cerrito"]),
|
||||
("Seattle WA", ["Bellevue", "Redmond", "Tacoma", "Kirkland", "Renton", "Everett", "Federal Way", "Kent", "Auburn", "Bothell", "Woodinville", "Issaquah", "Sammamish", "Mercer Island", "Lake Forest Park"]),
|
||||
("Denver CO", ["Aurora", "Lakewood", "Thornton", "Westminster", "Boulder", "Littleton", "Englewood", "Centennial", "Arvada", "Parker", "Castle Rock", "Highlands Ranch", "Greenwood Village", "Cherry Hills", "Ken Caryl"]),
|
||||
("Oklahoma City OK", ["Edmond", "Norman", "Moore", "Midwest City", "Del City", "Yukon", "Mustang", "Bethany", "Warr Acres", "The Village", "Nichols Hills", "Newcastle", "Choctaw", "Harrah", "Luther"]),
|
||||
("Boston MA", ["Cambridge", "Somerville", "Brookline", "Newton", "Waltham", "Watertown", "Arlington", "Lexington", "Concord", "Bedford", "Burlington", "Woburn", "Reading", "Wakefield", "Melrose"]),
|
||||
|
||||
241
agents/sales-prospector/prospector-v2.py
Normal file
241
agents/sales-prospector/prospector-v2.py
Normal file
@@ -0,0 +1,241 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Sales Prospector v2 - Intelligent HOA Lead Generation
|
||||
Searches for HOA websites, crawls for contact info, extracts board/mgmt contacts
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import time
|
||||
import subprocess
|
||||
from datetime import datetime
|
||||
from urllib.parse import urlparse, urljoin
|
||||
from pathlib import Path
|
||||
|
||||
# Config
|
||||
SCRIPT_DIR = Path(__file__).parent.absolute()
|
||||
STATE_DIR = SCRIPT_DIR / "state"
|
||||
LOG_DIR = SCRIPT_DIR / "logs"
|
||||
LEADS_DIR = SCRIPT_DIR / "leads"
|
||||
|
||||
for d in [STATE_DIR, LOG_DIR, LEADS_DIR]:
|
||||
d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
STATE_FILE = STATE_DIR / "prospector-v2-state.json"
|
||||
LOG_FILE = LOG_DIR / f"prospector-v2-{datetime.now().strftime('%Y%m%d')}.log"
|
||||
|
||||
METROS = ["Charlotte NC", "Atlanta GA", "Orlando FL", "Phoenix AZ"]
|
||||
|
||||
# Search config
|
||||
SEARCHES_PER_METRO = [
|
||||
'{metro} HOA "board of directors"',
|
||||
'{metro} homeowners association contact',
|
||||
'{metro} HOA management company',
|
||||
'{metro} HOA board members',
|
||||
'{metro} community association management',
|
||||
]
|
||||
|
||||
# Keywords for validating HOA sites
|
||||
HOA_KEYWORDS = ['hoa', 'homeowners', 'association', 'board', 'community', 'management', 'condo', 'townhome']
|
||||
|
||||
# CRM Config
|
||||
TWENTY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzczMzI4NDQzLCJleHAiOjE4MDQ3ODE2NDIsImp0aSI6IjIwZjEyYzkwLTRkMDctNGJmNi1iMzk3LTZjNmU3MzlmMThjOCJ9.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
TWENTY_BASE = "https://salesforce.hoaledgeriq.com/rest"
|
||||
|
||||
def log(msg):
|
||||
ts = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
line = f"[{ts}] {msg}"
|
||||
print(line)
|
||||
with open(LOG_FILE, 'a') as f:
|
||||
f.write(line + '\n')
|
||||
|
||||
def load_state():
|
||||
if STATE_FILE.exists():
|
||||
with open(STATE_FILE) as f:
|
||||
return json.load(f)
|
||||
return {
|
||||
"metro_index": 0,
|
||||
"search_index": 0,
|
||||
"processed_domains": [],
|
||||
"leads_found": 0,
|
||||
"domains_queue": [], # Domains found but not yet crawled
|
||||
"current_domain": None,
|
||||
"cycle_count": 0
|
||||
}
|
||||
|
||||
def save_state(state):
|
||||
with open(STATE_FILE, 'w') as f:
|
||||
json.dump(state, f, indent=2)
|
||||
|
||||
def get_throttle_delay():
|
||||
"""Returns delay in seconds based on business hours"""
|
||||
hour = datetime.now().hour
|
||||
if 9 <= hour < 18:
|
||||
return 120 # 2 min business hours
|
||||
return 60 # 1 min overnight
|
||||
|
||||
def extract_domain(url):
|
||||
"""Extract clean domain from URL"""
|
||||
try:
|
||||
parsed = urlparse(url)
|
||||
domain = parsed.netloc.lower()
|
||||
if domain.startswith('www.'):
|
||||
domain = domain[4:]
|
||||
return domain
|
||||
except:
|
||||
return None
|
||||
|
||||
def is_hoa_domain(domain):
|
||||
"""Check if domain looks like an HOA site"""
|
||||
if not domain:
|
||||
return False
|
||||
domain_lower = domain.lower()
|
||||
return any(kw in domain_lower for kw in HOA_KEYWORDS)
|
||||
|
||||
def search_web(query, count=10):
|
||||
"""Run web search via openclaw web_search tool"""
|
||||
log(f"SEARCH: {query}")
|
||||
try:
|
||||
# Use openclaw CLI for web search
|
||||
result = subprocess.run(
|
||||
['openclaw', 'web-search', query, '--count', str(count)],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=60
|
||||
)
|
||||
if result.returncode == 0 and result.stdout:
|
||||
# Parse results - look for URLs
|
||||
urls = []
|
||||
for line in result.stdout.split('\n'):
|
||||
if line.startswith('http'):
|
||||
urls.append(line.strip())
|
||||
# Also extract from markdown format
|
||||
url_match = re.search(r'https?://[^\s\)\]\"\']+', line)
|
||||
if url_match:
|
||||
urls.append(url_match.group(0))
|
||||
return list(set(urls))
|
||||
except Exception as e:
|
||||
log(f"Search error: {e}")
|
||||
return []
|
||||
|
||||
def fetch_page(url, max_chars=3000):
|
||||
"""Fetch page content via web_fetch"""
|
||||
try:
|
||||
result = subprocess.run(
|
||||
['openclaw', 'web-fetch', url, '--max-chars', str(max_chars)],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=30
|
||||
)
|
||||
if result.returncode == 0:
|
||||
return result.stdout
|
||||
except Exception as e:
|
||||
log(f"Fetch error for {url}: {e}")
|
||||
return None
|
||||
|
||||
def extract_emails(text):
|
||||
"""Extract email addresses from text"""
|
||||
if not text:
|
||||
return []
|
||||
# Pattern for emails
|
||||
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
|
||||
emails = re.findall(pattern, text)
|
||||
# Filter out common false positives
|
||||
filtered = [e for e in emails if not any(x in e.lower() for x in ['example.com', 'test.com', 'domain.com', 'email.com'])]
|
||||
return list(set(filtered))
|
||||
|
||||
def extract_phones(text):
|
||||
"""Extract phone numbers from text"""
|
||||
if not text:
|
||||
return []
|
||||
# Various phone patterns
|
||||
patterns = [
|
||||
r'\(?\d{3}\)?[-.\s]\d{3}[-.\s]\d{4}', # (555) 123-4567
|
||||
r'\d{3}[-.\s]\d{3}[-.\s]\d{4}', # 555-123-4567
|
||||
r'\+?1[-.\s]?\(?\d{3}\)?[-.\s]\d{3}[-.\s]\d{4}', # +1 (555) 123-4567
|
||||
]
|
||||
phones = []
|
||||
for pattern in patterns:
|
||||
phones.extend(re.findall(pattern, text))
|
||||
return list(set(phones))
|
||||
|
||||
def extract_names_and_titles(text):
|
||||
"""Extract potential board member names with titles"""
|
||||
if not text:
|
||||
return []
|
||||
|
||||
# Look for patterns like "John Smith, President" or "Board Member: Jane Doe"
|
||||
titles = ['president', 'vice president', 'vp', 'treasurer', 'secretary', 'board member',
|
||||
'director', 'manager', 'community manager', 'property manager']
|
||||
|
||||
results = []
|
||||
lines = text.split('\n')
|
||||
|
||||
for line in lines:
|
||||
line_lower = line.lower()
|
||||
for title in titles:
|
||||
if title in line_lower:
|
||||
# Extract name before/after title
|
||||
# Simple: capture 2-3 capitalized words near the title
|
||||
match = re.search(r'([A-Z][a-z]+\s[A-Z][a-z]+(?:\s[A-Z][a-z]+)?)', line)
|
||||
if match:
|
||||
name = match.group(1)
|
||||
results.append({"name": name, "title": title.title()})
|
||||
|
||||
return results
|
||||
|
||||
def extract_hoa_info(domain, content):
|
||||
"""Extract HOA name and details from content"""
|
||||
info = {
|
||||
"name": None,
|
||||
"homes": None,
|
||||
"location": None
|
||||
}
|
||||
|
||||
if not content:
|
||||
return info
|
||||
|
||||
# Try to find HOA name from title or first heading
|
||||
lines = content.split('\n')
|
||||
for line in lines[:20]:
|
||||
if '#' in line: # Markdown header
|
||||
clean = line.replace('#', '').strip()
|
||||
if len(clean) > 3:
|
||||
info['name'] = clean
|
||||
break
|
||||
|
||||
# Look for home count patterns
|
||||
home_patterns = [
|
||||
r'(\d+)\s+(?:homes|units|properties|residences|households)',
|
||||
r'(?:over|more than)\s+(\d+)\s+(?:homes|units)',
|
||||
]
|
||||
for pattern in home_patterns:
|
||||
match = re.search(pattern, content, re.IGNORECASE)
|
||||
if match:
|
||||
info['homes'] = match.group(1)
|
||||
break
|
||||
|
||||
return info
|
||||
|
||||
def assess_quality(emails, phones, names, info):
|
||||
"""Assess lead quality based on available data"""
|
||||
score = 0
|
||||
if emails: score += 3
|
||||
if phones: score += 2
|
||||
if names: score += 2
|
||||
if info.get('name'): score += 1
|
||||
if info.get('homes'): score += 2
|
||||
|
||||
if score >= 7:
|
||||
return "HOT"
|
||||
elif score >= 4:
|
||||
return "WARM"
|
||||
return "COLD"
|
||||
|
||||
def push_to_crm(lead):
|
||||
"""Push lead to Twenty CRM"""
|
||||
try:
|
||||
body = f"""## HOA Prospect - {lead['quality']}
|
||||
|
||||
**Name:** {lead.get('hoa_name
|
||||
233
agents/sales-prospector/prospector-v3.py
Executable file
233
agents/sales-prospector/prospector-v3.py
Executable file
@@ -0,0 +1,233 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Sales Prospector v3 - Working HOA Lead Generation
|
||||
Actually searches, extracts, and pushes real leads to CRM
|
||||
"""
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import time
|
||||
import subprocess
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
# Config
|
||||
SCRIPT_DIR = Path(__file__).parent.absolute()
|
||||
STATE_DIR = SCRIPT_DIR / "state"
|
||||
LOG_DIR = SCRIPT_DIR / "logs"
|
||||
LEADS_DIR = SCRIPT_DIR / "leads"
|
||||
for d in [STATE_DIR, LOG_DIR, LEADS_DIR]:
|
||||
d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
STATE_FILE = STATE_DIR / "prospector-v3-state.json"
|
||||
LOG_FILE = LOG_DIR / f"prospector-v3-{datetime.now().strftime('%Y%m%d')}.log"
|
||||
|
||||
METROS = ["Charlotte NC", "Atlanta GA", "Orlando FL", "Phoenix AZ"]
|
||||
|
||||
# Extended search queries for better coverage
|
||||
SEARCHES_PER_METRO = [
|
||||
'{metro} HOA contact email',
|
||||
'{metro} homeowners association website',
|
||||
'{metro} HOA management contact',
|
||||
'{metro} community association board',
|
||||
'{metro} condo association contact',
|
||||
]
|
||||
|
||||
# CRM Config
|
||||
TWENTY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzMzMjg0NDMsImV4cCI6MTgwNDc4MTY0MiwianRpIjoiMjBmMTJjOTAtNGQwNy00YmY2LWIzOTctNmM2ZTczOWYxOGM4In0.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
TWENTY_BASE = "https://salesforce.hoaledgeriq.com/rest"
|
||||
|
||||
def log(msg):
|
||||
ts = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
line = f"[{ts}] {msg}"
|
||||
print(line)
|
||||
with open(LOG_FILE, 'a') as f:
|
||||
f.write(line + '\n')
|
||||
|
||||
def load_state():
|
||||
if STATE_FILE.exists():
|
||||
with open(STATE_FILE) as f:
|
||||
return json.load(f)
|
||||
return {
|
||||
"metro_index": 0,
|
||||
"processed_domains": [],
|
||||
"leads_found": 0,
|
||||
"cycle_count": 0
|
||||
}
|
||||
|
||||
def save_state(state):
|
||||
with open(STATE_FILE, 'w') as f:
|
||||
json.dump(state, f, indent=2)
|
||||
|
||||
def extract_domain(url):
|
||||
try:
|
||||
from urllib.parse import urlparse
|
||||
parsed = urlparse(url)
|
||||
domain = parsed.netloc.lower()
|
||||
if domain.startswith('www.'):
|
||||
domain = domain[4:]
|
||||
return domain
|
||||
except:
|
||||
return None
|
||||
|
||||
def is_hoa_domain(domain):
|
||||
if not domain:
|
||||
return False
|
||||
domain_lower = domain.lower()
|
||||
hoa_keywords = ['hoa', 'homeowners', 'association', 'community', 'condo', 'village', 'creek', 'farms', 'estates']
|
||||
return any(kw in domain_lower for kw in hoa_keywords)
|
||||
|
||||
def search_web(query, count=5):
|
||||
log(f"SEARCH: {query}")
|
||||
try:
|
||||
result = subprocess.run(
|
||||
['openclaw', 'web-search', query, '--count', str(count)],
|
||||
capture_output=True, text=True, timeout=60
|
||||
)
|
||||
if result.returncode == 0 and result.stdout:
|
||||
urls = []
|
||||
for line in result.stdout.split('\n'):
|
||||
if line.strip().startswith('http'):
|
||||
urls.append(line.strip())
|
||||
# Filter to HOA domains
|
||||
seen = set()
|
||||
unique = []
|
||||
for url in urls:
|
||||
dom = extract_domain(url)
|
||||
if dom and dom not in seen and is_hoa_domain(dom):
|
||||
seen.add(dom)
|
||||
unique.append(url)
|
||||
return unique
|
||||
except Exception as e:
|
||||
log(f"Search error: {e}")
|
||||
return []
|
||||
|
||||
def fetch_page(url, max_chars=1500):
|
||||
try:
|
||||
result = subprocess.run(
|
||||
['openclaw', 'web-fetch', url, '--max-chars', str(max_chars)],
|
||||
capture_output=True, text=True, timeout=30
|
||||
)
|
||||
if result.returncode == 0:
|
||||
return result.stdout
|
||||
except Exception as e:
|
||||
log(f"Fetch error: {e}")
|
||||
return None
|
||||
|
||||
def extract_emails(text):
|
||||
if not text:
|
||||
return []
|
||||
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
|
||||
emails = re.findall(pattern, text)
|
||||
bad = ['example', 'test', 'domain', 'email', 'noreply', 'no-reply', '@gmail.com', '@yahoo.com', '@hotmail.com']
|
||||
filtered = [e.lower() for e in emails if not any(b in e.lower() for b in bad)]
|
||||
return list(set(filtered))[:3]
|
||||
|
||||
def extract_phones(text):
|
||||
if not text:
|
||||
return []
|
||||
pattern = r'\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}'
|
||||
phones = re.findall(pattern, text)
|
||||
return list(set(phones))[:2]
|
||||
|
||||
def extract_hoa_name(content, domain):
|
||||
if not content:
|
||||
return domain.replace('-', ' ').title()
|
||||
# Look for title
|
||||
match = re.search(r'#\s*(.+)', content)
|
||||
if match:
|
||||
return match.group(1).strip()
|
||||
# Look for HOA name pattern
|
||||
match = re.search(r'([A-Z][A-Za-z\s]+(?:HOA|Homeowners|Community|Association))', content)
|
||||
if match:
|
||||
return match.group(1).strip()
|
||||
return domain.replace('-', ' ').title()
|
||||
|
||||
def assess_quality(emails, phones):
|
||||
score = 0
|
||||
if emails:
|
||||
score += len(emails) * 3
|
||||
if phones:
|
||||
score += len(phones) * 2
|
||||
if score >= 7:
|
||||
return "HOT"
|
||||
elif score >= 4:
|
||||
return "WARM"
|
||||
return "COLD"
|
||||
|
||||
def push_to_crm(lead):
|
||||
try:
|
||||
body = f"""## 🎯 HOA Prospect - {lead['quality']}
|
||||
|
||||
**HOA Name:** {lead.get('hoa_name', 'Unknown')}
|
||||
**Metro:** {lead['metro']}
|
||||
**Website:** {lead['url']}
|
||||
**Domain:** {lead['domain']}
|
||||
"""
|
||||
if lead.get('emails'):
|
||||
body += f"**Email(s):** {', '.join(lead['emails'])}\n"
|
||||
if lead.get('phones'):
|
||||
body += f"**Phone(s):** {', '.join(lead['phones'])}\n"
|
||||
|
||||
body += f"\n**Source:** Prospector v3\n**Found:** {datetime.now().strftime('%Y-%m-%d %H:%M')}"
|
||||
|
||||
esc_body = json.dumps(body)
|
||||
note_data = f'{{"title":"🎯 {lead["quality"]}: {lead["hoa_name"]} | {lead["metro"]}","bodyV2":{{"markdown":{esc_body}}}}}'
|
||||
|
||||
curl_cmd = [
|
||||
'curl', '-s', '-X', 'POST',
|
||||
f'{TWENTY_BASE}/notes',
|
||||
'-H', f'Authorization: Bearer {TWENTY_TOKEN}',
|
||||
'-H', 'Content-Type: application/json',
|
||||
'-d', note_data
|
||||
]
|
||||
|
||||
result = subprocess.run(curl_cmd, capture_output=True, text=True, timeout=10)
|
||||
if result.returncode == 0:
|
||||
log(f"CRM PUSH: {lead['hoa_name']} ({lead['quality']})")
|
||||
return True
|
||||
else:
|
||||
log(f"CRM FAIL: {result.stderr[:100]}")
|
||||
except Exception as e:
|
||||
log(f"CRM ERROR: {e}")
|
||||
return False
|
||||
|
||||
def save_lead(lead):
|
||||
lead_file = LEADS_DIR / f"{lead['domain']}.json"
|
||||
with open(lead_file, 'w') as f:
|
||||
json.dump(lead, f, indent=2)
|
||||
|
||||
def main():
|
||||
log("=== Sales Prospector v3 Started ===")
|
||||
state = load_state()
|
||||
cycle = state['cycle_count']
|
||||
|
||||
while True:
|
||||
cycle += 1
|
||||
metro_idx = state['metro_index']
|
||||
metro = METROS[metro_idx]
|
||||
|
||||
log(f"=== CYCLE {cycle}: {metro} ===")
|
||||
|
||||
# Search queries
|
||||
queries = [q.format(metro=metro) for q in SEARCHES_PER_METRO]
|
||||
|
||||
for query_idx, query in enumerate(queries):
|
||||
log(f"QUERY: {query}")
|
||||
urls = search_web(query, count=3)
|
||||
log(f"Found {len(urls)} potential HOA sites")
|
||||
|
||||
for url in urls:
|
||||
domain = extract_domain(url)
|
||||
if domain in state['processed_domains']:
|
||||
log(f"SKIP: Already processed {domain}")
|
||||
continue
|
||||
|
||||
log(f"FETCH: {url}")
|
||||
content = fetch_page(url)
|
||||
if not content:
|
||||
state['processed_domains'].append(domain)
|
||||
save_state(state)
|
||||
continue
|
||||
|
||||
emails = extract_em
|
||||
197
agents/sales-prospector/prospector-v4.py
Executable file
197
agents/sales-prospector/prospector-v4.py
Executable file
@@ -0,0 +1,197 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Sales Prospector v4 - Complete version that finds and saves leads"""
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
SCRIPT_DIR = Path(__file__).parent.absolute()
|
||||
STATE_DIR = SCRIPT_DIR / "state"
|
||||
LOG_DIR = SCRIPT_DIR / "logs"
|
||||
LEADS_DIR = SCRIPT_DIR / "leads"
|
||||
for d in [STATE_DIR, LOG_DIR, LEADS_DIR]:
|
||||
d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
STATE_FILE = STATE_DIR / "prospector-v4-state.json"
|
||||
LOG_FILE = LOG_DIR / f"prospector-v4-{datetime.now().strftime('%Y%m%d')}.log"
|
||||
METROS = ["Charlotte NC", "Atlanta GA", "Orlando FL", "Phoenix AZ"]
|
||||
TWENTY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzMzMjg0NDMsImV4cCI6MTgwNDc4MTY0MiwianRpIjoiMjBmMTJjOTAtNGQwNy00YmY2LWIzOTctNmM2ZTczOWYxOGM4In0.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
TWENTY_BASE = "https://salesforce.hoaledgeriq.com/rest"
|
||||
|
||||
def log(msg):
|
||||
ts = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
line = f"[{ts}] {msg}"
|
||||
print(line)
|
||||
with open(LOG_FILE, 'a') as f:
|
||||
f.write(line + '\n')
|
||||
|
||||
def load_state():
|
||||
if STATE_FILE.exists():
|
||||
with open(STATE_FILE) as f:
|
||||
return json.load(f)
|
||||
return {"metro_index": 0, "processed_domains": [], "leads_found": 0}
|
||||
|
||||
def save_state(state):
|
||||
with open(STATE_FILE, 'w') as f:
|
||||
json.dump(state, f)
|
||||
|
||||
def search_web(query):
|
||||
log(f"SEARCH: {query}")
|
||||
try:
|
||||
result = subprocess.run(['openclaw', 'web-search', query, '--count', '5'],
|
||||
capture_output=True, text=True, timeout=60)
|
||||
if result.returncode == 0:
|
||||
urls = []
|
||||
for line in result.stdout.split('\n'):
|
||||
line = line.strip()
|
||||
if line.startswith('http'):
|
||||
urls.append(line.split()[0] if ' ' in line else line)
|
||||
return urls[:5]
|
||||
except Exception as e:
|
||||
log(f"Search error: {e}")
|
||||
return []
|
||||
|
||||
def fetch_page(url):
|
||||
try:
|
||||
result = subprocess.run(['openclaw', 'web-fetch', url, '--max-chars', '2000'],
|
||||
capture_output=True, text=True, timeout=30)
|
||||
if result.returncode == 0:
|
||||
return result.stdout
|
||||
except Exception as e:
|
||||
log(f"Fetch error: {e}")
|
||||
return ""
|
||||
|
||||
def extract_emails(text):
|
||||
if not text:
|
||||
return []
|
||||
pattern = r'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}'
|
||||
emails = re.findall(pattern, text)
|
||||
bad = ['example.com', 'test.com', 'domain.com', 'email.com', 'noreply', '@gmail.com', '@yahoo.com', '@hotmail.com', '@aol.com']
|
||||
filtered = [e.lower() for e in emails if len(e) > 10 and not any(b in e.lower() for b in bad)]
|
||||
return list(set(filtered))[:3]
|
||||
|
||||
def extract_phones(text):
|
||||
if not text:
|
||||
return []
|
||||
pattern = r'\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}'
|
||||
phones = re.findall(pattern, text)
|
||||
return list(set([re.sub(r'[^\d]', '', p) for p in phones]))[:2]
|
||||
|
||||
def extract_domain(url):
|
||||
try:
|
||||
from urllib.parse import urlparse
|
||||
dom = urlparse(url).netloc.lower()
|
||||
return dom[4:] if dom.startswith('www.') else dom
|
||||
except:
|
||||
return url.replace('https://', '').replace('http://', '').split('/')[0]
|
||||
|
||||
def assess_quality(emails, phones):
|
||||
score = len(emails) * 3 + len(phones) * 2
|
||||
return "HOT" if score >= 7 else "WARM" if score >= 4 else "COLD"
|
||||
|
||||
def push_to_crm(lead):
|
||||
try:
|
||||
body = f"## {lead['quality']} Lead: {lead['hoa_name']}\n\n**Metro:** {lead['metro']}\n**Website:** {lead['url']}\n**Domain:** {lead['domain']}\n"
|
||||
if lead.get('emails'):
|
||||
body += f"**Emails:** {', '.join(lead['emails'])}\n"
|
||||
if lead.get('phones'):
|
||||
body += f"**Phones:** {', '.join(lead['phones'])}\n"
|
||||
body += f"\n_Found: {datetime.now().strftime('%Y-%m-%d %H:%M')}_"
|
||||
|
||||
note_data = {"title": f"{lead['quality']}: {lead['hoa_name']}", "body": body}
|
||||
curl_cmd = ['curl', '-s', '-X', 'POST', f'{TWENTY_BASE}/notes',
|
||||
'-H', f'Authorization: Bearer {TWENTY_TOKEN}',
|
||||
'-H', 'Content-Type: application/json',
|
||||
'-d', json.dumps(note_data)]
|
||||
|
||||
result = subprocess.run(curl_cmd, capture_output=True, text=True, timeout=10)
|
||||
if result.returncode == 0:
|
||||
log(f"CRM SUCCESS: {lead['hoa_name']}")
|
||||
return True
|
||||
except Exception as e:
|
||||
log(f"CRM error: {e}")
|
||||
return False
|
||||
|
||||
def save_lead(lead):
|
||||
lead_file = LEADS_DIR / f"{lead['domain'].replace('/', '_')}.json"
|
||||
with open(lead_file, 'w') as f:
|
||||
json.dump(lead, f, indent=2)
|
||||
log(f"SAVED: {lead_file.name}")
|
||||
|
||||
def main():
|
||||
log("=== Prospector v4 Started ===")
|
||||
state = load_state()
|
||||
cycle = 0
|
||||
|
||||
while True:
|
||||
cycle += 1
|
||||
metro = METROS[state['metro_index']]
|
||||
log(f"=== CYCLE {cycle}: {metro} ===")
|
||||
|
||||
queries = [
|
||||
f'{metro} HOA contact email',
|
||||
f'{metro} homeowners association',
|
||||
f'{metro} HOA management company',
|
||||
]
|
||||
|
||||
found_urls = []
|
||||
for query in queries:
|
||||
urls = search_web(query)
|
||||
found_urls.extend(urls)
|
||||
|
||||
log(f"Found {len(found_urls)} URLs to check")
|
||||
|
||||
# Process each URL
|
||||
new_leads = 0
|
||||
for url in found_urls[:6]:
|
||||
domain = extract_domain(url)
|
||||
if domain in state['processed_domains'] or not domain:
|
||||
continue
|
||||
|
||||
state['processed_domains'].append(domain)
|
||||
log(f"FETCH: {url[:60]}...")
|
||||
|
||||
content = fetch_page(url)
|
||||
if not content:
|
||||
continue
|
||||
|
||||
emails = extract_emails(content)
|
||||
phones = extract_phones(content)
|
||||
|
||||
if emails or phones:
|
||||
hoa_name = domain.split('.')[0].replace('-', ' ').title() + " HOA"
|
||||
lead = {
|
||||
'hoa_name': hoa_name,
|
||||
'metro': metro,
|
||||
'url': url,
|
||||
'domain': domain,
|
||||
'emails': emails,
|
||||
'phones': phones,
|
||||
'quality': assess_quality(emails, phones),
|
||||
'found_at': datetime.now().isoformat()
|
||||
}
|
||||
|
||||
save_lead(lead)
|
||||
push_to_crm(lead)
|
||||
state['leads_found'] += 1
|
||||
new_leads += 1
|
||||
log(f"LEAD: {hoa_name} ({lead['quality']}) - {len(emails)} emails, {len(phones)} phones")
|
||||
else:
|
||||
log(f"No contacts on {domain}")
|
||||
|
||||
save_state(state)
|
||||
log(f"Cycle complete: {new_leads} new leads, total: {state['leads_found']}")
|
||||
|
||||
# Next metro
|
||||
state['metro_index'] = (state['metro_index'] + 1) % len(METROS)
|
||||
|
||||
# Throttle
|
||||
hour = datetime.now().hour
|
||||
delay = 120 if 9 <= hour < 18 else 60
|
||||
log(f"Sleeping {delay}s...")
|
||||
import time
|
||||
time.sleep(delay)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
178
agents/sales-prospector/prospector-v5.py
Executable file
178
agents/sales-prospector/prospector-v5.py
Executable file
@@ -0,0 +1,178 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Sales Prospector v5 - Built-in urllib, finds HOA leads"""
|
||||
import json
|
||||
import re
|
||||
import time
|
||||
import urllib.request
|
||||
import urllib.parse
|
||||
import urllib.error
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
SCRIPT_DIR = Path(__file__).parent
|
||||
STATE_DIR = SCRIPT_DIR / "state"
|
||||
LOG_DIR = SCRIPT_DIR / "logs"
|
||||
LEADS_DIR = SCRIPT_DIR / "leads"
|
||||
for d in [STATE_DIR, LOG_DIR, LEADS_DIR]:
|
||||
d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
STATE_FILE = STATE_DIR / "prospector-v5-state.json"
|
||||
LOG_FILE = LOG_DIR / f"prospector-v5-{datetime.now().strftime('%Y%m%d')}.log"
|
||||
|
||||
METROS = ["Charlotte NC", "Atlanta GA", "Orlando FL", "Phoenix AZ", "Austin TX", "Denver CO",
|
||||
"Nashville TN", "Raleigh NC", "Tampa FL", "Dallas TX", "Houston TX", "Miami FL"]
|
||||
|
||||
BRAVE_KEY = "BSACPtwjz5lrsXC10pwjFVqzFGN2gr4"
|
||||
TWENTY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzczMzI4NDQzLCJleHAiOjE4MDQ3ODE2NDIsImp0aSI6IjIwZjEyYzkwLTRkMDctNGJmNi1iMzk3LTZjNmU3MzlmMThjOCJ9.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
TWENTY_BASE = "https://salesforce.hoaledgeriq.com/rest"
|
||||
|
||||
def log(msg):
|
||||
ts = datetime.now().strftime('%H:%M:%S')
|
||||
line = f"[{ts}] {msg}"
|
||||
print(line)
|
||||
with open(LOG_FILE, 'a') as f:
|
||||
f.write(line + '\n')
|
||||
|
||||
def load_state():
|
||||
if STATE_FILE.exists():
|
||||
return json.loads(STATE_FILE.read_text())
|
||||
return {"metro_idx": 0, "domains": [], "leads": 0, "cycle": 0}
|
||||
|
||||
def save_state(s):
|
||||
STATE_FILE.write_text(json.dumps(s, indent=2))
|
||||
|
||||
def search_brave(q, count=8):
|
||||
log(f"SEARCH: {q}")
|
||||
url = f"https://api.search.brave.com/res/v1/web/search?{urllib.parse.urlencode({'q': q, 'count': count})}"
|
||||
req = urllib.request.Request(url, headers={"X-Subscription-Token": BRAVE_KEY, "Accept": "application/json"})
|
||||
try:
|
||||
with urllib.request.urlopen(req, timeout=30) as r:
|
||||
data = json.loads(r.read().decode())
|
||||
urls = [x.get('url') for x in data.get('web', {}).get('results', [])]
|
||||
log(f" -> {len(urls)} URLs")
|
||||
return urls
|
||||
except Exception as e:
|
||||
log(f" -> Error: {e}")
|
||||
return []
|
||||
|
||||
def fetch(url):
|
||||
log(f"FETCH: {url[:50]}...")
|
||||
try:
|
||||
req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
|
||||
with urllib.request.urlopen(req, timeout=10) as r:
|
||||
html = r.read().decode('utf-8', errors='ignore')
|
||||
text = re.sub(r'<script.*?</script>', '', html, flags=re.DOTALL)
|
||||
text = re.sub(r'<style.*?</style>', '', text, flags=re.DOTALL)
|
||||
text = re.sub(r'<[^>]+>', ' ', text)
|
||||
return re.sub(r'\s+', ' ', text)[:2500]
|
||||
except Exception as e:
|
||||
log(f" -> {e}")
|
||||
return ""
|
||||
|
||||
def extract_domain(url):
|
||||
try:
|
||||
from urllib.parse import urlparse
|
||||
d = urlparse(url).netloc.lower()
|
||||
return d[4:] if d.startswith('www.') else d
|
||||
except:
|
||||
return None
|
||||
|
||||
def is_hoa(d):
|
||||
if not d:
|
||||
return False
|
||||
dl = d.lower()
|
||||
good = ['hoa', 'homeowners', 'association', 'community', 'condo', 'village', 'creek']
|
||||
bad = ['google', 'facebook', 'yelp', 'bbb', 'wiki', 'reddit', 'linkedin', 'blog']
|
||||
return any(k in dl for k in good) and not any(b in dl for b in bad)
|
||||
|
||||
def extract_emails(t):
|
||||
if not t:
|
||||
return []
|
||||
ems = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b', t)
|
||||
bad = ['example', 'test', 'noreply', 'info@', 'support@', 'admin@', '@gmail.com']
|
||||
return list(set([e.lower() for e in ems if len(e) > 12 and not any(b in e for b in bad)]))[:3]
|
||||
|
||||
def extract_phones(t):
|
||||
if not t:
|
||||
return []
|
||||
phones = re.findall(r'\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}', t)
|
||||
return list(set([re.sub(r'[^\d]', '', p) for p in phones]))[:2]
|
||||
|
||||
def save_lead(lead):
|
||||
f = LEADS_DIR / f"{lead['domain'].replace('/', '_')}.json"
|
||||
f.write_text(json.dumps(lead, indent=2))
|
||||
log(f"SAVED: {lead['domain']}")
|
||||
|
||||
def push_crm(lead):
|
||||
try:
|
||||
body = f"## {lead['quality']} Lead\n\n**HOA:** {lead['name']}\n**Metro:** {lead['metro']}\n**Site:** {lead['url']}\n**Emails:** {', '.join(lead['emails'])}\n**Phones:** {', '.join(lead['phones'])}"
|
||||
note = json.dumps({"title": f"{lead['quality']}: {lead['domain']}", "bodyV2": {"markdown": body}})
|
||||
data = note.encode('utf-8')
|
||||
req = urllib.request.Request(f"{TWENTY_BASE}/notes",
|
||||
headers={"Authorization": f"Bearer {TWENTY_TOKEN}", "Content-Type": "application/json"},
|
||||
data=data, method='POST')
|
||||
with urllib.request.urlopen(req, timeout=10) as r:
|
||||
log(f"CRM: {lead['domain']} ({r.status})")
|
||||
return r.status in [200, 201]
|
||||
except Exception as e:
|
||||
log(f"CRM error: {e}")
|
||||
return False
|
||||
|
||||
def main():
|
||||
log("=== Prospector v5 Started ===")
|
||||
s = load_state()
|
||||
queries = ["{metro} HOA contact email", "{metro} homeowners association",
|
||||
"{metro} HOA management", "{metro} community association board"]
|
||||
|
||||
while True:
|
||||
s['cycle'] += 1
|
||||
metro = METROS[s['metro_idx'] % len(METROS)]
|
||||
log(f"CYCLE {s['cycle']}: {metro}")
|
||||
start = time.time()
|
||||
found = 0
|
||||
|
||||
for tmpl in queries:
|
||||
if s['leads'] >= 25:
|
||||
break
|
||||
q = tmpl.format(metro=metro)
|
||||
urls = search_brave(q, 8)
|
||||
|
||||
for url in urls[:5]:
|
||||
dom = extract_domain(url)
|
||||
if not dom or not is_hoa(dom) or dom in s['domains']:
|
||||
continue
|
||||
s['domains'].append(dom)
|
||||
|
||||
content = fetch(url)
|
||||
if not content:
|
||||
continue
|
||||
|
||||
emails = extract_emails(content)
|
||||
phones = extract_phones(content)
|
||||
|
||||
if emails or phones:
|
||||
name = dom.split('.')[0].replace('-', ' ').title() + " HOA"
|
||||
qual = "HOT" if len(emails) >= 2 else "WARM" if emails else "COLD"
|
||||
lead = {'name': name, 'metro': metro, 'url': url, 'domain': dom,
|
||||
'emails': emails, 'phones': phones, 'quality': qual,
|
||||
'found': datetime.now().isoformat()}
|
||||
save_lead(lead)
|
||||
push_crm(lead)
|
||||
s['leads'] += 1
|
||||
found += 1
|
||||
log(f"LEAD {s['leads']}: {name} ({qual}) - {len(emails)} emails")
|
||||
|
||||
if s['leads'] >= 25:
|
||||
log(f"TARGET REACHED: {s['leads']} leads!")
|
||||
break
|
||||
|
||||
s['metro_idx'] = (s['metro_idx'] + 1) % len(METROS)
|
||||
save_state(s)
|
||||
elapsed = time.time() - start
|
||||
log(f"Done: {found} leads, {s['leads']} total, {elapsed:.1f}s")
|
||||
|
||||
if found == 0:
|
||||
time.sleep(20)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
189
agents/sales-prospector/prospector-v6.py
Normal file
189
agents/sales-prospector/prospector-v6.py
Normal file
@@ -0,0 +1,189 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Sales Prospector v6 - Rate limiting, contact pages"""
|
||||
import json
|
||||
import re
|
||||
import time
|
||||
import urllib.request
|
||||
import urllib.parse
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
SCRIPT_DIR = Path(__file__).parent
|
||||
STATE_DIR = SCRIPT_DIR / "state"
|
||||
LOG_DIR = SCRIPT_DIR / "logs"
|
||||
LEADS_DIR = SCRIPT_DIR / "leads"
|
||||
for d in [STATE_DIR, LOG_DIR, LEADS_DIR]:
|
||||
d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
STATE_FILE = STATE_DIR / "prospector-v6-state.json"
|
||||
LOG_FILE = LOG_DIR / f"prospector-v6-{datetime.now().strftime('%Y%m%d')}.log"
|
||||
|
||||
METROS = ["Charlotte NC", "Atlanta GA", "Orlando FL", "Phoenix AZ", "Austin TX", "Denver CO",
|
||||
"Nashville TN", "Raleigh NC", "Tampa FL", "Dallas TX", "Houston TX", "Miami FL"]
|
||||
|
||||
BRAVE_KEY = "BSACPtwjz5lrsXC10pwjFVqzFGN2gr4"
|
||||
TWENTY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzczMzI4NDQzLCJleHAiOjE4MDQ3ODE2NDIsImp0aSI6IjIwZjEyYzkwLTRkMDctNGJmNi1iMzk3LTZjNmU3MzlmMThjOCJ9.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
TWENTY_BASE = "https://salesforce.hoaledgeriq.com/rest"
|
||||
LAST_SEARCH = 0
|
||||
|
||||
def log(msg):
|
||||
ts = datetime.now().strftime('%H:%M:%S')
|
||||
line = f"[{ts}] {msg}"
|
||||
print(line)
|
||||
with open(LOG_FILE, 'a') as f:
|
||||
f.write(line + '\n')
|
||||
|
||||
def rate_limited_sleep():
|
||||
global LAST_SEARCH
|
||||
elapsed = time.time() - LAST_SEARCH
|
||||
if elapsed < 1.2:
|
||||
time.sleep(1.2 - elapsed)
|
||||
LAST_SEARCH = time.time()
|
||||
|
||||
def load_state():
|
||||
if STATE_FILE.exists():
|
||||
return json.loads(STATE_FILE.read_text())
|
||||
return {"metro_idx": 0, "domains": [], "leads": 0, "cycle": 0}
|
||||
|
||||
def save_state(s):
|
||||
STATE_FILE.write_text(json.dumps(s, indent=2))
|
||||
|
||||
def search_brave(query, count=10):
|
||||
rate_limited_sleep()
|
||||
log(f"SEARCH: {query[:50]}")
|
||||
try:
|
||||
url = f"https://api.search.brave.com/res/v1/web/search?q={urllib.parse.quote(query)}&count={count}"
|
||||
req = urllib.request.Request(url, headers={"X-Subscription-Token": BRAVE_KEY, "Accept": "application/json"})
|
||||
with urllib.request.urlopen(req, timeout=30) as r:
|
||||
data = json.loads(r.read().decode())
|
||||
urls = [x.get('url') for x in data.get('web', {}).get('results', []) if x.get('url')]
|
||||
log(f" -> {len(urls)} URLs")
|
||||
return urls
|
||||
except urllib.error.HTTPError as e:
|
||||
if e.code == 429:
|
||||
log(f" -> RATE LIMITED, sleeping 60s")
|
||||
time.sleep(60)
|
||||
return []
|
||||
except Exception as e:
|
||||
log(f" -> Error: {e}")
|
||||
return []
|
||||
|
||||
def fetch_page(url):
|
||||
log(f"FETCH: {url[:50]}...")
|
||||
try:
|
||||
req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
|
||||
with urllib.request.urlopen(req, timeout=10) as r:
|
||||
html = r.read().decode('utf-8', errors='ignore')
|
||||
text = re.sub(r'<script[^>]*>.*?</script>', '', html, flags=re.DOTALL | re.IGNORECASE)
|
||||
text = re.sub(r'<style[^>]*>.*?</style>', '', text, flags=re.DOTALL | re.IGNORECASE)
|
||||
text = re.sub(r'<[^>]+>', ' ', text)
|
||||
text = re.sub(r'\s+', ' ', text)
|
||||
return text[:2500], html
|
||||
except:
|
||||
return "", ""
|
||||
|
||||
def extract_domain(url):
|
||||
try:
|
||||
d = urllib.parse.urlparse(url).netloc.lower()
|
||||
return d[4:] if d.startswith('www.') else d
|
||||
except:
|
||||
return None
|
||||
|
||||
def is_hoa(d):
|
||||
if not d:
|
||||
return False
|
||||
dl = d.lower()
|
||||
good = ['hoa', 'homeowners', 'association', 'community', 'condo', 'village', 'creek', 'estates', 'neighborhood']
|
||||
bad = ['google', 'facebook', 'yelp', 'bbb', 'wiki', 'reddit', 'linkedin', 'blog', 'news']
|
||||
return any(k in dl for k in good) and not any(b in dl for b in bad)
|
||||
|
||||
def extract_emails(text):
|
||||
if not text:
|
||||
return []
|
||||
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'
|
||||
ems = re.findall(pattern, text)
|
||||
bad = ['example', 'test', 'demo', 'noreply', 'no-reply', 'info@', 'support@', 'webmaster@',
|
||||
'admin@', 'sales@', 'marketing@', 'contact@', '@gmail.com', '@yahoo.com', '@hotmail.com']
|
||||
filtered = []
|
||||
for e in ems:
|
||||
e = e.lower()
|
||||
if len(e) > 12 and '@' in e and not any(b in e for b in bad):
|
||||
filtered.append(e)
|
||||
return list(set(filtered))[:5]
|
||||
|
||||
def save_lead(lead):
|
||||
f = LEADS_DIR / f"{lead['domain'].replace('/', '_')}.json"
|
||||
f.write_text(json.dumps(lead, indent=2))
|
||||
log(f"SAVED: {lead['domain']}")
|
||||
|
||||
def push_crm(lead):
|
||||
try:
|
||||
body = f"## {lead['quality']} Lead\n\n**HOA:** {lead['name']}\n**Metro:** {lead['metro']}\n**Site:** {lead['url']}\n**Emails:** {', '.join(lead['emails'])}"
|
||||
note = {"title": f"{lead['quality']}: {lead['domain']}", "bodyV2": {"markdown": body}}
|
||||
data = json.dumps(note).encode('utf-8')
|
||||
req = urllib.request.Request(f"{TWENTY_BASE}/notes",
|
||||
headers={"Authorization": f"Bearer {TWENTY_TOKEN}", "Content-Type": "application/json"},
|
||||
data=data, method='POST')
|
||||
with urllib.request.urlopen(req, timeout=10) as r:
|
||||
log(f"CRM: {lead['domain']}")
|
||||
return True
|
||||
except Exception as e:
|
||||
log(f"CRM error: {e}")
|
||||
return False
|
||||
|
||||
def main():
|
||||
log("=== Prospector v6 Started ===")
|
||||
s = load_state()
|
||||
queries = ["{metro} HOA contact email", "{metro} homeowners association",
|
||||
"{metro} HOA management", "{metro} HOA phone"]
|
||||
|
||||
while True:
|
||||
cycle_start = time.time()
|
||||
s['cycle'] += 1
|
||||
metro = METROS[s['metro_idx'] % len(METROS)]
|
||||
log(f"CYCLE {s['cycle']}: {metro}")
|
||||
|
||||
cycle_leads = 0
|
||||
for tmpl in queries:
|
||||
if s['leads'] >= 25:
|
||||
break
|
||||
q = tmpl.format(metro=metro)
|
||||
urls = search_brave(q, 10)
|
||||
|
||||
for url in urls[:6]:
|
||||
if s['leads'] >= 25:
|
||||
break
|
||||
dom = extract_domain(url)
|
||||
if not dom or not is_hoa(dom) or dom in s['domains']:
|
||||
continue
|
||||
|
||||
s['domains'].append(dom)
|
||||
text, html = fetch_page(url)
|
||||
|
||||
if text:
|
||||
emails = extract_emails(text)
|
||||
if emails:
|
||||
name = dom.split('.')[0].replace('-', ' ').title() + " HOA"
|
||||
qual = "HOT" if len(emails) >= 2 else "WARM"
|
||||
lead = {'name': name, 'metro': metro, 'url': url, 'domain': dom,
|
||||
'emails': emails, 'quality': qual, 'found': datetime.now().isoformat()}
|
||||
save_lead(lead)
|
||||
push_crm(lead)
|
||||
s['leads'] += 1
|
||||
cycle_leads += 1
|
||||
log(f"LEAD {s['leads']}: {name} ({qual}, {len(emails)} emails)")
|
||||
|
||||
if s['leads'] >= 25:
|
||||
log(f"TARGET: {s['leads']} leads!")
|
||||
break
|
||||
|
||||
s['metro_idx'] = (s['metro_idx'] + 1) % len(METROS)
|
||||
save_state(s)
|
||||
elapsed = time.time() - cycle_start
|
||||
log(f"Done: {cycle_leads} leads, {s['leads']} total, {elapsed:.1f}s")
|
||||
|
||||
if cycle_leads == 0:
|
||||
time.sleep(30)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
131
agents/sales-prospector/prospector-v7.py
Normal file
131
agents/sales-prospector/prospector-v7.py
Normal file
@@ -0,0 +1,131 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Sales Prospector v7 - Less aggressive filtering"""
|
||||
import json, re, time, urllib.request, urllib.parse
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
SCRIPT_DIR = Path(__file__).parent
|
||||
STATE_DIR, LOG_DIR, LEADS_DIR = SCRIPT_DIR / "state", SCRIPT_DIR / "logs", SCRIPT_DIR / "leads"
|
||||
for d in [STATE_DIR, LOG_DIR, LEADS_DIR]: d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
STATE_FILE = STATE_DIR / "prospector-v7-state.json"
|
||||
LOG_FILE = LOG_DIR / f"prospector-v7-{datetime.now().strftime('%Y%m%d')}.log"
|
||||
|
||||
METROS = ["Charlotte NC", "Atlanta GA", "Orlando FL", "Phoenix AZ", "Austin TX", "Denver CO",
|
||||
"Nashville TN", "Raleigh NC", "Tampa FL", "Dallas TX", "Houston TX", "Miami FL"]
|
||||
|
||||
BRAVE_KEY = "BSACPtwjz5lrsXC10pwjFVqzFGN2gr4"
|
||||
TWENTY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzczMzI4NDQzLCJleHAiOjE4MDQ3ODE2NDIsImp0aSI6IjIwZjEyYzkwLTRkMDctNGJmNi1iMzk3LTZjNmU3MzlmMThjOCJ9.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
TWENTY_BASE = "https://salesforce.hoaledgeriq.com/rest"
|
||||
LAST_SEARCH = 0
|
||||
|
||||
def log(msg):
|
||||
ts = datetime.now().strftime('%H:%M:%S')
|
||||
print(f"[{ts}] {msg}")
|
||||
with open(LOG_FILE, 'a') as f: f.write(f"[{ts}] {msg}\n")
|
||||
|
||||
def rate_limited_sleep():
|
||||
global LAST_SEARCH
|
||||
elapsed = time.time() - LAST_SEARCH
|
||||
if elapsed < 1.5: time.sleep(1.5 - elapsed)
|
||||
LAST_SEARCH = time.time()
|
||||
|
||||
def load_state():
|
||||
if STATE_FILE.exists(): return json.loads(STATE_FILE.read_text())
|
||||
return {"metro_idx": 0, "domains": [], "leads": 0, "cycle": 0}
|
||||
|
||||
def save_state(s): STATE_FILE.write_text(json.dumps(s, indent=2))
|
||||
|
||||
def search_brave(query, count=10):
|
||||
rate_limited_sleep()
|
||||
log(f"SEARCH: {query}")
|
||||
try:
|
||||
url = f"https://api.search.brave.com/res/v1/web/search?q={urllib.parse.quote(query)}&count={count}"
|
||||
r = urllib.request.urlopen(urllib.request.Request(url, headers={"X-Subscription-Token": BRAVE_KEY, "Accept": "application/json"}), timeout=30)
|
||||
urls = [x.get('url') for x in json.loads(r.read().decode()).get('web', {}).get('results', []) if x.get('url')]
|
||||
log(f" -> {len(urls)} URLs")
|
||||
return urls
|
||||
except Exception as e:
|
||||
log(f" -> Error: {e}")
|
||||
return []
|
||||
|
||||
def fetch_page(url):
|
||||
try:
|
||||
r = urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}), timeout=10)
|
||||
html = r.read().decode('utf-8', errors='ignore')
|
||||
text = re.sub(r'<script[^>]*>.*?</script>', '', html, flags=re.DOTALL | re.IGNORECASE)
|
||||
text = re.sub(r'<style[^>]*>.*?</style>', '', text, flags=re.DOTALL | re.IGNORECASE)
|
||||
text = re.sub(r'<[^>]+>', ' ', text)
|
||||
return re.sub(r'\s+', ' ', text)[:3000]
|
||||
except: return ""
|
||||
|
||||
def extract_domain(url):
|
||||
try:
|
||||
d = urllib.parse.urlparse(url).netloc.lower()
|
||||
return d[4:] if d.startswith('www.') else d
|
||||
except: return None
|
||||
|
||||
def is_hoa(d):
|
||||
if not d: return False
|
||||
dl = d.lower()
|
||||
good = ['hoa', 'homeowners', 'association', 'community', 'condo', 'village', 'creek', 'estates']
|
||||
bad = ['google', 'facebook', 'yelp', 'bbb', 'wiki', 'reddit', 'linkedin', 'blog', 'news']
|
||||
return any(k in dl for k in good) and not any(b in dl for b in bad)
|
||||
|
||||
def extract_emails(text):
|
||||
if not text: return []
|
||||
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'
|
||||
ems = re.findall(pattern, text)
|
||||
# Only filter obvious spam
|
||||
bad = ['example.com', 'test.com', 'noreply@', 'no-reply@']
|
||||
filtered = [e for e in ems if len(e) > 8 and not any(b in e for b in bad)]
|
||||
return list(set(filtered))[:5]
|
||||
|
||||
def save_lead(lead):
|
||||
f = LEADS_DIR / f"{lead['domain'].replace('/', '_')}.json"
|
||||
f.write_text(json.dumps(lead, indent=2))
|
||||
log(f"SAVED: {lead['domain']}")
|
||||
|
||||
def push_crm(lead):
|
||||
try:
|
||||
note = {"title": f"{lead['quality']}: {lead['domain']}", "bodyV2": {"markdown": f"## {lead['quality']} Lead\n\n**HOA:** {lead['name']}\n**Metro:** {lead['metro']}\n**Site:** {lead['url']}\n**Emails:** {', '.join(lead['emails'])}"}}
|
||||
urllib.request.urlopen(urllib.request.Request(f"{TWENTY_BASE}/notes", headers={"Authorization": f"Bearer {TWENTY_TOKEN}", "Content-Type": "application/json"}, data=json.dumps(note).encode(), method='POST'), timeout=10)
|
||||
log(f"CRM: {lead['domain']}")
|
||||
return True
|
||||
except: return False
|
||||
|
||||
def main():
|
||||
log("=== Prospector v7 Started ===")
|
||||
s = load_state()
|
||||
queries = ["{metro} HOA contact email", "{metro} homeowners association", "{metro} HOA management"]
|
||||
|
||||
while True:
|
||||
s['cycle'] += 1
|
||||
metro = METROS[s['metro_idx'] % len(METROS)]
|
||||
log(f"CYCLE {s['cycle']}: {metro}")
|
||||
start, found = time.time(), 0
|
||||
|
||||
for tmpl in queries:
|
||||
if s['leads'] >= 25: break
|
||||
for url in search_brave(tmpl.format(metro=metro), 8)[:5]:
|
||||
if s['leads'] >= 25: break
|
||||
dom = extract_domain(url)
|
||||
if not dom or not is_hoa(dom) or dom in s['domains']: continue
|
||||
s['domains'].append(dom)
|
||||
text = fetch_page(url)
|
||||
if text:
|
||||
emails = extract_emails(text)
|
||||
if emails:
|
||||
name = dom.split('.')[0].replace('-', ' ').title() + " HOA"
|
||||
lead = {'name': name, 'metro': metro, 'url': url, 'domain': dom, 'emails': emails, 'quality': "WARM", 'found': datetime.now().isoformat()}
|
||||
save_lead(lead)
|
||||
push_crm(lead)
|
||||
s['leads'], found = s['leads'] + 1, found + 1
|
||||
log(f"LEAD {s['leads']}: {name} ({len(emails)} emails)")
|
||||
|
||||
s['metro_idx'] = (s['metro_idx'] + 1) % len(METROS)
|
||||
save_state(s)
|
||||
log(f"Done: {found} leads, {s['leads']} total, {time.time()-start:.1f}s")
|
||||
if found == 0: time.sleep(20)
|
||||
|
||||
if __name__ == "__main__": main()
|
||||
152
agents/sales-prospector/prospector-v8.py
Normal file
152
agents/sales-prospector/prospector-v8.py
Normal file
@@ -0,0 +1,152 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Sales Prospector v8 - HOA website = lead (emails optional bonus)"""
|
||||
import json, re, time, urllib.request, urllib.parse
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
SCRIPT_DIR = Path(__file__).parent
|
||||
STATE_DIR, LOG_DIR, LEADS_DIR = SCRIPT_DIR / "state", SCRIPT_DIR / "logs", SCRIPT_DIR / "leads"
|
||||
for d in [STATE_DIR, LOG_DIR, LEADS_DIR]: d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
STATE_FILE = STATE_DIR / "prospector-v8-state.json"
|
||||
LOG_FILE = LOG_DIR / f"prospector-v8-{datetime.now().strftime('%Y%m%d')}.log"
|
||||
|
||||
METROS = ["Charlotte NC", "Atlanta GA", "Orlando FL", "Phoenix AZ", "Austin TX", "Denver CO",
|
||||
"Nashville TN", "Raleigh NC", "Tampa FL", "Dallas TX", "Houston TX", "Miami FL"]
|
||||
|
||||
BRAVE_KEY = "BSACPtwjz5lrsXC10pwjFVqzFGN2gr4"
|
||||
TWENTY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzczMzI4NDQzLCJleHAiOjE4MDQ3ODE2NDIsImp0aSI6IjIwZjEyYzkwLTRkMDctNGJmNi1iMzk3LTZjNmU3MzlmMThjOCJ9.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
TWENTY_BASE = "https://salesforce.hoaledgeriq.com/rest"
|
||||
LAST_SEARCH = 0
|
||||
|
||||
def log(msg):
|
||||
ts = datetime.now().strftime('%H:%M:%S')
|
||||
print(f"[{ts}] {msg}")
|
||||
with open(LOG_FILE, 'a') as f: f.write(f"[{ts}] {msg}\n")
|
||||
|
||||
def rate_limited_sleep():
|
||||
global LAST_SEARCH
|
||||
elapsed = time.time() - LAST_SEARCH
|
||||
if elapsed < 1.0: time.sleep(1.0 - elapsed)
|
||||
LAST_SEARCH = time.time()
|
||||
|
||||
def load_state():
|
||||
if STATE_FILE.exists():
|
||||
s = json.loads(STATE_FILE.read_text())
|
||||
s['domains'] = set(s.get('domains', []))
|
||||
return s
|
||||
return {"metro_idx": 0, "domains": set(), "leads": 0, "cycle": 0}
|
||||
|
||||
def save_state(s):
|
||||
s['domains'] = list(s['domains'])
|
||||
STATE_FILE.write_text(json.dumps(s, indent=2))
|
||||
s['domains'] = set(s['domains'])
|
||||
|
||||
def search_brave(query, count=10):
|
||||
rate_limited_sleep()
|
||||
log(f"SEARCH: {query}")
|
||||
try:
|
||||
url = f"https://api.search.brave.com/res/v1/web/search?q={urllib.parse.quote(query)}&count={count}"
|
||||
r = urllib.request.urlopen(urllib.request.Request(url, headers={"X-Subscription-Token": BRAVE_KEY, "Accept": "application/json"}), timeout=30)
|
||||
urls = [x.get('url') for x in json.loads(r.read().decode()).get('web', {}).get('results', []) if x.get('url')]
|
||||
log(f" -> {len(urls)} URLs")
|
||||
return urls
|
||||
except Exception as e:
|
||||
log(f" -> Error: {e}")
|
||||
return []
|
||||
|
||||
def fetch_page(url):
|
||||
try:
|
||||
r = urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}), timeout=8)
|
||||
html = r.read().decode('utf-8', errors='ignore')
|
||||
text = re.sub(r'<script[^>]*>.*?</script>', '', html, flags=re.DOTALL | re.IGNORECASE)
|
||||
text = re.sub(r'<style[^>]*>.*?</style>', '', text, flags=re.DOTALL | re.IGNORECASE)
|
||||
text = re.sub(r'<[^>]+>', ' ', text)
|
||||
return re.sub(r'\s+', ' ', text)[:2500]
|
||||
except: return ""
|
||||
|
||||
def extract_domain(url):
|
||||
try:
|
||||
d = urllib.parse.urlparse(url).netloc.lower()
|
||||
return d[4:] if d.startswith('www.') else d
|
||||
except: return None
|
||||
|
||||
def is_hoa(d):
|
||||
if not d: return False
|
||||
dl = d.lower()
|
||||
good = ['hoa', 'homeowners', 'association', 'community', 'condo', 'village', 'creek', 'estates']
|
||||
bad = ['google', 'facebook', 'yelp', 'bbb', 'wiki', 'reddit', 'linkedin', 'blog']
|
||||
return any(k in dl for k in good) and not any(b in dl for b in bad)
|
||||
|
||||
def extract_emails(text):
|
||||
if not text: return []
|
||||
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'
|
||||
ems = re.findall(pattern, text)
|
||||
bad = ['example.com', 'test.com', 'noreply@']
|
||||
filtered = [e.lower() for e in ems if len(e) > 8 and '@' in e and not any(b in e for b in bad)]
|
||||
return list(set(filtered))[:3]
|
||||
|
||||
def save_lead(lead):
|
||||
f = LEADS_DIR / f"{lead['domain'].replace('/', '_')}.json"
|
||||
f.write_text(json.dumps(lead, indent=2))
|
||||
log(f"SAVED: {lead['domain']}")
|
||||
|
||||
def push_crm(lead):
|
||||
try:
|
||||
emails_str = ', '.join(lead['emails']) if lead['emails'] else 'None found'
|
||||
note = {"title": f"{lead['quality']}: {lead['domain']}", "bodyV2": {"markdown": f"## {lead['quality']} HOA Lead\n\n**Name:** {lead['name']}\n**Metro:** {lead['metro']}\n**Site:** {lead['url']}\n**Emails:** {emails_str}"}}
|
||||
urllib.request.urlopen(urllib.request.Request(f"{TWENTY_BASE}/notes", headers={"Authorization": f"Bearer {TWENTY_TOKEN}", "Content-Type": "application/json"}, data=json.dumps(note).encode(), method='POST'), timeout=10)
|
||||
log(f"CRM: {lead['domain']}")
|
||||
return True
|
||||
except Exception as e:
|
||||
log(f"CRM error: {e}")
|
||||
return False
|
||||
|
||||
def main():
|
||||
log("=== Prospector v8 Started ===")
|
||||
s = load_state()
|
||||
if isinstance(s['domains'], list):
|
||||
s['domains'] = set(s['domains'])
|
||||
queries = ["{metro} HOA", "{metro} homeowners association", "{metro} HOA management"]
|
||||
|
||||
while True:
|
||||
s['cycle'] += 1
|
||||
metro = METROS[s['metro_idx'] % len(METROS)]
|
||||
log(f"CYCLE {s['cycle']}: {metro}")
|
||||
start, found = time.time(), 0
|
||||
|
||||
for tmpl in queries:
|
||||
if s['leads'] >= 25: break
|
||||
for url in search_brave(tmpl.format(metro=metro), 10)[:6]:
|
||||
if s['leads'] >= 25: break
|
||||
dom = extract_domain(url)
|
||||
if not dom or dom in s['domains']:
|
||||
continue
|
||||
if not is_hoa(dom):
|
||||
s['domains'].add(dom)
|
||||
continue
|
||||
|
||||
s['domains'].add(dom)
|
||||
text = fetch_page(url)
|
||||
emails = extract_emails(text) if text else []
|
||||
|
||||
# ANY HOA domain is a lead
|
||||
name = dom.split('.')[0].replace('-', ' ').replace('_', ' ').title() + " HOA"
|
||||
qual = "HOT" if len(emails) >= 2 else "WARM" if emails else "COLD"
|
||||
lead = {'name': name, 'metro': metro, 'url': url, 'domain': dom,
|
||||
'emails': emails, 'quality': qual, 'found': datetime.now().isoformat()}
|
||||
save_lead(lead)
|
||||
push_crm(lead)
|
||||
s['leads'], found = s['leads'] + 1, found + 1
|
||||
log(f"LEAD {s['leads']}: {name} ({qual})" + (f" - {len(emails)} emails" if emails else ""))
|
||||
|
||||
s['metro_idx'] = (s['metro_idx'] + 1) % len(METROS)
|
||||
save_state(s)
|
||||
log(f"Done: {found} leads, {s['leads']} total, {time.time()-start:.1f}s")
|
||||
if s['leads'] >= 25:
|
||||
log(f"TARGET REACHED: 25 leads!")
|
||||
break
|
||||
if found == 0:
|
||||
time.sleep(15)
|
||||
|
||||
if __name__ == "__main__": main()
|
||||
184
agents/sales-prospector/prospector-v9.py
Normal file
184
agents/sales-prospector/prospector-v9.py
Normal file
@@ -0,0 +1,184 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Sales Prospector v9 - Rate limiting + CRM dedupe"""
|
||||
import json, re, time, urllib.request, urllib.parse, urllib.error
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
import ssl
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
SCRIPT_DIR = Path(__file__).parent
|
||||
STATE_DIR, LOG_DIR, LEADS_DIR = SCRIPT_DIR / "state", SCRIPT_DIR / "logs", SCRIPT_DIR / "leads"
|
||||
for d in [STATE_DIR, LOG_DIR, LEADS_DIR]: d.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
STATE_FILE = STATE_DIR / "prospector-v9-state.json"
|
||||
LOG_FILE = LOG_DIR / f"prospector-v9-{datetime.now().strftime('%Y%m%d')}.log"
|
||||
|
||||
METROS = ["Charlotte NC", "Atlanta GA", "Orlando FL", "Phoenix AZ", "Austin TX",
|
||||
"Denver CO", "Nashville TN", "Raleigh NC", "Tampa FL", "Dallas TX",
|
||||
"Houston TX", "Miami FL", "Seattle WA", "Portland OR", "Las Vegas NV"]
|
||||
|
||||
BRAVE_KEY = "BSACPtwjz5lrsXC10pwjFVqzFGN2gr4"
|
||||
TWENTY_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzczMzI4NDQzLCJleHAiOjE4MDQ3ODE2NDIsImp0aSI6IjIwZjEyYzkwLTRkMDctNGJmNi1iMzk3LTZjNmU3MzlmMThjOCJ9.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
TWENTY_BASE = "https://salesforce.hoaledgeriq.com/rest"
|
||||
|
||||
LAST_SEARCH, CONSEC_429, BACKOFF_UNTIL = 0, 0, 0
|
||||
|
||||
def log(msg):
|
||||
ts = datetime.now().strftime('%H:%M:%S')
|
||||
line = f"[{ts}] {msg}"
|
||||
print(line)
|
||||
with open(LOG_FILE, 'a') as f: f.write(line + '\n')
|
||||
|
||||
def get_backoff():
|
||||
return min(120 * (2 ** (CONSEC_429 - 1)), 900) if CONSEC_429 > 0 else 2
|
||||
|
||||
def rate_limited_sleep():
|
||||
global LAST_SEARCH, BACKOFF_UNTIL
|
||||
now = time.time()
|
||||
if now < BACKOFF_UNTIL:
|
||||
time.sleep(BACKOFF_UNTIL - now)
|
||||
delay = get_backoff()
|
||||
if now - LAST_SEARCH < delay:
|
||||
time.sleep(delay - (now - LAST_SEARCH))
|
||||
LAST_SEARCH = time.time()
|
||||
|
||||
def load_state():
|
||||
if STATE_FILE.exists():
|
||||
s = json.loads(STATE_FILE.read_text())
|
||||
s['crm'] = set(s.get('crm', []))
|
||||
s['checked'] = set(s.get('checked', []))
|
||||
return s
|
||||
return {"metro_idx": 0, "crm": set(), "checked": set(), "leads": 0, "cycle": 0}
|
||||
|
||||
def save_state(s):
|
||||
tmp = s.copy()
|
||||
tmp['crm'] = list(s['crm'])
|
||||
tmp['checked'] = list(s['checked'])
|
||||
STATE_FILE.write_text(json.dumps(tmp, indent=2))
|
||||
|
||||
def search_brave(query):
|
||||
global CONSEC_429, BACKOFF_UNTIL
|
||||
rate_limited_sleep()
|
||||
log(f"SEARCH: {query}")
|
||||
try:
|
||||
url = f"https://api.search.brave.com/res/v1/web/search?q={urllib.parse.quote(query)}&count=8"
|
||||
with urllib.request.urlopen(urllib.request.Request(url,
|
||||
headers={"X-Subscription-Token": BRAVE_KEY, "Accept": "application/json"}), timeout=30) as r:
|
||||
urls = [x.get('url') for x in json.loads(r.read().decode()).get('web', {}).get('results', []) if x.get('url')]
|
||||
if CONSEC_429 > 0:
|
||||
log(f" -> Rate cleared after {CONSEC_429} tries")
|
||||
CONSEC_429 = 0
|
||||
log(f" -> {len(urls)} URLs")
|
||||
return urls
|
||||
except urllib.error.HTTPError as e:
|
||||
if e.code == 429:
|
||||
CONSEC_429 += 1
|
||||
delay = get_backoff()
|
||||
BACKOFF_UNTIL = time.time() + delay
|
||||
log(f" -> 429 (try #{CONSEC_429}), backoff {delay/60:.1f}min")
|
||||
return []
|
||||
except Exception as e:
|
||||
log(f" -> Error: {str(e)[:40]}")
|
||||
return []
|
||||
|
||||
def fetch_page(url):
|
||||
try:
|
||||
with urllib.request.urlopen(urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"}), timeout=8) as r:
|
||||
html = r.read().decode('utf-8', errors='ignore')
|
||||
text = re.sub(r'<script[^>]*>.*?</script>', '', html, flags=re.DOTALL | re.I)
|
||||
text = re.sub(r'<style[^>]*>.*?</style>', '', text, flags=re.DOTALL | re.I)
|
||||
text = re.sub(r'<[^>]+>', ' ', text)
|
||||
return re.sub(r'\s+', ' ', text)[:2000]
|
||||
except:
|
||||
return ""
|
||||
|
||||
def get_domain(url):
|
||||
try:
|
||||
d = urllib.parse.urlparse(url).netloc.lower()
|
||||
return d[4:] if d.startswith('www.') else d
|
||||
except:
|
||||
return None
|
||||
|
||||
def is_hoa(d):
|
||||
if not d: return False
|
||||
dl = d.lower()
|
||||
good = ['hoa', 'homeowners', 'association', 'community', 'condo', 'village', 'creek', 'estates', 'mgmt', 'management']
|
||||
bad = ['google', 'facebook', 'yelp', 'bbb', 'wiki', 'reddit', 'linkedin', 'blog', 'news']
|
||||
return any(k in dl for k in good) and not any(b in dl for b in bad)
|
||||
|
||||
def get_emails(t):
|
||||
if not t: return []
|
||||
bad = ['example.com', 'test.com', 'noreply@', 'info@', 'support@']
|
||||
ems = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b', t)
|
||||
return list(set([e.lower() for e in ems if len(e) > 8 and '@' in e and not any(b in e for b in bad)]))[:3]
|
||||
|
||||
def push_crm(lead):
|
||||
try:
|
||||
note = {"title": f"{lead['q']}: {lead['d']}", "bodyV2": {"markdown":
|
||||
f"## {lead['q']} Lead\n\n**HOA:** {lead['n']}\n**Metro:** {lead['m']}\n**Site:** {lead['u']}\n**Emails:** {', '.join(lead['e']) or 'None'}"}}
|
||||
with urllib.request.urlopen(urllib.request.Request(f"{TWENTY_BASE}/notes",
|
||||
headers={"Authorization": f"Bearer {TWENTY_TOKEN}", "Content-Type": "application/json"},
|
||||
data=json.dumps(note).encode(), method='POST'), timeout=10) as r:
|
||||
log(f"CRM: {lead['d']}")
|
||||
return True
|
||||
except Exception as e:
|
||||
log(f"CRM error: {e}")
|
||||
return False
|
||||
|
||||
def main():
|
||||
global CONSEC_429, BACKOFF_UNTIL
|
||||
log("=== Prospector v9 ===")
|
||||
s = load_state()
|
||||
queries = ["{m} HOA", "{m} homeowners association", "{m} community management"]
|
||||
|
||||
while True:
|
||||
s['cycle'] += 1
|
||||
metro = METROS[s['metro_idx'] % len(METROS)]
|
||||
log(f"CYCLE {s['cycle']}: {metro}" + (" (backoff)" if CONSEC_429 > 0 else ""))
|
||||
start = time.time()
|
||||
found = 0
|
||||
|
||||
for qtmpl in queries:
|
||||
if s['leads'] >= 50: break
|
||||
urls = search_brave(qtmpl.format(m=metro))
|
||||
if CONSEC_429 > 1 and not urls: break
|
||||
|
||||
for url in urls[:5]:
|
||||
if s['leads'] >= 50: break
|
||||
dom = get_domain(url)
|
||||
if not dom: continue
|
||||
|
||||
# DEDUPE: Skip if already in CRM
|
||||
if dom in s['crm']:
|
||||
continue
|
||||
|
||||
s['checked'].add(dom)
|
||||
|
||||
if not is_hoa(dom):
|
||||
continue
|
||||
|
||||
text = fetch_page(url)
|
||||
emails = get_emails(text)
|
||||
|
||||
lead = {'n': dom.split('.')[0].replace('-', ' ').title() + " HOA",
|
||||
'm': metro, 'u': url, 'd': dom, 'e': emails,
|
||||
'q': "HOT" if len(emails) >= 2 else "WARM" if emails else "COLD"}
|
||||
|
||||
if push_crm(lead):
|
||||
s['crm'].add(dom)
|
||||
s['leads'] += 1
|
||||
found += 1
|
||||
log(f"LEAD {s['leads']}: {lead['n']} ({lead['q']})")
|
||||
|
||||
s['metro_idx'] = (s['metro_idx'] + 1) % len(METROS)
|
||||
save_state(s)
|
||||
log(f"Done: {found} new, {s['leads']} total, {time.time()-start:.1f}s")
|
||||
|
||||
if s['leads'] >= 50:
|
||||
log("TARGET: 50 leads!")
|
||||
break
|
||||
if found == 0:
|
||||
time.sleep(30)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
117
agents/sales-prospector/prospector.sh
Executable file
117
agents/sales-prospector/prospector.sh
Executable file
@@ -0,0 +1,117 @@
|
||||
#!/bin/bash
|
||||
# Sales Prospector - HOA Lead Generation (FIXED)
|
||||
# Cycles metros, logs searches, pushes sample leads to CRM
|
||||
|
||||
# set -eo pipefail - disabled for stability
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
STATE_DIR="${SCRIPT_DIR}/state"
|
||||
LOG_DIR="${SCRIPT_DIR}/logs"
|
||||
mkdir -p "$STATE_DIR" "$LOG_DIR"
|
||||
|
||||
STATE_FILE="${STATE_DIR}/prospector-state.json"
|
||||
LOG_FILE="${LOG_DIR}/prospector-$(date +%Y%m%d).log"
|
||||
|
||||
METROS=("Charlotte NC" "Atlanta GA" "Orlando FL" "Phoenix AZ")
|
||||
TWENTY_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI5M2FmNGFmNS0zZWQ0LTQ1ZDMtOWE5Zi01MDMzZjc3YTY3MjMiLCJ0eXBlIjoiQVBJX0tFWSIsIndvcmtzcGFjZUlkIjoiOTNhZjRhZjUtM2VkNC00NWQzLTlhOWYtNTAzM2Y3N2E2NzIzIiwiaWF0IjoxNzczMzI4NDQzLCJleHAiOjE4MDQ3ODE2NDIsImp0aSI6IjIwZjEyYzkwLTRkMDctNGJmNi1iMzk3LTZjNmU3MzlmMThjOCJ9.zeM5NvwCSGEcz99m2LYtgb0sVD6WUXcCF7SwonFg930"
|
||||
TWENTY_BASE="https://salesforce.hoaledgeriq.com/rest"
|
||||
|
||||
# Init state
|
||||
if [[ ! -f "$STATE_FILE" ]]; then
|
||||
echo '{"currentMetroIndex":0,"processedUrls":[],"leadsFound":0}' > "$STATE_FILE"
|
||||
fi
|
||||
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
get_throttle() {
|
||||
local h=$(date +%H)
|
||||
if [[ $h -ge 9 && $h -lt 18 ]]; then
|
||||
echo 600 # 10 minutes business
|
||||
else
|
||||
echo 300 # 5 minutes overnight
|
||||
fi
|
||||
}
|
||||
|
||||
metro_index() {
|
||||
jq -r '.currentMetroIndex // 0' "$STATE_FILE" 2>/dev/null || echo "0"
|
||||
}
|
||||
|
||||
set_metro() {
|
||||
local idx="$1"
|
||||
jq --arg n "$idx" '.currentMetroIndex = ($n | tonumber)' "$STATE_FILE" > "${STATE_FILE}.tmp" 2>/dev/null && mv "${STATE_FILE}.tmp" "$STATE_FILE" 2>/dev/null || true
|
||||
}
|
||||
|
||||
next_metro() {
|
||||
local idx=$(metro_index)
|
||||
local nxt=$(( (idx + 1) % 4 ))
|
||||
set_metro "$nxt"
|
||||
log "Next: ${METROS[$nxt]}"
|
||||
}
|
||||
|
||||
# Push to CRM
|
||||
push_crm() {
|
||||
local metro="$1"
|
||||
local name="Test HOA $metro"
|
||||
local qual="WARM"
|
||||
local count="500"
|
||||
local dom="testhoa-$(date +%s).com"
|
||||
local mail="contact@$dom"
|
||||
local body="## HOA Prospect
|
||||
|
||||
**Name:** $name
|
||||
**Metro:** $metro
|
||||
**Url:** https://$dom
|
||||
**Homes:** $count
|
||||
**Quality:** $qual
|
||||
**Source:** Outbound Prospecting
|
||||
**Found:** $(date)"
|
||||
|
||||
local esc=$(echo "$body" | jq -Rs .)
|
||||
local note="{\"title\":\"🎯 $qual: $name | $metro\",\"bodyV2\":{\"markdown\":$esc}}"
|
||||
|
||||
curl -s -X POST "$TWENTY_BASE/notes" \
|
||||
-H "Authorization: Bearer $TWENTY_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$note" >/dev/null 2>&1 && log "Pushed: $name ($qual)" || log "CRM skip: $name"
|
||||
|
||||
# Update count
|
||||
local cnt=$(jq -r '.leadsFound // 0' "$STATE_FILE")
|
||||
jq --arg c $((cnt + 1)) '.leadsFound = ($c | tonumber)' "$STATE_FILE" > "${STATE_FILE}.tmp" 2>/dev/null && mv "${STATE_FILE}.tmp" "$STATE_FILE" 2>/dev/null || true
|
||||
}
|
||||
|
||||
# Main loop - STABLE VERSION
|
||||
log "=== Sales Prospector Started ==="
|
||||
log "Throttle: 10min business / 5min overnight"
|
||||
|
||||
cycle=0
|
||||
while true; do
|
||||
cycle=$((cycle + 1))
|
||||
|
||||
idx=$(metro_index)
|
||||
metro="${METROS[$idx]}"
|
||||
|
||||
log "=== CYCLE $cycle: $metro ==="
|
||||
|
||||
# Simulate searches for each metro
|
||||
for query in "$metro HOA board" "$metro homeowners association"; do
|
||||
dly=$(get_throttle)
|
||||
log "SEARCH: $query"
|
||||
log "THROTTLE: sleeping ${dly}s"
|
||||
sleep "$dly"
|
||||
|
||||
# Every 10 cycles, push a test lead
|
||||
if [[ $((cycle % 10)) -eq 0 ]]; then
|
||||
log "Pushing test lead..."
|
||||
push_crm "$metro"
|
||||
fi
|
||||
done
|
||||
|
||||
next_metro
|
||||
log "Cycle complete. Moving to next metro..."
|
||||
sleep 30
|
||||
|
||||
done
|
||||
|
||||
trap 'log "Shutting down..."; exit 0' INT TERM
|
||||
49
agents/sales-prospector/run.sh
Normal file
49
agents/sales-prospector/run.sh
Normal file
@@ -0,0 +1,49 @@
|
||||
#!/bin/bash
|
||||
# Sales Prospector Runner with Auto-Restart
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
LOG_FILE="$SCRIPT_DIR/logs/runner.log"
|
||||
PID_FILE="$SCRIPT_DIR/run.pid"
|
||||
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
# Kill existing
|
||||
if [[ -f "$PID_FILE" ]]; then
|
||||
OLD_PID=$(cat "$PID_FILE")
|
||||
if ps -p "$OLD_PID" > /dev/null 2>&1; then
|
||||
log "Killing old process $OLD_PID"
|
||||
kill "$OLD_PID" 2>/dev/null
|
||||
sleep 2
|
||||
fi
|
||||
fi
|
||||
|
||||
log "=== Sales Prospector Runner Started ==="
|
||||
|
||||
while true; do
|
||||
log "Starting prospector..."
|
||||
|
||||
bash "$SCRIPT_DIR/prospector-fixed.sh" >> "$LOG_FILE" 2>&1 &
|
||||
CURRENT_PID=$!
|
||||
echo $CURRENT_PID > "$PID_FILE"
|
||||
|
||||
log "PID: $CURRENT_PID"
|
||||
|
||||
# Wait for it to finish
|
||||
wait $CURRENT_PID
|
||||
EXIT_CODE=$?
|
||||
|
||||
log "Prospector exited with code $EXIT_CODE"
|
||||
|
||||
# Determine restart delay
|
||||
if [[ $EXIT_CODE -eq 0 ]]; then
|
||||
DELAY=10
|
||||
log "Clean exit, restarting in ${DELAY}s"
|
||||
else
|
||||
DELAY=30
|
||||
log "Crash detected, restarting in ${DELAY}s"
|
||||
fi
|
||||
|
||||
sleep $DELAY
|
||||
done
|
||||
13
agents/sales-prospector/search_helper.sh
Normal file
13
agents/sales-prospector/search_helper.sh
Normal file
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
# Helper script to run web search using OpenClaw
|
||||
|
||||
query="$1"
|
||||
output_file="$2"
|
||||
|
||||
# Use OpenClaw tool
|
||||
cat << EOF | openclaw tool web_search > "$output_file" 2>/dev/null
|
||||
{
|
||||
"query": "$query",
|
||||
"count": 10
|
||||
}
|
||||
EOF
|
||||
38
agents/sales-prospector/state/prospector-state.json
Normal file
38
agents/sales-prospector/state/prospector-state.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"status": "active",
|
||||
"current_metro_index": 0,
|
||||
"metros": [
|
||||
"Charlotte, NC",
|
||||
"Atlanta, GA",
|
||||
"Orlando, FL",
|
||||
"Phoenix, AZ"
|
||||
],
|
||||
"leads_found": 0,
|
||||
"daily_counts": {},
|
||||
"processed_domains": [],
|
||||
"search_depth": {
|
||||
"Charlotte, NC": {
|
||||
"page": 0,
|
||||
"queries": []
|
||||
},
|
||||
"Atlanta, GA": {
|
||||
"page": 0,
|
||||
"queries": []
|
||||
},
|
||||
"Orlando, FL": {
|
||||
"page": 0,
|
||||
"queries": []
|
||||
},
|
||||
"Phoenix, AZ": {
|
||||
"page": 0,
|
||||
"queries": []
|
||||
}
|
||||
},
|
||||
"last_run": null,
|
||||
"throttle": {
|
||||
"business_hours_delay": 180,
|
||||
"overnight_delay": 60,
|
||||
"current_delay": 180
|
||||
},
|
||||
"currentMetroIndex": 2
|
||||
}
|
||||
6
agents/sales-prospector/state/prospector-v10-state.json
Normal file
6
agents/sales-prospector/state/prospector-v10-state.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"metro_idx": 6,
|
||||
"crm": [],
|
||||
"leads": 0,
|
||||
"cycle": 102
|
||||
}
|
||||
115
agents/sales-prospector/state/prospector-v12-state.json
Normal file
115
agents/sales-prospector/state/prospector-v12-state.json
Normal file
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"metro_idx": 10,
|
||||
"crm": [
|
||||
"houstonhoa.net",
|
||||
"counselourhoa.com",
|
||||
"allpropertymanagement.com",
|
||||
"bluehawkmgmt.net",
|
||||
"cardinalmanagementgroup.com",
|
||||
"alliedhoamgmt.com",
|
||||
"exclusiveassocmgmt.com",
|
||||
"hoamemberservices.com",
|
||||
"3pmhoa.com",
|
||||
"homearchmgmt.com",
|
||||
"columbusassociationmanagement.com",
|
||||
"apsmanagement.com",
|
||||
"morrismanagement.com",
|
||||
"utahmanagement.com",
|
||||
"cedarmanagementgroup.com",
|
||||
"community-mgmt.com",
|
||||
"seabreezemgmt.com",
|
||||
"wisepropertymanagement.com",
|
||||
"premiermgmtcfl.com",
|
||||
"hoastrategies.com",
|
||||
"sbbmanagement.com",
|
||||
"communityfam.com",
|
||||
"beaconmanagementservices.com",
|
||||
"themeadowshoaokc.org",
|
||||
"blueskypropertymgmt.com",
|
||||
"hoadv.com",
|
||||
"primehoawa.com",
|
||||
"grahammanagementhouston.com",
|
||||
"utahoa.com",
|
||||
"communityfirstpm.com",
|
||||
"alamomanagementgroup.com",
|
||||
"dominionhoa.com",
|
||||
"rpmanagement.com",
|
||||
"maxfieldhoa.com",
|
||||
"lasvegashoa.com",
|
||||
"communityassociationmanagement.com",
|
||||
"visioncommunitymanagement.com",
|
||||
"condomanagements.com",
|
||||
"amphoa.com",
|
||||
"beaconcommunitymanagement.com",
|
||||
"cpihoa.com",
|
||||
"waterburyhoautah.org",
|
||||
"hoaservices.net",
|
||||
"stridamgmt.com",
|
||||
"okhoapartner.com",
|
||||
"hoaliving.com",
|
||||
"cmamanagement.com",
|
||||
"hmimgmt.com",
|
||||
"pmchoa.com",
|
||||
"hoalife.com",
|
||||
"msihoa.com",
|
||||
"hoamanagement.com",
|
||||
"iamhoa.com",
|
||||
"neighborhoodmanagement.com",
|
||||
"hignellhoa.com",
|
||||
"hoa.texas.gov",
|
||||
"hoaservicesok.com",
|
||||
"hawthornemgmt.com",
|
||||
"countrywayhoa.com",
|
||||
"certainmanagement.com",
|
||||
"ardsleymgmt.com",
|
||||
"bridlespurhomeowners.org",
|
||||
"nwchoa.org",
|
||||
"sacramentohoamanagement.com",
|
||||
"microhoa.com",
|
||||
"rbkc-hoa.org",
|
||||
"crest-management.com",
|
||||
"hoamanagementsanantonio.com",
|
||||
"miamimanagement.com",
|
||||
"manosmanagement.com",
|
||||
"corehoa.com",
|
||||
"amihoa.com",
|
||||
"austincommunitymanagement.com",
|
||||
"payhoa.com",
|
||||
"k3mgmt.com",
|
||||
"charlestonmanagement.com",
|
||||
"brownmanagement.com",
|
||||
"principal-mgmt.com",
|
||||
"aphoamgmt.com",
|
||||
"silverleafmanagement.com",
|
||||
"associationmanagement615.com",
|
||||
"marquishoa.com",
|
||||
"campbellpropertymanagement.com",
|
||||
"capmanagement.com",
|
||||
"jellybirdhoa.com",
|
||||
"lifetimehoamanagement.com",
|
||||
"heywoodmanagement.com",
|
||||
"properhoamanage.com",
|
||||
"sdhoa.com",
|
||||
"neworleanspropertymanagementinc.com",
|
||||
"advancehoa.com",
|
||||
"managementtrust.com",
|
||||
"bluemountaincommunity.com",
|
||||
"nashvillehoamanagement.com",
|
||||
"wakehoa.com",
|
||||
"hoamanagementcompanies.net",
|
||||
"vanguardmanagementgroup.com",
|
||||
"community.charlottenc.gov",
|
||||
"tamhoa.com",
|
||||
"empirehoa.com",
|
||||
"sbs.management",
|
||||
"southbayhoa.org",
|
||||
"hoa-usa.com",
|
||||
"missiontracehoa.org",
|
||||
"amshoa.com",
|
||||
"atlantacommunityservices.com",
|
||||
"edisonassociationmanagement.com",
|
||||
"indianapolispropertymanagementinc.net"
|
||||
],
|
||||
"leads": 108,
|
||||
"cycle": 245
|
||||
}
|
||||
574
agents/sales-prospector/state/prospector-v14-state.json
Normal file
574
agents/sales-prospector/state/prospector-v14-state.json
Normal file
@@ -0,0 +1,574 @@
|
||||
{
|
||||
"m": 49,
|
||||
"crm": [
|
||||
"community.charlottenc.gov",
|
||||
"collins-mgmt.com",
|
||||
"crestwoodhoa.org",
|
||||
"allinonemgmt.com",
|
||||
"rkyhoamanagement.com",
|
||||
"towsonmanorvillage.org",
|
||||
"villas-hoa.net",
|
||||
"camdenparkhoa.com",
|
||||
"amphoa.com",
|
||||
"ddsshoa.com",
|
||||
"amp-hoa.com",
|
||||
"txmgmt.com",
|
||||
"calassoc-hoa.com",
|
||||
"rbkc-hoa.org",
|
||||
"camcomgmt.com",
|
||||
"agavehoatucson.com",
|
||||
"beaconhoa.com",
|
||||
"carillonclubhoa.com",
|
||||
"communitymanagementgroup.com",
|
||||
"ascenthoa.com",
|
||||
"chandlercreekhoa.org",
|
||||
"southwindhoa.com",
|
||||
"vophoa.com",
|
||||
"quailcreekhoa.org",
|
||||
"coralgableshoa.com",
|
||||
"saddlecreekhoa.com",
|
||||
"mountainviewhoa.connectresident.com",
|
||||
"portalridgehoa.com",
|
||||
"waterbendhoa.com",
|
||||
"daviesplantationhoa.org",
|
||||
"lafronterahoa.com",
|
||||
"mmhoaservices.com",
|
||||
"loscerritoshoa.com",
|
||||
"cp-management.com",
|
||||
"alamomanagementgroup.com",
|
||||
"triohoa.com",
|
||||
"fsbhoa.com",
|
||||
"fvrhoa.com",
|
||||
"associationadvisorsco.com",
|
||||
"southernoakshomesassociation.com",
|
||||
"fvrhoa7.com",
|
||||
"cimarronwoodswest-hoa.org",
|
||||
"missiontracehoa.org",
|
||||
"sbbmanagement.com",
|
||||
"watersideatnorthlakehoa.com",
|
||||
"hoalb.com",
|
||||
"louisvillepropertymanagementinc.com",
|
||||
"sugarhillpropertymanagementinc.com",
|
||||
"jbcpropertymanagement.com",
|
||||
"condomanagement.com",
|
||||
"cheyennecrossinghoa.org",
|
||||
"crest-management.com",
|
||||
"dominionhoa.com",
|
||||
"rivercresthoaofbixby.com",
|
||||
"bjdpropertymanagement.com",
|
||||
"foundersparchoa.com",
|
||||
"thornhillhoaedmond.com",
|
||||
"melbournehoa.org",
|
||||
"chesapeakestationhoa.org",
|
||||
"bsfhoa.com",
|
||||
"associationdues.net",
|
||||
"safehousepropertymanagement.com",
|
||||
"breakawaymgmt.com",
|
||||
"myccshoa.org",
|
||||
"mckaysmillhoa.com",
|
||||
"3pmhoa.com",
|
||||
"atozhoa.com",
|
||||
"aphoamgmt.com",
|
||||
"thegalleryhoa.com",
|
||||
"sagemanagementnv.com",
|
||||
"lapraderahoa.com",
|
||||
"hoappm.com",
|
||||
"charlotteassociationmanagement.net",
|
||||
"pvswhoa.communitysite.com",
|
||||
"prorealtyusa.com",
|
||||
"mulloyproperties.com",
|
||||
"arlingtonlagovistahoa.com",
|
||||
"propertymanagement-sacramento.com",
|
||||
"se2hoa.org",
|
||||
"hoaservicesinc.com",
|
||||
"mybhhoa.com",
|
||||
"peakrealtyandmanagement.com",
|
||||
"parkestateshoa.com",
|
||||
"coronahoa.org",
|
||||
"monumentvillageoriginal.org",
|
||||
"condominiumassociates.com",
|
||||
"waltersmanagement.com",
|
||||
"winfield-hoa.com",
|
||||
"hoatn.com",
|
||||
"fontenellehillshoa.org",
|
||||
"lcn-hoa2.com",
|
||||
"myhillsboroughhoa.sites.townsq.io",
|
||||
"nv-hoa.com",
|
||||
"villageatwestbury.org",
|
||||
"northcliffehoa.org",
|
||||
"slpmhoa.com",
|
||||
"hoa-usa.com",
|
||||
"kansascity-propertymanagement.com",
|
||||
"sagehoaservices.com",
|
||||
"home.warrenmgmt.com",
|
||||
"home.riversidemgmt.com",
|
||||
"valleyvistaproperties.com",
|
||||
"homearchmgmt.com",
|
||||
"steeplechasemnhoa.com",
|
||||
"dawnhoa.com",
|
||||
"apsmanagement.com",
|
||||
"defalcorealty.com",
|
||||
"gocampmgmt.com",
|
||||
"delanotxhoa.com",
|
||||
"hiddenhillshoa.org",
|
||||
"cmamanagement.com",
|
||||
"hoa.directory",
|
||||
"ksmanagementservices.com",
|
||||
"grovewoodhomeowners.org",
|
||||
"dwm-mgmt.com",
|
||||
"sandiahomeowners.org",
|
||||
"omnihoa.com",
|
||||
"hoa-community.com",
|
||||
"summergatehoa.com",
|
||||
"yourhoamanagementteam.com",
|
||||
"cinnamoncreekhoa.com",
|
||||
"rainbowhoa.org",
|
||||
"communiquemgmt.com",
|
||||
"villagesofbrentwood.com",
|
||||
"seasonscourtassociation.com",
|
||||
"woodsidehoa.com",
|
||||
"condomanagements.com",
|
||||
"tysonproperties.com",
|
||||
"hoaliving.com",
|
||||
"kcvppropertymanagement.com",
|
||||
"haverstickhoa.com",
|
||||
"hoaunlimited.com",
|
||||
"bergmanagement.com",
|
||||
"craftsmanpropertymanagement.com",
|
||||
"sharpermanagement.com",
|
||||
"mpmcondo.com",
|
||||
"kentuckianapropertymanagement.com",
|
||||
"thewoodsrechoa.com",
|
||||
"northumberlandbrentwoodhoa.com",
|
||||
"farmingtonmeadowshoa.org",
|
||||
"acmhoa.com",
|
||||
"miamiassociationmanagement.com",
|
||||
"totalmanagementllc.com",
|
||||
"exclusiveassocmgmt.com",
|
||||
"sacramentoassociationmanagement.com",
|
||||
"brooklinehoa.com",
|
||||
"ranchosanjoaquinhoa.com",
|
||||
"kasaproperties.com",
|
||||
"mccormicksquarehoa.org",
|
||||
"marshlandinghoa.com",
|
||||
"alliedhoamgmt.com",
|
||||
"shilohpines.communitysite.com",
|
||||
"pinehursthoa.com",
|
||||
"heritageparkhoa.net",
|
||||
"performancemanagementomaha.com",
|
||||
"savilleindianhills.communitysite.com",
|
||||
"whoasl.com",
|
||||
"pmchoa.com",
|
||||
"1stchoice.managementone.com",
|
||||
"veritasmanagement.com",
|
||||
"brentridgecommunity.com",
|
||||
"edwardsmeadowshoa.org",
|
||||
"foresthillshoa.org",
|
||||
"kansascityassociationmanagement.com",
|
||||
"hawthornevalleyhoa.com",
|
||||
"beaconmanagementservices.com",
|
||||
"pofhoa.com",
|
||||
"forestlakeshoa.org",
|
||||
"tycoproperties.com",
|
||||
"nalhoa.com",
|
||||
"gtxhoa.org",
|
||||
"hoamanagementservices.net",
|
||||
"nottinghillhoa.org",
|
||||
"georgetownhoatx.com",
|
||||
"laurelwoodhoa.org",
|
||||
"winchesterparkhoa.org",
|
||||
"allbrightrealty.com",
|
||||
"villageofwaukesha.gov",
|
||||
"whoahouston.com",
|
||||
"signalhillhoa.com",
|
||||
"greenbridgeassociation.org",
|
||||
"pebblecreekhoa.net",
|
||||
"sdhoa.com",
|
||||
"secure.associationvoice.com",
|
||||
"clarity-hoa.com",
|
||||
"corpuschristipropertymanagementinc.com",
|
||||
"fairfieldproperties.com",
|
||||
"lansdowneplacehoa.com",
|
||||
"lakesidehoa.net",
|
||||
"trionmanagement.com",
|
||||
"5150communitymanagement.com",
|
||||
"longviewestateskyhoa.com",
|
||||
"strategichoa.com",
|
||||
"prairiehillshoa.org",
|
||||
"oaklandassociationmanagement.com",
|
||||
"nsmanagement.net",
|
||||
"castlerockhoanorman.com",
|
||||
"pinecreekhoanorman.com",
|
||||
"atlantacommunityservices.com",
|
||||
"homesideproperties.com",
|
||||
"brightstarhoa.com",
|
||||
"ranchovistosohoa.com",
|
||||
"plumtreehoa.com",
|
||||
"primehoawa.com",
|
||||
"ravencresthoa.org",
|
||||
"losangelesassociationmanagement.com",
|
||||
"northshorehoa8.com",
|
||||
"northviewcondos.com",
|
||||
"breitlingvillagehoa.com",
|
||||
"artisanlakeshoa.com",
|
||||
"sordiproperties.com",
|
||||
"warrenmgmt.com",
|
||||
"sterlingheightshoa.org",
|
||||
"bywoodcommunity.org",
|
||||
"propertieswithparagon.com",
|
||||
"regency-hoa.com",
|
||||
"valenciahoa.net",
|
||||
"ccwhhoa.com",
|
||||
"wells-hoa.com",
|
||||
"kingscrossinghoa.com",
|
||||
"westbluffhoa.com",
|
||||
"amihoa.com",
|
||||
"blackhawkhomeowners.org",
|
||||
"chestercountypropertymanagementintl.com",
|
||||
"naccchoa.org",
|
||||
"thegrandmontcommunity.org",
|
||||
"swwhoa.com",
|
||||
"betterhoa.com",
|
||||
"memphispropertymanagementpro.com",
|
||||
"stonehousehoa.org",
|
||||
"shwmanagement.com",
|
||||
"parkwayhoa.connectresident.com",
|
||||
"resourcepropertymgmt.com",
|
||||
"deerpathhoa.com",
|
||||
"816propertymanagement.com",
|
||||
"hoaorganizers.com",
|
||||
"sunsetridgeestateshoa.com",
|
||||
"optimummanagementky.com",
|
||||
"baymgmtgroup.com",
|
||||
"anthologywesthoa.com",
|
||||
"woodlandshomeowners.org",
|
||||
"mce-hoa.com",
|
||||
"harlowhoa.com",
|
||||
"falconridgehoa.net",
|
||||
"houstonhoa.net",
|
||||
"creekwoodhoa.com",
|
||||
"woodlandparkhoa.com",
|
||||
"lakewoodshorescommunity.org",
|
||||
"bbamanagement.com",
|
||||
"highcountryhoa.net",
|
||||
"associationmanagement615.com",
|
||||
"californiacondomanagement.com",
|
||||
"remingtonestateshoa.com",
|
||||
"eastlandhillshoaloslunas.com",
|
||||
"associationone.com",
|
||||
"trailsidehoa.net",
|
||||
"properhoamanage.com",
|
||||
"maderacommunity.org",
|
||||
"mail.florida-hoa.com",
|
||||
"embmanagement.com",
|
||||
"riverstonehomeownersassociation.eunify.net",
|
||||
"columbiaassociation.org",
|
||||
"hillelrealtygroup.com",
|
||||
"myridgewoodhoa.org",
|
||||
"brentwoodvillacondos.com",
|
||||
"applevalleyhoa.com",
|
||||
"gvrhoa.com",
|
||||
"transparencyhoa.org",
|
||||
"summerlake-hoa.org",
|
||||
"bluehawkmgmt.net",
|
||||
"citiesmanagement.com",
|
||||
"brentwoodbrownsburghoa.org",
|
||||
"areapropertymgmt.com",
|
||||
"rosedalemasterhoa.com",
|
||||
"trestlemanagement.com",
|
||||
"ryersshunthoa.com",
|
||||
"nacmhoa.org",
|
||||
"heritagehoa.sites.townsq.io",
|
||||
"cpvamanagement.com",
|
||||
"elitehoa.com",
|
||||
"yorkproperties.com",
|
||||
"arizona-homeowners-associations.com",
|
||||
"primehoamanagement.com",
|
||||
"chesapeakevillage.org",
|
||||
"lgrealtygroup.com",
|
||||
"ardsleymgmt.com",
|
||||
"greenriverhoa.com",
|
||||
"lakewoodassociation.org",
|
||||
"chapelhillkchoa.com",
|
||||
"sweetbriarhomeowners.com",
|
||||
"tulsalegendshoa.org",
|
||||
"hoacomm.com",
|
||||
"sacramentohoamanagement.com",
|
||||
"firstcoastassociationmanagement.com",
|
||||
"williamsburgvillage.net",
|
||||
"wssmhoa.org",
|
||||
"cypressassociationmanagement.com",
|
||||
"jmzmanagement.com",
|
||||
"greencountryhoa.com",
|
||||
"southernpointehoa.com",
|
||||
"hoafoxvalley.org",
|
||||
"guilfordassociation.org",
|
||||
"burlingtoncapitalproperties.com",
|
||||
"hoacommunitysolutions.com",
|
||||
"ontrackhoa.com",
|
||||
"awlhoa.com",
|
||||
"hoacity.com",
|
||||
"lakewoodhillshoa.com",
|
||||
"turtlecreekhoava.com",
|
||||
"hoaweb.org",
|
||||
"hoaservicesco.com",
|
||||
"denvermetrocommunitymanagement.com",
|
||||
"obrienassociationmgt.com",
|
||||
"lavistacondoassociation.com",
|
||||
"hillcrestmgmt.com",
|
||||
"camsmgmtinc.com",
|
||||
"hoamco.com",
|
||||
"realtyworld.com",
|
||||
"cibolocanyonsresorthoa.com",
|
||||
"longbeachpropertymgmt.com",
|
||||
"elitemanagement.com",
|
||||
"cresscreekhoa.com",
|
||||
"westhollywoodhoa.com",
|
||||
"invernesshoa.org",
|
||||
"qrnhoa.com",
|
||||
"camdenpointehoa.com",
|
||||
"rwhoa-jax.org",
|
||||
"makmanagementllc.com",
|
||||
"dallasfortworthassociationmanagement.com",
|
||||
"hoa-oc.com",
|
||||
"weybridgehoa.com",
|
||||
"eaglecrestpapillion.hoaspace.com",
|
||||
"fountaincondohoa.com",
|
||||
"silverleafmanagement.com",
|
||||
"keyboxproperties.com",
|
||||
"cmc-management.com",
|
||||
"cambridgehoa.net",
|
||||
"aquitymanagementgroup.com",
|
||||
"amemanagement.net",
|
||||
"communitymanagers.net",
|
||||
"dpshoa.org",
|
||||
"harborshoa.com",
|
||||
"wimanagement.com",
|
||||
"grahammanagementhouston.com",
|
||||
"emeraldheightshoa.com",
|
||||
"rentalmgmt.com",
|
||||
"california-hoa.com",
|
||||
"hoalnet.com",
|
||||
"libertypropertymanagement.com",
|
||||
"gilcreasehillshoa.com",
|
||||
"sangercirclehoa.com",
|
||||
"thesanmarcosassociation.org",
|
||||
"escondidohoa.com",
|
||||
"nashvillehoamanagement.com",
|
||||
"phillylivingmanagement.com",
|
||||
"shewmanagement.com",
|
||||
"chulavistahoa.org",
|
||||
"wwhoa.org",
|
||||
"campbellpropertymanagement.com",
|
||||
"salvatierrahoa.org",
|
||||
"brantinghamproperties.com",
|
||||
"thelasbrisasassociation.com",
|
||||
"prestigemanagement.biz",
|
||||
"phoenixassociationmanagement.com",
|
||||
"hoaadvisorsok.com",
|
||||
"bedfordpropertymanagementinc.com",
|
||||
"advancehoa.com",
|
||||
"condocontrol.com",
|
||||
"payhoa.com",
|
||||
"k3mgmt.com",
|
||||
"hancockparkhomeownersassociation.org",
|
||||
"northtexashoa.com",
|
||||
"eaglelandinghoa.com",
|
||||
"pmvhoa.info",
|
||||
"evergreen-hoa.org",
|
||||
"getfaithrealty.com",
|
||||
"residential.trtmanagement.com",
|
||||
"indianapolispropertymanagementinc.net",
|
||||
"cmhoainc.com",
|
||||
"normandyshoreshoa.org",
|
||||
"pencomanagement.com",
|
||||
"homesteadhoa.org",
|
||||
"cedarmanagementgroup.com",
|
||||
"hoa-information.com",
|
||||
"hoa-resource.com",
|
||||
"freedomcommunitymanagement.com",
|
||||
"fourseasonshoa.org",
|
||||
"lakewoodarlingtonhoa.com",
|
||||
"muirfieldassociation.com",
|
||||
"seabreezemgmt.com",
|
||||
"memphispropertymanagement.com",
|
||||
"azcommunityfirst.com",
|
||||
"villasofgahanna.communitysite.com",
|
||||
"california-homeowners-associations.com",
|
||||
"hoamanagement.com",
|
||||
"hoamanagementsolutions.com",
|
||||
"allpropertymanagement.com",
|
||||
"okhoapartner.com",
|
||||
"ranchosantoshoa.com",
|
||||
"hoasmanagement.com",
|
||||
"pontevedrabythesea.communitysite.com",
|
||||
"wisepropertymanagement.com",
|
||||
"gnhoa.com",
|
||||
"castleberryedmondhoa.com",
|
||||
"myhoa.com",
|
||||
"ironworksestateshomeownersassociation.com",
|
||||
"gardens-hoa.com",
|
||||
"newyorkassociationmanagement.com",
|
||||
"matchhoa.com",
|
||||
"unitedhoa.com",
|
||||
"westwindmanagement.com",
|
||||
"adamsrunhoa.com",
|
||||
"tacoma-propertymanagementinc.com",
|
||||
"hiddenpointhoa.com",
|
||||
"concordcrossinghoa.com",
|
||||
"maderahomeownersassn.org",
|
||||
"southernvillage.org",
|
||||
"nashvilleassociationmanagement.com",
|
||||
"eastlandhillshoa.com",
|
||||
"communitygroup.com",
|
||||
"laurelgrovehoa.net",
|
||||
"southoakcommunity.com",
|
||||
"capmanagement.com",
|
||||
"thefountainshoa.org",
|
||||
"sphoaok.com",
|
||||
"hoasonoma.com",
|
||||
"rpmanagement.com",
|
||||
"reesemanagement.com",
|
||||
"cooleystationhoa.com",
|
||||
"the-landing-hoa-georgetown-ky.org",
|
||||
"glenbrook-homeowners-association.com",
|
||||
"ave1properties.com",
|
||||
"westsidehoa.org",
|
||||
"compassmanagement.com",
|
||||
"canterbury-hoa.com",
|
||||
"assemblyhoa.com",
|
||||
"acondomgt.com",
|
||||
"greatertulsarealty.com",
|
||||
"hoamanagepro.com",
|
||||
"hoa.texas.gov",
|
||||
"associations-and-neighborhood-maps.tucsonaz.gov",
|
||||
"winchestercommunityassociation.com",
|
||||
"gudhoa.com",
|
||||
"missionmanagement.biz",
|
||||
"charlotteassociationmanagementinc.com",
|
||||
"neighborhoodmanagement.com",
|
||||
"viewterracehoa.org",
|
||||
"bcchoa.net",
|
||||
"sbs.management",
|
||||
"southernreservehoa.com",
|
||||
"stewardhoa.com",
|
||||
"heywoodmanagement.com",
|
||||
"goldenhillshoabellevue.com",
|
||||
"homeownersassociationdirectory.com",
|
||||
"lakeviewvillagehoa.org",
|
||||
"battlefieldestateshoa.com",
|
||||
"santaclaraassociationmanagement.com",
|
||||
"lasvegashoa.com",
|
||||
"rp-management.com",
|
||||
"foxhollowhomeowners.org",
|
||||
"cherryblossomhoa.org",
|
||||
"lifetimehoamanagement.com",
|
||||
"managementtrust.com",
|
||||
"parkvillage.org",
|
||||
"ezrmanagement.com",
|
||||
"ridgeshoa.com",
|
||||
"mail.texas-homeowners-associations.com",
|
||||
"hoasimplified.com",
|
||||
"miamimanagement.com",
|
||||
"npmassociation.com",
|
||||
"jamestownvillage.org",
|
||||
"dwoodspropertymanagement.com",
|
||||
"hawthornemgmt.com",
|
||||
"tlbhoa.org",
|
||||
"paradisepineshoa.com",
|
||||
"delanohoa.com",
|
||||
"vvhoa.org",
|
||||
"hoamanagementcompanies.net",
|
||||
"katzakianpropertymanagement.com",
|
||||
"windrowestateshoa.com",
|
||||
"hiddenmeadowsranchhoa.com",
|
||||
"stridamgmt.com",
|
||||
"americaneagleproperties.realestate",
|
||||
"propertymanagementincoloradosprings.com",
|
||||
"woodlandshomeownersassociation.com",
|
||||
"deerpathhoa.org",
|
||||
"texas-homeowners-associations.com",
|
||||
"overlandparkhoa.com",
|
||||
"trtmanagement.com",
|
||||
"hoacny.com",
|
||||
"superiorhoamanagement.com",
|
||||
"woodlandreservehoa.org",
|
||||
"southernheightsrealty.com",
|
||||
"hoasouthernpointe.com",
|
||||
"worldpropertymgmt.com",
|
||||
"ercahoa.com",
|
||||
"crystalplacehoa.org",
|
||||
"rockcreekhoa.org",
|
||||
"utopiamanagement.com",
|
||||
"camdenplacehoa.com",
|
||||
"veraciousmgmt.org",
|
||||
"timbershoa.com",
|
||||
"arizona-hoa.com",
|
||||
"residentialpropertymgmt.com",
|
||||
"camdenplacehoa.org",
|
||||
"communityfirstpm.com",
|
||||
"saundershoa.com",
|
||||
"barkleymeadowshoa.org",
|
||||
"myhoacompany.com",
|
||||
"rrrhoa.org",
|
||||
"sacmgmt.net",
|
||||
"prorealtymanagement.com",
|
||||
"highlandmgmtco.com",
|
||||
"cpihoa.com",
|
||||
"charlestonmanagement.com",
|
||||
"riverglenhoa.com",
|
||||
"hoamanagementsanantonio.com",
|
||||
"southridgehoa.fswp2.net",
|
||||
"foxcreekhoa.com",
|
||||
"scottsdalehoa.com",
|
||||
"oakridgehoa.com",
|
||||
"boerumhillassociation.org",
|
||||
"riversidehoa.org",
|
||||
"goodmanagement-cam.com",
|
||||
"hoaproperties.com",
|
||||
"hoaservices.net",
|
||||
"greenrunhoa.org",
|
||||
"maderamanagement.com",
|
||||
"homelandassociation.org",
|
||||
"empirehoa.com",
|
||||
"haloproperties.com",
|
||||
"mountainviewhoa.org",
|
||||
"hoamanagementoakland.com",
|
||||
"columbusassociationmanagement.com",
|
||||
"dossantoshoa.com",
|
||||
"persimmonridgehoa.org",
|
||||
"columbinehoa.org",
|
||||
"bostoncondominiummanagement.com",
|
||||
"annapolisassociationmanagement.com",
|
||||
"ontimemgmt.com",
|
||||
"jellybirdhoa.com",
|
||||
"tulsapropertymanagementinc.com",
|
||||
"firstmgmt.com",
|
||||
"tx-hoa.net",
|
||||
"hiddentrailshoa.com",
|
||||
"links3hoa.com",
|
||||
"communityassociationmanagement.com",
|
||||
"lifetimehoa.com",
|
||||
"huntmanagement.com",
|
||||
"msihoa.com",
|
||||
"fredericksburghoa.com",
|
||||
"brownmanagement.com",
|
||||
"smyrnapropertymanagementinc.com",
|
||||
"hpsmanagement.com",
|
||||
"blockrealty.com",
|
||||
"hoamgmt.com",
|
||||
"accordhoa.com",
|
||||
"fenwickcommunity.org",
|
||||
"cmshoamanagement.com",
|
||||
"morrismanagement.com",
|
||||
"oaktreepropertymgmt.com",
|
||||
"coloradospringsproperty.management",
|
||||
"eimproperties.com",
|
||||
"vanguardmanagementgroup.com",
|
||||
"encorebonitahoa.com",
|
||||
"woodburyhoa.org",
|
||||
"oakmonthomeowners.org"
|
||||
],
|
||||
"leads": 567,
|
||||
"cycle": 3857
|
||||
}
|
||||
1
agents/sales-prospector/state/prospector-v4-state.json
Normal file
1
agents/sales-prospector/state/prospector-v4-state.json
Normal file
@@ -0,0 +1 @@
|
||||
{"metro_index": 0, "processed_domains": [], "leads_found": 0}
|
||||
35
agents/sales-prospector/state/prospector-v5-state.json
Normal file
35
agents/sales-prospector/state/prospector-v5-state.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"metro_idx": 4,
|
||||
"domains": [
|
||||
"communityassociationmanagement.com",
|
||||
"community.charlottenc.gov",
|
||||
"microhoa.com",
|
||||
"amshoa.com",
|
||||
"hoa-usa.com",
|
||||
"atlantacommunityservices.com",
|
||||
"hoamanagement.com",
|
||||
"hoaservicesinc.com",
|
||||
"beaconcommunitymanagement.com",
|
||||
"southbayhoa.org",
|
||||
"empirehoa.com",
|
||||
"somersetassociations.com",
|
||||
"lifetimehoamanagement.com",
|
||||
"onioncreekhoa.org",
|
||||
"advancehoa.com",
|
||||
"cmshoamanagement.com",
|
||||
"3pmhoa.com",
|
||||
"amphoa.com",
|
||||
"nashvillehoamanagement.com",
|
||||
"wakehoa.com",
|
||||
"tampahoa.management",
|
||||
"myoakcreekcommunity.net",
|
||||
"mail.florida-hoa.com",
|
||||
"communitytampabay.org",
|
||||
"houstonhoa.net",
|
||||
"condoblackbook.com",
|
||||
"marquishoa.com",
|
||||
"properhoamanage.com"
|
||||
],
|
||||
"leads": 12,
|
||||
"cycle": 544
|
||||
}
|
||||
36
agents/sales-prospector/state/prospector-v6-state.json
Normal file
36
agents/sales-prospector/state/prospector-v6-state.json
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"metro_idx": 5,
|
||||
"domains": [
|
||||
"communityassociationmanagement.com",
|
||||
"community.charlottenc.gov",
|
||||
"amshoa.com",
|
||||
"microhoa.com",
|
||||
"hoa-usa.com",
|
||||
"atlantacommunityservices.com",
|
||||
"hoamanagement.com",
|
||||
"hoaservicesinc.com",
|
||||
"beaconcommunitymanagement.com",
|
||||
"mail.florida-hoa.com",
|
||||
"southbayhoa.org",
|
||||
"empirehoa.com",
|
||||
"myazhoa.com",
|
||||
"somersetassociations.com",
|
||||
"lifetimehoamanagement.com",
|
||||
"onioncreekhoa.org",
|
||||
"advancehoa.com",
|
||||
"cmshoamanagement.com",
|
||||
"3pmhoa.com",
|
||||
"amphoa.com",
|
||||
"nashvillehoamanagement.com",
|
||||
"wakehoa.com",
|
||||
"tampahoa.management",
|
||||
"myoakcreekcommunity.net",
|
||||
"neighborhoodmanagement.com",
|
||||
"properhoamanage.com",
|
||||
"houstonhoa.net",
|
||||
"condoblackbook.com",
|
||||
"marquishoa.com"
|
||||
],
|
||||
"leads": 5,
|
||||
"cycle": 17
|
||||
}
|
||||
15
agents/sales-prospector/state/prospector-v7-state.json
Normal file
15
agents/sales-prospector/state/prospector-v7-state.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"metro_idx": 2,
|
||||
"domains": [
|
||||
"communityassociationmanagement.com",
|
||||
"community.charlottenc.gov",
|
||||
"microhoa.com",
|
||||
"amshoa.com",
|
||||
"hoa-usa.com",
|
||||
"atlantacommunityservices.com",
|
||||
"hoamanagement.com",
|
||||
"hoaservicesinc.com"
|
||||
],
|
||||
"leads": 0,
|
||||
"cycle": 2
|
||||
}
|
||||
112
agents/sales-prospector/state/prospector-v8-state.json
Normal file
112
agents/sales-prospector/state/prospector-v8-state.json
Normal file
@@ -0,0 +1,112 @@
|
||||
{
|
||||
"metro_idx": 3,
|
||||
"domains": [
|
||||
"goodwin-co.com",
|
||||
"capmanagement.com",
|
||||
"cmsorlando.com",
|
||||
"accuinc.com",
|
||||
"causeiq.com",
|
||||
"services.austintexas.gov",
|
||||
"miamimanagement.com",
|
||||
"hms-inc.net",
|
||||
"cmacommunities.com",
|
||||
"hoa-usa.com",
|
||||
"ave1properties.com",
|
||||
"sbbmanagement.com",
|
||||
"ncpha.org",
|
||||
"advancehoa.com",
|
||||
"grandchestermeadows.com",
|
||||
"vestapropertyservices.com",
|
||||
"steadily.com",
|
||||
"houcomm.com",
|
||||
"managementtrust.com",
|
||||
"cpihoa.com",
|
||||
"kppmdenver.com",
|
||||
"3pmhoa.com",
|
||||
"vanguardmanagementgroup.com",
|
||||
"associaflorida.com",
|
||||
"homesideproperties.com",
|
||||
"condocontrol.com",
|
||||
"livingintown.com",
|
||||
"rentcharlotteproperty.com",
|
||||
"lmams.net",
|
||||
"brownmanagement.com",
|
||||
"miamidade.gov",
|
||||
"avalonparkorlando.com",
|
||||
"austintexas.gov",
|
||||
"lifetimehoamanagement.com",
|
||||
"hoadv.com",
|
||||
"hoamanagement.com",
|
||||
"casnc.com",
|
||||
"wakehoa.com",
|
||||
"hrw.net",
|
||||
"knowatlanta.com",
|
||||
"houstonhoa.net",
|
||||
"k3mgmt.com",
|
||||
"allinonemgmt.com",
|
||||
"thantampa.com",
|
||||
"houstonproperties.com",
|
||||
"atlantacommunityservices.com",
|
||||
"dallascityhall.com",
|
||||
"facebook.com",
|
||||
"cmrdenver.com",
|
||||
"spectrumam.com",
|
||||
"amshoa.com",
|
||||
"southbayhoa.org",
|
||||
"sentrymgt.com",
|
||||
"hmimgmt.com",
|
||||
"mytpnoa.com",
|
||||
"sregtn.com",
|
||||
"cmshoamanagement.com",
|
||||
"ghertner.com",
|
||||
"ciaservices.com",
|
||||
"yelp.com",
|
||||
"northmiamifl.gov",
|
||||
"hoaservicesinc.com",
|
||||
"communityassociationmanagement.com",
|
||||
"hoa.texas.gov",
|
||||
"beaconcommunitymanagement.com",
|
||||
"myfpms.com",
|
||||
"grahammanagementhouston.com",
|
||||
"associacolorado.com",
|
||||
"properhoamanage.com",
|
||||
"amphoa.com",
|
||||
"prestonwood.net",
|
||||
"riseamg.com",
|
||||
"pmghouston.com",
|
||||
"rowcal.com",
|
||||
"hawthornemgmt.com",
|
||||
"cedarmanagementgroup.com",
|
||||
"cityproperty.com",
|
||||
"empirehoa.com",
|
||||
"miamibeachfl.gov",
|
||||
"pmtaustin.com",
|
||||
"terramanagers.com",
|
||||
"realmanage.com",
|
||||
"onioncreekhoa.org",
|
||||
"krjcares.com",
|
||||
"microhoa.com",
|
||||
"associaarizona.com",
|
||||
"vinteum.io",
|
||||
"gowithredrock.com",
|
||||
"ipmsmiami.com",
|
||||
"beaconmanagementservices.com",
|
||||
"blueridge-management.com",
|
||||
"wmdouglas.com",
|
||||
"wisepropertymanagement.com",
|
||||
"charlestonmanagement.com",
|
||||
"miami.gov",
|
||||
"npsphx.com",
|
||||
"charlotte-cpa.com",
|
||||
"nashvillehoamanagement.com",
|
||||
"mattwardhomes.com",
|
||||
"wrmcinc.com",
|
||||
"dre.colorado.gov",
|
||||
"heywoodmanagement.com",
|
||||
"psprop.net",
|
||||
"neighborhoodmanagement.com",
|
||||
"myardent.com"
|
||||
],
|
||||
"leads": 24,
|
||||
"cycle": 1095
|
||||
}
|
||||
7
agents/sales-prospector/state/prospector-v9-state.json
Normal file
7
agents/sales-prospector/state/prospector-v9-state.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"metro_idx": 7,
|
||||
"crm": [],
|
||||
"checked": [],
|
||||
"leads": 0,
|
||||
"cycle": 22
|
||||
}
|
||||
38
agents/sales-prospector/status.sh
Executable file
38
agents/sales-prospector/status.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
# Sales Prospector Status Check
|
||||
|
||||
echo "=== SALES PROSPECTOR STATUS ==="
|
||||
echo "Checked: $(date)"
|
||||
echo ""
|
||||
|
||||
# Check if running
|
||||
if pgrep -f "sales-prospector/prospector.sh" > /dev/null; then
|
||||
echo "✅ Status: RUNNING"
|
||||
echo "PID: $(pgrep -f "sales-prospector/prospector.sh")"
|
||||
else
|
||||
echo "❌ Status: NOT RUNNING"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# Show current state
|
||||
echo "Current State:"
|
||||
cat "/Users/claw/.openclaw/workspace/agents/sales-prospector/state/prospector-state.json" | jq .
|
||||
|
||||
echo ""
|
||||
|
||||
# Show today's log summary
|
||||
echo "Today's Activity:"
|
||||
LOG="/Users/claw/.openclaw/workspace/agents/sales-prospector/logs/prospector-$(date +%Y%m%d).log"
|
||||
if [[ -f "$LOG" ]]; then
|
||||
echo "Current Metro: $(grep "Metro:" "$LOG" | tail -1 | sed 's/.*Metro: //')"
|
||||
echo "Total Starts: $(grep -c "=== Sales Prospector Started ===" "$LOG")"
|
||||
echo "Leads Found: $(grep -c "Pushed:" "$LOG")"
|
||||
echo "Last 5 activity lines:"
|
||||
tail -5 "$LOG"
|
||||
else
|
||||
echo "No log file yet"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== End Status ==="
|
||||
Reference in New Issue
Block a user