
A 30-person marketing agency came to us at AgentVania with a problem that sounded simple: they wanted to switch CRMs.
They’d been on their existing platform for four years. 11,000+ contact records, full interaction histories, deal pipelines, custom fields tracking campaign performance for every client. The works.
When they tried to export it, the tool gave them a CSV with names, emails, and company names. That’s it. No deal history. No custom fields. No notes from four years of client interactions. The API docs existed, but half the endpoints returned partial data, and the rate limit was set so low that pulling the full dataset would have taken weeks of carefully throttled requests.
None of that was accidental. The vendor had designed it to make leaving expensive.
The Problem With “Your” Data
The agency had explored the usual options. They’d contacted the CRM vendor’s support team and were told they could export records “in batches” through the UI, 50 at a time, with no way to include related records like notes or deal stages. They’d looked at third-party migration tools, but none of them supported the specific custom objects this CRM used.
They’d been quoted 6-8 weeks and EUR 15,000+ from a consultancy to build a custom migration script using the API. And even that estimate came with caveats about data completeness.
This is where most businesses give up. They stay on the tool, not because it’s good, but because leaving costs too much. I’ve seen it repeatedly: the switching cost becomes invisible glue. You stop evaluating alternatives because you already know the answer is “too painful.”
The agency was paying around EUR 800/month for a tool they’d outgrown. They’d been wanting to leave for over a year. At that point, vendor lock-in had already cost them close to EUR 10,000 in subscriptions alone, not counting the productivity loss from working in a system that no longer fit their workflow.
How We Got the Data Out
We used AI-powered browser automation agents to extract the data through the same interface the agency’s team used every day. If a human can see it on screen, an agent can read it. That was the principle.
The process worked like this:
1. Mapping the data model. Before touching anything, we catalogued every piece of data the agency needed: contacts, companies, deals, notes, activities, custom fields, pipeline stages, and the relationships between them. We cross-referenced this against what the official export and API actually provided. The gap was significant. About 60% of the data they cared about was inaccessible through official channels.
2. Building the extraction workflow. We set up browser automation agents that logged into the CRM, navigated to each record, and systematically read every field on the page. The agents worked through contact records one by one, capturing the full detail that the export function stripped out. For each contact, the agent also navigated into related records (deals, notes, activity logs) and pulled those too.
This is what I sometimes call screen-level extraction, where you interact with software at the UI layer rather than through an API. It’s not the first approach you’d choose, but when the API is deliberately hobbled, it’s the one that works.
3. Normalising and cleaning. Raw screen data is messy. Field labels don’t match neatly across systems. Dates come in different formats. Custom fields in the old CRM had no equivalent in the new one. Our agents handled the translation: mapping fields between systems, standardising date and currency formats, flagging records with missing or conflicting data for human review. Out of 11,000+ contacts, about 300 needed manual attention. The rest mapped cleanly.
4. Loading into the new CRM. Once the data was clean and structured, we imported it into the new system with all relationships intact. Contacts linked to companies, deals linked to contacts, notes and activity history attached where they belonged. The agency’s team could open any record and see the full four-year history, not a stripped-down version of it.
The whole project took about two weeks from start to finish. The agents ran the extraction over several days (we deliberately paced it to avoid triggering rate limits or account flags). Normalisation and loading took another few days. Total cost to the client was a fraction of the consultancy quote.
Why This Matters Beyond One Migration
This project was a migration, but the underlying pattern applies more broadly.
AI agents need data to work. An AI that can only see your email but not your CRM can’t tell you which deals are going cold. One that reads your project management tool but not your invoicing system can’t flag clients who are late to pay. The value of AI compounds with the amount of connected data it can access.
Vendor lock-in directly limits that. If your data is siloed across five tools, each protecting its own walled garden, your AI can only see a fraction of the picture. The businesses getting the most out of AI right now are the ones that own their data independently of the tools that generate it.
That’s the shift happening. The old SaaS playbook relied on data gravity: make leaving painful enough and customers stay forever. Browser automation agents break that model. If a human can access the data through a screen, an agent can too. The lock-in loses its teeth.
What You Can Do Now
If you’re stuck in a similar situation, or just want to avoid ending up in one, a few things worth considering:
Before you sign up for a new tool, test the export. Don’t just check that an export button exists. Actually run it and see what comes out. Compare it against what you see in the interface. The gap will tell you a lot about how the vendor thinks about your data.
Check API completeness. Ask the vendor directly: can I pull custom fields, notes, activity history, and relationships through the API? If the answer is vague, assume the worst.
Start building your own data layer. Even a simple weekly export into a structured format you control (a database, even just well-organised JSON files) gives you an insurance policy. You keep using your existing tools, but the canonical copy of your data lives with you.
If you’re already locked in, the situation isn’t hopeless. Screen-level extraction works. It’s not the most elegant approach, but when a vendor has made the official paths deliberately difficult, it’s the practical one.
We run projects like this at AgentVania. If you’re sitting on data you can’t get out, or you want to build an AI-ready data layer across your existing tools, that’s exactly what we do. No inflated promises about timelines, just honest assessments of what’s possible and what it takes.
Your tools should work for you. When they hold your data hostage to keep you paying, that relationship is worth rethinking.

Leave a Reply