I Used AI to Build a Better Way to Buy a House
It's been a few months since my last post. Life got in the way. Between travel, caring for three kids, and returning to work, I haven't had much time to write. Somewhere around the 300th time I had to break up my older kids wrestling while holding the baby, the reality finally hit: we were officially outgrowing our house.
So my wife and I started looking.
We did the usual routine. Zillow and Redfin alerts on constant refresh, forty browser tabs open at once, and endless debates. My wife wanted the finished product—beautiful kitchens and move-in-ready basements. I was the guy looking at the "bones," willing to live in a construction zone for two years if it meant more space in a better zip code.
Before long, I did what I usually do when faced with an important decision: I created a Google Sheet.
I tracked every listing, added columns for everything, and tried to remember why we’d passed on that one house three weeks ago. It didn't help. If anything, the data just made me more twitchy. I knew there had to be a better way to look at this than just staring at a spreadsheet and hoping for a gut feeling.
Zillow and Redfin were great at showing me what was for sale. But I wanted to answer three different questions:
How do I keep track of everything that's hitting the market?
Which houses are actually the best fit for our family?
If we find one we like, what should we offer?
I've spent my career using analytics to solve problems like these, so figuring out the approach wasn't the hard part. The challenge was turning that logic into a product I could actually use.
A year ago, this project would have died as a half-finished Google Sheet. Instead, I used Claude Code to build the application, Neon Postgres to store the data, and Vercel to deploy it. The result gave us one place to track the market, narrowed the search to houses that fit our priorities, and gave me a data-backed starting point for offers.
Here’s how I approached it.
One Place to Track Everything
Step one was simple: stop the context switching. I built the app to pull listings into the database, flag new ones as they hit the market, and monitor price drops. There’s nothing particularly sophisticated about this part, but having one source of truth changed the search from chaotic to manageable.
More importantly, I no longer had to do the tracking myself, and I had a reliable dataset for the models that came next.
Math Over "Vibes"
The more interesting problem was figuring out how to compare houses.
Every house starts as a vibe. You scroll the photos and think, "Yeah, I could live here." Then you see thirty more houses and forget why you liked the first one. To fix that, my wife and I picked nine important criteria and weighted them. Schools and office space? Heavy hitters. A pool? Nice to have, but not a dealbreaker.
Using Claude Code, I built an evaluation system to grade each home against our criteria. We set minimum requirements, then weighted each criterion based on how much it mattered to us. The result was a simple first-level filter: see it, watch it, or pass.
One of the first useful results wasn't even about a specific house. It was about an entire area we'd expected to target. Once the model consistently accounted for schools and flood risk, houses there kept scoring lower than we expected. We realized, based on the priorities we'd already agreed on, the area wasn't actually a great fit.
The scoring also helped with the differences between how my wife and I look at houses. She places more value on a beautifully updated home. I'm more willing to live with an ugly kitchen if it means more space or a better location.
Building the model forced us to have the "renovate vs. ready" argument once, rather than every single time a new house popped up. We still have our disagreements, but now we're arguing over the same set of facts.
And yes, we ignored the model and visited a C+ house anyway.
It turns out the model had a point.
The Bidding Strategy Engine
Bidding strategy is where the real anxiety lives. I knew I couldn't find a magic "correct" price, but I wanted something better than guessing based on the asking price and hoping my reasoning made sense.
So I built a second model. It finds recent sales and scores them based on how closely they match the house we’re considering. Weak comparisons are filtered out, while the closest matches get more weight. It then factors in market signals such as days on market and price reductions to produce an estimated value, three potential bid levels, and a confidence rating. It’s not an appraisal, but it’s a heck of a lot better than a blind guess.
What it gives me is a starting point backed by data. I can look at the comps, understand why the model produced the estimate it did, and decide whether I agree with it.
More importantly, it helps me stop obsessing over whether I'm approaching the bidding process the "right" way.
The Takeaways
This system worked, maybe better than I expected. It cut out noise, helped us get on the same page, and gave me a data-backed starting point for offers.
It also has plenty of limitations. The scoring weights are ultimately just our opinions. The tool can't reliably distinguish a remodeled home from a fixer-upper. I have a growing list of ways I could improve it.
But I'm not sure most of them are worth building.
That's probably the most useful thing this project reinforced for me. In analytics, there's always another edge case to account for or another layer of sophistication you could add. The harder question is whether that additional work will meaningfully improve the decision.
In this case, I built something relatively quickly that got us most of the way there. Making it 10% better could take as much effort as building the first 90%, without changing a single decision we make. The system was already saving us time, reducing anxiety, and adding rigor to the process.
The other takeaway is about AI: Claude Code gave me the ability to build something I couldn't have built on my own a year ago. I knew the logic I wanted and how the analytics should work, but I didn't have the toolkit to manually code and deploy every piece. AI opened the doors.
But it didn't decide which problems were worth solving, which tradeoffs mattered, whether the outputs made sense, or when the system was good enough to use. That still required my judgment.
House hunting, like a lot of decisions, is never going to be 100% rational. My wife is still going to fall in love with a kitchen, and I'm still going to try to math my way into an extra room for a home gym. We'll probably even see another C+ house.
But at least this time, we'll know it's a C+ before we open the door.