ACRIS Explorer

ACRIS Explorer

Back_to_Home
Data Engineering • Geospatial

ACRIS Explorer.built on real ingestion pipelines and stable identifiers

A production-grade geospatial system for ingesting, persisting, and exploring New York City property and legal records.

Technical Thesis.

ACRIS Explorer treats public real-estate records as a long-lived data system rather than a static dataset. The architecture emphasizes correctness, resumable ingestion, stable identifiers, and strict geospatial contracts so the frontend remains predictable as data volume grows.

Visual_Manifest // Technical_Snapshots

Map-first exploration backed by persisted data
Capture_Point_1

Map-first exploration backed by persisted data

The map loads properties dynamically based on visible bounds using backend bounding-box queries against Postgres. The frontend never calls external APIs directly, ensuring consistent behavior and performance as data scales.

Resumable ingestion jobs per borough
Capture_Point_2

Resumable ingestion jobs per borough

ACRIS data is ingested through resumable, borough-scoped jobs that track cursor state and failure conditions. This allows ingestion to pause, resume, and recover safely without corrupting downstream queries.

Stable identifiers across backend and Mapbox
Capture_Point_3

Stable identifiers across backend and Mapbox

Each property uses a stable BBL identifier that survives ingestion, querying, and map rendering. This guarantees Mapbox feature-state remains consistent across pan, zoom, and data refreshes.

Strict GeoJSON contracts for reliable rendering
Capture_Point_4

Strict GeoJSON contracts for reliable rendering

All geospatial endpoints return strict GeoJSON FeatureCollections, even when empty. This enforces a clean contract between the backend and Mapbox and prevents runtime rendering errors.

Functional Proof.

Detailed logic applied to real-world production needs.

using bounding-box queries instead of lists

Exploring properties spatially

Users explore neighborhoods naturally by panning and zooming the map, while the backend efficiently serves only the properties within the visible bounds.

Technical_Focus

  • Bounding-box SQL queries
  • GeoJSON generation
  • Map-driven data loading

Outcome

Large datasets remain fast and intuitive to explore without overwhelming the UI.

Media_Signal // Pending

DEPLOYMENT_IN_PROGRESS

SYSTEM_LOG: The visual documentation for Exploring properties spatially is currently being structured and staged for production deployment. Check back for full structural reveal.

with resumable, fault-tolerant jobs

Persisting public datasets safely

Public datasets are ingested incrementally with cursor-based job state so failures can be retried without duplicating or corrupting data.

Technical_Focus

  • Job state machines
  • Transactional inserts
  • Failure recovery

Outcome

Data integrity is preserved even under partial failures or restarts.

Media_Signal // Pending

DEPLOYMENT_IN_PROGRESS

SYSTEM_LOG: The visual documentation for Persisting public datasets safely is currently being structured and staged for production deployment. Check back for full structural reveal.

using stable feature identifiers

Reliable map interactions at scale

Hover and selection state remain consistent across frequent data refreshes thanks to stable backend identifiers propagated into GeoJSON feature IDs.

Technical_Focus

  • Mapbox feature-state
  • Stable BBL identifiers
  • Guarded interaction handlers

Outcome

Map interactions feel calm and predictable instead of flickering or resetting.

Media_Signal // Pending

DEPLOYMENT_IN_PROGRESS

SYSTEM_LOG: The visual documentation for Reliable map interactions at scale is currently being structured and staged for production deployment. Check back for full structural reveal.

for long-term system evolution

Separating ingestion from presentation

Ingestion, querying, and UI concerns are cleanly separated so new data sources or frontend features can be added without destabilizing existing behavior.

Technical_Focus

  • Repository-service-controller layering
  • Explicit API contracts
  • Frontend-backend decoupling

Outcome

The system can evolve safely as requirements grow.

Media_Signal // Pending

DEPLOYMENT_IN_PROGRESS

SYSTEM_LOG: The visual documentation for Separating ingestion from presentation is currently being structured and staged for production deployment. Check back for full structural reveal.

Stack_Manifest

Node.jsPostgreSQLPrismaMapboxReact

Explicit tradeoff

"Rather than optimizing for instant demo data or client-side fetching, ACRIS Explorer prioritizes correctness, durability, and production-safe ingestion, accepting additional backend complexity to ensure long-term reliability."

Build_Verified