Raw user request follow-up from #111:
Migrate and reconcile historical sponsor organizations, contacts, and newsletter bookings after the CRM MVP is available. Candidate sources include the private ~/tmp/schedule.xlsx Newsletter sheet and public-sensitive transitional sponsor material already present in content/; neither raw source nor real contact values may be attached to a public issue, fixture, log, or commit. The migration must inventory sources privately, define canonical matching/deduplication and conflict-review rules, default to a redacted dry run, use stable source keys, call authenticated CRM APIs, support safe resume/re-run, and produce an ignored local reconciliation report.
This issue needs PM grooming for source authority, date range, archival/retention rules, ambiguous identity review, rollback, operator approval, and post-migration validation. Depends on #111. It must not expand into podcast guest/contact migration.
Raw user request follow-up from #111:
Migrate and reconcile historical sponsor organizations, contacts, and newsletter bookings after the CRM MVP is available. Candidate sources include the private
~/tmp/schedule.xlsxNewsletter sheet and public-sensitive transitional sponsor material already present incontent/; neither raw source nor real contact values may be attached to a public issue, fixture, log, or commit. The migration must inventory sources privately, define canonical matching/deduplication and conflict-review rules, default to a redacted dry run, use stable source keys, call authenticated CRM APIs, support safe resume/re-run, and produce an ignored local reconciliation report.This issue needs PM grooming for source authority, date range, archival/retention rules, ambiguous identity review, rollback, operator approval, and post-migration validation. Depends on #111. It must not expand into podcast guest/contact migration.