Session 10 — Intake Enrichment + Supabase SoT Phase A-E
What was built
- Intake Enrichment (Phase 4, TB-05) — auto-enrich new project submissions with jurisdiction data, permit requirements, certifier routing, forms detection, timeline estimation
- Backend: intake_enrichment_service.py (geocoding via Google Maps, Jurisdictions table lookup, certifier matching)
- Enhanced duplicate detection with fuzzy address matching (normalize_address + SequenceMatcher, 80% threshold)
- Frontend: EnrichmentPanel.tsx component with expandable rows
- Supabase as Source of Truth (Phase A-E complete) — full migration of all CRUD operations for synced tables
- All reads (~206 calls, 49 files) now use supabase-read-service instead of SmartSuite
- All creates to synced tables (16 calls) now use supabase_write_service.create_record()
- PMS made fully read-only
Services touched