VALUE.AL

Case studies

Client work.

7 engagements across payments, platform and reliability work. Clients are anonymised where confidentiality requires it — the descriptors say what kind of business it was, not which one.

Multi-PSP routing for an FX & CFD broker

Online FX / CFD trading broker

Challenge

Traders depositing in multiple currencies were funnelled to a single payment provider, so deposits failed whenever that provider had localised outages or weak success rates in specific corridors — stalling onboarding in regulated regions.

What we built

A routing layer that selects a PSP per request on currency, region, KYC tier and live success rates, with per-provider adapters behind one internal contract, idempotent request handling, and a fallback chain for failed authorisations.

Outcome

One provider's outage no longer fails a deposit — an affected corridor falls back to another PSP on the same request, instead of returning the trader an error. Onboarding a new provider dropped from weeks to days.

C# .NET Core EF Core PostgreSQL RabbitMQ

Idempotent deposit & withdrawal engine

Regulated trading platform

Challenge

Retries from upstream PSPs and asynchronous webhook deliveries occasionally produced duplicate postings against trader wallets, forcing finance into manual clawbacks and exposing the firm to regulator-flagged clawback risk.

What we built

A deposit and withdrawal pipeline rebuilt around deterministic idempotency keys persisted in PostgreSQL, with an explicit state machine per in-flight transaction, replay-safe webhook handlers, and workers that retry to a terminal state — plus a dead-letter queue and operator tooling for stuck entries.

Outcome

Eliminated double-postings in production. Nightly reconciliation moved from manual review to an automated daily report with exceptions only.

C# .NET Core PostgreSQL RabbitMQ Redis

Reconciliation pipeline for trader funding

Online trading broker — finance operations

Challenge

Reconciling internal wallet ledgers against PSP statements was a manual end-of-day exercise that could not keep up with trade volume; discrepancies surfaced hours or days after the fact.

What we built

A pipeline that ingests PSP statements (CSV, API, SFTP-delivered) into a normalised event store and matches them against the internal ledger on deterministic and fuzzy rules, surfacing unmatched entries in an operations UI with one-click resolution.

Outcome

Daily reconciliation dropped from a multi-hour manual review to an automated run with a small exception queue. Discrepancies are now caught the same day they occur.

C# .NET Core PostgreSQL RabbitMQ Docker

API gateway for a regulated B2B platform

Compliance & licensing SaaS

Challenge

Internal services exposed inconsistent authentication schemes and rate limits, blocking partner onboarding and pushing security policy into every team's backlog.

What we built

A gateway across .NET Core, Node.js and Azure API Management fronting all partner-facing services with unified OAuth2, throttling, request shaping and routing — with services migrated behind it incrementally, without disrupting active integrations.

Outcome

Partner integration time dropped from weeks to days. Security policy is now enforced in one place rather than audited per service.

C# .NET Core Azure APIM Node.js Azure

Greenfield microservices for a project-management product

Enterprise project-management SaaS

Challenge

A monolithic legacy product could not be extended to support multi-tenant deployments and hierarchical project-group structures without taking the whole system down for every release.

What we built

A distributed architecture designed from scratch around domain-driven service boundaries, with structured project-lifecycle workflows, role-based access over hierarchical data, clean service contracts and message-driven coordination.

Outcome

Each service ships independently, enabling continuous delivery for the first time. New tenants onboard without code changes and team-level rollouts no longer block product-wide releases.

C# .NET Core SQL Server Docker

Performance tuning of a trading platform's hot path

Online trading broker

Challenge

As trader volume grew, several backend services were hitting tail-latency budgets — slow synchronous database queries and chatty service-to-service calls dominated the hot path during market opens.

What we built

An end-to-end profile of the hot path, then Redis caching for read-heavy reference data, non-critical work moved onto RabbitMQ workers, the affected services containerised with sized resource limits, EF Core query patterns tuned, and per-endpoint latency budgets enforced in CI.

Outcome

The endpoints that were breaching their tail-latency budgets now hold them through market open — and each budget is enforced per endpoint in CI, so a regression fails the build instead of reaching traders.

C# .NET Core Redis RabbitMQ Docker PostgreSQL

Automated infrastructure setup for client deployments

Managed-services consulting firm

Challenge

Every new client deployment required engineers to provision and configure servers by hand — slow, error-prone and inconsistent. Environment drift led to reproduction-only bugs in production.

What we built

A provisioning toolchain: an Angular operator UI, a .NET Core Web API as the control plane, and Ansible playbooks doing the infrastructure work — every deployment idempotent and parameter-driven.

Outcome

New client environments now stand up in minutes instead of days. Environment drift between clients and across release cycles has effectively been eliminated.

C# .NET Core Angular Ansible

Have a problem worth solving?

Tell us what you are working on — we read every message and reply within a day. Or take half an hour with the architect who will own the design.