A weekly data hygiene desk for the gaps in your CRM

See exactly how many contacts and accounts are missing the fields that matter, fix them in place, and watch completeness climb week after week.

App
General Input CRMInternet SearchSalesOperationsLead EnrichmentResearch & Monitoring
PromptCreate

Build me a data hygiene desk for our General Input CRM. Whoever owns RevOps opens it once a week, sees exactly where our records are thin, fixes what they can in place, and hands the rest to a research assistant whose output they review before anything is written back. It is one app: a scoreboard landing screen with drill-in tables behind each tile.

The landing screen is a gap scoreboard. Each tile is one field that actually matters to us, showing the number of records missing it and a completeness percentage (records with the field filled divided by records in scope). For people the tiles are: no job title, no linked company, and one tile per custom field that sits empty on a meaningful share of records. For companies: no industry, no domain or website, and the same treatment for company custom fields. Discover the custom fields by calling List Custom Fields for both the person and company entity types so the tiles reflect our real schema instead of a hardcoded list.

Count the gaps with Search People and Search Companies rather than pulling the whole database down. Both expose per-column filter conditions and facets, so build a filter condition per gap (field is empty) and read the facet counts to get the tile totals. Only fetch actual rows when someone opens a tile, and page through those with keyset pagination by passing the prior response's nextCursor as cursor until it comes back null.

Clicking a tile opens a fixable table of the records in that gap. Show the identifying columns (name, email, company) plus the gap field itself, and let the person edit the gap field inline in the row. Saving a row calls Update Person for people and Update Company for companies, passing expectedUpdatedAt for optimistic concurrency. If the write comes back as a conflict because the record moved underneath us, refresh that row and show what changed instead of silently overwriting someone else's edit.

Every row has a checkbox. With rows selected, show a bulk action bar: set the same value across the selection, or mark the selection reviewed. Bulk saves go through Update People, which is the batch enrichment endpoint built for exactly this, and Update Companies for the company tables. Both apply each item independently and return results in input order, so surface per-row success and failure rather than one all-or-nothing toast.

Clicking a company row opens a detail panel built from Get Company plus List Company People, so someone can see the contacts hanging off a thin account before deciding how to fix it. An account with fifteen people attached and no industry set is worth fixing carefully; one with nobody attached may be worth leaving alone. Let them edit company fields from that panel too, and let them jump from any listed person straight into that person's row.

Add a Research and fill button above the table that acts on the selected rows and kicks off a background agent. For each selected record the agent looks the person or company up with Internet Search Search the Web, using whatever identity we already have (person name plus company, or company name plus domain), reads the results, and proposes a value for each empty field it can actually support. It must propose field by field, attach the source link and a one-line reason to each proposed value, and skip any field it cannot support rather than guessing. Nothing it produces goes near the CRM on its own.

Agent output lands in an approval diff inside the app. Each line shows the record, the field, what the CRM holds now (usually empty), what the agent proposes, and the source behind it. A human accepts or rejects each individual change, not the record as a whole, so they can take the job title and reject the industry. Accepted changes are collected and written with Update People or Update Companies in one batch when they hit apply. Rejected changes are discarded and remembered so the agent does not re-propose the same value next week. Make this structural: there is no code path anywhere in the app that writes agent output to the CRM without a human accept.

Once a record has been worked, stamp it so it does not resurface. On first run, create a tag with Create Tag (something like Hygiene reviewed) and reuse it from then on, then use Assign Tag on the reviewed records, which accepts one or more people or companies at a time. Default every gap table to excluding records carrying that tag, with a toggle to show them again, so next week's open only surfaces records nobody has looked at. Records that get emptied again or created fresh come back into the queue naturally.

Track completeness over time. Every time the scoreboard is computed, save a dated snapshot of each tile's count and percentage in the app's own storage, then show a small trend line on each tile plus a history view of the whole scoreboard week over week. The point of the ritual is that the team can see hygiene actually improving instead of taking it on faith.

