I know there’s been a lot of debate over whether AI is going to destroy humanity or, at the very least, render most jobs obsolete. I don’t know. I tend to take a more moderate stance: it’ll eliminate many jobs, the same way the personal computer did, but it’ll also open new opportunities because people who use it will be more leveraged.
And I think that because that’s been my experience.
At the beginning of summer, I dipped my toe into the AI “vibe-coding” world. Traditionally, coding requires manually typing text/code. Vibe coding is when you tell AI what to make, and it generates the text/code for you. You give it feedback, it makes updates, and you keep going.
As a non-technical founder of a software startup, vibe coding sounded familiar: I hired someone, described what I wanted with words and pictures, and then they made it. Once they built it, I gave feedback (verbally and by marking up screenshots), they made updates, and the loop continued.
After selling the company, I learned to code a little on my own, but only made simple websites (like furlo.com). So I’d put myself in the 80% non-technical camp.
Before this summer, I used ChatGPT to help me solve coding problems by asking it questions. It was like having an expert sitting next to me. I still typed in the code, but ChatGPT saved me hours of reading forums and API documents. It saved a lot of time, but it also eliminated any serendipitous learning. For example, oftentimes while reading API docs, I’d learn about something unrelated the API could do while looking for the piece of information I needed (“I didn’t know the API would do that!”). And every once in a while, that unrelated thing would inspire a new feature I’d want to make. But the time savings were so significant (and I’m not a professional developer) that it was worth the trade.
Vibe Coding a Simple Webpage
Then this summer, I downloaded Claude and had Claude Code make a simple HTML invoice-maker webpage. Previously, I had a Word document template that I’d update. It was fine, but cumbersome. It was a simple quality-of-life improvement that saved me ~3 minutes any time I needed to make an invoice (which is a couple of times a week as a property manager. It wasn’t life-changing, but I saw the possibilities.
Just like at my startup, I described what I wanted, even uploaded my Word document template as an example, and then hit enter. Claude Code made it, I gave one round of feedback, it updated it, and my new invoice-maker was ready to go. There were two differences: First, what would have taken my developer a day took less than 20 minutes. Second, the webpage was fragile: if I didn’t “use it right,” it would break. But that was fine because I was the only user, and there were only a couple of ways to break it—such as pushing “Generate” before adding at least one item.
As a former development team manager, it’s hard to describe how mind-blowing the speed of development was.
So, I asked Claude Code to build another webpage to help me quickly analyze rentals. People often ask me about a property’s potential rent. So, this time, I had it create a page that pulled data from a couple of APIs and then used AI to write a summary document. It was still a standalone HTML page, but now it cost me a couple of pennies every time I ran it.
I was ankle-deep.
A Failed Voice Experiment
While listening to the fantastic [Shell Game](https://www.shellgame.co) podcast, in season 1, Evan described how he set up a voice agent. I was intrigued because I wanted to hire someone to answer the phone at my company, but it wasn’t a full-time position (we only get 2-10 calls a day). Could I have a voice agent fill in the gaps for me, especially during off-hours? Evan mentioned using Vapi.ai to create his voice agent, so that’s what I did.
Basically, you choose a transcriber to turn spoken words into text, a model to interpret and write a response, and a voice to speak the answer back. Each choice has a different latency and cost.
And then you create a system prompt. These are the instructions you give the model to guide its response. For example, mine would greet the caller, determine what they need, gather key details (with different rules for maintenance requests vs. leasing vs. something else), and decide the next step. The next steps were mostly adding a message to our communication system, adding an item to our maintenance list, and potentially sending a Slack message to the team for urgent issues.
It’s a balance between speed and smarts. You can get the latency down to ~800ms, but it can’t handle complex conversations. Actually, the biggest issue I ran into was hitting the context window limits. Think of it as the agent’s short-term memory. The conversation would start out fine, but then after a few minutes, it would start forgetting things. It’s like it would “forget” the system prompt and just do its own thing. Importantly, you can connect the agent to other tools to do things like save a summary and action items from the call... but if the call was long enough, it wouldn’t do it! That’s not good.
And if you go for a smarter model, the latency is so long that callers become impatient. I ultimately couldn’t find the right balance for my needs and shelved the project. It’s technically still live, so if you want to try it, let me know, and I’ll share the number.
Before shelving it, I figured out how to connect my voice agent to my knowledge base. And by “figured it out,” I mean I asked ChatGPT how to do it. The “best” solution turned out to be to replicate my knowledge base (furlo.com/help) and vectorize it. I have no idea how it works, but it made response times significantly faster. It walked me through setting up a Cloudflare Worker and wrote all the code. It would also have been possible to connect it to my contact list and vectorize previous emails/texts/calls to give the agent more context, but I had already decided to shelve it.
In my previous projects, I knew how to do everything, but this was the first time AI built something for me that I couldn’t have done on my own.
Am I Eliminating Jobs?
This feels like the right time to answer this question.
Let’s pretend my voice agent worked.
There are two types of expenses: capital and operating.
The capital expense is the actual cost to create the thing. For my startup, I personally contributed over $50,000, plus my time. For this project, I spent ~$100 on testing, plus ~40 hours off and on trying to make it work. Could I have hired someone (via Upwork) to make it? Probably. But I would’ve spent more time vetting and managing the project. And it definitely would have been more than $100. If I had invested, say, $2,000 into the project, would they have made a usable voice agent? It’s hard to say. I tried a whole bunch of combinations.
Honestly, the hassle and expense of hiring a developer for an experimental “what if” project would have been high enough that I simply wouldn’t have done it. So, in this case, I don’t think I eliminated a job.
The operating expense is more interesting. We get 2-10 calls a day, or about 60 to 300 calls a month. According to our stats, our call talk time is just over 5 minutes. That’s 300 to 1,500 minutes a month. At $0.13 per minute for the agent, that’s $39 to $195 per month.
Contrast that with hiring someone at $25 per hour. My total cost would be about 25% higher after employment expenses—or roughly $31.25 per hour and $2,500 per month for part-time work. It’s a real human, which is a huge bonus, but I still have a general context problem. They probably won’t forget to take notes, but the summary may not be as good; searching the knowledge base during a call is harder, and they have limited context (especially part-time). The context piece is huge; otherwise, they’re just a fancier (and more expensive) message taker. Oh, and it still doesn’t solve my after-hours problem. Not to mention the amount of initial and ongoing training.
For my call volume, it’s not worth hiring someone. Instead, I rely heavily on my answering machine. So, right now it’s not eliminating a job. As my company grows, using an agent like this would probably eliminate a job. Most likely, the agent would do the initial triage, and if it couldn’t handle it, then it would transfer them to a human receptionist. And that person would wear a couple of hats to help justify the expense.
Property Management Supplemental Software
My property management software is great! I looked at a bunch of them and genuinely believe I’m using the best (I do not get the love affair other PMs have with AppFolio). However, like all of them, it’s not perfect. But, and this is critical, it has a decently robust API.
So I went all in on vibe coding.
I used ChatGPT to help me think through a maintenance tracking app. I told it about my current system (it was good, not great). It asked questions and shared ideas. We finished by creating a product design document. I probably spent an hour.
Voice-to-Text
When I say “I told it about my current system,” I mean I spoke to it using WisprFlow. I know there are other voice-to-text options, but theirs is really good. I find AI works best when you give a lot of details in the prompt. And I tend to talk and talk and talk, which makes it that much better. Here’s a raw example:
Okay, this is me using WisprFlow because I want to give an example in this blog post. What I do is I hit the little world button and the spacebar at the same time, and then it just kind of stays on at the bottom of my screen, which is pretty cool. When I'm done, I'll just hit the world button or function button (I guess that's what it's called). I'll hit that again, and then it'll stop, do some magic processing, and then it will paste this text that you are reading now.
Pretty cool, right? It’s not as tidy as typing, but it’s significantly faster. And the AI systems handle it just fine. If you haven’t tried talking to an AI chatbot yet, I recommend it.
Back to My Development Workflow
So, I start with ChatGPT for brainstorming because I find it’s more creative than Claude. The output is a product design document.
Then I opened Claude Design, shared the document, and mocked up how it would look. I probably spent 5 hours tweaking and refining it. I like starting by asking it for 3-4 wireframes and then combining ideas into a semi-working mockup. The output is a standalone HTML file and a handoff file explaining the thoughts behind it.
Then I open Claude Code Opus and share the files (stored in a docs folder in the project folder). It creates the engineering plan and asks any clarifying questions. The output is yet another document. You’ll notice that I don’t rely on the AI’s internal memory. Instead, I ask it to document everything separately.
Once that’s done, I switch to Claude Code Sonnet to do the actual coding (technically, Claude switches for me). I do that simply to save tokens and expense.
Once it’s built, I try it and provide feedback. I have my own notes file and sometimes hand it 12 updates, ranging from tiny tweaks to “let’s rethink how this part works.” Opus comes up with a plan, and Sonnet builds it. The first build can take an hour, and then I’ll spend a few hours using it and providing feedback.
Once I like it, I go back to ChatGPT to review the entire code (vs. the documentation). All it does is... You guessed it... document any bugs, concerns, or efficiency improvement ideas. I share the review doc with Opus, which decides what to implement (and if there’s a question, it’ll ask), creates the plan, and Sonnet implements.
And naturally, I have an AI_WORKFLOW doc that spells this out so each system knows how it fits in the development process.
It’s a lot.
I know.
But AI is weird. In some ways, it’s crazy advanced. But in other ways, it’s a dumb toddler. So these checks and balances help surface times when it’s acting like a dumb toddler.
I didn’t write any code, and I honestly don’t understand how the backend works. Yet I can take an idea to v1 in a day or two, which is crazy! In my startup days, the maintenance-tracking app would have taken one to two weeks of focused effort. That’s $4,000–$8,000! I did it with $20 subscriptions to ChatGPT and Claude! The capital-cost savings are huge.
And when I find an issue, I fire off a quick message, and it’s fixed within 5 minutes. I love my PM software, but when I submit a ticket, it takes much longer to resolve. A new feature idea? I don’t know when I’ll ever see that.
Oh yeah! On the operational costs side, the software I used to track maintenance issues internally cost me $70 per month — and it didn’t connect to my PM software. The new one I built costs $5 per month as a Cloudflare Worker and syncs to my PM software via API.
More Internal Apps
So naturally, I rebuilt my invoice-maker... errr... had my invoice-maker rebuilt into my new software. I can now create an invoice with one click from a maintenance item, transferring the details and pictures. Plus, one more click creates a bill in my PM software with the invoice attached.
I didn’t stop.
We used to track all of our lock combos in an Airtable spreadsheet. It worked, but was clunky. Now that has a spot in the app.
I now create monthly owner reports that pull in financial data from my PM software, maintenance items, and communications to create a narrative that goes with the financial software. The summaries are good, but the really valuable part is what I call my “analyst.” For anything mentioned in the summary, it explains the technical details and where it came from. It was so good that I created... umm... had created... a plugin for our communication software that looks at the thread, pulls all the data, and organizes it to help answer a question. That has been a massive time-saver.
The one I’m most excited about is a new inspection app. I used to pay $117 per month for inspection software. It was fine, but once again it was siloed. Plus, it was a general inspection app, which meant it did some things I didn’t care about and was missing some features I really wanted. No more compromises!
Since I was taking photos and it needed to work offline, I decided to make it an iPhone app. I had never done it, but with some guidance from Claude, it was easy to set up. Now I have an inspection app tailored to my business, with proper syncing. It’s fantastic. That said, setting up a developer account and getting it downloadable (even for an internal app) is a lot more complicated than publishing on the web. Without guidance from Claude and ChatGPT, I wouldn’t have made the time to figure it out.
I have more ideas and now need to prioritize what to build next. The constraint now is giving my team time to incorporate the new tools into our operations. It’s genuinely exciting. I did have to upgrade my Cloudflare account, but I’m still way ahead on both my capital and operational (subscription) expenses.
An interesting aside. I asked Claude and ChatGPT for icon ideas, but I never 100% liked what they made, so I made each of these by hand in Pixelmator.
What About Ongoing Support?
It’s fun to make new things, but all software requires ongoing support. Bugs get found, underlying technology needs upgrading, and components get deprecated. What happens if something happens to me? What I’m doing carries a lot of key-person risk.
My honest answer is that I don’t know.
Right now, my entire business depends on me (I’m the licensee, owner, and operator), so it’s hard to add on more key-person risk. I suppose I’m technically decreasing my enterprise value because I’m making it more dependent on me. But the cost savings and better service seem worth it at this stage. And there’s a question about the value of my time. Is building software the best use? Will ongoing support be the best use? So far, the answer is yes, but what happens if my little internal software grows to be three times the size? I have a hunch that AI tools are particularly good at maintaining and refactoring code, but I’m not sure.
Jessi asked me what I’d do if AI prices started to increase. I don’t foresee that happening, but if they did, I don’t know if it’ll be a huge problem because my AI costs are capital expenses. The tools I’m making aren’t AI-dependent (except perhaps the first draft of my owner reports). So I could just stop developing the software and use what I have. Given current trends, I don’t see a need to hedge.
Coding for Non-Technical Folks
As a non-technical person, all of this is amazing because I can finally build what I want! I used to dream about someday “making it” and funding cool software startup ideas. Now I can just do it. I’m not pushing the development world forward, but I never would have. Of course, even if I “make it,” I probably won’t fund a software startup now. Multiply that by thousands of business owners, and that will definitely impact an industry.
I wasn’t paying attention during the PC boom (because I was a child). Were presentations better before PowerPoint? I know good presentations are still given, but there are a lot of really bad ones because PowerPoint makes it too easy to give bad presentations. Will AI-coded software do the same thing? I can easily see the quantity of apps increasing, but the average quality decreasing because it’s easier to make bad apps. But maybe that’s OK because it will give people who had zero chance to finally have a chance.
For now, I’m having a blast creating apps that are useful quality-of-life improvements. They have the features I want, none of the features I don’t want, and they operate at a fraction of the capital and operational costs.




No comments:
Post a Comment