◆ Zoning · Real Estate · Land Development

The stack land development actually runs on.

Tech Maven Geospatial builds the map intelligence, collaboration and data-processing layers for zoning and land development — parcel and zoning analysis, distressed-property discovery, professional matching, permitting workflows, nationwide parcel federation and the pipeline that turns raw municipal GIS into analysis-ready opportunity data. Seven production platforms, one connected portfolio. Every solution ships with a source-code developer SDK.

🗺️ 40+ map controls 🧮 DuckDB WASM in-browser GIS 🏛️ 1,100+ parcel jurisdictions ⚙️ SDK + source code
// Land Intelligence — Brickell, Miami · live Land Intelligence map view over Brickell, Miami showing 3D building massing, the Building Inspector panel returning footprint attributes, and a layer catalog with 107 layers loaded.
The problem

Land development data is fragmented by design

Every jurisdiction publishes differently. Half the rules that matter are legal text, not a table. And the moment you find a parcel worth pursuing, the work moves into a different set of tools entirely — email, spreadsheets, and a permit portal nobody enjoys.

🧩

A thousand parcel endpoints

State, county, parish and CAD services each publish their own URL and their own schema. URLs drift, crews end up with broken layers, and downstream code becomes a pile of case statements.

📜

Zoning lives in prose

Setbacks, FAR, height limits and permitted uses sit in ordinance text, disconnected from the map. Answering “what can I build here?” means reading a PDF with the parcel open in another tab.

🔀

Analysis and execution are separate

The site you scored in GIS gets handed to professionals, permits and inspections that live somewhere else. The audit trail breaks exactly where accountability starts.

How it fits together

Four layers, one land-development stack

Each solution stands alone and integrates with the others. The data layer feeds the map intelligence layer; map intelligence feeds the collaboration and permitting platform; the SDK layer exposes all of it to your own applications.

LAYER 01 Data federation & processing

Parcel, property, tax and zoning records normalized from more than a thousand upstream jurisdictions into one stable schema — live behind one mount URL, and in batch through a pipeline that turns a city's raw GIS into scored opportunity layers.

LAYER 02 Map intelligence & analysis

Land Intelligence — zoning, CRE and land-use analysis in the browser: opportunity scoring, 3D building inspection, geoenrichment, in-browser geoprocessing, AI querying.

LAYER 03 Execution & collaboration

Marketplace, professional matching, project workspaces, document control, permitting and recertification — where an opportunity becomes a delivered project.

LAYER 04 Developer SDK & source code

Everything above is available as a library, a CLI and documented REST APIs — embed it in your own product rather than adopting ours wholesale.

The portfolio · seven platforms, plus one in development

Build the data. Find it. Understand it. Get it built.

Every screen on this site is a capture from a running system, not a mockup.

🛰️

Land Intelligence — Zoning & CRE Analysis

MapLibre GL JS with full ArcGIS integration, in-browser DuckDB geoprocessing, nationwide parcel and property intelligence, 3D building analysis, GeoEnrichment and an AI geospatial analyst.

Solution detail →
🤝

Execution Layer

Marketplace, professional matching, project workspaces, document control, the permit lifecycle, inspections, recertification deadlines and a drag-and-drop form builder.

Solution detail →
🗺️

Parcel Federation Proxy

One FeatureServer-compatible mount URL that federates parcel queries across every state, county, parish and CAD service publishing public parcel data.

Solution detail →
⚙️

Opportunity Pipeline

A config-driven pipeline that turns a jurisdiction's raw GIS and open data into fifteen scored opportunity layers — underbuilt, vacant, distressed, assemblable — without a line of city-specific code.

Solution detail →
🧩

Geospatial CMS In development

ArcGIS-native content management with a drag-and-drop workflow builder, cloud-native format loaders and document AI — for organisations already standardised on the Esri stack.

Solution detail →
🧾

County Tax Search Gateway

Tax collector and property appraiser records from county portals that publish no API — driven by a real browser, returned as one normalized record over REST.

Solution detail →
📜

Zoning Code Intelligence

Ask a zoning question in plain English and get an answer grounded in the ordinance, with the passages it came from — plus setbacks, height and FAR extracted into typed columns.

Solution detail →
🗣️

Geospatial AI Assistant

