agentsclimarketplace

Land acquisition intel

Skill Gonzih/land-acquisition-intel/skills/land-acquisition-intel

Land acquisition intelligence skill for Claude — score parcels for datacenters, warehouses, solar farms, and industrial sites using free ArcGIS/OSM data

Install
npx -y skills add Gonzih/land-acquisition-intel --skill land-acquisition-intel

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Runs a land acquisition intelligence pipeline that scores and ranks parcels for any land use type: datacenters, warehouses, logistics hubs, industrial parks, solar farms, agricultural operations, mixed-use development, or custom criteria. Use when user asks to find land for any purpose, score parcels, scout land, identify plots, run site selection, or asks "find me land for X in Y area". Triggers on phrases like "find land", "scout land", "parcel scoring", "site selection", "land acquisition", "identify plots", "score parcels", "land intel", "best sites for", "where should I build", or any request to evaluate parcels in a specific city, county, region, or state. Fetches real parcel data from public ArcGIS/OSM sources (no paid APIs), scores by proximity to infrastructure (power, highway, rail, fiber, water), acreage fit, zoning, and user-defined criteria, and outputs ranked CSVs of top candidate sites with Google Maps links. Do NOT use for residential property searches, general real estate questions, or permitting research.

SKILL.md

9.0 KB, as published. Nobody here has run it

Land Acquisition Intelligence Skill

Fetches real parcel data + infrastructure, scores every parcel against your use case criteria, outputs ranked CSVs of top sites. Zero paid APIs. Runs fully local.

Critical: Always Follow This Order

  1. Understand intent — what land use, what region, any custom requirements
  2. Resolve region — get center lat/lon + bbox
  3. Run fetch script — parcels + infrastructure
  4. Run score script — vectorized scoring with use-case weights
  5. Report top candidates — table + Google Maps links + file paths

Never skip steps. Never invent scores without running the scripts.


Step 1: Understand Intent

Ask (or infer from context) before running:

Required:

  • What is the land for? (datacenter / warehouse / solar / industrial / agricultural / custom)
  • What region? (city, county, state, or coordinates)

Optional (infer defaults if not given):

  • Minimum acreage? (default: none)
  • Maximum distance from highway? (default: none)
  • Any specific infrastructure required? (power/rail/fiber/water)
  • Budget tier? (high-value = prefer smaller parcels near infra; land-banking = larger, more remote OK)

If use case is custom or unclear: ask "What's the primary value driver for this site? Power access, logistics, labor, cost, or something else?"


Step 2: Resolve Region

Extract city/county/state from user input. Map to coordinates:

Built-in coords (Western US defaults):

  • Carson City NV: 39.1638, -119.7674
  • Reno NV: 39.5296, -119.8138
  • Las Vegas NV: 36.1699, -115.1398
  • Sparks NV: 39.5349, -119.7527
  • Fernley NV: 39.6077, -119.2125
  • Phoenix AZ: 33.4484, -112.0740
  • Salt Lake City UT: 40.7608, -111.8910
  • Boise ID: 43.6150, -116.2023
  • Denver CO: 39.7392, -104.9903
  • Portland OR: 45.5051, -122.6750

For any other city: use Nominatim geocoder (free, no key):

https://nominatim.openstreetmap.org/search?q=CITY+STATE&format=json&limit=1

Default bbox: ~60-mile radius from center point.


Step 3: Fetch Data

Run: python3 scripts/fetch_data.py --lat LAT --lon LON --state STATE --output /tmp/land-intel/raw/

Fetches (all free, no API keys):

LayerSourceNotes
ParcelsState/county ArcGIS REST APIsAPN, acres, owner, address
Parcels fallbackOSM building + landuse footprintsAlways works
HighwaysOSM Overpassmotorway, trunk, primary
InterchangesOSM motorway junctionsexact ramp locations
Rail linesOSMfreight rail, usage tag
Substations + power linesOSM power layervoltage included
Water infrastructureOSMrivers, reservoirs, water towers
Farmland / vacant landOSM landuseagricultural, brownfield, greenfield
Industrial zonesOSM landuse=industrialexisting industrial parks

Expected raw files:

/tmp/land-intel/raw/
├── parcels_raw.csv         # APN, acres, lat/lon, county
├── osm_buildings.csv       # OSM land use proxy
├── highways.csv
├── interchanges.csv
├── rail.csv
├── substations.csv
├── transmission_lines.csv
├── water_infra.csv

If a fetch fails: log it, skip that layer, continue. Missing infra = 999km default = lower score for that factor only.


