Prereq: read first — JSONL piping, dry-run/digest, history, and rate-limit hygiene live there. This skill is the upsert-by-natural-key workflow on top. The core move: upsert, not search-then-create reads JSONL on stdin and creates-or-updates each row in one CLI call (the CLI batches 100 rows per API request), keyed by a property (email for contacts, domain for companies). No race window, no branching. Do not loop → empty? → . Per line in: Per line out: or . Order matches input. The CLI adds no fields of its own — is the raw batch-upsert API result row. CSV/JSONL → upsert stream Reshape with ,…