Human operators phone-verify hospitals along the NH48 Chennai→Chengalpattu corridor and record outcomes in data/corridors/nh48_verification.csv. The merge script scripts/verify_pois.py applies CSV rows to data/emergency_seed.db.
Related docs: POI trauma tier rubric · Phase C spec
- Python 3.11+ and repo checkout
- OSM ingest completed (see Overpass 406 note below):
python scripts/ingestCorridors.py --bbox-json data/corridors/nh48_bbox.json --mode demo --min-pois 50 --out data/emergency_seed_raw.db - Spreadsheet or text editor for CSV edits
- Tamil/English phone script (below)
If ingest prints HTTP Error 406: Not Acceptable, update to latest scripts/ingestCorridors.py (sends User-Agent + form-encoded data= body, retries mirror). Success looks like: Overpass OK via … and Fetched N hospitals from OSM.
| Column | Description |
|---|---|
osm_id |
Must match emergency_nodes.id in SQLite (OSM id string, or legacy demo id like t1) |
canonical_name |
Display name after verification |
phone |
ER main desk number; leave empty if unverified |
trauma_tier |
1, 2, or 3 per rubric |
verified |
1 if phone confirmed; 0 otherwise |
verifier |
Volunteer initials |
verified_date |
ISO date YYYY-MM-DD |
notes |
Call outcome, website URL, etc. |
After OSM fetch, export ids:
python -c "import sqlite3; c=sqlite3.connect('data/emergency_seed_raw.db'); print('\n'.join(f'{r[0]},{r[1]}' for r in c.execute('SELECT id,name FROM emergency_nodes ORDER BY name LIMIT 60')))"Append new CSV rows for each real hospital. Do not invent pad-* ids.
Namaste, I'm calling from an IIT Madras RoadSoS research team. We're building an offline navigation research app for highway emergencies — not a government registry. Could you confirm whether this number reaches your 24×7 emergency or casualty desk? We will not publish personal numbers publicly without consent.
Record: who answered, department, whether number is correct, trauma capability (see rubric).
Follow POI_TRAUMA_TIER_RUBRIC.md. Never assign tier 1 without explicit trauma/ER confirmation.
After ingestCorridors.py writes data/emergency_seed_raw.db, expand the verification sheet with real OSM ids:
python scripts/bulk_map_osm_csv.py --db data/emergency_seed_raw.db --csv data/corridors/nh48_verification.csv
Copy-Item data/emergency_seed_raw.db data/emergency_seed.db -Force
python scripts/verify_pois.py --db data/emergency_seed.db --csv data/corridors/nh48_verification.csv --min-verified-phones 0
node novadrive-mobile/scripts/generate-facilities-seed.mjs --db data/emergency_seed.dbLegacy demo ids (t1, h1, …) are fuzzy-matched to OSM names on the first run; re-runs preserve rows already keyed by numeric OSM id. Use --min-verified-phones 0 until Task 6 reaches ≥40 verified phones.
Goal: ≥40 rows with verified=1 and non-empty phone in nh48_verification.csv.
python scripts/verification_status.py
python scripts/verification_queue.py --limit 20Researched official lines live in data/corridors/nh48_public_phone_candidates.json.
# Fill phones only — still needs call to set verified=1
python scripts/apply_phone_candidates.py --mode candidate
# Research prototype: mark official-site lines verified (verifier=web-official)
python scripts/apply_phone_candidates.py --mode website-officialHonesty: web-official means the number appears on a hospital or .gov.in listing — not a live ER desk confirmation. For production, follow up with the call script below and use record_verification.py with your initials.
python scripts/record_verification.py --osm-id 310732936 --phone 044-28364951 --verified 1 --verifier AB --trauma-tier 2 --notes "ER desk confirmed 24x7"Use real osm_id / phone / initials — no angle brackets (<ID> breaks PowerShell).
Copy-Item data/emergency_seed_raw.db data/emergency_seed.db -Force
python scripts/verify_pois.py --db data/emergency_seed.db --csv data/corridors/nh48_verification.csv --min-verified-phones 0
node novadrive-mobile/scripts/generate-facilities-seed.mjs --db data/emergency_seed.db
cd novadrive-mobile; npm test -- facilitiesDb.test.tsAdd --min-verified-phones 0 until status shows 40/40; drop it once the production gate passes.
Un-skip the ≥40 verified facilities test in facilitiesDb.test.ts when verification_status.py reports target met.
Each week (or after a verification session):
cd C:\Users\storm\roadsafetyhackathon
python scripts/verify_pois.py --db data/emergency_seed.db --csv data/corridors/nh48_verification.csvEarly weeks: expect FAIL on verified phone count — continue calling.
When merge passes:
python scripts/ingestCorridors.py --bbox-json data/corridors/nh48_bbox.json --mode production --min-pois 50 --out data/emergency_seed.db
python scripts/verify_pois.py --db data/emergency_seed.db --csv data/corridors/nh48_verification.csv
node novadrive-mobile/scripts/generate-facilities-seed.mjs --db data/emergency_seed.db- ≥50 nodes in
emergency_seed.db - ≥40 rows with
verified=1and non-emptyphonein CSV merged into DB - Zero
pad-*ids in production pack python -m pytest scripts/tests -vgreen- CANON POI honesty row updated (Task 9)
No Tamil Nadu 108 / GVK EMRI sandbox as of spec approval (2026-05-30). Dispatch remains SMS composer + fail-closed HTTP stubs through month 6 per Phase C spec.
(Fill when C1 completes — week 12 checkpoint.)
| Metric | Target | Actual |
|---|---|---|
| Total nodes | ≥50 | |
| Phone-verified | ≥40 | |
Synthetic pad-* |
0 | |
| Completion date | ||
| Known gaps | Facilities outside bbox, unreachable phones |