Available for contract & consulting work

Mohammed Mudassir Ahmed

I build

I build the systems money moves through, and I keep them correct when the volume stops being theoretical. Close to five years at a Singapore fintech, where I joined as one of the first engineers and shipped a regulated banking product from an empty repository to live customers — roughly a dozen production services I built and still operate. Lately I have been building the AI agent infrastructure engineering teams run on.

Start a conversation LinkedIn

Authorized to work in the United States and India — no sponsorship required in either. Remote worldwide, or on-site in the Madison / Chicago corridor.
US +1 608-268-1403  ·  India +91 95157 36525

Mohammed Mudassir Ahmed
Impact

Numbers I can stand behind

Every one of these is something I built, measured, and still operate.

Core ledger throughput gain — 25 to 1,500+ transactions per second on a single account
0
Production services built from zero and still operated
0%
Live customers migrated between datastores — zero downtime, zero data loss
<30ms
Product configuration evaluated on the transaction path
~100ms
Pre-transaction risk and compliance screening, on every transaction
0
Services under production exception triage
0
Environments covered by tooling I wrote and on-call I carry
0
Services moved to gRPC and Java virtual threads
Selected work

Thirteen problems, and what I actually did

Filter by what you care about, then open any one for the full story — the problem, the diagnosis, the decision I would defend, and the result.

The store every money movement posts through stalled at roughly 25 transactions per second on a single account. The team read the resulting retry storm as insufficient capacity and wanted to scale the database out.

I reconstructed a failing request query-by-query from the logs and found a 28.5ms UPDATE sitting in lock wait. The design held one row per account and updated it on every posting, so concurrent writers serialised behind a single row lock. The system was contended, not underprovisioned — and adding capacity would have made it worse, because more writers means more contention on the same row.

I re-architected it onto hash-partitioned buckets, so a hot account's balance spreads across buckets that grow and shrink with measured write contention. A control loop sizes the partition set, bounded by a growth cap per cycle and a cross-pod cooldown so concurrent pods cannot oscillate a hot account. Accounts partition independently, so throughput now scales horizontally.

The decision I would defend hardest: I built the reconciliation and self-repair harness before migrating. It caught a snapshot-ordering defect and a floating-point precision drift while both were still cheap. On a ledger, a correctness bug found in production is not a bug — it is someone's money.

60× throughput on a single account, cut over live with zero downtime and no data loss.
MySQL/Auroralock contentionhash partitioningonline migrationreconciliation

Built from scratch: the system that meters usage and bills every client on the platform — tiered and pooled pricing, invoice generation and customer balances.

A single AspectJ annotation marks a billable action. The event leaves the request thread as protobuf over gRPC, publishes to Kafka, and batched consumers with a dedicated retry topic price it and persist it. Metering therefore adds zero latency to the request it measures. Statements generate off a read replica, never the write path, and every invoice reconciles line-by-line against raw usage.

Much of this was built with heavy AI assistance under my architectural direction, and it bills real customers in production today — which is the only test of AI-assisted development that counts.

Zero added latency on the measured request; every invoice reconciles line-by-line against raw usage.
AspectJgRPCKafkaprotobufread replica

Building the platform, not using the tools. Hugo Minions automates backend work scoped to a verifiable done-condition — a failing test, a stack trace, a defined refactor, PR triage — with OpenHands as the execution substrate.

The engineering is in the guardrails. Every agent runs least-privilege against an explicit tool allow-list, side effects are capped, anything irreversible waits at a human approval gate, and model output is schema-validated so a malformed or invented response fails closed rather than propagating. The reviewer is accountable, not the generator.

Alongside it: company-wide adoption of Claude Code as the standard workflow, per-service context files across 11+ services so agents reason from real architecture rather than whatever files they happened to open, a GitHub Actions agent that diagnoses and repairs failing tests on pull requests, and an autonomous debugging workflow that reproduces a reported fault and reports the narrowed cause.

Agent-generated implementation ships through the same review, test and deploy pipeline as hand-written code.
OpenHandsagent guardrailscontext engineeringMCPschema validation

I own the technical direction for the platform's crypto domain and authored the high-level design, driving it to a validated go. A three-module split along licensing lines — broker, on-chain execution, custody — so regulatory scope maps onto deployable boundaries rather than cutting across them.

An immutable double-entry posting log credits only on finality: twelve confirmations on Ethereum, L1-anchored for Base. An omnibus wallet with per-customer deposit addresses and sweeps. A block-anchored solvency invariant that freezes the system on breach rather than continuing to serve. Threat-modelled address poisoning and forged transfer events.

The signature store is keyed on (wallet, chain, nonce) after I established that MPC signing is non-deterministic — an assumption that would have caused silent duplicate-signature bugs had it gone unchecked. I also ran the custody vendor evaluation end to end and wrote the recommendation leadership acted on.

Design validated and approved; vendor selected on evidence rather than vendor claims.
custodyMPCfinalitysolvency invariantsthreat modelling

Run and step state persisted in MySQL, so a flow survives a process restart and resumes at the step it stopped on. Per-step retry policies and timeouts, parallel step groups, sub-workflows, asynchronous third-party callbacks, pause and resume, and explicit escalation to human review where a decision genuinely needs a person. Pluggable dispatchers — same-thread, thread-offload, queue-backed — chosen per step, with state transitions guarded by Redisson distributed locks.

Back-office and money flows live or die on that last part. They are mostly waiting: on a document, on a third party, on somebody's approval. A system that cannot survive a deploy mid-flow, or that quietly double-charges when a callback arrives twice, is worse than the manual process it replaced. Currently running a Temporal proof-of-concept to evaluate replacing it.

Long-running flows survive restarts and partial failures without duplicating effects.
durable executionRedissonstate machinesTemporal (evaluating)

The business needed new financial products faster than engineering could build them. I built a configuration-driven engine where a product's fees, taxes, interest and yield accrual, transaction limits, overdrafts and credit limits are expressed as data rather than code, evaluated in under 30ms from precomputed configurations and in-memory execution paths, with per-customer override APIs.

Launch time fell by more than 60%, and a dozen product variations now run on it with no new services and no new code. That was the ship-something-that-works call — and knowing when you are in that situation rather than the re-architect-it one is most of the job.

60%+ faster product launches; <30ms evaluation on the transaction path.
rules as dataconfig-driven designlow-latency evaluation

Built the compliance service from scratch: KYC and identity verification through third-party providers, customer profile lifecycle, account closure, resubmission and remediation flows. At its centre is a rule engine that screens every transaction before it executes, within roughly 100ms.

Rules are held as data, not code, so new eligibility, fraud and AML detections ship without a deploy. The same evaluation drives automated dispute workflows and the transaction-monitoring foundation.

Pre-execution screening on every transaction at ~100ms, with new detections shipping deploy-free.
rule engineKYCAMLtransaction monitoring

Designed the platform-wide layer that encrypts all sensitive customer data — envelope encryption, AES-GCM with a KEK/DEK hierarchy, master keys in AWS KMS, adding only a few milliseconds. Exposed as a library other engineers call rather than a service they integrate with, which is precisely why adoption reached every service handling PII.

Alongside it, the platform-wide audit system recording every request that crosses the platform — REST, gRPC, database writes, queue events — as an immutable append-only log, because a regulator will eventually ask you to reconstruct a decision from a year ago.

Universal adoption across PII-handling services; a complete evidence trail for regulatory examination.
AES-GCMKEK/DEKAWS KMSaudit trailsGDPR

The first production platform was Python on AWS Lambda — accounts, payments, scheduling, background jobs, every third-party integration — which I built and operated. When cold starts and concurrency became the constraint, I led the rebuild into Java and Spring Boot microservices, more than doubling throughput and eliminating cold starts.

I then migrated the system of record from Amazon QLDB to MySQL, moving 100% of live customers through an idempotent, resumable per-customer pipeline with zero downtime and zero data loss. Separately, two platform-wide messaging migrations — SQS to Kafka to NATS JetStream — behind a pluggable provider, including consumer replay and backfill without duplicating downstream effects.

2–3× throughput, no cold starts, 100% of live customers migrated with no data loss.
QLDB → MySQLLambda → Spring BootSQS → Kafka → NATSidempotent pipelines

Moved 11 services to gRPC and Java virtual threads, replacing thread-per-request pools that collapsed under IO-bound fan-out — cutting inter-service latency by more than 30% and raising concurrent capacity roughly fivefold.

Then a throughput collapse that showed idle CPU. Two days to find it: a virtual thread pins its carrier thread when it blocks inside a synchronized block, starving the scheduler. Fixed with reentrant locks — and then wired the JDK's own thread-pinning events into our dashboards, so that entire fault class is now a graph rather than an investigation.

30%+ lower latency, ~5× concurrency, and a whole failure mode made observable.
Java virtual threadscarrier pinninggRPCJFR events

Built the cash and payments service from an empty repository — accounts, wallets, multi-currency balances, deposits, payouts, transfers, beneficiaries, overdrafts and limits — then the full card lifecycle on top: authorization, clearing, settlement, reversals, refunds and disputes.

That meant integrating third-party issuer processors (NymCard, Clowd9), licensed partner banks including Griffin in its first year under a full UK banking licence, domestic and cross-border rails — FAST in Singapore, PayPak and PaySys in Pakistan, SWIFT — and FX and remittance providers (Currencycloud, Dandelion Payments, SentBe).

Every connector absorbs its own auth, rate limits, retry-and-backoff and reconciliation behind one internal contract, so the domain code never learns which processor it is talking to. Every movement applies exactly once under failure and retry — idempotency keys, MySQL trigger-level guards and Redisson distributed locks after a cache-based mutex proved unsafe across pods — and reconciles against the processor's and the rail's own records rather than against our own optimism.

A single internal contract over many processors, banks and rails, with exactly-once guarantees under partial failure.
card issuingissuer processorsSWIFT / FASTFX & remittanceidempotency

Every banking flow — activation, refunds, transactions, card ordering, round-ups, investments, onboarding — had grown its own ad-hoc orchestration. I designed a centralized state machine framework that standardised lifecycle management across all of them, and built the intent-processing engine on top of it as the spine: 20+ step-based async processors under mutex-based concurrency control, with full CRUD, pagination and typed intent references.

It became the platform's standard async-work primitive — new flows compose existing steps rather than inventing orchestration, which is where the delivery gain came from. Reliability and development velocity improved roughly 30–40%.

One lifecycle model across every backend workflow; ~30–40% better reliability and delivery velocity.
state machinesasync processorsconcurrency controlplatform primitives

Implemented trace-ID propagation through async execution, schedulers and virtual threads, so a request stays followable once it leaves the thread that started it — the point where most tracing quietly gives up.

Built the Grafana and Prometheus dashboards and alerting the team operates on, Sentry triage across 65 services, and Elasticsearch/Kibana for log search. Then wrote an internal observability CLI that queries logs, metrics and alerts across roughly twenty environments through a self-healing credential flow — tokens acquired, cached and transparently re-acquired on auth failure, so engineers never handle a credential by hand during an incident.

I carry rotational on-call for what I ship, and diagnose lock contention, hot partitions and slow consumers in live systems.

Incident tooling that works at 3am, across ~20 environments, without a credential dance.
distributed tracingGrafana / PrometheusSentryoperational CLIon-call
Work with me

Contract & consulting

I take on contract and consulting engagements alongside my full-time work — remote and asynchronous. These are the problems I am most useful on, usually because I have already been wrong about them once and fixed it.

Throughput & contention diagnosis

Your database is slow and everyone assumes it needs to be bigger. I find out whether that is true before you spend the money — query-level reconstruction, lock analysis, partitioning strategy, and a migration path that reconciles.

Ledger & payments architecture

Double-entry design, chart of accounts, multi-currency balances, exactly-once money movement, reconciliation against processor and rail records, and the audit trail a regulator will ask for.

Event-driven system design

Kafka and NATS pipelines, idempotent consumers, replay and backfill that does not duplicate downstream effects, retry topology, and backpressure that degrades rather than collapses.

Production AI & agent guardrails

Getting LLMs into production safely: tool allow-lists, side-effect limits, approval gates, schema-validated output that fails closed, and deciding explicitly where AI should and should not be trusted.

Zero-downtime migrations

Datastore and platform migrations with live customers on them. Idempotent, resumable pipelines, reconciliation harnesses built before the cutover, and a rollback path that has actually been tested.

Fractional platform engineering

For teams without a senior backend voice: architecture review, design docs and ADRs, code-review standards, observability and on-call practice, and mentoring engineers through delivery.

Experience

Where I've been

