Inspiration
Civic Estate started from something very real and very frustrating to watch. One of our family members had recently bought a house, and the process was way harder than it should’ve been. On paper, plenty of homes “worked.” In reality, almost none of them fit their life. They were juggling a demanding work schedule, had pets, and had just had a kid — and every Zillow listing treated those realities like they didn’t exist. What stood out to us the most was that the data exists, but it’s fragmented and impersonal. Zillow tells you about the house. It doesn’t tell you whether the house makes sense for you. Civic Estate is our attempt to close that gap — to turn listings into personalized, context-aware briefings that reflect real lives, not just square footage and price. Two people can look at the same home and get completely different answers, because their lives are different. That’s not a bug. That’s the point. This project is about making home search feel less like guesswork and more like informed decision-making — especially for people whose needs don’t fit into a generic checkbox.
What it does
Civic Estate is a browser extension designed to transform standard Zillow browsing into a high-powered personalized home search experience. The tool automatically scans search results and property pages to extract listing data, calculating fit scores by running every listing against your unique buyer profile — your commute, your family situation, your accessibility needs, your risk tolerance. It evaluates every listing across five critical dimensions — Lifestyle Fit, Accessibility, Family-Friendliness, Risk/Cost, and an Overall score — pulling real data from Google Maps, FEMA, CalFire, the FBI Crime API, and OpenStreetMap to make every score defensible and grounded in live information. Users can instantly personalize their entire search by updating their profile: switch from a solo commuter to a family with kids and a pet, and every score on every card recalculates to reflect what actually matters for that buyer. Top properties surface naturally through color-coded score badges, and detailed AI-generated reports powered by Gemini 2.5 Flash are delivered directly inside the extension — featuring a three-sentence narrative that cites real numbers, a curated list of green and red flags, the three questions you should be asking your agent, and a live chat interface where you can drill into any detail. Civic Estate doesn't change what Zillow shows you — it tells you what Zillow can't: which listing is actually right for you.
How we built it
Building Civic Estate was as much a collaboration challenge as it was a technical one. We started with a clear requirements phase, where we agreed on what problems we were actually trying to solve, what features were in scope, and what could wait for later phases. This helped align everyone early and prevented us from building unnecessary or conflicting features. From there, we moved into a design phase where responsibilities were divided and the system architecture was planned before any major implementation began. We defined data flow, pipeline phases, and clear boundaries between background logic, UI components, and external APIs. This made it easier for team members to work in parallel without stepping on each other’s work. To support collaboration, we set up a shared team environment using Git branches, consistent commit conventions, and agreed-upon interfaces defined in our types file. Clear documentation and regular check-ins helped us stay aligned as the project grew. Overall, working through structured phases and maintaining a collaborative workflow allowed us to move faster, avoid major rework, and build a more reliable final product.
Challenges we ran into
Zillow was the hardest technical problem we had to solve. The website changes its code often, especially the names of its page elements, which makes normal screen-scraping stop working. Because of this, we couldn’t rely on clicking or reading things the usual way. Instead, we found a method of DOM parsing Zillow. This method always stays the same and gives us clean, organized listing information no matter how the page looks. Another big challenge was working with many different APIs at the same time. We use about ten APIs across two different steps, and any one of them can fail or be slow. We had to make sure that if one API breaks, the whole extension doesn’t stop working. For example, if the flood data doesn’t load, the app will just say “Unknown” instead of crashing. Making the system handle errors safely in every part of the app took a lot of time and careful planning.
Accomplishments that we're proud of
We're proud that Civic Estate produces genuinely personalized results rather than one-size-fits-all rankings. Using Gemini to translate a user's profile into a dynamic weight system means the scores actually shift meaningfully based on who's looking — a first-time buyer commuting by transit and a retiree with mobility needs see completely different rankings for the same set of listings, because the math is built around their lives.
What we learned
One of the biggest lessons from building Civic Estate was how difficult it is to build reliably on top of a website you don’t control. Zillow changes constantly, and its UI isn’t designed for developers to scrape or extend. Elements move around and layouts constantly update, which made DOM scraping more difficult. The reality of the situation though is that we learned as coders that we face uncontrollable situations all the time and it boils down to whether or not we can overcome and adapt to these challenges!!!
What's next for Civic Estate
While the personalization for Civic Estate is reliable with time and research we hope to give users the dream home they're searching for. We also aim to expand the platform by giving users deeper, more comprehensive data to help them fully understand what daily life in a new home and neighborhood would be like.
Tracks
Best Use of AI in Real Estate, Best UI/UX Hack
Built With
- cal-fire-fhsz-arcgis
- chrome-extension-(manifest-v3)
- fbi-crime-data-explorer
- fema-nfhl-arcgis
- gemini-2.5-flash-(google-ai)
- google-elevation-api
- google-maps-directions-api
- google-places
- nces-education-data-api
- offender.io
- openstreetmap-overpass-api
- react
- typescript
- vite
- zillow-(web-scraping)-data-storage:-localstorage
Log in or sign up for Devpost to join the conversation.