A Fortune 500 utility · 2023 – 2025
Consolidating a utility's .NET estate, and putting AI identity verification inside it
Several overlapping web services folded into one CQRS API on a new schema, and a third-party AI identity-verification provider integrated into the same estate without a hardcoded secret.
Context
Years of incremental delivery had left several web services with overlapping responsibilities — each with its own conventions, its own quirks, and its own reason nobody wanted to be the one to touch it. The same estate also had to verify customer identity from uploaded documents using a third-party AI provider, under the eye of an enterprise security review.
The problem
Consolidate the services into one without freezing delivery for a rewrite, land on a new database structure in the same effort, and get a document out to an external AI verification service and the verdict back — while satisfying reviewers who care about exactly where credentials live and what could be reconstructed from a log file.
What I did
- —Restructured the surface around CQRS, separating read paths from write paths so each could be reasoned about, tested and optimized without dragging the other along.
- —Pointed the consolidated service at a new schema rather than preserving the existing one — the step most consolidations skip and then regret.
- —Built APIs for secure document upload, then integrated the third-party AI identity-verification provider over HTTP, sending and parsing payloads in both directions.
- —Moved every API key and secret into the organization's secret-management package, so nothing sensitive lived in source or in configuration.
- —Instrumented request and response logging thorough enough to diagnose a failed verification in production, without putting customer documents into a log.
- —Unified the test automation methodology across the products involved, so one approach covered the consolidated surface instead of three that disagreed.
Outcome
One service where there had been several, on a schema chosen for current requirements rather than inherited, and identity verification handled by a provider built for it — with credentials out of source control and enough telemetry to debug a failure without exposing customer documents.