// case_study

Seven months. Eight web properties.
One tax-resolution firm.

It started in February as one oversized web page. By September it was a continuing-education platform that holds up to the IRS, a partner program in two languages, a 1,122-page public tax library, a white-label partner portal and a convention site built in eight days. One builder directed it, with Claude as the engineering partner.

8
web properties
17
codebases
1,973
recorded changes
7
months, Feb to Sep 2026
// what_was_built

A whole ecosystem, not a website.

Eight web properties, each doing a different job for the same firm: teaching tax professionals, recruiting partners in two languages, answering taxpayers, and running the channel.

The continuing-education platform

Courses, live and simulive webinars, certificates that hold up to the IRS, regulator filings, a CRM and an email program. No server anywhere: it runs on Cloudflare's edge.

The partner program site

Rewrites itself for ten kinds of business, from tax preparers to lenders to law firms, and creates each new partner in SugarCRM while they apply. English, with full Spanish.

The Spanish-language partner site

Spanish from the first paint, in the formal usted a professional expects. A build check counts the English strings left on it. The count is zero.

A public tax-resolution library

1,122 pages, each a real HTML document a crawler can read, each naming its publisher and citing the primary authority behind every claim.

A convention product site

Built in eight days for a franchise network's convention floor, with printed QR codes that remember where they were posted.

A white-label partner portal

Restyles itself for each of three channel partners from the login domain, with referrals, earnings and payouts read from the CRM.

The enterprise tier site

The partner site cut for the Enterprise tier, packaged as a drop-in Django app that refuses to build if it would render unstyled.

The marketing-tools workspace

The program's marketing tools on their own, split out when the first build became a family of sites, one per program tier.

And the tools behind them
  • A builder that turns a webinar transcript into an eight-email sequence, a landing page, polls and handouts
  • A document and e-signature platform with 30 contract templates and a tamper-evident certificate of completion
  • A sales hub that shows a rep the prospect, the objections and the close in thirty seconds
  • A library of 26 email templates, including co-branded ones for each channel partner
  • A sixteen-document specification of the whole ecosystem
// how_it_came_together

From one web page to a regulator-grade platform.

  1. 01 · Feb 25 to Mar 21, 2026

    One oversized web page becomes a partner program

    280 changes in seventeen days turned a single 374 KB page into a partner site with a full portal inside it: a referral pipeline, earnings, a business planner that prints a branded roadmap, and AI tools behind a server-side proxy so no key ever reaches a browser.

    Alongside it: the e-signature platform, the sales hub, and the first build of the reference library.

  2. 02 · Apr 23 to Jun 30, 2026

    Foundations

    The first build split into a family of sites, one per program tier, and the CE platform started from an empty folder.

    The partner site was rewritten from an enterprise pitch into a friendly page a busy preparer would actually read, and then learned Spanish. The portal was rebuilt on a Django backend that talks to SugarCRM and the firm's lead relay.

  3. 03 · July, 2026

    Reinvention

    On July 17 the CE platform became a webinar engine in a single day: timed questions on native video, embedding inside partner portals, live analytics.

    The partner site learned to create partners in SugarCRM and to speak differently to ten kinds of business. The portal learned to wear each channel partner's colors.

  4. 04 · Aug 4 to 12, 2026

    A room for thousands

    The whole CE application moved onto Cloudflare Workers and its own address, with no server anywhere.

    One live room was rebuilt until a poll reached all 5,000 attendees on a local Workers runtime. The reference library went public with every page a real document.

  5. 05 · Aug 14 to 31, 2026

    The business layer

    A CRM, an email hub, a wizard that walks a recording all the way to a published course, twelve real courses, a free-credits offer and a command-center dashboard.

    The convention site went from a capture of a live page to the convention floor in eight days.

  6. 06 · Sep 1 to 3, 2026

    Regulator-grade in three days

    Monitored credit, a durable compliance ledger, certificates carrying every element IRS Publication 5888 requires, an IRS upload file in the IRS's own template, a California report and a reporting calendar that knows both regulators' holidays.

    A numbered requirements register whose rules fail the build if their tests do not pass.

  7. 07 · Sep 4 to 16, 2026

    Attacked from outside, driven by people

    Four fresh reviewers went after it and found 19 real defects, each fixed and pinned with a test. The first full walkthrough with the client produced its own list, all fixed.

    Deploys became near daily, each one recorded with a way back.

  8. 08 · Sep 17 to 26, 2026

    A live studio, and the hand-over kit

    The live room was rebuilt around how people already run webinars: everyone joins as a viewer, the host gives control, the presenter accepts.

    Enrollment became a real flow, a restore point of everything was taken, and the room was measured again at 300, 1,000, 3,000 and 5,000 people.

// who_it_serves

Built from each person's seat.

The tax preparer earning CE

Signs up, presses play, and the video stops only for a question the presenter is actually asking. Passes the exam and has the certificate on screen, as a PDF and in the inbox in the same minute, with a public page anyone can use to verify it.

The attendee in a live room

Arrives early to a holding screen that says "Nothing else to do" and counts down. At zero it becomes the room, with no reload. Polls land on every screen at the same moment, and the LIVE badge appears only once a real picture does.

The host running a session

Picks one of four doors (Live, Scheduled Live, Simulive, Evergreen), drops in the deck and presents from a console with the room on the left, the stage in the middle and the chat on the right. At End, credit is judged and the recording turns itself into an on-demand course.

The compliance officer

Wants to know nothing false will reach the IRS. Completions that pass every check ratify themselves, the rest wait with a reason, and the filing desk keeps out every row the IRS would reject and says why.

The business owner deciding to partner

Picks what kind of business they run from a small menu, and the whole page rewrites itself around their clients' problem. The application creates their partner record in the CRM as they submit it.

The taxpayer holding an IRS letter

Searches the notice number and lands on a page that answers in its first lines, names who edits it and when, and links straight to the IRS and the Code. Nothing asks for an email address before they can read.

// hard_problems

The hard parts, and how they got solved.

A room for 5,000 people

The problem

Three costs in the live room grew with the square of the audience: every heartbeat went to everyone, the headcount was recounted on every call, and each event was serialized once per connection.

What was built

One serialization per room, one timer, and a headcount announced only when it changes. Screenings flipped around so the room wakes itself at each question's moment.

The result

Every attendee received the poll at 3,000 people in 164 ms and at 5,000 in 285 ms, on real unpooled connections against a local Cloudflare Workers runtime.

"Connected" is not a picture

The problem

A video connection can report connected before a single frame has decoded. A LIVE badge on that is a black rectangle wearing a promise.

What was built

LIVE is earned by a decoded frame with an actual picture in it. A picture that stays black shows NO PICTURE with a Reload button.

The result

The badge never claims more than the screen shows, and every player names the layer that failed.

Certificates that hold up to the IRS

The problem

A certificate that prints a plausible placeholder in place of a real registration is worse than no certificate.

What was built

One certificate model carries every element of IRS Publication 5888. When a fact is missing it reads NOT VALID FOR CE CREDIT and names what is missing. The IRS upload file matches the IRS's own template byte for byte.

The result

The platform enforces the IRS continuing-education standards and refuses to round a no up to a yes.

A lead is never lost

The problem

The library's lead form handed off through a database that could stall, and a visitor could sit waiting 13.3 seconds when it did.

What was built

Every lead is stored before it is forwarded, and the store races a 2.5-second bound so it can never keep anyone waiting.

The result

The worst case went from 13.3 seconds to 2.5, tested with the database unreachable.

A translation that could break the CRM

The problem

A translation pass once turned the business-type values the CRM routes on into Spanish. Nothing would have looked wrong. Routing would simply have stopped.

What was built

A structural build check that refuses any change to a value the CRM routes on, proven with tests that make each failure fail the build.

The result

Labels translate freely, and the values the CRM depends on cannot change by accident.

Every address looked like the same empty page

The problem

The library was a single-page app, so every URL answered with the same small skeleton. To a crawler that does not run JavaScript, a whole library was one blank document.

What was built

A build-time prerenderer that writes every route as its own page with its own title, article text and structured data.

The result

Every route prerendered, 1,435 of 1,435 at the time, and the article paints straight from the HTML before any script runs.

// principles

The rules it was held to.

One idea ran through every property: a screen tells the truth about what is happening, and when a requirement is not met, the answer is no, with the reason named.

A screen tells the truth

A LIVE badge needs a real picture. A switch that cannot act says "on, but held" and names what is missing. A failed read is never shown as an empty record.

Refusal is the default

When a requirement is not met, the answer is no, with the reason named. A session where no required check fired certifies nobody.

Nothing is invented

Polls mirror what the presenter really asked. Program numbers come from the approved list or not at all. The library never invents a date or claims a credential it does not have.

Stand alone, connect by doors

The CE platform runs its whole learner journey on its own, proven by a browser test with every outside connection switched off. Each integration plugs in through one door with its own switch.

Every deploy has a way back

Each production deploy records where it came from, so going back is one command, and a rollback never touches the data.

The owner's words go in the interface

"Give control", "Add something to the room" and the four door names came from how the product owner described them. The buttons say exactly that.

// by_the_numbers

Counted, not estimated.

Every figure comes from the work's own record, and each one says where it was measured. No usage, traffic or revenue figures appear, on purpose.

1,973

recorded changes across seventeen codebases

Git history, Feb 25 to Sep 26, 2026

~10 wks

from an empty data model to a regulator-grade CE platform

Jul 17 to Sep 26, 2026

5,000

attendees in one live room, every one receiving the poll

Local Cloudflare Workers runtime, real connections

2,177

unit tests, plus 10 browser suites in real Chromium

Last full run, Sep 26, 2026

166

written requirements, 150 enforced by tests that carry their id

The requirements register

89

production deploys, each recorded with a rollback id

Deploy ledger, Sep 4 to 26, 2026

281 → 0

library pages with no inbound link

Build measurement, Aug 29, 2026

157 to 185 KB

a library guide page's compressed download, down from about 835 KB

Cold cache in Chromium, real build

0

English strings left on the Spanish site

The site's own leak check

892

page nodes compared with the live original, zero differences

The convention site's port guard

// how_it_was_built

One builder. One AI engineering partner.

I directed the work with Claude, Anthropic's AI, as the engineering partner. Of the 1,973 recorded changes, 1,214 were written by Claude sessions under my direction and 158 more name Claude as co-author.

The product owner's words became the interface. Every feature was checked where it runs, and live video counted as working only once a person saw the picture on a real screen.

Built to be handed over
  • A numbered requirements register tied to tests
  • An API contract written for a Django backend
  • An embed guide for the portal teams
  • An onboarding brief for the client's developers
  • A go-live guide and a downloadable portal bundle
  • A design-token system with rebuild instructions
  • A written operating standard for the library, with a 60-check audit harness
  • A restore point of the original codebases

Your firm runs on rules too. Build on them.

Tax, advisory, legal and healthcare firms answer to regulators who ask hard questions. The systems that serve them should answer those questions before anyone asks.

Talk about your build

The client is not named. Client engagements are confidential.