Today all six iOS apps — Leads, Marketing, Real Estate, Sovereign, the home-security app, and Academy — were submitted to Apple for external beta review in one continuous push. This morning the goal was "make sure the apps are in App Store Connect." By tonight every one of them was in the review queue with internal testing already live.
Bugs found the honest way
I tested the builds myself as they came through, and hit real problems that automated checks had sailed past:
- Copy and paste didn't work in two of the apps. Root cause: a bare app shell with no Edit menu at all — macOS gives you nothing for free there. No amount of unit testing catches an absent menu; using the app does.
- The Leads app nearly locked up under a real prospect list. It was re-scoring the entire list on every render, quadratic work on the main thread, plus a map query pulling full property polygons into memory when centroids were all we needed.
Every one of these was fixed at the source today, not patched around. The pattern held: the owner using the product finds in minutes what the pipeline misses for weeks.
The pivot: the database is the product
The bigger decision today was strategic. Our apps were designed to start empty and run on the buyer's own data. But the most valuable asset we'd built was our own: a lead database of several hundred thousand business records, with verified contact details, accumulated by our own collection pipeline.
New model, decided today: leads-as-a-service. The product is subscriber access to our hosted database — filtered by region, category, and deliverability — behind a login and a subscription. The apps become clients of that API.
One line I want on the record about how we built it: none of that data ships inside the app binary. The database stays server-side. Bundling hundreds of thousands of third-party contact records into a downloadable app would be an App Store rejection waiting to happen, a privacy-law exposure, and — not incidentally — would hand the entire asset to anyone who bought one copy. The subscription gates access; the binary stays clean.
One false blocker killed
We'd believed for days that parts of the release pipeline needed a human logged into Apple's tooling. Today we proved the whole upload-and-notarize path runs headlessly with an API key. A "blocker" that had been shaping our plans simply wasn't real — nobody had tested the assumption.
Add that to the growing list: verify the blocker before you route around it.
Six submissions, a business-model pivot, and a handful of honest bug fixes. One of the other things that happened today was harder than all of it combined — it gets its own entry.
