Overture data pulled
57 GB
580.8M rows across 13 themes
Active sources
14 + Overture
3 dropped → obsolete_data/
Files scaffolded
128
across 5 v1 subtrees
Time to demo
4 weeks
TVS, KA + TN + MH
runnable works today
stubbed shape only, fill week 2-4
data on disk ready to ingest
data/ 14 + Overture
Foundational data on disk, ~64 GB total.
- data 06b_overture: 4.9M places, 503.8M building footprints, 30M road segments
- data 16 PhonePe Pulse + 11 Black Marble + 13 SIAM TVS + 14 HRSL cohorts
- data 01 LGD spine: 689k villages, 22k municipal bodies
- data 10 India Post pincode dir: 155k pincodes
- moved WorldPop, PPAC, AGMARKNET →
obsolete_data/
frontend/ 31 files
Vite + React 19 + TS + Tailwind + shadcn + Mapbox GL JS 3.x.
- runnable Three-screen routing (Explore / Adjust / Activate)
- runnable Mapbox light-v11 centered on Bengaluru
- runnable Madison theme tokens (Shiraz, Jet, Penn, Gold)
- runnable Adjust: live axis-weight sliders + JetBrains-Mono formula + Gold sum-to-100
- stubbed Real API + PMTiles + score logic — week 3
backend/api/ 14 files
FastAPI + Pydantic v2 + Supabase JWT auth. Port 8001.
- runnable 6 routers mounted under
/v1 - runnable JWT verification + RLS-bound Supabase client per request
- stubbed Every endpoint returns shape-correct placeholders
- stubbed Real queries land week 2
backend/worker/ 12 files
Cloud Run Jobs · Polars + DuckDB + rasterio.
- runnable argparse dispatch:
python -m worker <job> - stubbed brand_recompute: Polars structure end-to-end
- stubbed cluster_build: DuckDB+spatial opens Overture buildings parquet
- runnable export_generate: Meta CSV + Google list + raw CSV writers
- stubbed 14 source ingestion stubs (one per data source)
backend/magent/ 12 files
Gemini 3.1 Flash via google-genai SDK. Port 8003.
- runnable 8 tools w/ Pydantic input/output models + JSON Schema export
- runnable Safety: rate limit (100/user/day) + brand-id assertion
- stubbed Tool handlers return placeholder data
- stubbed Live Gemini calls land week 4
migrations/ 8 SQL
Forward-only Supabase Postgres migrations.
- runnable 0001 PostGIS + pgvector + pgcrypto
- runnable 0002 Geography (state/district/subdistrict/town/pincode/cluster)
- runnable 0003-0005 Signals + brand_poi + brand workspace
- runnable 0006 GIST + B-tree + ivfflat indexes
- runnable 0007 RLS — brand_membership as gatekeeper
- runnable 0008 Seed: KA/TN/MH + auto.two_wheeler + TVS
pipeline/ 16 sources
Per-source README + pull + normalise.py + requirements.
- runnable 06b_overture/pull.sh — already pulled 57 GB India
- runnable 11_nasa_blackmarble/monthly.sh — ready for cron
- runnable 16b_npci/playwright/ — Playwright scaffold for UPI scrape
- stubbed 13 other source ingestion scripts
infra/ 13 .tf
Terraform for GCP asia-south1.
- runnable Cloud Run × 2 services + 4 worker jobs
- runnable GCS
pulsemapbucket — public-read scoped totiles/* - runnable Secret Manager × 5 (Supabase, Gemini, Mapbox, NASA, PhonePe)
- runnable Cloud Scheduler × 2 (quarterly foundation + monthly Black Marble)
- runnable Monitoring alerts + Artifact Registry
categories/ + brands/ 3 YAMLs
Source of truth for axis weights and brand overrides.
- runnable categories/auto_two_wheeler/default.yaml — 4 axes, 14 components
- runnable categories/auto_two_wheeler/use_cases.json — 10 use cases (5 in v1)
- runnable brands/tvs/config.yaml — Position axis override w/ tvs_share invert
docs/ 6 files
- PULSEMAP_v1.md — canonical plan (root)
- CLEANING_DECISIONS.md — drop list, executed
- UI_ARCHITECTURE.md — v0 KA-only build
- HHI_METHODOLOGY.md — RWI → rupee anchor
- Data sources report (xlsx)
02 / Live demo — legacy v0 KA Mapbox console
(reference build at
legacy/app_v0/; new frontend/ needs pnpm install && pnpm dev)
localhost:8787/legacy/app_v0/
03 / What unblocks the v1 demo
The scaffolding is in place. To start running real services, we need:
# 1. Install Node toolchain — unblocks frontend dev brew install node pnpm # or use nvm cd frontend && pnpm install && pnpm dev # 2. Install Python toolchain — unblocks backend services brew install python@3.12 cd backend/api && python3.12 -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt && uvicorn main:app --reload --port 8001 cd backend/magent && ... uvicorn main:app --reload --port 8003 cd backend/worker && ... python -m worker --help # 3. Provision Supabase + run migrations supabase init && supabase db push # applies migrations/0001..0008 # 4. (Optional) gcloud + Terraform — provision Cloud Run for production cd infra && terraform init && terraform plan
Per the v1 plan: week 1 = Supabase + foundational data ingestion. Week 2 = backend logic + scoring. Week 3 = frontend wiring. Week 4 = mAgent + use cases + demo polish.