H2MHuczyńskiSystems you own
Contact

Work · Flagship · clinic marketing agency

A clinic marketing operating system, operated from Claude

Multi-tenant CMS plus an agency CRM and a per-clinic CRM, one codebase on Cloudflare, every action available as a tool through its own MCP server.

66tables
199migrations
180tools in the MCP server
1codebase for CMS + two CRMs

Numbers as cleared by the owner. Nothing rounded, nothing added.

01

The situation

An agency that markets clinics: a site per clinic, a CRM for the agency, a CRM for each clinic, and a per-seat subscription for the workflow in between.

Three tools, three logins, nobody owning the whole.

02

What was built

One codebase: a multi-tenant CMS with every clinic on its own tenant, the agency CRM and the per-clinic CRM on the same schema, on Workers and D1.

On top, an MCP server with 180 tools, so the agency operates the system from Claude: content, leads, follow-ups, reports.

03

What changed

The per-seat subscription is gone; the agency and every clinic operate the same CRM they own.

New clinics are a tenant, not a project. The schema has grown through 199 migrations without a rewrite.

04

How it runs

Cloudflare Workers and D1, 66 tables, scheduled tasks with proof of their last run. The agency's account, the agency's repository.

How the pieces connect

The system on one map. Arrows show what feeds what; hover a piece to light its path.

Claude

The operator

The agency team works from Claude.

MCP

MCP server · 180 tools

Every action of the system as a tool, with an audit trail.

CMS

Multi-tenant CMS

A site per clinic, each on its own tenant.

CRM

Agency CRM

Leads, follow-ups, reports for the agency.

CRM

Per-clinic CRM

The same CRM, one per clinic, owned.

D1

D1 · 66 tables

One schema, 199 migrations, on Workers.

Runs on

  • Workers
  • Sqlite
  • Typescript
  • MCP
  • Claude
  • Actions

If you want one of these

Three steps. The six-step version, with the brief and the video request, is on the home page.

  1. 01

    Scoping call

    30 min, free

    You describe the situation; I ask three questions and propose a shape.

  2. 02

    Savings audit

    €1,200 / $1,400 net, 5 business days

    The 36-month cost comparison, the order of moves, the risks and a fixed build price. Paid by bank transfer after the call, once you accept the offer; credited in full against a build ordered within 60 days of the report. If the audit does not show savings of at least twice its fee over 36 months, you get the fee back.

  3. 03

    Build, handoff, operate

    fixed price from the audit

    One engineer builds every layer on your account and documents it. The offer includes a monthly plan by default, so the system is looked after from launch day.

Questions I get about this

Tap a question to see the answer.

Scoping calls · most weeks

Savings audit. In 5 business days: the 36-month cost comparison, the order of moves, the risks and a fixed build price in writing. It costs €1,200 / $1,400 net, paid by bank transfer against an invoice after the call and after you accept the offer. If you order the build within 60 days of the report, the full amount comes off its first instalment; if not, the report is yours to take to anyone. If the audit does not show savings of at least twice its fee over 36 months, you get the fee back.

The repository, the Cloudflare account, the domains and the data sit under your company from day one, and the data is yours. Code built only for you becomes yours once it is paid for, as the contract sets out; H2M modules come with a perpetual licence. I get access to your accounts, not ownership of them.

The audit gives you a date and a fixed price before you commit to the build. The stack is small and one person builds every layer, so nothing waits in a queue between departments.

Yes, before you send the brief if you need it. Send yours or use mine.

Something else? Ask it on the call

A 30-minute call, free

Thirty minutes, then an offer for the audit

Pick a free time in my calendar. Or leave an email: I reply within one business hour with three questions and a proposed time for the call, not a deck.

More of the same shape