Ask an ArcGIS map questions in plain language across ESRI, OGC and WFS services — and expose the same tools to your own AI agents over MCP.

Solution detail →

* Seven of the eight are in production. The Geospatial CMS is pre-production; its page carries a capability-by-capability maturity table rather than a feature list.

◆ Solution 01 · Map intelligence

Land Intelligence — zoning & CRE analysis in the browser

A MapLibre GL JS application framework with full ArcGIS Enterprise, Server and Portal integration. Discover data from public GIS catalogs, load it beside cloud-native formats and commercial property records, then analyze it — with the geoprocessing running client-side in DuckDB WASM, so nothing leaves the device.

  • Opportunity layers — underbuilt parcels, assemblage and rezoning candidates, code violations, lien hotspots, stalled permits, transit-proximity parcels.
  • 3D building inspection with per-feature zoning symbology and footprint attribute lookup across multiple FeatureServer layers.
  • ESRI GeoEnrichment across 15,000+ demographic, economic, housing and business variables — by click, address, geography or drawn polygon.
  • AI Analyst — ask zoning and opportunity questions in plain language and get answers plus features rendered on the map, or ask what the code says and get the ordinance passages back with source links.
MapLibre GL JSArcGIS / ESRI DuckDB WASMATTOM & Regrid3D Tiles
Land Intelligence · AI Analyst · zoning code + geo data
AI Analyst chat answering “What does the code say about parking in Miami?” with cited passages from the Miami zoning ordinance, each with a source link, beside a colour-coded zoning map of Miami.
“What does the code say about parking in Miami?”The agent searches the indexed ordinance and returns the matching passages, each cited to its source.
◆ Solution 02 · Execution & collaboration

Execution Layer — from scored parcel to delivered project

The platform that connects distressed and underused property to qualified local professionals, then runs the whole engagement in one place — workspaces, tasks, threaded messaging, document version control, the permit lifecycle, inspections and recertification deadlines, with an audit trail behind every action.

  • Property marketplace with distress scoring, opportunity layers and map, grid or list browsing.
  • Professional directory plus a matching engine scored on geography, discipline and current capacity.
  • Permitting & compliance — lifecycle states, inspection scheduling, checklist templates, deadline monitoring, multi-level escalation.
  • Forms module — drag-and-drop builder with conditional logic, location fields, subforms and JSON-schema export.
TrailBase · Rust + SQLiteReact + TypeScript Realtime SSERole-based access
Execution Layer · Property Marketplace
Execution Layer property marketplace listing distressed and opportunity properties in Miami and Fort Lauderdale, each card tagged with a distress score, violations, permits and value.
Properties in Distress · Current Opportunities · Future ValueLayer filters over the same scored inventory, in grid, list or map view.
◆ Solution 03 · Data federation & processing

One URL. Every jurisdiction. Field Maps just works.

A federation service that routes every parcel query — spatial, parcel ID, address or owner — to the correct upstream state, county, parish or CAD service, normalizes the response, and returns FeatureServer and OGC API Features JSON that ArcGIS Field Maps, Pro, QGIS and MapLibre already understand.

  • Registry-driven routing across state, county, parish and CAD parcel services.
  • Schema normalization — one canonical parcel record regardless of which jurisdiction answered.
  • Caching and graceful degradation, so one upstream outage never breaks the whole map.
  • Offline-capable in Field Maps — crews add a single layer source and it keeps working.
FastAPIEsri FeatureServer OGC API FeaturesWFSRedis cache
GET /parcels/…
# Esri FeatureServer contract — what Field Maps and Pro speak
curl 'https://parcels.example.org/parcels/FeatureServer/0?f=json'

# Spatial query, returned as GeoJSON
curl '…/parcels/FeatureServer/0/query?where=1=1&\
  geometry=-80.3,25.7,-80.1,25.9&\
  geometryType=esriGeometryEnvelope&f=geojson'

# Unified search — parcel ID, address or owner
curl '…/parcels/search?parcel_id=010-001234&state=OH'
curl '…/parcels/search?address=1+main+st+columbus+oh'

# OGC API Features — what MapLibre, OpenLayers and QGIS speak
curl '…/parcels/ogc/collections/parcels/items?bbox=…'
◆ Solution 04 · Data pipeline & jurisdiction onboarding