Software Engineer I → Software Engineer II → Senior Software Engineer
Atlas — Singapore fintech: Banking-as-a-Service platform (HugoHub) and consumer banking app (Hugosave) · Jan 2022 – Present · Remote
  • Founding engineer. Joined when engineering was one person; shipped a regulated consumer banking product — accounts, payments, cards, savings, gold investing — from an empty repository to live customers in Singapore.
  • MVP to platform. Took it from a single consumer product to a multi-tenant Banking-as-a-Service business that external companies build their own banking products on: versioned public APIs, per-tenant isolation, and documentation integrators work from without asking us.
  • Core ledger ownership. Re-architected the transactional store from ~25 to 1,500+ TPS on a single account, live, with no downtime or data loss.
  • Systems built from scratch. Cash and payments, usage-based billing, compliance and KYC, the durable workflow engine, the product configuration engine, envelope encryption, and the platform-wide audit system.
  • Digital assets. Currently own the technical direction and authored the high-level design for the platform's crypto domain.
  • AI infrastructure. Drove company-wide adoption of agentic development and am building the internal agent platform other engineers run agents on.
  • Standards and people. Wrote the code-review and design standards the team works to, the ADRs decisions get made from, and the runbooks on-call uses. Mentor engineers through design and delivery.
Side projects

Built on my own

Agentic job-search pipeline

An end-to-end AI decision-support system on headless Claude: agentic scraping across 90+ ATS providers, an LLM triage stage scoring each role against a fixed rubric into structured JSON, and automated document generation from a curated evidence base — every output schema-validated and gated behind a human approval step. Python, FastAPI, SQLite, LaTeX.

DocVault

A privacy-first document vault for iOS and Android: scan to PDF, expiry tracking, biometric lock. No servers — files stay in the user's own cloud drive. React Native, Expo, TypeScript.

Self-hosted infrastructure

A home server running containerised services over a private mesh network, systemd-managed, with automated backups — where I try operational ideas before inflicting them on production.

Toolkit

Stack

Languages
Java (8/11/17 — concurrency, virtual threads, JVM diagnostics), Python, SQL, TypeScript / JavaScript, Bash
Backend
Spring Boot, Spring Data JPA, Spring Security, Hibernate, FastAPI, AspectJ, REST over JSON/HTTP, gRPC, Protocol Buffers, microservices, domain-driven design, multi-tenancy, API versioning
Data
MySQL / Amazon Aurora (schema design, complex SQL, stored procedures, row-lock contention analysis, query plans, composite indexing, read replicas, zero-downtime online migrations), Redis / Redisson, DynamoDB, SQLite, Amazon QLDB (migrated off)
Distributed systems
Kafka, NATS JetStream, SQS/SNS, event-driven architecture, hash partitioning, idempotency, distributed locking, exactly-once effects, backpressure, durable workflow orchestration, state machines, consumer replay and backfill, jittered backoff
Infrastructure
AWS (EC2, Aurora/RDS, Lambda, S3, KMS, SQS/SNS, Cognito, IAM), Oracle Cloud Infrastructure, Kubernetes (Helm, rollouts, rollback, pod-level debugging), Docker, GitHub Actions CI/CD, multi-environment management
Reliability
Grafana, Prometheus, Sentry, Elasticsearch / Kibana, alert design, distributed trace-ID propagation, JVM diagnostic events, custom operational CLIs, runbooks, on-call, root-cause analysis
Security
Envelope encryption (AES-GCM, KEK/DEK, AWS KMS), authentication and authorization (SSO / OIDC, gateway and service-to-service), least-privilege access, secrets handling, audit trails, PII protection, GDPR, KYC, threat modelling
AI engineering
LLM APIs, agentic development (Claude Code, OpenHands, Antigravity), agents in CI, autonomous debugging workflows, repository context engineering, MCP tool integration, schema-validated model output, agent guardrails, human-in-the-loop design
Domain
Core banking, double-entry ledgers, chart of accounts, card issuing (authorization, clearing, settlement), issuer-processor integration, partner banks, domestic and cross-border payment rails, FX and remittance, reconciliation, disputes, usage-based billing, digital-asset custody, regulated operation under MAS Singapore and the State Bank of Pakistan
Education
M.Tech. Parallel & Distributed Systems, Osmania University (2020–2022) · B.Tech. Computer Science & Engineering, Malla Reddy Engineering College (2016–2020)
Get in touch

Let's talk about the hard part

If you have a system that is slow, a ledger that has to be correct, an event pipeline that duplicates effects, or an LLM you need to get safely into production — I would be glad to hear about it.

Authorized to work in the United States and India — no sponsorship required in either. Remote worldwide, or on-site in the Madison / Chicago corridor.

Email me LinkedIn

US +1 608-268-1403  ·  India +91 95157 36525