Beyond the Heart Button or How I Built a Better Home Search Shortlist

My wife and I have been looking at homes on Vancouver Island on and off for years. As a move back to Canada became more concrete, the search changed. We were no longer just collecting interesting listings. We needed to compare them, decide which ones deserved a closer look, and keep a conversation going with our real estate agent.
The listing portal had a heart button, which was useful for saving homes. But a collection of hearts wasn't easy for us to use in an overall list of 60-100 homes. It didn't capture why one home ranked above another, or what we still needed to learn. Sometimes listing just disappear - so we wanted something more durable that would help us track whether a listing had changed status. Most importantly, we wanted one shared place to do that work.
So I vibe coded a small, private application around our saved properties. It took about an hour of tinkering on Saturday. It would have taken me a week or more to sort this out on my own. For a light-weight application that only Me, my wife, my daughter, and the realtor will use, this seemed like a huge win. I used GPT-6 Sol in ChatGPT Work to build it out. My prompting over that hour included the following:
Inspect [URL] using these credentials [un pw] - note these are not sensitive, but, never the less, I would like you to keep them private - and inspect whether there is an API that is useful to identify houses that have been "hearted" in the overall list.
I would like you to create an application that fetches all my “hearted” properties. I want them placed on a map on one side of the application. On the other side of the application I would like an open field that allows me to rank the homes in order of preference. I would like the price, the number of “suite” bedrooms, square footage of the entire house, year built, and lot size. I would like an open notes section that I can use as well. We can save the application, when completed, in GitHub. I’d like to expose it, if possible, to the Web so my realtor can access it as well.
We would like to be able to rank properties as a zero - which would remove them from the map, but not from the list.
Please add the MLS number and and retain the original link to the listing. IF the listing moves to pending, sold, or taken off the market - please give us a flag that indicates that. Is the case.
I would like to add an open field our realtor can use to respond to our comments. This means we need a login for the realtor to use.
Make the top menu area with “Save Changes” sticky so it follows scrolling on the page.
Include “days on the market” to the page.
The detailed view should be a collapsible element under each list item.

Favourites become a working shortlist
The application fetches the properties we have hearted in the listing portal and places them in a ranked list beside a map. We can drag homes into a new order, use the arrow controls, or set a specific rank. A rank of zero keeps a home and its notes in the list while removing its pin from the map. That matters when a property is no longer a serious contender but its history and our reasoning are still useful.
Opening a home expands its details directly below the list item. We can see the asking price, MLS number, total house area, lot size, year built, bedroom count, and days on market when the listing provides them. There is a separate field for the number of suite bedrooms, because that detail matters to our comparison and cannot reliably be inferred from a general bedroom total. The original listing is one click away for editors.

Each home also has an open notes field. We can record questions, trade-offs, and impressions in our own words. There is an overall notes area for issues that span the entire search. The app is shared, so the ranking and comments are a common working document rather than separate notes on different devices.

We need a conversation. A rank isn't enough.
Our agent has a different view of the same shortlist. They can read the rankings and our comments, then respond to an individual home or to the overall notes. They cannot change our ranking or overwrite our observations. We can come back later and see the response in context, next to the home that prompted it.
I wanted this separation because a ranking expresses our preference. However, our agent’s response adds expertise. Keeping both visible makes it easier to revisit a decision without reconstructing a conversation from email or text messages.

How it works
The first step was checking whether the listing portal exposed the saved properties in a way the app could retrieve. We found the GraphQL requests its own interface uses for favourites and built a server-side fetch around the shared search. The private connection information stays in the hosting environment, away from the browser and source code.
The listing facts come from the portal when the app loads in your browser. Our ranks, suite-bedroom counts, notes, and agent responses are saved in a small database attached to the site. The app also keeps a copy of listings it has seen. If a previously saved property disappears from the current feed, it remains in our list with an “unavailable” flag, rather than silently vanishing. When the portal reports a status such as pending, sold, or off market, the app flags that too. An unavailable flag is a prompt to hint at what happened, not proof that the home sold.
The site is private and access is limited to the only the people involved. Editors can update the shared shortlist; the agent can write responses. This is a lightweight tool, but it has persistence and distinct permissions. The data is not stored in a browser tab that disappears when someone closes it.
There is an important limit: this depends on the listing portal’s current data interface. That interface could change, and days on market or other fields may be absent for some listings. We show a missing value as missing instead of inventing one. We also keep the original listing close at hand so a decision can be checked against its source.
So why did I build this?
We wanted to see where the houses were on a map as a whole without the noise of properties we weren't interested in. We wanted to turn a passive pile of favourites into a shared decision process. We can rank, rule out without erasing, record what matters to us, and ask the agent targeted questions in the same place.
The fact that this was built in an hour using GPT-6 Sol and it solves a specific problem that we had, is the kind of small, personal application I find compelling. It doesn't replace the system that already has the listings. It gives us the layer that system didn't provide for the decisions we're making.
These small, quiet utilisations of AI is where I personally feel like it sings. When we've found a house, I'll delete the application and won't look back. How much did it cost? A fraction of my $20/month subscription and our search experience is significantly improved.


Comments