Opportunity Pipeline — onboard a city by writing a config file

Municipal GIS is a thousand different schemas wearing the same shape. This pipeline reads a jurisdiction's endpoints out of a config file, downloads them, translates every column into one fixed vocabulary, and runs the same fifteen spatial analyses it runs everywhere else — producing the opportunity layers the rest of the portfolio consumes.

  • Canonical semantic layer — the analytical SQL references fixed column names, and the config maps them onto whatever the county actually called them. Adding a city adds a mapping, not a code path.
  • Fifteen analyses — underbuilt parcels, vacant developable land, rezoning and assemblage candidates, transit proximity, stalled permits, violations, lien hotspots, recertification leads and a composite opportunity score.
  • Graceful by design — unmapped columns come back null and analyses whose inputs are missing skip rather than crash, so a city with thin open data still gets everything it can support.
  • Deliberately light — DuckDB spatial SQL over Hilbert-sorted GeoParquet. No GDAL install, no spatial database to operate, four runtime dependencies.
DuckDB spatialGeoParquet 1.1 ESRI RESTPython 3.10+YAML config
one file per jurisdiction
# jurisdictions/miami_fl.yaml
sources:
  parcels:
    url: https://gisweb.miamidade.gov/…/MapServer/26
    field_map:          # canonical: native
      parcel_id: FOLIO
      lot_size:  LOT_SIZE
      owner:     TRUE_OWNER1

  zoning:
    url: https://gis.miami.gov/…/MapServer/5
    field_map:
      zone_code: M21_ZONE
      far:       FLR

# the analysis never mentions a Miami column name
SELECT parcel_id, lot_size, far
FROM parcels JOIN zoning ON ST_Intersects(…)
WHERE lot_size > 10000;

# so the same query runs in Fort Lauderdale and NYC
python -m opportunity_pipeline.run \
    jurisdictions/austin_tx.yaml
Data processing

The unglamorous half that makes the rest work

Zoning and land-development data is fragmented by design. These are the processing capabilities that sit underneath the portfolio.

🧮

In-browser geoprocessing

DuckDB WASM runs buffer, spatial join, dissolve, clip, summarize-within, convex hull and measurement client-side. No server round trip, no upload, no data leaving the device.

📦

Format ingestion

GeoJSON, Shapefile, KML/KMZ, GPX, CSV, GeoParquet, FlatGeoBuf and GeoPackage by drag-and-drop or URL. COG, COPC LiDAR, PMTiles and 3D Tiles stream from HTTPS or S3.

🧬

Schema normalization

Every upstream parcel service returns different field names and types. The federation layer maps them all to one canonical record so downstream code stops branching per county.

📜

Zoning ordinance search

Full-text indexed municipal code — setbacks, FAR, height limits, permitted uses and definitions — queryable alongside the spatial data and cited back to the source ordinance URL.

📊

Enrichment & scoring

ACS demographics, ESRI GeoEnrichment, ATTOM property intelligence and Regrid parcels feed composite opportunity, distress and site scores — cached so repeat queries cost nothing.

🛰️

Raster & imagery analytics

NDVI, EVI, SAVI, NBR and hillshade computed in-browser over any Cloud-Optimised GeoTIFF via Pyodide and numpy, plus custom Python formulas and oriented / street-level imagery review.

For developers SDK

A source-code developer SDK for every solution

This portfolio is not a closed suite. Each solution is a library, a CLI and a documented API surface — embed a single control in an existing product, script a whole map application from YAML, or federate parcel data into a system that has nothing to do with us.

  • TypeScript / npm library — 40+ map controls, headless clients behind each one, tree-shakeable imports.
  • Python CLI — declare a full map application in YAML, build it to a portable static page with the COOP/COEP headers DuckDB WASM needs.
  • REST APIs — OpenAPI 3.1 with Swagger UI and ReDoc, auto-generated record CRUD, realtime SSE, Esri and OGC geospatial contracts.
  • Source-code licensing — take the repository, self-host it, extend it on your own roadmap.
