The map is the interface, not an afterthought.
A content management platform built on the ESRI ArcGIS Maps SDK for JavaScript, where spatial data is a first-class content type rather than an embedded widget. Drag-and-drop geospatial workflows, cloud-native format loaders, and document AI that turns appraisals and plats into queryable data — self-hostable, with the source available.
Most content systems treat a map as a plugin
Which is fine until the spatial data is the point — then every ordinary CMS assumption starts working against you.
The map is bolted on
An iframe or a shortcode. It renders, but the CMS cannot query it, index it, or use it to drive anything else on the page.
Geometry is not a field type
So boundaries end up as an uploaded file or a pasted coordinate string, and nothing downstream can filter on them.
Processing means leaving
Any real spatial operation — buffer, join, clip — means exporting to desktop GIS and importing the result back by hand.
Documents stay opaque
Appraisals, plats and inspection reports go in as PDF blobs. The numbers inside them are invisible to search.
Built on the Maps SDK, not around it
The ESRI ArcGIS Maps SDK for JavaScript drives 2D and 3D rendering with WebGL acceleration, so the same platform that manages the content also does the cartography — custom basemaps, imagery, live data layers and 3D scenes in one runtime.
- 2D and 3D in one view stack — building visualisation and fly-through, terrain and elevation derivatives, mobile-responsive touch controls.
- County parcel WFS — authoritative boundaries, ownership, lot size and legal descriptions served live onto the map, with identify popups and EPSG projection handling.
- 3D mesh and scene layers — textured mesh, I3S/SLPK scene layers and 3D Tiles, with GLB and 3D Tile export.
- 60+ map services wired through the SDK, from basemaps to raster analytics.
Geospatial processing without opening a GIS
A drag-and-drop canvas built on React Flow, with a component library of more than 88 geospatial operations and data sources. Wire a source to an operation to an output, run it, and watch the execution log.
| Category | Components |
|---|---|
| Data sources | PostGIS, DuckDB, WFS, Esri feature services, file upload |
| Geometric operations | Buffer, union, intersection, difference, simplification |
| Spatial analysis | Hotspot analysis, clustering, nearest neighbour, spatial join |
| Distance operations | Proximity analysis, service areas, isochrones |
| Transformations | Coordinate conversion, geometric transformations |
| Outputs | Interactive maps, file exports, database writers, API webhooks |
- Real-time execution with per-node progress and a detailed log, so a failed run tells you which step failed and why.
- Validation before execution — dependency checking and error detection on the graph itself, not at runtime.
- Template library of pre-built workflows for common tasks, so the canvas is not a blank page on day one.
- Versioned — workflow history, so a change to a production pipeline is reviewable and reversible.
{
"nodes": [
{ "id": "src-1", "type": "wfs_source",
"data": { "url": "…/geoserver/wfs",
"layer": "parcels" } },
{ "id": "buf-1", "type": "buffer",
"data": { "distance": 800,
"units": "meters" } },
{ "id": "join-1", "type": "spatial_join",
"data": { "predicate": "intersects" } },
{ "id": "out-1", "type": "map_output" }
],
"edges": [
{ "source": "src-1", "target": "buf-1" },
{ "source": "buf-1", "target": "join-1" },
{ "source": "join-1", "target": "out-1" }
]
}
Stream the big things instead of downloading them
Native loaders for the formats built to be range-requested over HTTPS, so a multi-gigabyte raster or point cloud opens without a conversion step or a staging server.
Raster & point cloud
COG for cloud-optimised GeoTIFF, COPC for lidar point clouds, and Zarr for chunked multidimensional arrays — each read by range request rather than downloaded whole.
Vector & tiles
FlatGeobuf for streaming vector, GeoParquet for columnar analytics, PMTiles for single-file tile archives, plus GeoJSON, Shapefile and DXF for the things people actually email you.
3D & services
I3S/SLPK scene layers and 3D Tiles for meshes and integrated meshes, and WFS for live feature services from a county or agency server.
Stop reading documents. Start querying them.
An appraisal, a survey plat or an inspection report goes in as a PDF. OCR reads it, the text is embedded and indexed, and the result is searchable alongside everything else — with answers cited back to the document they came from.
- Multi-tier OCR — Tesseract.js with Extract2MD turning scanned PDFs and photographs into clean structured markdown, with multi-page and batch support.
- Geographic RAG — retrieval-augmented generation grounded in your location data, so a question about a parcel is answered from the documents attached to that parcel.
- DuckDB WASM vector search — the embedding store runs in the browser, so semantic search over a document set happens client-side.
- AI content generation — listing descriptions and summaries via OpenRouter, with caching and retries built in.
A monorepo you can run yourself
Not a hosted product with an API bolted on — a set of applications you deploy, each owning a distinct capability, behind Docker Compose.
| Application | Stack | Owns |
|---|---|---|
| CMS | Next.js 15, React 19 | Content, forms, listings, CRM records, auth, AI content generation |
| Map module | Next.js, ArcGIS SDK | The visual workflow builder, the 88+ component library, map rendering |
| Document processing | Next.js | OCR, retrieval-augmented generation, document ingestion |
| Map catalog builder | Vite, React | Catalog management and publishing |
| Indoor mapping | Webpack | Indoor mapping and wayfinding |
- TypeScript throughout, strict mode, with Zod schemas validating every API boundary and inferring the types rather than duplicating them.
- REST API under
/api/v1— auth, geospatial features and analysis, and the record surfaces behind the CMS. - PostgreSQL via Prisma, with Redis for sessions and caching.
- Docker Compose deployment with multi-stage builds and health checks on every service.
# Configure cp .env.example .env.production # The whole stack docker compose -f docker-compose.prod.yml up -d # Health check curl -f 'https://your-domain/api/health' # Or run a single app in development cd klickbee-cms-enhanced && npm run dev cd map_module && npm run dev # Quality gates npm run type-check npm run quality:check # lint + format + types + tests
What is actually built
This platform is pre-production. The table below is drawn from the repository's own status reporting rather than from a sales deck, and it is the version we will hold ourselves to.
| Capability | Status | Detail |
|---|---|---|
| ArcGIS mapping, parcel WFS, cloud-native format loaders | Functional | 2D and 3D rendering, live WFS overlay, COG / COPC / FlatGeobuf / GeoParquet / PMTiles / Zarr |
| Visual workflow builder, 88+ components | Functional | React Flow canvas, real-time execution and logging, template library |
| OCR, geographic RAG, vector search | Functional | Tesseract.js and Extract2MD; DuckDB WASM embedding store |
| AI content generation | Functional | Via OpenRouter; requires your own API key |
| CRM — contacts, deals, activities | Functional | Real CRUD with Zod validation, auth-gated |
| Property listings, search and detail pages | Functional | Backed by the platform's own database |
| Authentication and sessions | Functional | Login, registration and signed sessions |
| Draw-to-search, price heatmaps | In progress | Sketch integration and heatmap layers specified; clustering and parcel overlay are done |
| Transaction and closing management | In progress | Data model exists; API and interface not yet wired |
| Saved searches and alerts | In progress | Routes return stubs; persistence and the notification worker are next |
| Specialised document AI — appraisal forms, plat and legal descriptions | Planned | Metes-and-bounds and PLSS parsing specified, not built |
| Drone photogrammetry — orthomosaic, DSM, point cloud | Planned | Specified, not built |
| Professional services marketplace, commissions, billing | Planned | Specified, not built |
* Several capabilities that appear in earlier collateral for this platform — including multi-tenancy and tenant isolation, MLS/IDX/portal integrations, dashboard analytics and role-based permission enforcement — are deliberately omitted above. The repository's status reporting and that collateral disagree about them, and we would rather leave a capability off this page than claim one we cannot demonstrate. Ask us and we will tell you exactly where each one stands.
Where this sits next to the rest
It is the publishing and workflow surface over the same spatial data the other solutions produce.
Beside the Opportunity Pipeline
The pipeline stands a jurisdiction up in batch and ships files. The workflow builder answers the one-off spatial question interactively, without anyone writing SQL.
Solution detail →Beside Land Intelligence
Land Intelligence is the analyst's map, built on MapLibre. This is the ArcGIS-native content platform — the right choice when the organisation is already an Esri shop.
Solution detail →Fed by parcel federation
The proxy speaks WFS and OGC API Features, which the workflow builder already consumes as data sources — one mount URL becomes a node on the canvas.
Solution detail →See the parts that are built
We will demo the shipping capabilities against your data and walk the maturity table line by line — including where the roadmap items genuinely stand. The platform is self-hostable and the source is available, so what you deploy is not gated on our release schedule.