I Vibe Coded a Client Project

## Metadata
- Author: [[Streamlined Solopreneur: Systems & Automation to Help Solopreneurs Reduce Friction]]
- Full Title: I Vibe Coded a Client Project
- Category: #podcasts
- URL: https://share.snipd.com/episode/36bcb69f-d1cd-4092-9a2a-c8ed89cb7a23
## Document Notes
## Highlights
- **Underscoping Nonprofit Project Challenges**
- Joe Casabona underestimated the nonprofit project needing a WordPress portal with no-code tools.
- Assumptions about tool capabilities caused scope creep and unexpected complexity.
Transcript:
Joe Casabona
Let me tell you a little bit about the project and the problem. So this was for a non-profit. They manage a lot of their work inside of a spreadsheet and like a bunch of tools, Google Calendar and Sign Up Genius. And it puts a lot of work on the volunteers in the organization. And so we decided to scope a based on WordPress that would presumably make their lives easier. And for this first iteration, the data would still start in the spreadsheet and then we would automatically send it over to WordPress. So I'm thinking no custom code because I don't, that's just kind of like the de facto setting for me nowadays. No custom code. WordPress, Advanced Custom Field and Zapier. And we should be able to get this done with testing and, you know, some of the unforeseen, the unknown unknowns. I was thinking this would be a 25 hour project. But a few things started to happen as I began the project. And I'll say from the beginning, I didn't spend a lot of time scoping. I didn't spend as much time as I should have scoping the project. I made some assumptions about the tools I was using. For example, I didn't know that seven years into Gutenberg, advanced custom fields still doesn't have a native way for you to add a block to a post that includes those fields. You still have to code that custom block. Zapier doesn't work with WordPress the way I thought it did. And Zapier doesn't work with Google Sheets the way I thought it did. And so as I started building, I realized that I should have spoke to the primary volunteer who would be working in this portal way earlier than I should have. ([Time 0:02:10](https://share.snipd.com/snip/a0d390b8-c59e-4f6a-b9e9-288c7c1459ed))
- **Verify Tools & Engage Users Early**
- Always verify software capabilities before scoping your project; don't assume features exist.
- Properly understand workflow by engaging primary users early to avoid surprises.
Transcript:
Joe Casabona
A really good example of this is with Kit, formerly ConvertKit, with their subscriptions, there's a trigger when someone becomes a subscriber, but there is no way to know when they Churn. There is no trigger when someone ends a subscription, which is crazy to me. And it's so crazy that in their documentation, and I love ConvertKit, but like ConvertKit Commerce is just like a half-baked thing, and I wouldn't recommend it. In their documentation, they have this automation for, oh, when someone becomes a subscriber in, you know, when someone like pays you in ConvertKit, in ConvertKit Commerce or Kit Commerce, I guess now, you can automatically make them a private podcast subscriber in Transistor. And in that documentation, it says there's no way to know when they stop paying for their subscription. And so we recommend that once a month you go and manually and check and remove people from private feeds. And like I can just like imagine the support person who wrote this documentation like pouring bourbon into their coffee as they're writing it. But that's neither here nor there. That's that's mostly on me, right? I should verify these features even if they seem really obvious, I should verify that things work the way I expect. ([Time 0:04:19](https://share.snipd.com/snip/3fe21e67-03d1-4af9-baad-a4d9a780cdc1))
- **ChatGPT Saves the Project**
- ChatGPT code generation rescued Joe's project from doubling in time and complex coding.
- Vibe coding involved iterative problem describing and solution testing with AI assistance.
Transcript:
Joe Casabona
And so I started to talk to chat GPT about, Hey, am I missing? I'm like, am I not Googling the right thing? And going through the chat history, and I did ask it to give a quick summary of what we quote unquote did together. At one point, it said like, I can build this thing for you. And so I said, yeah, okay, fine. Write the code. We'll see what happens. And it wrote it flawlessly. And so I said like, hey, if I give you an upload of my advanced custom fields export, can you use that as the basis for everything we're doing here? Yeah, sure. So I started vibe coding, right? And so instead of going back to the client or having to hire another developer or writing a bunch of stuff from scratch, I was able to use ChatGPT to do things like build an ICS generator That dynamically pulled in the advanced custom fields into a calendar invite. I was able to have it build custom filtering on my custom post type. Something that I learned was that Zapier, the Zapier WordPress integration doesn't work with custom post types, right? And so like if you're unfamiliar with WordPress, I know I'm venturing into my old life and the old topic of this show. And so if you're a little bit lost in WordPress, you have these kind of defaults. They're called posttypes. They are better described as content types. And so you have posts. Those are essentially blog articles. And you have pages, which are informational pages, right? But then you can also create these custom content types. And so that's useful if you have something that is not even remotely related to posts or pages. So a good example is, you know, you have a portfolio content type where you want to have some special information, right? Like the URL of the project and some screenshots, maybe a photo gallery of the project and a case study and client information. And so I created a custom post type for this client for their portal. And I use advanced custom fields to add that additional information. But with WordPress and Zapier, there's no native support for those custom post types, even if you enable what's called REST API support and say like, hey, yes, I want to be able to like Get to this stuff. So I needed to work with webhooks, right? And go like one level deeper than I wanted to, right? I wanted this to be no code and now it's low code and now it's like straight up code, right? So it kind of walked me through the whole thing. It handled a bunch of limitations for me. It wrote features for me that I would have needed custom or premium plugins for. Things, and I should say, right, these are things that I expected to be natively supported. And that's, again, that is on me for not doing my due diligence. But there were also like some some interesting things that had to happen, right? Like there's, you know, a bunch of volunteers. They're in a Google spreadsheet or in a spreadsheet or a CSV. And we wanted to import them. And because of the way we were handling users in this portal, thanks to an actual custom plugin or thanks to an actual like free plugin, which is great. It wasn't a straight and clear import. And so chat GPT wrote an import importer for me. Chat GPT wrote a bunch of access control features for me. And it was, it allowed me to, because of my understanding of WordPress and code and the project, we was able to describe a problem and how I thought it should be solved. It proposed a solution. I tried the solution and then we iterated on it. And so ChatGPT helped me move faster than building from scratch. I avoided Googling and digging through forums for edge cases and trying code. And then it also validated approaches for me, right? There were times where I'm like, I don't think the thing you wrote is right. And it explained why it was right. And I was like, oh, okay. All right. Well, then this is not the right approach. And it's like, right. ([Time 0:07:26](https://share.snipd.com/snip/b0f32a90-1727-4db7-a1ed-cb312e9ee376))
- **Vibe Coding Boosts Flexibility**
- Vibe coding as a force multiplier significantly reduces project time and boosts flexibility.
- Not being emotionally attached to code eases accepting client changes and iterations.
Transcript:
Joe Casabona
It seems like you're trying to do. And here's how we should do it. So I do time track and I scoped 25 hours without vibe coding. It would have, it would have been probably 60 hours. I just clocked 30 hours and it allowed me to remain flexible. It also allowed me, this was, this was something that I, I am considering now, but it also made me more agreeable to features that we hadn't considered, but were probably crucial. You know, there, there was one that, that, um, in speaking to the main user, she said like, oh, it'd be nice if it did this thing too. And in a previous life, I probably would have been like, no, like we didn't, we never talked about that. And that's going to, that's going to be a lot of custom code, but I typed it into chat GPT and it wrote a function, right? Chat GPT probably wrote between 1500 and 2000 lines of code for me. And I'm really impressed by it. So as a solopreneur, what should you be thinking about? Should you try vibe coding? Again, I'm a software developer. Well, I have my master's in software engineering. Again, I haven't reasonably been a software developer in seven or eight years now, but I still understand how code works. And my estimation is probably similar for vibe coding as it would be for using chat GPT to write. Maybe like a little bit different. You know, if this was like a big commercial project that had to handle thousands or even hundreds of concurrent users, I would be more scrupulous about the code. I would test it. I would refactor it. But this is a portal that will have maybe 10 concurrent users at any given time. It's a private thing for an organization of less than 100 people. And so I'm not overly concerned about the performance. We're also not hitting the database in any kind of crazy way. There was one function where it did directly hit the database. And I said, like, let's try a different approach. You know, there's a lot of custom things going on and I don't want the site to buckle. So like those are things that I knew to look for. But with me at the helm describing the problem, ChatGPT was like, ChatGPT saved my butt here. This project would not be completed in any kind of reasonable way. ([Time 0:11:24](https://share.snipd.com/snip/fc7888a5-a70b-4f67-b374-6e5b17ffde19))
- **AI's Impact on Development Roles**
- Vibe coding can replace some developer roles by enhancing problem-solving speed and ideation.
- AI offers validation and faster prototyping, changing how developers approach projects.
Transcript:
Joe Casabona
Something I texted my friend Brian, you know, we worked together as technical leads at the last agency that we worked at, you know, before we both went off on our own. I said, if I was a junior developer, I'd probably be really scared for my job. And he pointed out like that, ([Time 0:14:40](https://share.snipd.com/snip/171b8f30-8de4-490a-987f-3ec291757fa4))
- **Break Project Into Pieces**
- Break projects into small, manageable pieces when vibe coding with AI for faster results.
- Describe each feature clearly to ChatGPT for targeted code generation and easier iteration.
Transcript:
Joe Casabona
So it's really powerful. I would say if you're going to try Vibe coding, even if you've never coded before, think of a project, break it up into pieces, and then describe the project to your AI helper, and then Have it write specific features, right? Like, don't just say, like, I want a thing that does this. Break it down into smaller pieces, which is, like, the right approach for a lot of projects, right? You don't want to say, I'm going to launch a podcast and then just record a year's worth of content, right, on one day. Or, you know, I want to build this Notion, you know, I want to build this Notion database and then build an entire thing in isolation. ([Time 0:15:38](https://share.snipd.com/snip/4c8585fb-fafb-4b11-90aa-5c1c4cf0cb69))