Inside the data system HouseFacts chose to build with Convex Works


Table of contents
The company
HouseFacts is using AI to help homeowners better manage their home. You can’t keep track of all the information in your home by yourself, and it’s just way too much.
So HouseFacts takes all that unstructured information, structures it, and helps you with the next decision, saving you time and money: inventory, cost basis and insurance claims, all enabled through AI for the homeowner.
It surfaces all that proactively, because otherwise people don’t know, and the reactive problem is catastrophic: a six-hundred-dollar job you miss can turn into a thirty-thousand-dollar one.
What differentiates HouseFacts is that it serves the homeowner, and the data is private to the homeowner. It does not sell the homeowner’s data. The reason you pay for a subscription is because the homeowner is the client, and not the product.
The challenges
Consent from day one
HouseFacts handles sensitive information about people’s homes, so there was the need to handle consent and collection correctly from the beginning, while the site still had almost no traffic.Data lost in the browser
HouseFacts collected its data through the browser, where much of it was lost before it arrived. Ad blockers removed the analytics scripts, Safari and iOS restricted them, later purchases could not be connected to the visit that caused them, and each tool kept its own partial copy. Because the reports still looked complete, the loss stayed invisible, and the advertising platforms were bidding money on incomplete signals.Manual and automatic decisions
HouseFacts needed its data to support both manual and automatic decisions. The team needed quality dashboards to make product and marketing decisions. The advertising platforms and the notification infrastructure needed the same data to decide who to bid on, which ads to spend money on, and which notifications to send and to whom.
That’s why we want to work with somebody like you from the beginning of making sure that we’re getting consents, making sure that the data is private, making sure that the information is getting piped appropriately. And we wanted to work with somebody who had experience with, say, GDPR, because we want to be thinking about that up front, as opposed to having to be reactive about that.
The solution
We built HouseFacts one connected data system, from consent through to the tools that use the data. Each part solved one problem:
Data compliance
We collect data only when the homeowner has given consent. Consent is handled server-side through iubenda and Cloudflare Zaraz, and it was in place before the site had real traffic.Data collection from all sources
We hold one consistent record of each homeowner, from the first anonymous visit through to signup and product use. It is collected server-side and first-party through Cloudflare Zaraz, and Segment keeps the events and identifiers consistent across every tool.
Anyone on the team can open the numbers and know they are real, without me as the filter. The data has to be trustworthy on its own.
Data loss detection
We measured what each tool actually received and found that ad blockers and browser limits were dropping a large part of it. Collecting server-side instead of in the browser recovered most of it and made the site lighter.Data ownership
We keep a copy of everything in HouseFacts’ own BigQuery warehouse. The record does not live only inside each separate tool.Data distribution
The same data reaches every system that acts on it. Google and Meta bid on real conversions, confirmed on the backend and counted once. ActiveCampaign gives each homeowner the follow-up email that matches how they arrived, and re-engages those who signed up but have not added a property.
I think we could have gotten away with some of the internal dashboarding, but then obviously I have to maintain it, and you don’t have the same granularity all the time. There’s a lot of value in being able to show it with other people.
Data stack
| Collection | |
|---|---|
| Webflow | The website; its forms feed conversions. |
| Python backend | Server-side events from the product and its services. |
| Cloudflare Zaraz | First-party, server-side collection and tag firing. |
| Segment | One shared event layer, routed to every tool. |
| Compliance | |
| iubenda | Consent management, so tools only receive allowed data. |
| Ownership | |
| BigQuery | The warehouse holding the data HouseFacts owns. |
| Distribution and activation | |
| PostHog | First-party product analytics the team acts on. |
| Mixpanel | Product analytics for funnels and retention. |
| GA4 | Web reporting, tied to user IDs for cross-device conversions. |
| Meta (Conversions API) | Ad conversions confirmed on the server. |
| Google Ads | Conversions for bidding on real signups. |
| ActiveCampaign | Follow-up matched to how each contact arrived. |
| Custom | |
| Cloudflare Workers | A custom proxy so PostHog runs first-party on housefacts.com. |
The results
HouseFacts moved from scattered, partial data to one system it owns and trusts. Because this was a first build rather than the tuning of an existing setup, the result is capability more than a single number.
We onboarded a head of engineering, and he was like, ‘Well, how does this work?’ And I was like, ‘Let me provide that for you.’ It went into the config, checked every single box, and created full documentation: how it works, what the pipeline looks like, all the triggers. If this was fragmented you couldn’t do this. This is why you want it all in the same place.
The data that used to be lost is now captured, the advertising platforms work from real signups instead of partial ones, and the same record serves marketing, product, and customer follow-up.
The system also keeps growing with the company: the next step is a notification infrastructure that reaches each homeowner at the right moment, built on the first-party data already in place.
Co-founder & CEO, HouseFacts