Agents just killed software lock-in. How we migrated from Contentful to Sanity.io in under three hours.

We migrated 49 blog posts across two languages to a new CMS yesterday without opening the new CMS once. A note on what that means for every software product built on lock-in, and why it's the same story that's about to hit manufacturing.
Yesterday we replaced our CMS. 49 posts across two languages, every piece of metadata, moved in about three hours. And we never opened the new CMS even once.
When we say we didn't open it, we don't mean we looked at the UI and then stopped. We mean our agent set up the project fully autonomously: defined the schema, migrated the content, and handed off the new data layer to our frontend, while we approved the steps in chat. The whole job ran through an MCP connector.
It's a small story with a big implication: in most software categories, switching costs just collapsed.
Why we moved (and why you'd probably make the same call)
We've been running enaovision.com on Lovable since last summer, with Contentful as the CMS. It was a sensible pairing suggested inside Lovable, and Contentful has been a solid product. Their free tier covered us comfortably until yesterday.
Yesterday we decided to push into French-language SEO. French would be our third locale after English and German, and Contentful's free tier supports only two. Their paid Lite tier costs 300 euro per month and unlocks exactly one additional locale, which means anything beyond three is a custom plan. We want Italian, Korean, and Japanese on the roadmap behind French, so a plan that only scales one locale at a time wasn't going to work.
We emailed Contentful Support asking what a plan that actually scales with locales would look like, got an auto-responder, and no human reply landed within a few hours. For a startup moving on a strategic decision made the night before, that window was enough to kill the conversation.
This isn't a dig at Contentful. Their product is fine. Their pricing just doesn't fit a small marketing team that wants to be in six locales by the end of the year, and their sales loop doesn't run at the speed of a founder running marketing ops at midnight.
How we replaced it without clicking anything
We asked our agent whether there was a CMS built agent-first and MCP-first. Sanity.io came back as the strongest answer. We read the docs for about ten minutes, liked what we saw, and registered an account. Then we handed the rest off.
Before lifting a finger, the agent mapped out the scope and told us it was roughly half a day of focused work.

Here is what the agent actually did, in order:
- Set up the Sanity project through the Sanity MCP, including the new workspace, the schema, CORS origins, and API tokens.
- Defined the blog post schema as code, covering title, slug, excerpt, body (rich text), SEO fields, hero image, author, locale, and related posts, all strongly typed.
- Migrated two posts end to end, including images and all metadata, as a pilot.
- Generated a handover note for Lovable with the new schema, the new query patterns, and the changes needed in our frontend.
- Lovable swapped the CMS layer, and we smoke-tested the rendered blog page in a browser, which rendered correctly on the first try.
- Got the green light for the full migration, which moved all 49 posts in English and German with every image, every SEO field, every related-post reference, and every publish date intact.
- Re-ran a link integrity check against the new data layer and confirmed zero broken internal links.
A running snapshot of the agent narrating its own work along the way:

The code swap itself was four tasks and a green build.

And the final state once everything had landed:

The whole project ran in about three hours, and we didn't touch the Sanity UI once.
The real story isn't the migration. It's what it means for software.
Two years ago, a CMS migration for a marketing site of this size was a real project. You'd scope it over two weeks, call an agency or a freelance dev, budget for it, and probably delay it by a quarter because the pain of your current CMS was still less than the pain of the migration. That delay was your vendor's moat.
Today, that moat is three hours.
Every assumption about switching costs in software was built on the same foundation: moving data between systems is expensive, risky, and requires human labor, because schemas don't match, content doesn't round-trip cleanly, APIs are different, internal references break, and someone has to babysit the whole transition.
Agents eat every one of those costs. Schema translation, content round-tripping, API adaptation, and reference fixing are all mechanical problems once both sides of the pipe speak the same machine protocol, and giving an agent access to both MCPs turns most migrations into a long afternoon.
Bigger companies will compress even harder. A mid-market team that used to schedule a six-month Salesforce-to-HubSpot migration will schedule a two-week one, and an enterprise team staring at an ERP migration will watch that number drop meaningfully too, not to zero but plausibly by a factor of 100 for a lot of the grunt work.
The only moats left
If switching costs were your moat, it was never really a moat; it was a delay, and the delay is shrinking. What actually holds customers now comes down to four things.
- A great product. It's the boring answer and the correct one. PLG isn't a strategy fad, it's the only remaining defensible position in most software categories.
- A data moat. The value of your product compounds with proprietary data the customer can't replicate elsewhere, whether that's usage history driving personalization or a graph of relationships that only forms inside your product.
- Network effects. Your product gets more valuable as others use it, and leaving means losing access to the network.
- Regulated or certified workflows. The lock-in is the auditor's signature, not the vendor's.
If your software doesn't have one of those four, and your plan was to rely on "customers are too annoyed to switch," we'd look at your next quarterly retention number carefully.
What this means if you buy software
Two implications follow for buyers.
Be less patient. The friction that kept you in a product that no longer fits is about to cost you more than the migration itself, so if a vendor can't match your pace or your pricing, start the conversation with alternatives. You'll be surprised how fast "alternatives" turns into "done."
Weight MCP-first products. Any tool you bring into your stack today should be evaluated not just on its UI or its API, but on how well it behaves as an agent interface. Sanity earned our business in large part because its MCP was excellent and its schema-as-code model was natively machine-friendly, and that combination is no longer a nice-to-have: it's the new product surface.
What this means if you build software
The same logic has three implications for builders.
Stop treating lock-in as a strategy. Your customers have a 100x cheaper escape route than they did last year, and the cost is still falling, so every hour you spend making exports hard is an hour you're not spending making the product better.
Build MCP-first, or at least MCP-worthy. The first interaction a CTO or a head of marketing has with your product in 2026 increasingly isn't a demo, it's an agent reading your docs and calling your MCP, which makes the MCP your new homepage.
Price for where your customer is going, not where they are. The reason we moved wasn't the 300 euro; it was that 300 euro bought us one locale and the next locale was a custom contract, which priced us out of our own growth. Contentful's pricing assumes enterprise is the end state and ours assumes distributed long-tail scale is the end state, and when those two assumptions diverge, you lose the customer.
Why this matters at Enao Vision
This story lands differently for us because we're building a product in an industry that is the textbook case for lock-in. Manufacturing runs on legacy systems: MES platforms, ERP suites, sensor stacks, PLCs, and quality-management tools that cost six figures and take two years to swap out. Nobody on a factory floor loves their MES, and most plant managers can list three things they hate about it before breakfast. They stay because switching is measured in quarters and the cost is measured in six-digit integration bills.
That era is ending, slower in manufacturing than in general software products, but ending all the same. The next generation of industrial software will be chosen the same way our CMS just was: by agents, evaluated on product quality and machine-friendliness, with a switching cost low enough that customers stay because they love the product rather than because they're trapped in it.
That's why Enao Vision is MCP-first from day one. Not because manufacturing buyers are asking for it today (most of them aren't yet), but because every product built in 2026 that isn't MCP-first will look as out of place in 2030 as a software company without an API looked in 2020. The interface is going to be machine-readable or it's going to be legacy.
It's also why we obsess over whether customers actually enjoy using Enao Vision, because that's the only moat that matters once switching costs collapse. The factory floor is about to get the same freedom our marketing team just used, and we want to be the product people choose when they finally have it.
A note on Contentful and Sanity
None of this is a dunk on Contentful. Their product is solid, their reliability is fine, their community is large, and for teams that sit inside the two-to-three locale band their pricing works. We just outgrew the ceiling.
Sanity earned the swap on merit: schema as code, a serious MCP, real-time collaboration, and a pricing model that scales with our actual usage. What sold us wasn't the UI, the marketing site, or the demo; it was how well Sanity's MCP and schema-as-code model worked together when handed to an agent.
That's probably the most important sentence in this post.
Closing
Yesterday's migration took three hours, and the tech industry will take a bit longer to process the implication. If you're building a company whose moat was "nobody will bother to switch," the next eighteen months are going to be interesting, and if you're building a company whose moat is the product itself, the next eighteen months are going to be a lot of fun.
We're building Enao Vision for the second camp, and Sanity clearly is too. That's why the switch was easy, and why it was worth writing down.
This is the second post in a new category called Building Enao Vision, where we share the behind-the-scenes of how we build our company and our product. The first post is Why we started Enao Vision.