Tornar al portfolio

Full-Stack Engineer · Aug 2023 – Feb 2025

RepeatMD

B2B SaaS platform serving 4,000+ medspa and aesthetic clinic practices in the US. A white-label loyalty, memberships, and ecommerce engine that sits on top of each clinic's EMR — built to reverse the industry's ~70% annual patient churn through subscriptions, rewards, and automated re-engagement.

  • Promotions
  • Memberships
  • Rewards
  • Discounts
RepeatMD patient cart with membership pricing applied — the discount engine in action

4,000+

Clinics on the platform this code serves

10s → 1s

API response time on a critical patient endpoint, after a LINQ rewrite

$50M

Series A funded SaaS scale

BDD-first

Real-database tests on every shipped feature

Stack

.NET 8C# 12PostgreSQL 16EF Core 8DapperReact 18TypeScriptViteTanStack QueryTailwindCapacitorStripe ConnectLaunchDarklyHangfireReqnrollxUnitDatadog APMDocker

What I owned

  • Promotions, discounts, rewards & membership lifecycle
  • Cross-stack feature delivery (entity → admin → patient → Stripe)
  • Patient self-service flows: cancel, keep, reactivate, dunning

What I didn't

  • Original .NET monorepo, EF Core & LaunchDarkly setup
  • Auth, Twilio/SMS pipeline, primary Stripe integration
  • Admin frontend overall (owned specific pages only)

"I owned the engine that decides what discount applies to what item for what patient at what time."

The work

Owned end-to-end

Free-service redemption, end to end

Challenge

The platform supported monetary discounts (percent or fixed amount), but had no concept of a complimentary treatment as a benefit — "buy a membership, get a free facial". Clinics wanted that lever; the domain model had to grow to support it.

What I built

  • A new domain entity for non-monetary benefits — schema, migration, validation rules
  • Admin surface for attaching free services to existing offer types
  • Patient API surfacing the available benefits alongside the rest of the promo response
  • Stripe checkout integration for $0 line items, with guardrails against stacking benefits incorrectly
  • BDD coverage running against a real database for the full vertical, not a mocked one

Outcome

The new model untangled a previously overgrown discount module by separating the benefit-rules concern into its own boundary. The added test coverage surfaced edge cases the prior duplication had hidden.

Aprenentatge

The hardest part of a vertical feature isn't shipping the new layer — it's untangling the legacy seam beneath it. The duplication you remove is worth more than the code you add.

Patient cart — the benefit engine surfacing applied pricing at the line-item level

Contacte

Escriu-me.

Les captures provenen d'un entorn no productiu emprat durant el contracte. No es mostra codi propietari, dades de clients ni codi font específic. Els noms interns d'entitats i les mètriques quantitatives s'han generalitzat o omès; el treball i les decisions descrites són meves.