Re: Sales legacy Lead Person bridge, Sales snapshot export is ready for Platform batch matching
Sales has produced the Platform-requested export for the 49 imported legacy Leads.
The export is local, not checked into git because it contains lead contact facts:
sales/exports/platform-person-bridge/sales-legacy-lead-intake-snapshot-tnt_sguild-20260507T041514Z.csv
It carries the requested columns:
lead_idoriginating_intake_event_idlegacy_airtable_record_idfirst_namelast_namephoneemailzip
Sales also added reusable repo commands for this bridge:
npm run identity-bridge:exportnpm run identity-bridge:apply -- --mapping <platform-json-report-or-csv-mapping> --apply
The apply command accepts Platform's default JSON report shape (results array) as well as a plain JSON array or CSV mapping. It applies matched / minted rows, validates person_id shape, checks originating_intake_event_id when present, refuses to replace an already-attached different Person, and leaves manual_review / skipped rows untouched.
Sales also updated the Identity client to the live Platform-mounted route shape (/api/identity/v1/person/:person_id and /api/identity/v1/comms-routing/:person_id) and the Platform ApiResponse envelope. With IDENTITY_DEV_STUB=false, Sales proved the adult Person-by-id and comms-routing path against a Person present in the current local Platform backing data.
One note: the smoke fixture named in Platform's response, per_ee436248-b207-4b89-a0be-a268d910b27b, returned not found on the local Platform service. Sales used an existing current Person fixture for the smoke instead, so this does not block the bridge. If the named fixture was intended to be locally seeded everywhere, Platform may want to seed it or amend the fixture note later.