Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LandLens

Quality gate

Decision-first U.S. land screening using public GIS, parcel constraints, acquisition economics, and transparent scoring.

Try the live demo · Read the project record · Review privacy and data handling

LandLens — decision-first U.S. land screening

LandLens helps answer one deliberately narrow question: is this parcel interesting enough to justify deeper diligence? It combines public-source evidence with user-supplied deal context, surfaces hard blockers before a score, and explains what still needs professional verification. It is a preliminary screening tool—not a survey, title opinion, appraisal, entitlement determination, or investment decision.

Why I built it

Early land review is fragmented across assessor maps, hazard layers, utility context, zoning sources, spreadsheets, and judgment calls. LandLens brings those signals into one repeatable screen while keeping provenance, uncertainty, and unsupported conclusions visible.

The product is designed around three principles:

  • Decision before detail: blockers, screened net acres, economics, and next diligence appear before factor mechanics.
  • Evidence over invention: unknown categories stay unknown; the application never fills gaps with fabricated or neutral values.
  • Transparent scoring: hard gates and a 14-category weighted geometric score make weak dimensions visible instead of averaging them away.

What it does

  • Screens all 50 states with state-scoped search, parcel selection, and official map layers.
  • Connects 58 verified public parcel adapters: 34 statewide/statewide-mosaic sources plus explicit county or city coverage in the remaining states.
  • Evaluates floodplain, wetlands, slope, soils, drainage, easements/ROW, contamination, critical habitat, setbacks, access, utilities, zoning, regional hazards, and market context when sources are available.
  • Builds a parcel-wide screening envelope without double-counting overlapping spatial constraints.
  • Calculates cost per net-developable acre and compares it with public assessor land value when available.
  • Supports saved-site stages, side-by-side comparison, batch CSV screening, reports, JSON backup/restore, and CSV/GeoJSON export.
  • Uses jurisdiction packs for source-faithful Austin, Houston, Dallas, and Charlotte entitlement screening.
  • Keeps anonymous portfolios on the visitor's device; authenticated Sites users receive private, user-scoped cloud sync.

How it works

flowchart LR
  A["Choose a parcel"] --> B["Query approved public sources"]
  B --> C["Normalize evidence + provenance"]
  C --> D["Build parcel-wide constraints"]
  D --> E{"Hard gate?"}
  E -- Yes --> F["Manual diligence required"]
  E -- No --> G["14-category feasibility score"]
  F --> H["Report + next actions"]
  G --> H
Loading

The production worker proxies requests only to registered providers, rejects redirects, bounds request and response bodies, and rate-limits repeated public requests. Saved cloud portfolios use optimistic concurrency and a hashed user partition key; anonymous visitors fall back to browser storage.

Technology

  • React 19, TypeScript, Vite, Leaflet, and React Leaflet
  • Cloudflare Workers, D1, Drizzle ORM, and Sites hosting
  • Vitest, Testing Library, Playwright, and GitHub Actions
  • Public ArcGIS REST, FEMA, USGS, Census, USFWS, USDA, EPA, and regional/local GIS services

Run locally

Requirements: Node.js 24 and npm.

git clone https://github.com/mlb07/LandLens.git
cd LandLens
npm ci
cp .env.example .env
npm run dev

The Census API key in .env is optional. Without it, population trend is shown as unavailable rather than estimated.

Validation

npm test                    # 282 unit/provider/component/worker tests
npm run lint               # ESLint
npm run build              # TypeScript + production build
npm run test:e2e           # Browser save → compare → report flow
npm run verify:architecture
npm run verify:providers   # Live provider contracts; requires network access
npm run audit:parcel-facts # Live public-schema comparison

Score calibration

The 0–100 score is an absolute model scale, not a claim about market outcomes. To compare its ordering with your own judgment:

  1. Batch-screen 20–30 parcels representing good, typical, and poor opportunities.
  2. Export the portfolio CSV.
  3. Copy calibration/ground-truth.template.csv and rank the parcels before reviewing their LandLens scores.
  4. Run:
npm run calibrate -- portfolio.csv your-ranking.csv

The report leads with Kendall τ-b, includes Spearman ρ, shows where typical parcels sit on the scale, and identifies the largest disagreements.

Data and limitations

LandLens reads public services that vary in completeness, update schedule, terminology, and availability. A supported geography can still contain gaps. Parcel attributes may be coded or stale; mapped frontage is not proof of legal access; utility descriptors are not capacity commitments; public environmental screens do not replace field or professional diligence. Owner names and mailing addresses are intentionally excluded.

See PRIVACY.md for what the application stores and sends. The implementation history, architectural decisions, source coverage, and deferred work are maintained in docs/PROJECT_RECORD.md.

License

Copyright © 2026 Monty Bognar. Source is public for portfolio review, but no reuse license is granted. See LICENSE.

About

Decision-first U.S. land screening with public GIS, parcel constraints, acquisition economics, and transparent scoring.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages