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 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.
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.
- 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.
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
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.
- 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
Requirements: Node.js 24 and npm.
git clone https://github.com/mlb07/LandLens.git
cd LandLens
npm ci
cp .env.example .env
npm run devThe Census API key in .env is optional. Without it, population trend is shown as unavailable rather than estimated.
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 comparisonThe 0–100 score is an absolute model scale, not a claim about market outcomes. To compare its ordering with your own judgment:
- Batch-screen 20–30 parcels representing good, typical, and poor opportunities.
- Export the portfolio CSV.
- Copy
calibration/ground-truth.template.csvand rank the parcels before reviewing their LandLens scores. - Run:
npm run calibrate -- portfolio.csv your-ranking.csvThe report leads with Kendall τ-b, includes Spearman ρ, shows where typical parcels sit on the scale, and identifies the largest disagreements.
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.
Copyright © 2026 Monty Bognar. Source is public for portfolio review, but no reuse license is granted. See LICENSE.
