There is a trap in building software for specific industries: each new vertical looks like a fresh product, so teams build it from scratch, and they rebuild identity, billing, document management, and support for the fifth time. The work that is actually unique to insurance, or healthcare, or logistics is a thin slice on top of a thick stack of things every business needs. Vertical solution packs are how we keep that slice thin and stop rebuilding the stack.
What a solution pack is
A vertical solution pack is an industry-specific product assembled from three layers:
- The core platform - identity, configuration, audit, billing, communications, documents. Shared across every product.
- Horizontal building blocks - CRM, support, workflows, reporting. Useful to many industries, reused rather than rebuilt.
- A thin vertical domain - the genuinely industry-specific concepts, rules, and screens. This is the part that is actually new.
The pack is the composition of those layers into a coherent product, not a from-scratch build that happens to use some shared libraries.
Composition over construction
The defining discipline is that a pack composes existing bounded contexts rather than reimplementing them. An insurance product does not write a billing engine; it consumes the billing platform and adds the policy-specific logic on top. The integration happens through the same versioned contracts every other product uses, so the vertical inherits the platform's reliability, security, and updates for free.
flowchart TB
vertical[Insurance Domain Layer] --> crm[CRM Block]
vertical --> docs[Documents Platform]
vertical --> billing[Billing Platform]
vertical --> identity[Identity Platform]
Why the thin domain matters
Keeping the vertical layer thin is not just tidiness - it is what makes the model economically work. If each vertical reimplemented the basics, you would multiply maintenance by the number of industries you serve and fragment your security and compliance story across dozens of copies. When the basics are shared, a fix or an improvement to billing reaches every vertical at once, and the only code unique to each product is the code that is genuinely unique to that business.
Note: The temptation is always to fork a shared block "just for this one vertical's edge case." Resist it. One fork becomes the precedent for ten, and the shared-foundation advantage evaporates.
Reuse demands real boundaries
This only works if the shared building blocks have clean, stable boundaries. A platform that leaks its internals cannot be composed; every consumer ends up coupled to its implementation. So the discipline that makes solution packs possible is the same discipline that makes good services: well-defined contracts, versioned interfaces, and no reaching past the boundary. The investment in clean platforms is what unlocks cheap verticals.
Wrapping up
Vertical solution packs turn entering a new industry from a build into an assembly: a thin domain layer composed on top of a shared platform and reusable horizontal blocks. The model only pays off if the foundations have real boundaries and the verticals resist forking them - but when they do, each new industry product ships faster than the last and every improvement to the core lifts them all.
Thinking about an industry-specific product? Let's compose it.
