---
title: "Polity Case Study"
canonical: https://wavect.io/case-studies/polity/
language: en
description: "Polity is an enterprise SaaS platform. Wavect unified quality engineering, service-specific test gates, release automation, and frontend modernization across its software estate."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

[← All case studies](/case-studies/)

![Polity logo](/img/clients/svg/polity.svg)

CASE STUDIES · 2026

Polity

# Unified QA across seven microservices, hundreds of bugs closed, release gates held.

Polity is an enterprise-grade platform running on seven microservices. Distributed, complex, and held to the standards enterprise clients demand, the kind of system where QA is not optional.

ENTERPRISE Software QA 2026 Live

At a glance

Engagement Software QA

Industry [Enterprise SaaS](/industries/enterprise-ai-saas/)

Stage Enterprise

Engagement size Multi-year retainer + fixed prices

Year 2026

Stack

React Java/Kotlin Go Python Rust Docker

Status Live

Live [polity.li](https://polity.li/)

## Overview

Polity is an enterprise-grade platform running on seven microservices. Distributed, complex, and held to the standards enterprise clients demand, the kind of system where QA is not optional.

## What's the challenge?

Seven services, each with its own tooling, maturity, and failure modes. Multiple vendors shipping code in parallel, features in flight, and an enterprise client base that won’t tolerate regressions. Unify it all into one quality model over 1.5 years, without slowing engineering down.

## What call did we make?

### Centralised QA can't keep up with seven services. We moved quality to where the code lives.

> Vendor pull requests were reviewed case by case, testing sat with one central team, and critical flows were validated by hand. That model does not scale to seven services on a continuous-delivery cadence. We rolled out two protocols. The first turned vendor-integration evaluation from case-by-case pull requests into a structured peer-review workflow with explicit gates. The second split centralised testing into service-specific CI gates and component-level validation across all seven microservices. In parallel, we migrated the frontend and tooling stack to a current platform with a modernised developer workflow, replaced manual QA on critical flows with automated end-to-end coverage, and rewired CI across all seven services into guardrailed pipelines with integrated user-flow validation. The point was never more tests. It was pushing ownership, automation, and standardisation down to where decisions are actually made.

## What We Did

Quality across seven services and multiple vendors needed a coordination layer before more tooling. The architectural call: move from centralised, manual, fragmented workflows to scalable, ownership-driven, automated systems, optimised for developer velocity, review quality, reliability, and long-term maintainability through standardisation and modern infrastructure. Concretely: rolled out a vendor-integration review protocol, shifting evaluation from case-by-case pull requests into a structured peer-review workflow with explicit gates; rolled out a unified testing protocol, splitting centralised testing into service-specific CI gates and component-level validation across all seven microservices; migrated the frontend and tooling stack to a current frontend platform with a modernised developer workflow; replaced manual QA on critical product validation with automated end-to-end testing; consolidated fragmented legacy CI across 7+ services into guardrailed pipelines with integrated end-to-end user-flow validation. On top of that: E2E strategy, flakiness reduction, CI/CD hardening, vendor and contributor quality supervision, hundreds of bugs triaged. Tooling investments paid back around month three. Result: quality that survives team turnover, vendor rotation, and continuous refactors.

## Outcomes

### 7 services - Unified Testing
- **Category:** Scale

### Hundreds - Bugs Resolved
- **Category:** Risk

Want outcomes like these on your build?

Fixed scope. Fixed deadline. Signed SoW.

[Get in touch](/contact/)

## Selected Screens

![Polity, screen 1](/img/case-studies/polity/001_hu_d08fd51ea6b7f0d7.webp)

![Polity, screen 2](/img/case-studies/polity/002_hu_12ddd7ebddda7717.webp)

![Polity, screen 3](/img/case-studies/polity/003_hu_55d20f41b3b754dc.webp)

![Polity, screen 4](/img/case-studies/polity/004_hu_59536493a33cc265.webp)

![Polity, screen 5](/img/case-studies/polity/005_hu_dcbd298958236dad.webp)

![Polity, screen 6](/img/case-studies/polity/006_hu_93a76ddfdf1a4117.webp)

![Polity, screen 7](/img/case-studies/polity/007_hu_3811f149ba140c64.webp)

![Polity, screen 8](/img/case-studies/polity/008_hu_f1c5deb1741041d7.webp)

## What We Learned

Quality across distributed systems is a coordination problem, not a tooling one. Holding seven services, multiple vendors, and continuous delivery to one standard took as much process design as it did technical work. The architectural judgment that mattered: move from centralised, manual, and fragmented workflows to scalable, ownership-driven, automated systems.

## Tech Stack

- [React](https://react.dev/)
- [Java/Kotlin](https://kotlinlang.org/)
- [Go](https://go.dev/)
- [Python](https://www.python.org/)
- [Rust](https://www.rust-lang.org/)
- [Docker](https://www.docker.com/)
- [CI/CD](https://github.com/features/actions)

## Tags

- Enterprise
- QA
- Microservices

## Links & Resources

[Polity](https://polity.li/)

Related services

- [Custom Software Development](/services/software-development/)
- [Software Quality Assurance](/services/software-quality-assurance/)

Client references and trademarks

Wavect publishes these case studies about its own work. Client names, logos and trademarks are the property of their respective owners and are used here to identify the work, not to imply any partnership, sponsorship or endorsement. Each case study describes Wavect's own contribution inside a larger effort, and other parties, including the client's own teams and other vendors, contributed to the results. Figures attributed to a client are that client's own reported numbers. Figures about our work come from our records as of the review date, and we provide evidence on request. Reviews are reproduced from the platform named on each card and link to their source. We do not publish the commercial terms of any engagement, and product screenshots remain the property of the client shown. If you are named here and want a correction, a change or a removal, write to us and we will act on it: [office@wavect.io](mailto:office@wavect.io)

### [SKD Dresden](/case-studies/skd-dresden/)

Staatliche Kunstsammlungen Dresden (SKD) is one of the oldest and most prestigious museum networks in the world. They wanted clarity on what blockchain could …

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/case-studies/polity/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-05-21",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-05-21",
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".faq-question",
          ".faq-answer"
        ]
      },
      "url": "https://wavect.io/case-studies/polity/"
    },
    {
      "@id": "https://wavect.io/verified-claims.json#polity-seven-services-qa",
      "@type": "Claim",
      "appearance": {
        "@id": "https://wavect.io/case-studies/polity/#webpage",
        "@type": "WebPage",
        "inLanguage": "en",
        "url": "https://wavect.io/case-studies/polity/"
      },
      "author": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "dateModified": "2026-08-04",
      "identifier": "polity-seven-services-qa",
      "inLanguage": "en",
      "text": "Wavect owned quality engineering across 7 microservices on the Polity platform for around 1.5 years."
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@id": "https://wavect.io/case-studies/polity/#case-study",
  "@type": "Article",
  "about": {
    "@id": "https://wavect.io/case-studies/polity/#project",
    "@type": "CreativeWork",
    "creator": {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ]
    },
    "dateCreated": "2026-01-01",
    "description": "Software QA engagement",
    "funder": {
      "@type": "Organization",
      "name": "Polity"
    },
    "name": "Polity",
    "subjectOf": {
      "@id": "https://wavect.io/case-studies/polity/#case-study",
      "@type": "Article"
    },
    "url": "https://polity.li/"
  },
  "abstract": "Seven services, each with its own tooling, maturity, and failure modes. Multiple vendors shipping code in parallel, features in flight, and an enterprise client base that won't tolerate regressions. Unify it all into one quality model over 1.5 years, without slowing engineering down.",
  "author": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "datePublished": "2026-01-01",
  "description": "Polity is an enterprise-grade platform running on seven microservices. Distributed, complex, and held to the standards enterprise clients demand, the kind of system where QA is not optional.",
  "headline": "Polity, Wavect Case Study",
  "image": "https://wavect.io/img/clients/svg/polity.svg",
  "inLanguage": "en",
  "isPartOf": {
    "@type": "CollectionPage",
    "name": "Wavect Case Studies",
    "url": "https://wavect.io/case-studies/"
  },
  "keywords": "Enterprise, QA, Microservices, React, Java/Kotlin, Go, Python, Rust, Docker, CI/CD",
  "mainEntityOfPage": "https://wavect.io/case-studies/polity/",
  "mentions": [
    {
      "@type": "DefinedTerm",
      "name": "React",
      "url": "https://react.dev/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Java/Kotlin",
      "url": "https://kotlinlang.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Go",
      "url": "https://go.dev/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Python",
      "url": "https://www.python.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Rust",
      "url": "https://www.rust-lang.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Docker",
      "url": "https://www.docker.com/"
    },
    {
      "@type": "DefinedTerm",
      "name": "CI/CD",
      "url": "https://github.com/features/actions"
    }
  ],
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/case-studies/polity/"
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/",
      "name": "Home",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/case-studies/",
      "name": "Case Studies",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/case-studies/polity/",
      "name": "Polity",
      "position": 3
    }
  ]
}
```