Data privacy note. The DuckDB WASM processing layer runs entirely in the browser — file loading, filtering, spatial joins and measurement never send your data anywhere. That property holds under every licensing model, including the hosted one.
map.ts
import maplibregl from 'maplibre-gl';
import {
  ArcGISAuthManager,
  EsriFeatureServiceControl,
  RegridParcelControl,
  CREAnalysisControl,
} from 'maplibre-arcgis';

const map = new maplibregl.Map({
  container: 'map',
  center: [-80.19, 25.76],
  zoom: 14,
});

const auth = new ArcGISAuthManager({
  portalUrl: 'https://www.arcgis.com',
  authMethod: 'oauth2',
  clientId: 'YOUR_CLIENT_ID',
});

map.on('load', () => {
  // Zoning districts straight off a FeatureServer
  map.addControl(new EsriFeatureServiceControl({
    id: 'zoning',
    url: 'https://services.arcgis.com/.../FeatureServer/0',
    auth,
    paint: { 'fill-color': '#22d3ee', 'fill-opacity': 0.45 },
  }));

  // Nationwide parcels + CRE underwriting panel
  map.addControl(new RegridParcelControl({ auth }), 'top-left');
  map.addControl(new CREAnalysisControl({ auth }), 'top-right');
});
A closer look

Analysis, execution and federation, side by side

Captured from the running platforms.

Land Intelligence opportunity layers side panel with underbuilt parcels, assemblage candidates and violation layers toggled on.
Opportunity layersUnderbuilt parcels, rezoning and assemblage candidates, violations, lien hotspots and stalled permits.
Land Intelligence data grid view showing a sortable, paginated attribute table of parcel records.
Data gridSortable, filterable attribute tables backed by DuckDB — click a row to fly to the parcel, export to CSV.
Expanded Land Intelligence layer catalog listing loaded map layers with visibility and opacity controls.
Layer catalogEvery loaded source in one panel — visibility, opacity and ordering across 100+ layers.
Execution Layer professional directory with discipline filters and service-area matching.
Professional directoryFilter by discipline, service area and capacity; the matching engine ranks who can actually take the work.
Execution Layer drag-and-drop form builder with a field palette and live preview.
Form builderDrag-and-drop permit, inspection and intake forms with conditional logic and JSON-schema export.
Swagger UI for the Parcel Federation Proxy showing FeatureServer, OGC API Features, Search and Admin route groups.
Federation APIFeatureServer, OGC API Features, unified search and registry admin — every route documented and executable.
4
Integrated platforms
40+
Map controls & widgets
1,100+
Parcel jurisdictions
15
Opportunity analyses
15,000+
Enrichment variables
SDK
For every solution

* Capability counts reflect the documented scope of the shipping platforms. Jurisdiction coverage grows through a reviewed registry-discovery process — ask for the current registry state for your states of interest.

Built for the deal, the desk and the permit counter

Who uses this portfolio

From screening a market at 30,000 feet to closing out an inspection on site.

🏗️

Developers & Investors

Find underbuilt and distressed parcels before they list, test what the code permits, model assemblage, and underwrite with demographics and comps in the same session.

🏛️

Municipalities & Planning

Publish zoning, land-use and permit data on a map the public can read; track recertification and inspection deadlines with escalation before they lapse.

📐

Architects & Engineers

Get matched to work in your service area, run the project from one workspace, and keep permits, inspections and approvals in a single auditable trail.

⚡

Utilities & Infrastructure

One parcel layer that works across every county in the service territory — offline-capable in Field Maps, with ownership and boundary data that stays current.

🧭

Brokerages & Site Selectors

Screen a market by radius, ZIP or drawn polygon; pull assessed value, AVM, land use and sale history; hand the client a branded due-diligence report.

💻

Software Teams & Integrators

Embed the controls, the parcel federation layer or the whole framework in a product you already ship. Source-code licensing means your roadmap does not wait on ours.

🌐

GIS Consultants

A portable analysis and reporting stack for zoning studies, site selection and client deliverables — in-browser processing, no server to stand up.

🧾

Asset & Property Managers

Track building recertification, violations and permit exposure across a portfolio, with deadlines monitored and escalated automatically.

◆ Source-code SDK for every solution

See it running on your jurisdiction

Tell us the county, the parcels and the workflow you care about, and we will walk the portfolio through your data rather than ours. Ask about the developer SDK and source-code licensing while you are there.

We reply to demo requests within one business day.