CRM Duplicate Cleanup

Overview
Cleans up a CRM by merging duplicate contacts - the same person entered twice under name variants like Bob and Robert. Signs in, switches the contact list to its duplicates view, and merges the first remaining pair until none are left, keeping the primary record and folding each variant into it. Writes a before-and-after report. The "your CRM cleaned itself while you slept" demo.
CRM Duplicate Cleanup
Every CRM rots the same way: the same customer gets entered twice. Bob Smith and Robert Smith. One with a phone number, one with a company. Sales works off whichever they happened to open, deals get double-counted, and nobody has an afternoon spare to sit and merge them by hand.
This flow does the merging. It finds the duplicate pairs the CRM has already grouped, and merges each one into a single clean record — the tedious housekeeping that never makes it to the top of anyone's list.
It runs against Zapspot, a fictional CRM used for training. The data is entirely synthetic.
What it produces
crm-cleanup.csv in your home folder — the before-and-after: how many duplicate pairs were merged
and how many remain. On the seeded CRM that is 12 pairs merged, 0 left.
How it works
1. Open the duplicates view
Sign in and switch the contact list to its duplicates view. The CRM has already grouped the likely duplicate pairs — same person, name variants — so the robot doesn't have to guess who is who; it works through the pairs the CRM surfaces.
2. Merge every pair
Merging a pair removes it from the list, which would break a fixed loop counter. So instead the robot keeps merging the first remaining pair and re-checks, until there are none left. Each merge opens the side-by-side picker and confirms, keeping the primary record and folding the variant into it.
This loop-until-empty shape is worth remembering for any "work the list until it's clear" job where acting on an item removes it.
3. Report
The report is the proof: pairs merged, pairs remaining. Run it overnight and the CRM is clean by morning.
Running it
Ready to run as-is. It signs in with the published training credentials
(jonas.weber@globex.example), which are not secret. Real system credentials belong in the
Robomotion Vault, never in a flow.
More web automation templates
See all 18 →- Payment Run with Hold ReportRuns the weekly vendor payment run in a SAP-style ERP and then accounts for every bill it refused to pay. Signs in with credentials read from the Robomotion Vault, proposes the bills due within seven days, confirms the run so a journal entry is posted per document, and verifies the posted summary against the proposal before going on. Then it opens the bills list, filters to the blocked bills, and reports each one with the reason it is on hold - a pending goods receipt, a quantity or price mismatch against the purchase order, or a missing PO reference. Writes a two-section CSV covering what was paid and what was held back, with the value held back totalled.
- Shipment Status ReportSigns in to a carrier portal and sweeps every page of the shipments list into one report, then narrows that sweep to the shipments that need a person. Reads the login from the Robomotion Vault, walks the pager with a Label and a GoTo until the Next control is disabled, and writes two CSVs: the full book, and an exceptions file covering customs holds, failed deliveries and delays, oldest booking first, with the billed value stuck in each one. Closes with a Log line carrying the counts and the total.
- Bank ReconciliationTakes the payments and receipts the ERP could not reconcile and confirms each one against the real bank statement. It pulls the ERP's flagged paid-bill exceptions and open invoices awaiting cash, then signs in to the bank, searches the operating account by reference and reads what actually settled - quantifying the four ways money and ledger drift apart: a missing payment, a transposed amount, a double payment and unapplied cash. Writes a reconciliation CSV. The story is evidence: the ledger raises the question, the bank statement answers it, and every discrepancy comes out with a number attached.
- Logistics Exception CenterBuilds one worklist of every active delivery exception from the carrier, then dedupes it against the systems that may already be handling it - the mailbox that was notified, and the help desk where a ticket may already exist. Joining the three on the tracking number tells the robot which exceptions were mailed, which already have a ticket, and which nobody has picked up yet. Writes a consolidated exception CSV. The story is consolidation: three systems each hold part of the picture, and the robot joins them so a stuck shipment is neither missed nor double-worked.
- Monday Morning BriefingOne robot, every system, the whole week's work on a single page. It signs in to the CRM, the mailbox, the ERP, the carrier and the help desk in turn, reads the one number that matters from each - duplicate contacts, invoices to post, ledger exceptions, stuck shipments and refund requests - and writes a consolidated briefing with a total across all five. The story is reach: the back-office queues a team would open one browser tab at a time, gathered into one report before anyone has had coffee.
- E-Invoice Portal HarvestDownloads every e-invoice for a tax period from a government portal and builds an index spreadsheet of what was collected. Signs in with a one-time code, walks the paged register until the portal says there are no more pages, then opens each document to read its government reference number and pull down both the XML and the PDF. Every download is gated behind a confirmation dialog and an "I am not a robot" checkbox.