Crm field audit
@revopslab/crm-field-audit
Audit the fields in any CRM export (HubSpot, Salesforce, or other CSV). Reports fill rates, placeholder junk like n/a and unknown, top values, and flags empty, sparse, constant, default-heavy, and likely duplicate fields, plus fill rates by owner or team. Ends with a cleanup plan: what to hide, merge, make required, or fix.
- Activity
- New: be the first to try it
- Installs
- 0 installs
- Likes
- 0 likes
- Clones
- 0 clones
What it makes
Real output from this kit
- Sample file8 KB, download to openField auditFrom the kit's tests
- Sample file2 KB, download to openField auditFrom the kit's tests
- Sample file1 KB, download to openField auditFrom the kit's tests
How this works
- It is a skill: written instructions Claude reads when your request matches what the skill is for. You do not call it by name; just ask for the task.
- While it works, it reads and changes files in the places it lists, nowhere else.
- It runs these commands on your computer: node scripts/field-audit.mjs.
- Nothing runs until you choose to use it, and you can remove it any time.
SKILL.md
CRM field audit
Every CRM collects fields nobody fills in. This kit measures what is really used, from an export, and turns it into a short cleanup plan. It never changes the CRM.
When to use
- Before a CRM cleanup, migration, or new reporting project.
- When reps complain about too many fields, or reports have holes.
- To check whether a required field is really being filled, and by whom.
- Not for deduplicating records (that is a different job) and not for deleting fields.
Inputs
An export with all columns at
data/<object>.csv, one object per file (contacts, companies, deals or opportunities, tickets).- HubSpot: export the view with "All properties" selected.
- Salesforce: a report with every field you care about, or a Data Loader export.
- Use a recent, representative slice (for example records created in the last 12 months) so old imports do not skew the result. Ask which.
- Optional: the key fields the business depends on (
--key-fields "Industry,Amount,Owner"), and a group column to compare fill by owner or team (--group-by "Owner").
Steps
- Confirm the object, the time slice, and the key fields with the user.
Run:
node scripts/field-audit.mjs data/companies.csv --group-by "Owner" --key-fields "Industry,Employees,Owner" --sparse 10 --out out --name companies-field-auditRead
out/<name>.json. Flags mean:empty: nothing in it.sparse: filled on under--sparsepercent of records (default 10).constant: one value everywhere. Often a default or a field only one integration writes.default_heavy: one value is 90% or more of filled records. The default is doing the work, not people.placeholders: 5% or more of records hold n/a, unknown, tbd, test, and similar. These are counted as empty.possible_duplicate: similar names, or the same value on 95% or more of rows where both are filled.
- Write
out/<name>-plan.mdwith the plan format below. Group fields into: hide or archive, merge, fix the default, make required or automate, keep. - Present the summary and the plan. For anything in "hide or archive", remind the user to check workflows, reports, and integrations that use the field before removing it.
Output format
# Companies field audit (12 records, 14 fields)
| Action | Fields | Why |
| --- | --- | --- |
| Hide or archive | Legacy Score | Empty |
| Merge | Industry (Custom) into Industry | Same value on 10 of 10 rows |
| Fix the default | Lifecycle Stage | 91.7% "Lead" |
| Clean values | Original Source | 5 of 12 are n/a or Unknown |
| Make required or automate | Annual Revenue | Key field, 33% filled: enrich it |
Fill by owner: Rep C 68.8% average vs Rep A 87.5%.Guardrails
- Read-only. Never delete, hide, or edit fields or records. The plan is a recommendation for the CRM admin.
- A low fill rate can be correct (a field only for one segment). Ask before calling it unused.
- Exports contain personal data. Show field-level stats only; do not paste rows.
README.md
CRM field audit
Finds out which CRM fields are actually used. From one export it measures fill rates, spots placeholder junk, and flags empty, constant, default-heavy, and duplicate fields, then writes a cleanup plan.
Who it is for
RevOps and CRM admins on HubSpot, Salesforce, or any CRM, planning a cleanup, a migration, or better reporting.
Example
Input: examples/companies.csv (12 companies, 14 fields), grouped by Owner.
Output (out/field-audit.md):
| Field | Fill | Top value | Flags |
|---|---|---|---|
| Legacy Score | 0% | empty | |
| Partner Tier | 8.3% | Gold (100%) | sparse |
| Original Source | 50% | Organic search (33.3%) | placeholders |
| Industry (Custom) | 83.3% | Retail (30%) | possible_duplicate |
| Lifecycle Stage | 100% | Lead (91.7%) | default_heavy |
| Region | 100% | NA (100%) | constant |
Plus fill rate by owner and a plan: archive, merge, fix defaults, enrich.
What it can access
- Runs
node scripts/field-audit.mjs(Node built-ins only, no network). - Reads
data/(plus the kit's ownexamples/), writesout/.
Setup
None. Export the object with all columns to data/.
Files
- README.md
- SKILL.md
- examples/companies.csv
- kit.json
- scripts/field-audit.mjs
Did it work?
0worked for them0did not work
Sign in to say whether it worked for you.
Nobody has said yet. Tried it? Tell the next person.
