Featured case study · Client engagement

Center X Equine Therapy

A mobile-first, accessible website for a 501(c)(3) equine-therapy nonprofit. It helps families understand the program, trust the team, join the waitlist, and support the mission. For an org with no IT team, I was the IT team.

But the site is only the visible part. I delivered the entire technology stack end to end: domain and DNS, the inquiry and volunteer forms, the donation platform, hosting, and compliance posture.

Role: Product, design, build & full-stack delivery Nonprofit · healthcare-adjacent Full-stack delivery, no IT team required HIPAA-aware architecture
centerxequinetherapy.org

Live preview: the real, deployed site, embedded right here and currently in client review.

Before & after

From a basic page to a working front door

The organization had a thin .com with little for visitors to do. To make their site more effective, we redesigned it to be inviting, educational, and trustworthy. We added a waitlist and online giving, and made it mobile-first and accessible.

Before The previous Center X website: a single hero image with a horse and child and minimal calls to action.
Previous site: centerxequinetherapy.com
After The new Center X website: a full hero with clear Donate and Join the Inquiry List actions and a structured layout.
New site: centerxequinetherapy.org
  • Real conversion paths: inquiry/waitlist, volunteer, and donate, instead of a single “Learn more.”
  • Integrated Givebutter donations: secure giving and a donor CRM, not just a link.
  • Mobile-first & accessible: built for a 375 px phone and screen readers.
  • Trust content: team, therapy horses, mission, plus location and directions.
  • Faster & owned: on a global CDN with automatic HTTPS, on the org’s own .org domain.

How I approached it

Two lenses on the same project

Good outcomes need both: product thinking to build the right thing, and program discipline to ship efficiently, keeping costs low while delivering results that delight the client and the end user.

Product lens

Build the right thing

Start with the user
Three audiences: families new to equine therapy, referral partners (PT/OT clinicians), and donors/sponsors.
Name the unmet need
Newcomers don’t know what equine therapy is or whether it’s safe for their child. So the site leads with plain-language explanation, therapist credentials, and the horses’ calm temperament, the trust content right where people decide to inquire.
Set a North Star
One guiding outcome: a family or partner can understand the program, trust the team, and join the inquiry list.
Tie it to the business objective
For a nonprofit that means three conversions: inquiry-list sign-ups, donations, and volunteer interest, plus sponsor recognition that keeps supporters engaged.

Program lens

Actually ship it

Meeting notes & action items
The client meeting was captured in writing: large hero, PayPal for launch, Instagram, two therapists and two horses, PT/OT now. I try to make sure every preference becomes a tracked action item.
A task list, end to end
Content collection, sitemap, prototype, build, donation flow, forms, accessibility, DNS. One list, so nothing falls through the cracks between discovery and launch.
Dependencies, made explicit
The site depended on client-owned media (bios, photos), a donation-platform decision (PayPal vs Givebutter/Zeffy), waitlist tooling, and domain/hosting ownership on GoDaddy. Each was flagged early to reduce delays or blocks.
Critical path to launch
Content + donation flow + domain/DNS were the only real long poles. Everything else was built in parallel against a phased plan: discovery → content → design → prototype → build → QA → launch.

The discovery trail

Research before pixels

Before designing a single screen, I studied how the best therapeutic-riding nonprofits earn trust online. Then I turned the patterns into an information architecture.

See the full discovery trail

Studied four reference nonprofits

The Shea Center, Ride Above Disability, Tara’s Chance, and SD Therapeutic Horsemanship: national names and local peers, to see what families and donors expect.

Extracted the patterns that convert

Emotional hero + one mission line; three CTAs (Donate / Volunteer / Get started); named parent quotes; an accreditation/trust signal; a “what is equine therapy?” explainer for newcomers; meet-the-horses with sponsorship; and impact numbers.

Turned patterns into an information architecture

A first-launch sitemap (Home, Services (PT/OT), Meet the Team, Meet the Horses, Waitlist/Inquiry, Donate/Support, Sponsors, Contact), each section mapped to a user need and a conversion.

Prototyped, reviewed, and refined with the client

A polished homepage and core pages first, reviewed together, then refined. Collaborative all the way through.

Built, QA’d, and shipped

Implemented as fast, accessible pages wired to the services that run the org; checked on a 375 px phone; deployed to a live, HTTPS URL on Cloudflare Pages.

The full stack, delivered

Every layer, one accountable owner

The user interface is only the part you can see. Because Center X had no IT team, I owned the entire stack, strategy through hosting. They never had to coordinate a registrar, a developer, a forms vendor, and a payments tool on their own.

  • Strategy & product: discovery, three target audiences, a North Star, and the information architecture/sitemap.
  • Design & build: hand-built, mobile-first (375 px), accessibility-minded pages: hero, programs, team, therapy horses, video, and location with directions.
  • Domain & DNS: GoDaddy registrar, DNS pointed to Cloudflare for free SSL/CDN, and email records preserved so mail kept working through the cutover.
  • Inquiry & waitlist forms: evaluated Google Forms, Airtable, Tally, and Fillout, then built the inquiry, volunteer, and contact flows, each routing to a tracked destination.
  • Donations: evaluated PayPal, Givebutter, Zeffy, and Donorbox, then shipped Givebutter (live) with a donor CRM and recurring giving.
  • Hosting & deploy: Cloudflare Pages with a global CDN, automatic HTTPS, and Git-based deploys with client preview links.
  • Compliance posture: HIPAA-aware by design. The public forms collect no protected health information, with a documented upgrade path for clinical intake.
