buyer-prospector
Build a real estate buyers list for any US county by pulling from a nationwide database of active buyers, categorizing entities (LLCs, Trusts, Corporations), and researching decision-makers for skip t
SKILL.md.claude/skills/buyer-prospector/SKILL.md
GitHubBuyer Prospector
Pull active real estate buyer data for any US county from a nationwide database of 84,000+ buyer records across 1,471 counties. The skill filters buyers by the user's target county, categorizes entities, and walks through a structured research workflow to identify the actual decision-makers behind LLCs, trusts, and corporations — turning raw transaction data into a skip-traceable buyers list.
When to Use
- User wants to find active buyers in a specific county/state
- Building a buyers list for a new market
- Need to identify who's buying properties in an area
- Prospecting cash buyers for wholesaling deals
- Researching investor activity in a target county
What the User Needs to Provide
At minimum, the user needs to tell you:
- County name (e.g., "Knox", "Harris", "Maricopa")
- State (e.g., "TN", "TX", "AZ")
Optional preferences:
- Minimum purchase threshold (default: 2 purchases in 6 months)
- How many records to research (batch size)
- Whether they want the full research workflow or just the analysis
Workflow Overview
1. Filter nationwide data for the target county
2. Run entity analysis (categorize + prioritize)
3. Review results with user
4. Research decision-makers for High priority entities
5. Update the Excel workbook with findings
6. Deliver completed buyer analysis
Step 1: Filter and Analyze
Run the analysis script on the bundled nationwide dataset. The script path is relative to this skill's directory:
python <skill-path>/scripts/analyze_buyers.py <skill-path>/data/nationwide_buyers.csv \
--county "<county_name>" \
--state "<state_abbrev>" \
--output "<output_path>"
Example:
python <skill-path>/scripts/analyze_buyers.py <skill-path>/data/nationwide_buyers.csv \
--county "Knox" \
--state "TN" \
--output "Knox_TN_Buyer_Analysis.xlsx"
The --min-purchases flag defaults to 2. If the user wants a broader or narrower list, adjust accordingly.
Save the output Excel file to the user's workspace so they can access it.
What the Script Produces
A multi-tab Excel workbook (<County>_<State>_Buyer_Analysis.xlsx) with these columns:
| Column | Description |
|---|---|
| ResearchPriority | High (entity needs research) or Low (individual, skip trace directly) |
| BuyerPurchases6MSum | Number of purchases in last 6 months — the activity indicator |
| County Name / County State | Where this buyer has been purchasing |
| BuyerFullName | Entity or individual name |
| EntityType | LLC, TRUST, CORPORATION, ESTATE, INDIVIDUAL, etc. |
| DecisionMaker_FullName | Full name of decision-maker (fill during research) |
| DecisionMaker_FirstName | First name (for skip tracing upload) |
| DecisionMaker_LastName | Last name (for skip tracing upload) |
| DecisionMaker_Role | Member, Trustee, Officer, etc. |
| Verification_Source | Where the information was found |
| BuyerAddress/City/State/ZIP | Buyer's registered address |
| BuyerMailingAddress/City/State/ZIP | Duplicated for Sift upload compatibility |
Output Tabs
| Tab | Contents |
|---|---|
| All Records | Complete filtered dataset |
| Found | Records where decision-makers were identified |
| Not Found | Records needing research |
After the script runs, report the results to the user:
- Total buyer count for the county
- Entity type breakdown (how many LLCs, Trusts, Individuals, etc.)
- Research priority split (High vs Low)
- Top 10 most active buyers
- Ask how many records they want to research
Step 2: Research Decision-Makers
This is where the real value is. For each High priority entity, research the actual person behind the entity so the user can skip trace and contact them.
Research Priority by Entity Type
| Entity Type | Research Required | What to Find |
|---|---|---|
| LLC | Yes | Registered Agent, Members, or Managers |
| TRUST | Yes | Trustee (often in trust name or deed) |
| CORPORATION | Yes | Officers, Directors, or Registered Agent |
| ESTATE | Yes | Executor or Personal Representative |
| LIMITED PARTNERSHIP | Yes | General Partner |
| OTHER ENTITY | Yes | Principal or Registered Agent |
| INDIVIDUAL | No | Can skip trace directly using name |
| GOVERNMENT/AGENCY | No | Not a target for buyers list |
Research Methods
For detailed research instructions by entity type (including Secretary of State URLs for all 50 states), read references/research_guide.md. Here's the quick version:
LLCs / Corporations:
- Identify the formation state from
BuyerState - Go to that state's Secretary of State business search (URLs in research guide)
- Search the exact entity name
- Extract: Registered Agent, Members/Managers/Officers, Principal address
- If SOS doesn't reveal members, try secondary sources
Secondary Research Sources (use when SOS alone isn't enough):
- Bizapedia — aggregates SOS data, sometimes has more detail
- LinkedIn — search entity name to find principals
- Company websites — check About/Team pages
- Dun & Bradstreet / Buzzfile — business directory listings
- Public property records — deed signers reveal decision-makers
- CorporationWiki — maps relationships between entities and people
- News articles — local press often names principals of active investors
- LEI lookups — for larger entities with Legal Entity Identifiers
- BBB Business Profiles — often list the principal/owner
Trusts:
- Check if the trust name reveals the trustee (e.g., "SMITH FAMILY TRUST" → Smith)
- For revocable living trusts, the grantor IS the trustee — extract from the name
- If unclear, check county deed records where the trust purchased property
- The mailing address may also help identify the trustee
Estates:
- Search probate court records in the relevant county
- Look for the Executor or Personal Representative
Important: The script auto-populates INDIVIDUAL records (sets DecisionMaker fields = BuyerFullName and marks them "Individual (Skip Trace Directly)"). These don't need research — they go straight to the Found tab.
Batch Processing
For large result sets, process in manageable batches:
- 10-20 records: Good starting batch, lets the user see the process
- 50 records: Balanced approach for experienced users
- All High priority: If the user wants everything done
Pause after each batch to report progress and confirm continuation.
Step 3: Document Findings
As you research each entity, fill in all decision-maker columns. This is critical for skip tracing compatibility — the name needs to be properly parsed.
Successful Research Example:
BuyerFullName: GDP PROPERTIES LLC
EntityType: LLC
→ DecisionMaker_FullName: John Smith
→ DecisionMaker_FirstName: John
→ DecisionMaker_LastName: Smith
→ DecisionMaker_Role: Registered Agent / Member
→ Verification_Source: TN SOS - Control #000123456
Trust Name Analysis Example:
BuyerFullName: BENNETT REVOCABLE LIVING TRUST
EntityType: TRUST
→ DecisionMaker_FullName: [First Name] Bennett
→ DecisionMaker_FirstName: [First Name]
→ DecisionMaker_LastName: Bennett
→ DecisionMaker_Role: Trustee
→ Verification_Source: Trust naming convention (revocable living trust)
Unsuccessful Research Example:
BuyerFullName: ANONYMOUS HOLDINGS LLC
EntityType: LLC
→ DecisionMaker_FullName: Not Found
→ DecisionMaker_FirstName: Not Found
→ DecisionMaker_LastName: Not Found
→ DecisionMaker_Role: Not Found
→ Verification_Source: WY SOS - Anonymous LLC, registered agent is commercial service
Standardized Convention
Always use "Not Found" (exactly) when research is unsuccessful. This enables clean filtering in the Excel output.
Name Parsing
| Full Name | First Name | Last Name |
|---|---|---|
| John Smith | John | Smith |
| Mary Jane Watson | Mary Jane | Watson |
| Robert J. Williams III | Robert J. | Williams III |
Keep compound last names and suffixes with the last name field.
Step 4: Update the Excel File
After researching a batch, update the Excel workbook with findings. Use pandas or openpyxl to:
- Load the existing workbook
- Update the decision-maker columns for researched records
- Re-sort the tabs (Found = identified, Not Found = still needs work)
- Save back to the same file
import pandas as pd
# Load
df = pd.read_excel('output_file.xlsx', sheet_name='All Records')
# Update records (example)
mask = df['BuyerFullName'] == 'GDP PROPERTIES LLC'
df.loc[mask, 'DecisionMaker_FullName'] = 'John Smith'
df.loc[mask, 'DecisionMaker_FirstName'] = 'John'
df.loc[mask, 'DecisionMaker_LastName'] = 'Smith'
df.loc[mask, 'DecisionMaker_Role'] = 'Registered Agent'
df.loc[mask, 'Verification_Source'] = 'TN SOS'
# Re-save with updated tabs
found_mask = (df['DecisionMaker_FullName'] != '') & (df['DecisionMaker_FullName'].str.upper() != 'NOT FOUND')
with pd.ExcelWriter('output_file.xlsx', engine='openpyxl') as writer:
df.to_excel(writer, sheet_name='All Records', index=False)
df[found_mask].to_excel(writer, sheet_name='Found', index=False)
df[~found_mask].to_excel(writer, sheet_name='Not Found', index=False)
Step 5: Deliver Results
Provide the completed Excel workbook and summarize:
- Total buyers found for the county
- How many decision-makers were identified vs still needed
- Top buyers by volume with their identified contacts
- Next steps: upload the "Found" tab to Sift for skip tracing
The user can then:
- Found tab → Upload to Sift for skip tracing (includes mailing address columns)
- Not Found tab → Follow up with deeper research or skip trace the entity address
- Start outreach to build buyer relationships
Multi-County Support
If the user wants buyers across multiple counties, run the script once per county and combine:
# Run for each county
python <script> <data> --county "Knox" --state "TN" --output "Knox_TN.xlsx"
python <script> <data> --county "Anderson" --state "TN" --output "Anderson_TN.xlsx"
Or, if they want a combined file, you can modify the filtering to accept multiple counties and produce a single workbook.
Example Output
An example of a completed buyer analysis for Knox County, TN is available at references/example_output_knox_tn.xlsx. This shows the expected quality level — 134 records with 113 decision-makers found (84% identification rate). The example demonstrates proper use of diverse verification sources (Secretary of State searches, Bizapedia, LinkedIn, company websites, public records, news articles) and consistent formatting of the DecisionMaker columns.
When researching, aim for a similar level of thoroughness — don't just rely on SOS searches. Cross-reference multiple sources to maximize the identification rate.
Data Coverage Notes
The nationwide database contains ~84,000 buyer records across 1,471 counties in all 50 states + DC. Each record represents a buyer with 2+ property purchases in the last 6 months. If a county has no data, it means no buyers met the minimum purchase threshold in that timeframe — the market may have low transaction volume or limited investor activity.