Run a recurring cleanup on new and changed CRM records so the database stops degrading between audits...
A CRM cleaned once is dirty again in a quarter, because the intake keeps producing the same defects. This skill fixes the records that arrived since the last sweep, measures the drift rate, and points at the intake that caused it, so the sweep gets shorter over time instead of longer.
Check these before you run the skill. Nothing outside this table is needed.
| Requirement | Needed | Used for | What it costs you |
|---|---|---|---|
| Read access to your CRM, or an export of the records | Required | The records created or changed in the window | None beyond your existing CRM. |
Missing a required item? Stop before the live steps and tell the user which item is missing and what it is for. Do not run the step without it and do not present an empty result as an answer. Keys are read from the environment at run time and are never written into a file, a prompt or the output.
Before doing anything else, read whichever of these exist at the project root and use them instead of asking the user to repeat themselves:
ICP.mdIf none exist, do the work from what the user gives you, then offer to write the missing file so the next skill in the pack starts warmer.
This skill needs no live data tool. It works from the files, exports and answers you give it, so it runs the same in any agent with no setup.
scripts/check-output.py before you return it.Stop and ask before writing, merging, or deleting any CRM record. Show exactly what will be sent or written, to whom or to which records, and how many. Proceed only on an explicit yes from the user in this conversation. A yes for one batch does not cover the next one.
The window counts, the defect table by type, the automatic fixes applied, the manual list within its cap, the intake attribution, and the drift rate over the last several sweeps.
Save the output to a file and run python3 scripts/check-output.py <file>. The
contract it checks is scripts/output-contract.json.
COMPLETE: return the output.INCOMPLETE: do not present the output as finished. Fill what you can, run
the check again, and if parts stay missing, return the output under the heading
Incomplete with every reason the check printed.crm-auditcrm-dedupe-plancrm-enrichment-refreshShips in the crm-operations-pack pack.