anfloy.AcademyBook a call

Internal Ops · 02 · Ops workflows & documentsLesson 3 of 4

Data hygiene between systems

60 min working time · Weeks 7-8

By the end of this lesson you can
  • Clean and reconcile data across your tools
  • Build the recurring janitor jobs nobody has to remember

The unglamorous win

You leave this lesson having reconciled two of your real systems and fixed mismatches that have been quietly wrong for months. Every company over ten people has the same problem: the CRM, the billing tool, and the email platform each hold a slightly different version of reality. Duplicate companies, stale contacts, a customer who churned in Stripe but is still "active" in the CRM. Nobody owns reconciling it, because reconciling it is miserable.

This is one of Claude Code's strongest non-engineer uses - Anthropic's own finance staff describe exactly this pattern: describe the comparison you need in plain language, point at two exports, get the reconciliation out. The work is mechanical pattern-matching at a volume humans hate and Claude does not.

The shape of every hygiene job is identical: export from both systems, compare by deterministic rules, output a review file, and only then - after a human approves - apply changes. You will encode that shape once as a skill and reuse it for every pair of systems you own.

The data-clean skill

The skill encodes two things: your matching rules and your safety rule. Matching runs in strict order - domain match first (strongest), then exact email, then fuzzy company name (weakest, always flagged for review rather than auto-matched). Claude writes the actual comparison as a small Python script into scripts/, so the matching is deterministic and inspectable, not vibes.

  1. Export the same entity from two systems - say companies from the CRM and customers from billing - as CSVs into a working folder.
  2. Create .claude/skills/data-clean/SKILL.md encoding the matching order (domain > email > fuzzy name) and the output format: a merge-review CSV with one row per proposed change and a confidence column.
  3. Run it. Read the review CSV - actually read it, every row, the first time.
  4. Mark rows to apply, then have Claude apply only the approved ones back to the source system (or hand the CSV to whoever owns that tool).
  5. Commit the skill and the script. Next month the same job is one command.

Airtable and structured-data sources

If Airtable is one of your systems, it has an official MCP server (documented on support.airtable.com) that respects your existing base permissions. Airtable also publishes downloadable agent skills - airtable-overview and airtable-filters - a vendor shipping skills in the same open standard yours use. Install those alongside your own: same habit as everywhere, when a vendor ships an official skill, start there and adapt rather than building from scratch.

The classic Airtable hygiene run: "Find duplicate companies in the CRM base and propose merges as a CSV for my review." Same shape as before - the MCP makes the export step live instead of manual, and the review-CSV rule still applies. Airtable also pairs well with intake: a form drops a record, Claude enriches the missing fields from web research, a human approves the enrichment.

Which model does the bulk work

Hygiene jobs are where an ops team first meets real token volume: classifying 10,000 rows, normalizing titles, tagging companies against an ICP. Inside a Claude Code session that runs on your subscription, and the skill can pin model: haiku for it. The moment the job is unattended (a script, a cron, a deployed service) it runs on a metered API key, and the routing rule decides the bill.

  • Default bulk to Haiku 4.5: $1 input / $5 output per million tokens as of September 2026, and $0.50 / $2.50 on the Batch API (50% off, fine for anything that can wait up to a day). Cache the system prompt; cached reads cost $0.10. Our own qualifier runs a competitor-or-buyer judgment on Haiku 4.5 with a cached prompt; an early run scored 2,603 people for $0.80, about $0.30 per 1,000.
  • Haiku 4.5 is the only current Haiku and its published retirement floor is October 15, 2026. Use the haiku alias or check the models page before hardcoding an ID into a script that will run for a year.
  • Reserve Sonnet 5 ($2 / $10) for rows that need reading comprehension, and Opus 5.5 ($4 / $20) or Fable 5.1 ($10 / $50) for the judgment step that decides money or relationships. Never for the bulk pass.
  • Cheap open models through a router like OpenRouter (DeepSeek, GLM-5.3, MiniMax) are legitimate for one class of step: bulk, stateless, schema-checked, no tools, nothing a prospect or client will read. Compare them against the cheapest Claude option, not the default one: GLM-5.3 at $1.40 / $4.40 plus the router's 5.5% fee is about the price of live Haiku and more than Batch Haiku. Our own qualifier moved to GLM in June 2026 and saved a lot against the Sonnet it replaced; against cached Haiku 4.5 it would not have.
  • Never point Claude Code itself at a non-Claude model. Anthropic's docs say Claude Code does not support routing to non-Claude models through any gateway. The cheap route is for your own scripts, with a JSON schema enforced and every row validated.
  • Privacy is the gate, not the price. DeepSeek's first-party API stores personal data in the PRC and uses it for training with an opt-out. If a row holds client or candidate data, use a US host of the same open weights or a router setting that enforces zero data retention plus a provider allowlist, check the client's contract, and default to Claude when in doubt.
  • Price on measured output tokens, not the rate card. We estimated a swap from Opus 5 to Sonnet 5 at 40% cheaper per token and measured 10% ($0.177 versus $0.196 per company): the cheaper model wrote far more output, and output costs five times input. Turn reasoning off for classification, run 50-100 real rows through both, compare the bill.
  • Record provider and model on every usage row. Our spend roll-up priced every qualifier call at one model's rates while the default route was another; the dashboard's LLM cost line was wrong by the ratio of the two price cards.

When n8n or Zapier is the right answer

Not every recurring data job belongs in Claude Code. The honest rubric:

  • Claude Code skill or script - when the work needs judgment, variable inputs, or document generation, or it lives next to the brain repo. Most hygiene jobs at your size.
  • n8n or Make - when the hard part is running the identical flow thousands of times with retries, queueing, and credential management. High-volume, deterministic, revenue-touching pipelines.
  • Zapier (and Zapier MCP) - quick glue for small teams, and the long-tail bridge to roughly 8,000 apps when a tool has no MCP of its own.
  • The hybrid that wins in practice: deterministic transport in n8n or Zapier, with one step calling claude -p (or firing a Routine) for the reasoning-heavy middle. Module three shows the mechanics.

Do this now

Sources and further reading

We set it up with you

Want us to set it up with you, end to end?

Three one-on-one sessions. We train you on your real stack and build your first agents together, until you can run it yourself. You keep everything.