Turn stale CRM deals into a cleanup list your reps can finish

The close date was Wednesday. It’s Friday, and the deal is still open.
The next-step field says “follow up.” A meeting note says the buyer is waiting for a security questionnaire. Somewhere else, a report says the account hasn’t been active for three weeks.
You could ask every rep to tidy up. You could build another dashboard that says the records need tidying. Neither tells you what, specifically, should change.
Hand a smaller job to a Midpoint worker: check the open deals you care about, compare the fields with the activity you’ve authorized it to read, and return a cleanup queue for the deal owners. Each item should say what looks wrong, where that finding came from, and what a person needs to confirm.
The worker does the checking. The owner decides what belongs in the CRM.
Start with one pipeline and a review-only job
For a first pass, choose ten open deals in one pipeline. Don’t start with every contact, email and opportunity in the company.
Connect HubSpot to the worker and check the permissions actually granted to that connection. The useful starting access is the deal fields, the relevant owners and stages, and the notes, tasks or meetings associated with those deals. Give it only the sources the review needs. A connected account isn’t proof that every field or activity is readable.
Write down what “open” means in this pipeline. Map your next-step fields, including any custom action, owner and due-date fields. Agree on the timezone for close dates. Decide whether an overdue close date means “ask the owner” or something more specific. It should never mean “move it to next month because that looks better.”
You can give the worker the job in a Midpoint channel and keep the review in a ticket, so the sales manager and deal owners have one place to look at the returned work. A useful brief looks like this:
Review the ten open deals in our new-business pipeline as of October 2, 9:00 a.m. Pacific. Flag close dates before today, missing next steps and fields that disagree with associated activity. Return one cleanup item per deal, with its record link, the field or activity you checked, the source time, and a proposed correction or owner question. Show anything you couldn’t check separately. Do not change stage, amount, close date or other CRM fields. Do not merge or delete records, or contact buyers.
Where possible, start with a connection that can read but not write. If the connection can also write, telling the worker to only review doesn’t take that access away. Check the access and permissions before you rely on that boundary.
Run the small check once before making it recurring. Can the worker read the fields you named? Are the notes actually linked to the right deal? Does it distinguish a completed buyer meeting from an internal task? These are better first questions than whether the summary sounds convincing.
Ask for the correction, not just the warning
Here’s a small example with fictional companies, deal IDs and notes. The review is at 9:00 a.m. Pacific on October 2. Each deal links to its example source note; your team’s queue should link to its actual CRM records and activities.
The worker’s queue opens with a short summary:
Reviewed: 4 open deals in the new-business pipeline (5 rows read; one deal ID appeared twice and counts once). Checked: 3. Not fully checked: 1. Changed in the CRM: none.
Then one item per deal.
Cedar Works: the close date has passed
Deal DEMO-1042 · Owner: Mei
- What needs attention: The deal is open, but its close date is September 30. “Legal review” has no deadline.
- Source: Deal fields last changed September 23 at 10:20 a.m. Pacific, checked October 2 at 8:58 a.m.
- Ask the owner: Ask Mei for the buyer-confirmed close date and the legal-review deadline. Keep the current date until Mei approves a replacement.
The passed date is a fact. The new date isn’t. “Next Friday” would be a guess, however tidy it would look.
Northwind Labs: the next step exists, but not in the field
Deal DEMO-1048 · Owner: Alex
- What needs attention: The next-step field is blank.
- Source: An associated October 1, 11:00 a.m. meeting note says Alex will send the security questionnaire by October 6, before an October 8 buyer review. The worker checked it at 8:59 a.m. on October 2.
- Ask the owner: A draft next step: “Alex sends the security questionnaire by October 6, ahead of the October 8 review.” Alex confirms before anyone writes it to the CRM.
That beats “missing next step”: the likely correction arrives with the note that supports it, and Alex can still say the buyer changed the plan.
Summit Supply: don’t call an active deal abandoned
Deal DEMO-1053 · Owner: Jo
- What needs attention: An activity summary still points to September 10. An associated buyer meeting happened October 1 at 1:00 p.m.
- Source: The meeting note discusses a smaller first phase around USD 50,000, subject to revised scope. The deal amount is still USD 70,000. Both sources were checked before the 9:00 a.m. review.
- Ask the owner: Ask Jo to confirm the next action and agreed scope. Don’t label the deal inactive. Don’t replace USD 70,000 with an unconfirmed discussion figure.
One old timestamp shouldn’t overrule a newer, relevant meeting. And a number mentioned in a meeting isn’t necessarily the amount the team should forecast.
Harbor Studio: some of the check is missing
Deal DEMO-1060 · Owner: Sam
- What needs attention: The next-step field is blank, but the connection can’t read the associated notes.
- Source: The record fields were checked October 2 at 8:58 a.m. The notes were unavailable.
- Ask the owner: Keep the blank-field finding. Hold the activity judgment. Ask for the specific missing access or an owner-supplied source, not permission to read everything.
“Couldn’t check” and “nothing happened” aren’t the same answer. Put this item in a separate Not fully checked section, where it won’t be mistaken for a verified stale deal.
Keep conflicting evidence visible
Automating deal hygiene has an easy half and a hard half.
The easy half is finding an open deal with a close date before today, or a required field with no value. Those are rules, and they need no interpretation.
The hard half is deciding what a note means. Was the meeting about this opportunity or another deal at the same company? Does “we can do fifty” refer to a budget, a discount or a proposed first phase? Is “waiting on security” a current blocker or something resolved in the next note?
Have the worker show both sources rather than pick the answer that makes the row look complete. Keep three times apart: activity time (when the conversation happened), field-change time (when the record changed) and check time (when the worker read it). A record edited this morning doesn’t prove the buyer spoke this morning. HubSpot’s default deal properties distinguish property updates from logged activity. Even a logged activity might be an internal note, not a buyer conversation.
HubSpot’s deals API documentation describes deal properties, associations and property-history reads. Those can help establish what changed and which activity belongs to a deal. They don’t make a commercial decision for the owner. Your connection still has to support the reads you need.
One deal should produce one cleanup item
If the same deal ID appears in two lists, it’s one deal, not two cleanup jobs. Combine its findings under the same record link. If the two copies disagree, re-read the record rather than choosing the more convenient version.
Two different deal IDs at the same company are another matter. They might be a renewal and a new project. Ask the owner whether they’re duplicates. Don’t merge them because the names look similar, and don’t delete the older one to tidy up the count.
The queue should also say what the review covered: the pipeline, cutoff, records read and sources that were unavailable. If the worker read only the first page of results, it hasn’t checked the whole pipeline. If HubSpot throttles the reads, respect the limit, resume from the last confirmed position, and keep unfinished records out of the checked total.
A partial review is fine, as long as it says what’s left.
Give owners a decision they can finish
Each item should end in one decision the owner can make:
- Confirm a correction: The proposed next step is accurate and can be written after approval.
- Supply a missing fact: The close date needs a buyer-confirmed replacement.
- Resolve a contradiction: The activity or scope changed, but the fields haven’t caught up.
- Leave it as it is: The apparent problem has a valid explanation.
- Finish the check: The worker needs one specific source before it can make a recommendation.
For a review-only first job, the owners can make the changes themselves. If you later authorize the worker to apply approved corrections, approve the exact deal, field and new value. Before writing, it should re-read the record. If the value changed after the review, return the revised item instead of overwriting someone’s work. Then read back the result, so “approved” doesn’t get confused with “updated.”
Stage, amount and close-date changes stay with the human owner. Deletions and buyer follow-up are outside this cleanup job.
A weekly pipeline briefing can tell leadership what changed. The cleanup queue is what happens next: a short set of record-level decisions that owners can resolve, with links that let them check the proposed fix.
Sometimes a native HubSpot workflow is the better answer
If the rule is “when this required field is blank, create a task for the owner,” start with HubSpot’s own workflows. For supported subscriptions and actions, a native workflow is a sensible home for predictable rules tied to CRM properties. You don’t need a worker to reason about an empty field.
Use the worker when the useful result involves reading context, comparing sources and preparing a correction that still needs an owner’s judgment. Keep stable rules in the CRM where they belong; give the worker the exceptions that don’t fit neatly into a field condition. Check the HubSpot workflows FAQ for your account’s availability and behavior before designing around it.
Once the first queue is accurate, you can schedule the same scoped review and have the worker return it to your revenue-operations channel. Carry unresolved decisions forward instead of posting them every morning as if they were new problems. Reopen an item when its sources change, and keep the owner’s decision alongside it.
Start with the deals you’re tired of checking by hand. Ask for the exact correction, its source and the person who needs to decide.
How you’d run this on Midpoint
Your worker already has its own computer and browser. You don’t have to set up either one.
Connect HubSpot, or save a HubSpot login for the worker to use. Then tell it what you want in plain words:
Check the open deals in our new-business pipeline and give each owner a list of what looks wrong, with links. Tell me what you couldn’t check. Don’t change anything in HubSpot.
Talk to Midpoint about a checked CRM cleanup queue for your team.
Example sources
Example source DEMO-1042
Cedar Works, open deal, owner Mei. Close date: September 30. Next step: “Legal review.” Field-change time: September 23, 10:20 a.m. Pacific. Record checked: October 2, 8:58 a.m. Pacific. No source in this example supplies a replacement close date.
Example source DEMO-1048
Northwind Labs, open deal, owner Alex. Close date: October 20. Next-step field: blank, last changed September 30, 11:00 a.m. Pacific. Associated note NOTE-2048, October 1, 11:00 a.m. Pacific: “Alex to send the security questionnaire by October 6. Buyer review meeting October 8.” Record checked at 8:58 a.m.; note checked at 8:59 a.m. October 2. A second list contains this same deal ID; it adds no second deal.
Example source DEMO-1053
Summit Supply, open deal, owner Jo. Amount: USD 70,000. Activity-summary time: September 10, 9:00 a.m. Pacific. Associated meeting MEETING-3053, October 1, 1:00 p.m. Pacific: “Buyer attended a review. Discussed a smaller first phase around USD 50,000, subject to revised scope.” Record checked at 8:58 a.m.; meeting checked at 8:59 a.m. October 2.
Example source DEMO-1060
Harbor Studio, open deal, owner Sam. Close date: October 23. Next-step field: blank. Field-change time: September 18, 9:00 a.m. Pacific. Record checked: October 2, 8:58 a.m. Pacific. Associated notes: permission unavailable, so activity is not fully checked.
More articles

AI Agent Incident Communication Plan: Templates, Cadence, and Evidence
A practical AI agent incident communication plan with severity criteria, stakeholder templates, status cadence, evidence, and follow-up.

AI Agent Data Privacy Checklist: Controls That Hold Up in Production
A practical enterprise checklist for classifying agent data, minimizing access, controlling retention and transfers, redacting evidence, reviewing vendors, and proving incident readiness.

AI Agent Observability Tools Compared: A Practical Buyer Guide
Compare eight AI agent observability approaches by traces, tool calls, evaluations, cost, privacy, alerts, deployment, and OpenTelemetry support.