Langsung ke konten
MSP

// 01

Geo Data Engineering

$81.6M PERMINTAAN TAK TERLAYANI

Analisis Kesenjangan Supply-Demand Taksi NYC

Seven-component GCP pipeline over 35M+ validated trips and 185 zones; PostGIS spatial validation showed that dispatch, not road access, was the bottleneck behind $81.6M in unmet demand.

  • GCS
  • Dataproc
  • PySpark
  • BigQuery
  • dbt
  • PostGIS
  • H3
  • Kestra
  • Terraform
  • Streamlit

// DAMPAK

perjalanan
35M+
zona
185
ADR
56

Problem

Where is a city losing revenue to fleet misallocation, and what does that gap cost? An independent geospatial data engineering study on a full year of NYC TLC trip records (35M+ trips, 185 zones).

Architecture

  • Seven components: GCS → Dataproc/PySpark → BigQuery → dbt → PostGIS on Supabase → Streamlit, orchestrated in Kestra on Docker Compose.
  • Infrastructure provisioned with Terraform and service-account-scoped IAM.
  • A full year of TLC Parquet processed into 35M validated records on ephemeral Dataproc clusters, handling a mid-year schema change through per-file read, cast and union; H3 resolution 8 enrichment.
  • dbt staging, intermediate and mart layers with data tests as regression guardrails.

Key decisions

  • Rate-of-totals instead of average-of-ratios: the naive aggregation would have understated the finding by 30%.
  • PostGIS validation: ST_Within borough checks (181/185 cells matched, surfacing the Marble Hill anomaly) and ST_Buffer transit-hub proximity ($11.4M commuter-exit gap near Penn Station).
  • Road-segment falsification: a join over 72,005 OpenStreetMap drivable segments showed undersupplied zones are not worse served by roads, so dispatch and positioning, not physical access, is the bottleneck.

Results

  • $81.6M in unmet demand quantified; top gaps JFK $26.3M (79% unfulfilled) and LaGuardia $15.0M.
  • 56 architecture decisions documented with explicit trade-offs and rejected alternatives; the limits of the supply proxy are stated, not hidden.