A reviewer pinged us with a perfectly reasonable question: why is the same piece of work showing as both moving along and completely stuck, on his screen, within the same half-minute? We looked. The little status light was flickering between two colors. The progress bar was leaping from somewhere in the middle back to zero and then forward again, over and over, like a possessed elevator. It was the kind of thing that makes you laugh, then stop laughing, then go very quiet.
When we dug in, we found the culprit, and it was almost comic in its simplicity. There were two separate records in our records, both insisting they represented the exact same job. Same name. Two different lives. Different histories, different updates, neither one aware the other existed. So whenever our automated helpers went to report progress, they would grab one of the two more or less at random and scribble on it. The next update would land on the other. The dashboard was not broken. It was faithfully showing us two records having an argument, in real time, in front of a customer.
The obvious move is to blame the identifiers and make them fancier. Better unique tags. A stricter rule that no two records can share one. We already had that. Every record carried its own perfectly unique private tag, and it had not helped one bit. That was the trap. A duplicate-record mess looks like an identifier problem and almost never is. Unique tags guarantee two records are different. They do absolutely nothing to guarantee that two records describe different things in the real world. We had one job out there in reality and two records of it in here, each clutching its own immaculate private tag, both completely wrong about being separate.
The thing that genuinely bothered us, once it clicked, was how avoidable it had been. The job already had a perfect natural name. A person had typed that name themselves when they started the work. That typed name was the one true thing in the whole universe that pointed at this exact piece of work, and we had been treating it as just another detail on the side while minting our own private tags and asking our helpers to please remember them. The helpers did not remember. They asked for "the record for this job," got handed whichever copy turned up first, scribbled on it, and wandered off. The other copy sat in the dark, quietly building up its own separate history, surfacing only often enough to make the lights flicker.
So we threw out the private tags from the conversation entirely. Now our helpers refer to a job by the one thing a human actually typed: its real name. Ask for a job by that name and you always, every time, land on the one and only canonical record. The first helper to touch a brand-new job creates it. Every helper after that lands squarely on the same record, no roulette. We also ran a one-time cleanup that found every job with a secret twin, merged their histories together, and quietly retired the duplicates. Then we wired the whole thing so every screen updates the instant anything changes, everyone seeing the same truth at the same moment. The flickering stopped that same afternoon, and the dashboard finally learned to sit still.
Most duplicate-record headaches in business software are not identifier problems. They are identity problems. Your customer system has two records for the same person because it believes its own private tags make them distinct. They are distinct. They are also the same human being, now split across two phone numbers, two emails, two purchase histories. Your support team sees one, billing sees the other, neither knows about the other, and the customer is quietly convinced you are running a circus.
The fix is rarely to buy some clever de-duplication gadget. The fix is to pick the thing in the real world that actually identifies the customer, the invoice, the item, and make that your anchor. For a person it might be their email and phone together. For an invoice, the supplier paired with the invoice number. For stock, the product code. The private internal tag is fine deep inside the machinery, where machines talk to machines and never get confused. It is a quiet disaster the moment your people, your helpers, or your other tools have to pass it around out in the open.
So when you weigh a tool that promises to bring all your operations together, do not ask whether it can connect to things. They all can. Ask what it uses to recognize each customer or job, and whether that is something a real person in your business would naturally type. If the honest answer is an opaque tag they hand you on day one with a stern note to store it carefully, you are about to inherit a flickering dashboard of your very own. Just in a bigger, more expensive room, on a longer contract, with someone who will happily charge you to make it stop.