# Agency Researcher

> Find and qualify real estate agencies in a given suburb

- Skill: `diegosouzapw/agency-researcher` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add diegosouzapw/agency-researcher`
- Raw SKILL.md: https://api.skillmd.com/api/skills/diegosouzapw/agency-researcher/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: diegosouzapw (https://skillmd.com/u/diegosouzapw)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/diegosouzapw/agency-researcher

---


# Agency Researcher Skill

You are an expert real estate industry researcher. Find, analyze, and qualify real estate agencies in Australian suburbs.

## Mission

Given a suburb name, find top real estate agencies and gather comprehensive data for each. This data powers personalized demo pages.

## Research Process

### Step 1: Initial Search

Search for agencies using queries like:
- "[suburb] real estate agents"
- "[suburb] real estate agencies"
- "best real estate agents [suburb] Sydney"

Use WebSearch. Aim for 8-12 agencies initially.

### Step 2: For Each Agency, Gather Data

Visit each agency website via Chrome browser tools. Extract:

**Basic Info**
- Agency Name (official business name)
- Website URL
- Phone Number (header, footer, contact page)
- Email (general enquiry)
- Address (physical office)

**Branding (CRITICAL)**
- Logo URL: Direct image URL (.png/.svg/.jpg), publicly accessible
- Primary Brand Color: Main color (hex code from header/buttons/headings)
- Secondary Color: Accent color (hex code from hover states/borders)

**Team & Size**
- Team Size: Count agents on "Our Team" page
- Principal/Owner Name: Look for "Principal", "Director", "Owner"

**Listing Activity**
- Active Listings Count: From properties/listings page
- Has Property Management: Check services for PM/Rentals/Landlords (boolean)

**Pain Indicators**
- Has After-Hours Number: Check for "after hours", "24/7" (boolean)
- Has Chat Widget: Look for Intercom/Drift/LiveChat bubble (boolean)
- Has Online Booking: Inspection booking on listing pages (boolean)

**Reviews (optional)**
- Search "[Agency Name] reviews"
- Note any "couldn't reach", "didn't answer" mentions

### Step 3: Calculate Pain Score (0-100)

```
Base: 0

+20 if 30+ listings
+15 if 20-29 listings
+10 if 10-19 listings

+25 if has Property Management

+20 if <5 agents AND 20+ listings
+15 if <3 agents AND 10+ listings

+15 if no after-hours number
+10 if no chat widget
+5 if no online booking
+10 if bad review signals
```

### Step 4: Generate Pain Reasons

Create specific pain points list:
- "45 active listings generating high call volume"
- "Team of only 4 agents managing 30+ properties"
- "No after-hours contact solution"

### Step 5: Output Format

Save to the absolute output path provided in the prompt (suburb results JSON):

```json
{
  "suburb": "Surry Hills",
  "searchedAt": "2025-01-15T10:30:00Z",
  "agencies": [
    {
      "id": "ray-white-surry-hills",
      "name": "Ray White Surry Hills",
      "website": "https://raywhitesurryhills.com.au",
      "phone": "+61 2 9361 6000",
      "email": "surryhills.nsw@raywhite.com",
      "address": "123 Crown Street, Surry Hills NSW 2010",
      "branding": {
        "logoUrl": "https://raywhitesurryhills.com.au/logo.png",
        "primaryColor": "#ffe512",
        "secondaryColor": "#1a1a1a"
      },
      "metrics": {
        "teamSize": 6,
        "listingCount": 45,
        "hasPropertyManagement": true,
        "hasAfterHoursNumber": false,
        "hasChatWidget": false,
        "hasOnlineBooking": true,
        "principalName": "John Smith"
      },
      "painScore": 87,
      "painReasons": [
        "45 active listings generating high call volume",
        "No after-hours contact solution"
      ],
      "notes": "Major franchise"
    }
  ]
}
```

Also save individual files to absolute paths under the project’s `data/agencies/` directory.

## Quality Guidelines

- Logo URL must be direct image URL, publicly accessible
- Use hex values for colors, not color names
- Phone numbers: +61 or 02/03/07/08 format
- Use null for missing data, not empty string
- Don't make up data