Design it for the weekly open. Land on the scoreboard with the biggest gap first, show when the numbers were last refreshed with a refresh button beside them, and keep the path from tile to fixed record short. Show progress while the background research runs and let the person keep working other tiles in the meantime. Anyone on the revenue team can open it and they all see the same numbers and the same reviewed tags; there is no per-person queue. Empty states matter: when a tile reaches a hundred percent, say so and keep it on screen so the win is visible.

What does this prompt do?

  • Counts the records missing the fields you care about and shows each gap as a tile with a completeness percentage, so you know how bad it is before you start.
  • Every tile drills into a table you can actually fix: edit a row in place, or tick a hundred rows and correct them in a single pass.
  • A Research and fill button sends an assistant to look each record up on the web and propose values, which land in an approval screen where you accept or reject every single change.
  • Records you have already reviewed get tagged so they stop showing up next week, and each week's completeness score is saved so you can see hygiene improving.

What do I need to use this?

  • A General Input workspace with CRM access turned on
  • Someone who owns the weekly cleanup, usually whoever runs revenue operations
  • A short list of the fields that actually matter to your team, such as job title, industry, website, and any custom fields you rely on
  • Nothing else to buy: web research is built in

How can I customize it?

  • Choose which fields count toward completeness, including any custom fields your team has added.
  • Rename the tag put on reviewed records, or change how long a reviewed record stays out of the queue before it comes back around.
  • Point the scoreboard at a segment instead of everything, such as accounts added in the last 90 days or contacts owned by one rep.
  • Switch the rhythm from weekly to monthly if your database moves more slowly.

FAQs

Will the assistant change my CRM records on its own?
No. Everything it finds lands in an approval screen first, one proposed value at a time, with the source it came from. You accept or reject each change individually, and only the ones you accept are ever saved. There is no setting that lets it write straight through.
Does this work with our custom fields?
Yes. The app reads your custom field definitions for both people and companies, so an empty custom field shows up as a gap tile alongside the standard ones. You pick which fields count toward the completeness score.
What stops the same records coming back every week?
When you finish working a record it gets tagged as reviewed, and the tables hide tagged records by default. Next week's open only shows you what nobody has looked at yet, with a toggle to bring the reviewed ones back if you want them.
Can I fix a lot of records at once?
Yes. Every row has a checkbox, and once you have a selection you can set the same value across all of them and save in one pass. Each record is applied independently, so one bad row does not undo the rest.
How do I know the data is actually getting better?
Every time the scoreboard runs, the count and percentage behind each tile is saved with a date. Each tile carries a small trend line, and there is a history view showing the whole scoreboard week over week.

Related templates

Build outbound segments and draft a sequence for every person

Narrow your lead database to the right people with live filter counts, save the segment, and let an agent write each person a personalized email sequence draft.

General Input CRM
Internet Search
App
Weekly pipeline review board that captures every commitment

Walk your pipeline rep by rep on one board, see why each deal stalled, and end the meeting with dated commitments both sides can check next week.

General Input CRM
App
Turn new GoHighLevel bookings into rep-ready pre-call briefs

When someone books a call, we research them, pull up what your team already told them, and hand the rep a brief in Slack and on their calendar.

GoHighLevel
Google Calendar
Slack Bot
+1
Agentic Task
Daily Salesloft meeting prep briefs in your inbox at 7am

Every weekday at 7am, get one email with a one-page brief for each meeting booked in Salesloft that day, plus a short version saved onto every contact.

Salesloft
Salesforce
Internet Search
+1
Agentic Task
Weekly stale deal rescue with per-owner Slack shortlists

Every Monday, find stuck deals across your CRM pipelines, draft a specific next move for each, and DM every owner their top five.

General Input CRM
Gmail
Slack Bot
Agentic Task
Turn Typeform demo signups into scored CRM leads with Slack alerts

Every new demo or contact form response gets researched, scored against your ICP, deduped into your CRM, and pushed to sales in Slack within minutes.

Typeform
General Input CRM
Slack
Agentic Task

Stop guessing how bad your CRM data is.

Open one screen, see every gap with a real number next to it, and fix the records that matter without exporting a spreadsheet.