An enrichment agent that hands its own doubts to a human
Scobe enriches profiles from multiple sources, keeps a version history and exports to the CRM. Where the agent is unsure, it goes to a human, and that is a design choice.
- 100%
- of changes with version history and rollback

The challenge
A B2B database loses a meaningful share of its value every year without anyone doing anything wrong. People change jobs, companies move, email addresses expire. Updating by hand is possible, but it is work that is never finished.
Automating it sounds like the answer, and it is, with a catch most enrichment tools ignore. An agent that updates data can also break data. Overwrite a correct email address with an outdated one from another source and you have not enriched your database, you have damaged it. And you find out weeks later, on the first campaign that does not land.
The solution
Scobe combines multiple sources into one profile per contact: data from LinkedIn, enrichment via external services, and whatever was already in the CRM. The agent decides which source takes precedence, records why it made that choice, and exports the result to the CRM.
Every change is a version. Anyone who wants to know what a profile looked like before the agent touched it can see it and restore it. That is not only useful when something goes wrong. It is also what an audit wants to see.
What the agent does not decide on its own
The most important design choice in this system is where the autonomy stops.
If the agent sees that someone has changed employer, it updates the record. If it is unsure, for instance when two sources contradict each other, a name matches two companies, or a change is suspiciously large, it does not act, but queues the profile for a human. There is a screen where someone clears those cases in seconds.
That is slower than full autonomy. It is also why the CRM can be trusted.
Production is where it starts
This system learned things in production that no design had predicted. A profile that could get stuck in an intermediate state because there was nothing to export. A bulk action that quietly aborted on one bad profile instead of finishing the other 99. Rate limits from a source that behave differently under load than the documentation says.
Each of those was found because somebody was watching, and the system was adjusted for it. With an AI system that is not a side issue. That is the work.
Results
- One enriched profile per contact, assembled from multiple sources instead of separate exports
- Every change traceable and reversible, including why the agent made it
- Doubtful cases reach a human instead of entering the CRM as bad data
Related service
Production accountability
AI makes building easy, which makes the question “who is responsible once it runs?” more important than ever. Generated code without an owner is technical debt with an on-switch. We are that owner: we monitor, we maintain, and we stand behind your system by name and by SLA.
Have your system auditedNext case
An AI agent that rewrites job ads and publishes them across 600 platforms
Brockmeyer · Recruitment & job marketing
Read the case