In my first vibe coding experiment I used Cursor. It was back in February-March 2025, and it was somewhat painful at times, but, ultimately, I was still able to do what I wanted much faster than I’d be able to do myself. What I ended up with turned out to be a relatively messy project, though, and I had to work on re-organizing some parts of it for a while. What’s important is that it worked, and, I suspect, some of that mess was introduced by me not knowing how to guide Cursor AI with proper prompts.
My second attempt happened over the course of a few evenings in the end of July, using Claude Code this time. The goal was to convert my existing model-driven application in Power Platform into a standalone web application. I probably would not take it on without AI coding assistant, but I had to try Claude Code somewhere, so I figured “whatever, let’s give it a try”.
Before I ontinue, you might ask why would I want to do such a thing. The answer is pretty simple – I don’t want to be on the hook paying all those licensing fees; but, also, I really prefer having access to the database when doing mass updates/calculations vs having to do it through the API calls, at least in this particular case.
So, well, I have a small server under my desk, it’s running all my sites on docker, it has those databases… It’s not an enterprise-grade solution, but I’m not an enterprise either, so it’s good for me.
By that time, I already had a local copy of the database and a simplified version of data loading process which would take data from Dataverse and put it into the local MS SQL database. That was done long ago, since I did not want to deal with Power BI in the cloud.
Back to the topic of this post, though.
As I mentioned, there was a database already. So I asked Sql Management Studio to create a database script for me, and, then, I pointed Claude Code to that script and asked it to provide CRUD API implementation for that database using python/flask.
It did it in no time.
Yes, we had to figure out how to set up some of the libraries and how to connect to the database, and it could not figure out what the problem was, so ultimately I just tried to use a newer version of one of the libraries, and, magically, everything started to work on the API side. From there, it was just a matter of asking Claude Code to make certain fields searchable, to do reference resolution, etc.
The number of times it failed to understand what I wanted to do is… I actually don’t remember it happening at all. And it has not messed up the code even once – with Cursor a few months ago I had to be cautious of it refactoring half of the code base (aka breaking it) any time I would forget to instruct it not to make any non required changes. It has not been a problem at all this time around.
Which is a huge difference from how it used to be 5 months ago with Cursor AI, BUT I don’t know if it’s due to the difference in those coding agents or if 5 months is just long enough to make this kind of progress.
Then we’ve added the front end. It may not be as advanced as model-driven applications in Power Platform, but it’s more than adequate for my needs.
And look at how long it has taken:
- The database was there, already, so I did not have to spend time defining the data model. From the technical perspective, I don’t think it would be that complicated for an AI agent to create the database, though. It would take time from me to design it properly, but there is nothing anyone can do about
- From there, though, it took me, roughly, 6-7 evenings (3-4 hours each time) to come up with the application below. In terms of functionality, it’s pretty advanced. It’s not on par with model-driven apps in general, but it does what I want and it does it way better than I could hope for
- You might say there is no enterprise security, there is no ALM, etc. I did not bother to ask Claude to work on those features, though. Keep in mind it was not meant to be an enterprise-grade solution.
And the funny thing is, at some point I just stopped thinking about “how to do things”. I started to think about how to describe what I need as clearly as possible (with all the edge cases, etc). Instead of “oh crap, it’s going to take me forever”, it became “ok, Claude, here is what I need, make it work”. And the magic just kept happening.
Seriously, folks, I’m impressed. Irrespective of what this means for the job security.
That said, I think all those “pat yourself on the back” comments Claude Code keeps doing are not necessary, but that’s just how I feel about them:

Either way, see below for yourself. This was created from scratch (With the important caveat that I already had an existing database, and, in that sense, I did not have to worry about figuring out the data model. Which was a huge advantage, since I basically had the majority of my functional requirements figured out already), mostly using prompts, with only minor manual interventions here and there (yet in some of those cases I did things myself just to better understand how the project has been structured by Claude):

PS. If you are curious about how the original MDA looked like, here is a screenshot:
