The Paradox Process: Web Development

A rebrand you can visit, and the platform underneath it.

Role
Full-Stack Developer & Technical Director
When
June 2024 — present
Stack
  • Next.js
  • React
  • TypeScript
  • Tailwind
  • Stripe
  • Sanity
  • PostgreSQL
  • Resend

The problem

A coaching company with a real method — and a digital presence the team had built themselves, well outside their comfort zones, that genuinely carried the business for years. But it had grown heavy to run: rented software everywhere, and a monthly ritual where a senior practitioner hand-assembled a class page, a checkout, an automation, a tag, and a batch of emails. The tools didn't help — Keap couldn't even send an email relative to a custom date. Hours of expert focus going to setup work a system should do.

Before and after

The Paradox Process website, the team's original version compared with the current design
The old siteThe live site today

Drag the slider, or use arrow keys. The right side is the live site at paradoxprocess.org — this is not a mockup.

Look at the headline on both sides: it's the same promise. The message was never the problem — the team knew exactly who they were, and they built that first site themselves, far outside their comfort zone. It carried the business for years, and I admire it. My job wasn't to fix their vision. It was to give it the craft it deserved.

More of the live site

The facilitator certification page on the live site
The facilitator path — four courses, native delivery.
The media and editorial section on the live site
The media library — same brand, different register.
The live classes page, generated by the evergreen class system
The classes page — the evergreen system's output. Enter a topic and a date; this page builds itself.
The live store page with Stripe checkout
The store — Stripe checkout, fulfilled by webhook.

The color rule that holds it together

Two pigments — orange and blue — exist at rest: marks, rules, stamps. Never backgrounds.
Two signals — brighter twins of each — speak only in response: hover, focus, active.
Mixing pigment and signal is the number-one way a brand drifts; the system makes it hard to do by accident.

What I actually did

  • Replaced the monthly setup ritual with one evergreen class system: a human enters the topic, the date, and the price — the listing page, the Stripe checkout, the Zoom session, the reminder and replay emails, even the replay course all generate themselves. Reused on purpose, because hand-rewriting emails every month sounded personal in theory and produced typos in practice.
  • Built the automation engine underneath it — fifteen step types, including the relative-date delay that Keap flatly could not do.
  • Rebuilt the visual language from scratch — warm paper, ink, and a strict two-color accent system with rules for when each color is allowed to speak.
  • Designed and shipped the production platform: marketing site, native course delivery with progress tracking, checkout, email automation, and a CMS — replacing Thinkific and Keap outright. 109 pages and 279 API endpoints at last count.
  • Wrote 27 migration scripts to move every account, enrollment, course-progress record, and video off the old systems with zero data loss.
  • Built the type and color systems so accessibility is mathematical: every tone combination is computed to pass WCAG AA before a human ever picks it.
  • Built a tunable AI coaching assistant into the platform: practitioners rate each AI question as charged or flat, and a seven-dimension style vector adapts round by round — with crisis detection that stops the session and surfaces the 988 lifeline.
  • Revived the company’s dormant YouTube channel with a Shorts-first strategy, ran Instagram on the same play, and handled SEO — planning, producing, and scheduling everything myself.

The operator side of all of this — the page composer, the campaigns, the scheduling — grew into its own product: Anpa.

Under the hood

The automation engine runs fifteen step types — delays relative to any date (the thing Keap couldn't do), emails, SMS, conditions, A/B splits, even a loop over class occurrences for batch operations.
Email runs on ten transactional designs delivered through Resend, with eleven delivery events tracked per message — sent, delivered, opened, clicked, bounced, complained, and the rest.
Stripe fulfillment is idempotent and patient: a deferred bank payment still fulfills when it clears, and a duplicate webhook never double-fulfills an order.
Courses are native — modules, lessons, quizzes, progress tracking, Vimeo playback — and class recordings flow from Zoom into replay courses automatically.

Where it landed

  • Two SaaS subscriptions gone; the company owns its platform.
  • One coherent brand from homepage to checkout to course player.
  • 2,000+ commits of shipped, production code in the current build cycle.