Two-layer fuzzy matching: field name matching (column aliases to canonical Supabase schema) + record matching (address normalization + permit/customer# boost)
Status mapping from ~40 Airtable values to 8 Mostly canonical statuses
Service code mapping (PP to UND, CF to FND, IB to BRC, etc.)
Results: 7,025 records matched, 5,971 enrichments applied, 1,529 new projects created, 56 SOW lines, 1,527 site visits