Veterinary M&A Marketplace and Practice Platform
Marketplace, practice-management and payments platform for a US veterinary M&A company, rebuilt in slices while the inherited system kept serving real users.

Problem
Parts of the inherited platform were live, with real users and real payments running through them, so neither a rewrite nor a freeze was an option. Earlier vendors had left the codebases half finished, and the client, a US veterinary M&A company, had already been through engagements that delivered pieces which never added up to a product.
What they wanted was one platform for the whole business life of a practice: valuation reports, management tools and a community for running it, and a marketplace with structured deal flows for selling it, with subscriptions, billing and payments underneath. A practice sale is staged by nature, each step gated by its own signed agreement, and getting a stage wrong exposes a seller's identity or numbers to the wrong party. Every charge, for reports, subscriptions, deal fees, document access or event recordings, had to reconcile exactly. The primary users are doctors with limited time for business processes.
Solution
Five developers spent two years replacing the platform from the inside. The inherited core kept serving traffic while new capability was built as self-contained vertical-slice modules, each owning its own data boundary; user accounts moved to AWS Cognito; and release by release the legacy code shrank in importance instead of being torn out in one risky operation. Every feature branch deploys to its own demo environment with schema migrations applied ahead of the deploy, so the client saw work in progress instead of waiting for release notes.
A practice sale became an explicit timeline of stages with dependencies, where who may see what, and when, is data the system enforces. Money is an append-only transaction ledger with more than sixty transaction types: a charge stays pending until the Stripe webhook confirms it, failures revert automatically, and access to anything paid is guarded by actual settlement status. The result is a .NET API behind a React web application and a companion mobile app, with SignalR for messaging and deal-timeline updates, Quartz for the scheduled work of subscriptions, meetings and refunds, and MySQL underneath.


