Angel Campa
Colour theme

Sixteen products in 430 days,
alongside a full-time job.

In May 2025 it felt like a gold rush. Everyone was saying that anyone could build an app now. That was not true then, and I am not sure it is true now. I started building anyway.

None of this code was typed by hand. Models wrote it, and I directed them: at least 5,039,037 lines, 116,830 test cases and 21,898 commits, each figure counted by the repository that produced it. Checking them is the skill, and it took a year to learn.

The core sample

Each product sits at the month it began. The width is how long it ran. Two seams tell the story: the thin slow one at the top, and the crowded one below it. Pick any band.

A core sample of the build period from May 2025 to August 2026. Each product is a band positioned at the month it started and sized by how long it ran, coloured by era. The same information is available as a list on the work page.
GatherGrove. Ran membership, events, payments, and email campaigns for community clubs, keeping every club's member data walled off from every other club's by design. May 2025 to July 2026. The .NET year.GeoLeap. Told you which countries and streaming services carried a show or movie, and suggested a VPN destination when it wasn't available where you were. August 2025 to July 2026. The .NET year.SkillLedger. Let professionals trade work for work instead of money, settling in an internal credit that was encrypted, signed on every transaction, and held in escrow until a milestone cleared. August 2025 to July 2026. The .NET year. Retired.CapVeri. Worked out how much of a commercial building's running costs each tenant owed, and showed the arithmetic behind every figure. December 2025 to July 2026. The .NET year.CAMAudit v2. Read a commercial lease and its CAM reconciliation statement side by side, and produced a reviewed report identifying the dollar amount a tenant may have been overbilled. Started February 2026. The Cloudflare pivot.Lextract. Read a commercial lease PDF and handed back 126 structured lease terms, each with a confidence score, a citation to the source text, and a red-flag review of the clauses that tend to cost tenants money. March 2026 to August 2026. The Cloudflare pivot. Retired.GrantPipe. Ran donor management, fund accounting, and federal grant compliance for mid-sized nonprofits in one system, instead of three disconnected tools. April 2026 to August 2026. The April wave.Kaiplan. A wedding planning workspace with a budget ledger, guest list, seating chart, vendor tracker, and a public wedding website guests could RSVP to without an account. April 2026 to June 2026. The April wave.PebbleDesk. Ran attendance, staff-to-child ratios, billing, and state subsidy claims for licensed daycare centers, in real time, on tablets directors actually carried around the room. April 2026 to June 2026. The April wave.Floriva. A period tracker for iOS and Android whose data never left the phone it was installed on. April 2026 to August 2026. The April wave.Gavelhouse. Kept an HOA's legally separate reserve and operating funds from ever mixing in the ledger, and ran accounting, dues, and governance workflows for volunteer treasurers around that rule. April 2026 to June 2026. The April wave.PHIGuard. HIPAA-cited task management and compliance tracking for small clinics with no IT department, with an append-only audit trail behind every write to protected health data. April 2026 to June 2026. The April wave.Floriva Web. The marketing and research site for a period-tracking app: 470 prerendered pages of reproductive-health privacy research, checked by 41 verification gates instead of a framework. April 2026 to August 2026. The April wave.Ventora Platform. Shared infrastructure for analytics, auth, billing, storage, email, and two AI support widgets, which other products in the estate depended on as private packages instead of each rebuilding its own. May 2026 to July 2026. Shared infrastructure, then teardown.Ventora Sequencer. Ran multi-day email sequences on behalf of other products, sending real mail through one Durable Object per enrollment that scheduled its own next step. May 2026 to July 2026. Shared infrastructure, then teardown.Ventora CRM. Tracked every customer who touched any product across the portfolio, collected their testimonials into embeddable widgets, and made sure two competing products could never share a customer. May 2026 to July 2026. Shared infrastructure, then teardown.Decision-making skills. An agent skill that reads what's actually hard about a decision and runs the one procedure suited to it, built alongside a Python harness whose job is finding out whether any of it helps. Started August 2026. A skill, and the harness testing it. Still running. Ongoing.

Seventeen bands here. The headline counts sixteen, because the bottom one is still going.

The same thing as a list, by subject and by era.

How it went

01 · The first six months

It was slow, and it was buggy.

The bugs were stupid ones. Text running past the edge of its box. Things badly aligned. Happy paths that simply failed. It was not reliable. I found that out by opening the app and looking.

GatherGrove is the one I am still glad about from that stretch, and the reason is that I tested it by hand, over and over. That works. It does not scale past one person paying attention to one product.

02 · What changed

I stopped trying to catch things myself.

Writing the tests first was supposed to be the answer, and it is not. A model will code a bug straight through a test it wrote itself. I watched that happen often enough to stop reading a green suite as good news.

So the checking had to be built. Coverage gates that fail the commit rather than the conscience. A second engine kept alive to disagree with the one that shipped. Adversarial passes. And the one that still catches the most: an agent driving a real browser, using the product, taking screenshots and looking at them. That is the one I would keep if I could only keep one.

03 · How it ended

Then I shut it down.

On purpose, not by accident. Deploy scripts rewritten to refuse to bring the services back. A dated export of everything. Hostnames left resolving to nothing. The last one came off both app stores in August 2026, after a final release that made everything in it free.

I like to do things right. It felt awful.

17 products, one page eachThe workWhat each one did. What it ran on. Every number with the command that produced it.What it all adds up toThe ledgerLines, tests and commits across 17 products. And what each count covered.How you can check any of itThe methodEvery gate a change had to pass. And the one that caught more than all the others.

I can build anything. To build a business you have to love the industry you are in, or just stay an engineer.