← All work

Consulting experience / Technology / Growth-Stage Platform

From Product Code to Platform Architecture

As a growing platform expanded its offering, its engineering architecture had not kept pace. What started as a focused set of product-specific systems had, over time, become a collection of parallel implementations — each built to serve an individual offering, and each accumulating its own services, workflows, data models, and operational overhead. Protabyte led an architecture engagement focused on identifying the shared domain model underneath the product-specific layer, designing a consolidation strategy, and establishing the technical direction that would allow the platform to scale without continuing to multiply its complexity.

The contribution at a glance

Our role
Domain analysis, architecture direction, and consolidation planning.
Work delivered
A shared domain model, ownership boundaries, consolidation priorities, and API and reporting conventions.
Simplified view of the work
  1. 01

    Compare existing models

    Find shared meaning and legitimate differences across products.

  2. 02

    Define responsibilities

    Record the common model and ownership boundaries.

  3. 03

    Sequence consolidation

    Prioritize changes and conventions for subsequent product work.

Scope & current status

Architecture work for a platform with parallel product-specific implementations.

The challenge

Early-stage platforms are often built around a single product or offering. The initial implementation is shaped by that context: data models reflect the specifics of one product, APIs are designed around its particular requirements, workflows are optimized for its operational patterns. This is a reasonable approach when there is one product and time pressure is high.

The problem emerges when the business expands. A second product needs the same core capabilities — user management, workflow routing, reporting, notifications, transaction handling — but the first product's implementation was not designed to be shared. Rather than refactor the original system, teams often build a parallel implementation: faster in the short term, and compounding in cost over every subsequent release.

This organization had followed exactly that pattern. Multiple offerings had been built on separate service stacks that shared a common business domain but did not share a common architecture. ProductAService and ProductBService handled the same conceptual entity through different code paths. Reporting was generated separately for each product from data structures that diverged over time. Workflow logic was duplicated and maintained independently, which meant that bug fixes, rule changes, and operational improvements had to be applied repeatedly across systems that should have been one.

The downstream effects were predictable. Engineering velocity slowed as the codebase widened. New offerings required new parallel implementations rather than extensions of a shared model. Operational consistency degraded as the parallel systems drifted. And the cost of understanding the platform as a whole increased with every addition to its surface area.

The approach

Protabyte began with a platform-wide architecture review focused on identifying the shared domain model that the product-specific implementations had obscured. The goal was not to audit individual services but to answer a more fundamental question: what is this platform actually managing, and what would the architecture look like if it were designed around that answer rather than around each individual product?

The review surfaced a common core domain — a set of entities, relationships, and lifecycle events that were consistently present across all product implementations, expressed differently in each but conceptually identical. Once that shared model was visible, the path to consolidation became much clearer.

From there, Protabyte designed a phased consolidation strategy. The highest-priority work addressed the areas of greatest duplication and operational risk: consolidating the core domain model, normalizing the workflow layer, and identifying the API surface that could be unified without disrupting active consumers. The strategy was sequenced to deliver incremental improvement rather than require a disruptive rewrite — the existing product implementations would progressively delegate to the shared layer rather than be replaced wholesale.

Throughout the engagement, the architectural decisions were framed around business expansion: every design choice was evaluated not just for what it would fix today but for whether it would still hold when the next offering was added.

The work in detail

  1. 01

    Platform Architecture Review

    Conducted a structured review of all active service implementations to map duplication patterns, identify shared domain concepts, and establish where product-specific logic was warranted versus where it was accidental complexity.

  2. 02

    Domain Model Identification

    Identified the core shared domain model — the set of entities, relationships, and lifecycle events that were common across all product implementations — and defined how product-specific behavior should extend it rather than replace it.

  3. 03

    Consolidation Strategy Design

    Designed a phased approach to consolidate parallel service implementations, normalize the workflow layer, and introduce shared infrastructure patterns. Sequenced the work to reduce risk and deliver value incrementally.

  4. 04

    API and Workflow Normalization

    Designed a normalized API surface and common workflow model that product-specific implementations could delegate to, giving product teams a common interface and a clearer consolidation path.

  5. 05

    Shared Capability Architecture

    Defined the shared services layer: common business rules, unified reporting data models, reusable workflow components, and shared operational infrastructure that all offerings would draw from consistently.

  6. 06

    Technical Direction for Growth

    Established architectural principles and patterns for how future offerings would be built: extension over duplication, shared domain model as the authoritative source, and product-specific logic constrained to the edges of the platform.

The outcome

The engagement defined a shared domain model, consolidation priorities, and common API and reporting conventions. Those decisions gave the engineering team a reference for extending the platform and deciding which responsibilities belonged in shared capabilities.

Why it matters

The parallel systems pattern is one of the most common and most expensive architectural problems facing growing platforms. It rarely starts as a deliberate decision. It starts as a reasonable response to short-term delivery pressure: the next product needs to ship, the existing architecture was not designed to be shared, and building a separate implementation is faster than refactoring. That reasoning holds up once. By the third or fourth iteration, the cost is compounding in ways that slow every subsequent delivery and make the platform increasingly difficult to reason about as a whole.

The deeper issue is that most of these platforms share a common domain model — a set of core concepts that are consistent across all of their offerings. The product-specific implementations are expressions of that model, not replacements for it. When the shared model is identified and made explicit, the architecture becomes significantly simpler: each product contributes its specific requirements to the edges of the platform, while the core capabilities are owned, maintained, and improved once.

Protabyte's work in these engagements is as much about identifying that shared model as it is about implementing the consolidation. The technical work follows naturally from that clarity. The organizations that manage platform growth most effectively are not the ones that avoid product-specific complexity entirely — they are the ones that know where the shared foundation should be and build deliberately from it.

Related work