Givebutter (live) Cloudflare Pages GoDaddy (registrar) · DNS Forms: Fillout / Airtable Future: HIPAA intake (Jane App / IntakeQ / Jotform)
The tool-by-tool decisions behind each layer

Inquiry & waitlist forms, non-clinical by design

After weighing Google Forms, Airtable, Tally, and Fillout (generous free tier, unlimited forms from one account), I built the Waitlist Inquiry, Volunteer Interest, and General Contact flows, each routing to a tracked destination (Sheets/Airtable) with category and source tags. I deliberately kept them to basic contact, service interest, and a short inquiry, with explicit “please don’t submit medical details” copy.

A HIPAA-ready path, without slowing launch Future

Because the public forms collect no protected health information, the marketing and fundraising site shipped now. The form is a swappable module. When Center X needs real clinical intake, it moves to a BAA-signing vendor like Jane App for a PT/OT practice, IntakeQ/PracticeQ, or Jotform HIPAA, separate from the marketing site. (That healthcare instinct carried over from working on FDA-cleared medical devices at Dexcom.)

Donations & donor CRM, live

After comparing PayPal, Zeffy, and Donorbox, I shipped Givebutter, now live on the site. It’s genuinely free on the optional-tip model (tips on = $0 platform + $0 processing; tips off = a flat 3% + standard processing), with a free donor CRM, recurring giving, and campaign notifications. An Amazon Wishlist is an easy in-kind supplement.

Hosting & deploy, live

Deployed on Cloudflare Pages: free, a fast global CDN, automatic HTTPS, Git-based deploys with preview links for client review, and a password gate that was trivial to toggle before launch.

Domain, DNS & email, live

Kept the domain registered at GoDaddy (no transfer needed) and pointed DNS at Cloudflare for free DNS, SSL, and CDN, with email records preserved so mail kept working through the cutover. The site now resolves on its own .org with automatic HTTPS.

Data routing & follow-up

Every form lands somewhere with an owner: a shared Sheet or Airtable base per category (waitlist, volunteer, contact) with the tags built into the form structure, so no inquiry goes unanswered.

The outcome

A trustworthy front door, live and embeddable

  • Live on its own domain at centerxequinetherapy.org with automatic HTTPS, replacing a basic, hard-to-convert previous site.
  • Every conversion path working: inquiry/waitlist, volunteer interest, and live Givebutter donations with a donor CRM.
  • Mobile-first and accessible, built and checked on a 375 px phone, with trust content (therapist credentials, horses, mission, location and directions) built in.
  • One accountable owner for the whole stack (domain, DNS, forms, donations, hosting), so the client never had to wrangle vendors or developers.
  • So solid it’s embedded live on the Program Edge home page: the real, deployed site, not a mockup.

How we worked together matters as much as what shipped. I always try to communicate in the way that’s most comfortable for the client. If email is best, we do that. In this case much of our discussion was on Zoom and over text. It’s so important to have that shared context, capture decisions, and make them together.

Current project · in progress

Susan Street Fine Art — a gallery, reimagined

My next client is a contemporary art gallery in Solana Beach’s Cedros Avenue Design District: four decades of work and 60+ represented artists. The current site makes the art hard to find and is heavy to load. The plan is to put the art and the artists front and center, on a site that feels as contemporary as the work itself.

Early redesign prototype for Susan Street Fine Art: a full-bleed contemporary artwork hero with the gallery name, navigation, and a row of selected works below.
Early redesign prototype — real gallery artwork, dramatically lighter (about 1 MB of imagery vs. ~28 MB on the current site).

What we’re aiming for

  • Art front and center: a full-bleed, gallery-quality hero and artist-led browsing, so the work is the first thing you see.
  • Inviting and contemporary: a clean, modern design that matches the calibre of the collection and welcomes new collectors, not just insiders.
  • Far lighter and faster: the prototype already loads roughly 1 MB of imagery instead of ~28 MB, a big jump in speed, especially on a phone.
  • Easy paths to act: clear ways to inquire about a work, explore an artist, or start an art-consulting conversation.

More work

Open-source tooling, AI products & writing

Personal projects. Each one built to solve a real problem and to learn a new technology in the full stack.

Open source · AI

ToolWitness

An open-source framework that detects when AI agents skip tool calls or fabricate outputs, the silent failures normal observability misses. Product lens: a category most teams can’t even name yet. Program lens: 310 tests, five framework adapters, and a live dashboard, shipped and in real use.

310 tests · 5 adapters · live dashboard

View project
AI · Data

AI Market Report

An automated analysis agent covering 55+ assets with a 3-layer risk engine, built on Python, Claude, yfinance, and FRED. Product lens: make market risk readable by anyone, not just traders. Program lens: deployed daily via GitHub Actions with cross-source validation so a broken data feed can’t fail silently.

55+ assets · daily auto-deploy

View project
Writing

AI & Building Blog

Field notes from real builds: how I work with AI agents, what context engineering actually takes, and the failures worth learning from. The thread: thinking out loud, so the craft is visible, not just the polished result.

Field notes · new posts regularly

Read the blog

Have a project that needs both lenses?

Whether you need something shipped or a clear plan to get there, let’s talk about what an edge looks like for you.

Start a conversation