Step 4: Score Parcels

Run: python3 scripts/score_parcels.py --raw /tmp/land-intel/raw/ --use-case USE_CASE --output /tmp/land-intel/output/

USE_CASE options: datacenter, warehouse, solar, agricultural, industrial, custom

Scoring Factors (all vectorized, no loops)

Universal factors (all use cases):

  • Acreage fit: 0-20pts — calibrated to use-case ideal range
  • Highway access: 0-20pts — distance to nearest major road
  • Zoning compatibility: 0-15pts — industrial > commercial > agricultural > unknown > residential
  • Water access: 0-5pts — nearest water body or tower

Use-case specific weights:

FactorDatacenterWarehouseSolarAgricultural
Power substation35pts5pts15pts5pts
Transmission line5pts3pts10pts2pts
Highway access15pts25pts5pts10pts
Interchange proximity5pts15pts0pts0pts
Rail access0pts15pts0pts5pts
Acreage20pts20pts25pts30pts
Zoning15pts15pts10pts15pts
Water5pts5pts5pts20pts
Fiber/telecom5pts0pts0pts0pts
Climate bonus5pts0pts5pts5pts
Labor market0pts10pts0pts0pts

Custom use case: prompt user for 3-5 scoring priorities, assign 100pts across them.

Scoring outputs:

  • [use_case]_candidates.csv — top 5,000 sites, all score components
  • all_candidates_ranked.csv — full dataset with composite score

Motivated seller signals (added to every parcel where data available):

  • Out-of-state owner: +15pts signal
  • Estate/trust in owner name: +20pts signal
  • Tax delinquent: +30pts signal
  • Long hold (pre-2010 acquisition): +15pts signal

Step 5: Report Results

After scripts complete, present findings in this format:

## Land Scouting Results: [USE CASE] in [REGION]

### Data Summary
- Parcels scored: X across N counties
- Infrastructure layers: highways ✓, rail ✓, power ✓, water ✓

### Top 10 Sites

| # | Score | Location | County | Acres | Key Factor | APN | Map |
|---|-------|----------|--------|-------|------------|-----|-----|
| 1 | 94 | 39.1638,-119.7674 | Carson City | 42ac | sub=0.3km | 1004169 | [link] |
...

### Score Distribution
Min: X | Median: X | Max: X | Sites >80: X

### Files Saved
- /tmp/land-intel/output/[use_case]_candidates.csv
- /tmp/land-intel/output/all_candidates_ranked.csv

Google Maps link format: https://maps.google.com/?q=LAT,LON

Always include top 10 in the response. Offer to show more or filter by criteria.


Error Handling

No parcel data:

  • Use OSM buildings + 500m synthetic grid as fallback
  • Note: "County parcel data unavailable, using OSM proxy — APN/owner data will be missing"

OSM rate limited (HTTP 429):

  • Sleep 3s, retry once
  • Split into smaller bbox quadrants
  • Skip layer if still failing

Dependencies missing:

pip install pandas numpy requests tqdm shapely pyproj geopandas --break-system-packages

Region not found:

  • Use Nominatim geocoder on city name
  • If still fails: ask user for coordinates directly

Optional Enrichment

After base scoring, offer these if user wants to go deeper:

  • Zoning details: actual zoning codes from county assessor (Municode or county GIS)
  • Ownership lookup: cross-reference APN with county assessor for owner name/address
  • Active listings overlay: Redfin CSV endpoint (recursive bbox subdivision, no API key)
  • BLM/federal ownership: PADUS or BLM NILS layer — critical for Western US
  • Power capacity: substation IDs from OSM → call utility for available MW
  • Environmental flags: FEMA flood zones, EPA brownfields, wetlands

Prompt: "Base scoring complete. Want me to enrich the top 20 with zoning codes, ownership data, or active listing prices?"


Scope

Works well for:

  • Any US county with public ArcGIS parcel data (most do)
  • Western US: Nevada, Utah, Arizona, Idaho, Oregon, Colorado, California
  • Eastern US: NC OneMap, county GIS portals (see references/state-endpoints.md)
  • Any use case expressible as infrastructure proximity + acreage

Doesn't cover:

  • International parcels
  • Permitting or entitlement research
  • Environmental impact analysis
  • Residential property or single-family land
  • Title/lien searches

Data freshness:

  • OSM: real-time
  • County parcel layers: typically updated annually (check SourceDate field)
  • Infrastructure: OSM community-maintained, generally reliable

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.