You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(crm-starter-export): importer survives contact with reality — rate pacing, no company xLink, domain-dupe retry, attach-repair
Three live-run findings fixed:
- Twenty rate-limits at 100 req/60s (77 people 429'd on run one) — every
call is paced at 650ms with a 61s sit-out on 429; idempotency made the
retries free.
- This instance's company object has NO xLink field (8 companies 400'd)
— X URLs stay in augment-it.
- The Koch siblings share standtogether.org and tripped duplicate
detection — duplicate-on-domain retries without domainName; the slug
is the identity that matters.
Plus an attach-repair pass: people created while their company's create
had failed get companyId filled ONLY when null — additive, never
clobbering an attach made in the app.
Final state: 82 companies + 108 people live in reach-edu's Twenty, 15
attach-repairs, zero failures on the final pass.
Files changed:
- scripts/import-crm-starter-to-twenty.mjs
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RW28dw3kQAKXr2ZNefCukE
if(repaired)console.log(`attach-repair: ${repaired} people gained their company (null-only fill)`);
305
346
console.log('\nVERIFY: spot-check five companies for link fidelity, three multi-affiliation people, then re-run this script — it should report 0 to create (the external-id round-trip proof).');
306
347
if(args.withOpportunities){
307
348
console.log('⚠ --with-opportunities: NOT implemented until the operator rules opportunities-vs-company-fields at dry-run review.');
0 commit comments