Attio is fast to set up and just as fast to drift. Company descriptions get written three ways across teams, the segment and industry attributes wander, person bios go stale, and the deal notes on your target-account list never quite say the same thing twice. Cleaning it up means opening one record at a time, and the built-in tooling stops reading well before you reach the bottom of the list.
Scratch pulls your Attio workspace down as files on your computer, one record per file. Your AI reads and edits every record, not the first few hundred, about 10x faster than it works over an API because it reads the files directly instead of making a call per record. Every change comes back as a word-level diff next to the original, and nothing syncs back until you approve it, per record. Scratch is the companion app to Whalesync: tidy the records up here, then let Whalesync keep them in sync once they are clean.
What Scratch edits in Attio
- Company records: description, segment, industry, custom attributes
- Person records: bio, title, role, custom attributes
- Deal records: name, notes, custom attributes
- List entry attributes (deal stage, list-specific custom fields)
How it works
- Scratch pulls your Attio workspace into files. Company, person, and deal records come down to a folder on your laptop, one record per file, along with the list entries that point at them. The list structure itself, meaning list names, list ownership, and list visibility, stays read-only. Only the entries inside a list move.
- Your AI edits the fields you point it at. Open the folder in the agent you already use. The AI rewrites the prose, the description, the bio, the deal notes, and updates the editable attributes like segment, industry, role, and list-specific custom fields. Try a prompt on one list, then let it run across the rest. The AI edits the files, never the live workspace.
- You review every diff and write back. In the Scratch desktop app, each changed attribute shows next to the original, word by word. Validators check length caps and required attributes as you go. Approve what looks right, and Scratch syncs only the records and only the fields you approved back through the Attio API. Untouched attributes are left exactly as they were.
What teams use it for
- Standardize company descriptions across every account so the records read the same way.
- Normalize the segment and industry attributes across the whole workspace.
- Tighten person bios, titles, and roles that went stale over a quarter.
- Clean up deal notes and names before a pipeline review or a handoff.
- Reconcile attributes after a migration into Attio, so the workspace matches the source again.
- Dedupe and align records inside your target-account list before the rest of the workspace.
Why not let AI write straight to Attio?
A direct API write or an MCP server hands the AI the publish button straight to your live workspace, and it is the slow path on top: every record is an API call, and on a real workspace it falls over. There is no diff, no review queue, no rollback. One confident bulk pass rewrites every record at once, can trip the automations watching those attributes, and skews any reporting built on segment or stage. By the time you catch the bad edit it is already live, and the original is often gone.
Scratch gives the AI the same access, but against a local copy. The write-back step is pulled out and handed to you. The AI can change anything in the copy; only you commit it, you keep the publish button, and Scratch syncs back only the attributes you changed. Every published record is reversible on its own, so a hygiene pass is never a one-way door.
What's safe, and what's locked
The list structure itself, meaning list names, list ownership, and list visibility, stays read-only. Only the entries inside a list move. You bring your own AI: Scratch holds no AI credentials and runs no model, so you sign into Claude, Claude Code, Codex, Cursor, Copilot, Cline, or Windsurf the way you already do. Nothing leaves your machine until you publish. Scratch syncs back only the attributes you changed, so untouched attributes are left exactly as they were, and locked or never-touch fields you flag are stripped before write-back. Every published record is reversible per record, and optional Python validators, which the AI can author, check length caps and required attributes next to the diff. Scratch is SOC 2 compliant.
Questions Attio teams ask
Will a bulk pass fire automations or skew my reporting?
Edits in the local copy fire nothing and change no report. When you approve a record, Scratch syncs it back like any normal update, so an automation watching that attribute can fire, the same as a manual edit would. The difference is that you choose which records write back, instead of one bulk pass tripping every automation at once and skewing reporting built on segment or stage.
Will it change my lists or list structure?
No. List names, list ownership, and list visibility stay read-only. Only the attributes on the entries inside a list move, like deal stage and list-specific custom fields. The structure you built is left exactly as it was.
How do most teams roll this out?
Most teams start with one list, usually their target accounts, and pull the rest once they trust the round-trip. You feel the full loop, pull to files, let the AI edit, review the diff, write back, on a list you know well before you point it at the whole workspace.
Can I undo a sync after it wrote back to Attio?
Yes. Every written record is reversible from Scratch, per record. Roll back one record or the whole run, and Scratch restores the original for you to publish. A cleanup pass is never a one-way door.
See it on your own Attio
Start with one list, feel the loop, then pull the rest once you trust the round-trip.