← Back to overview
Azuro
Azuro
EVM Prediction Markets Protocol · Lead Software Engineer · Jun 2022 – Jul 2025
7
EVM Chains
4
Engineers led
3yr
Tenure
Joined as DevOps / Infrastructure
Jun 2022
Set up Kubernetes infrastructure, CI/CD pipelines, blockchain node operations across multiple EVM chains. Vault, ArgoCD, Helm, monitoring — built from scratch. Solved the immediate delivery problems.
Got pulled into Backend
late 2022
CI/CD was stable, but the system still wasn't. I was asked to review the backend code, then rewrite parts of it. That led to deeper involvement: I split the monolith into domain-bounded services, migrated critical data from MongoDB to PostgreSQL where the lack of relational structure was holding things back, and proposed architectural changes to the smart-contract integration layer that unlocked the ability to support more prediction markets.
↳ same pattern as Scentbird — solved infra, saw deeper problems, took initiative
Promoted to Lead Software Engineer
Sep 2023
First time managing people. Built and led a team of 4 backend engineers — full lifecycle: interviews, hiring, onboarding, planning, 1-on-1s, PIPs, offboarding when needed, architectural mentorship. Maintained team morale through a challenging, fast-moving protocol.
What Azuro is: A decentralised prediction markets protocol built on EVM chains. Our job was to take data from multiple providers, process and validate it, and make it available for on-chain settlement and off-chain consumption via APIs.
Phase 1 — On-chain settlement
  • Designed a microservice architecture from scratch: multiple data providers → event processing → validated data feed → push to smart contracts.
  • Built robust RPC interaction layer: retries with backoff, gas error parsing, automatic cancellation of stuck transactions.
  • Handled multi-chain consistency across Ethereum, Gnosis, Polygon, Base, Chiliz, Arbitrum, Linea.
Phase 2 — Off-chain settlement (oracle + relay model)
  • Migrated to an off-chain model for accepting user positions: combined oracle signatures (our data) + user signatures (on our data) to eliminate on-chain write bottlenecks.
  • Built a relay service that submits signed payloads to target chains — acting as a trusted intermediary without custody of funds.
  • This approach dramatically reduced latency and gas costs while preserving trustless settlement.
Event-Driven Architecture
  • RabbitMQ (AMQP) as the backbone — entire inter-service communication built on AMQP. Full event-driven topology with dead-letter queues and retry strategies.
  • Sequin — streamed Postgres WAL changes into Kafka for downstream microservice consumption, enabling reliable CDC patterns.
  • NestJS with CQRS module, AMQP transport, guards, and interceptors as the primary framework.
Data Layer
  • PostgreSQL as primary storage — full schema design, scaling, partitioning, index management, automation.
  • pgBouncer — deployed to reduce connection pool pressure on primary databases under load.
  • ClickHouse — deployed as the Query layer in a CQRS architecture for analytical and high-read workloads.
  • The Graph (self-hosted) — designed B2B2C subgraphs for external clients; also repurposed The Graph architecture as a pseudo-chain data feed — effectively a fast GraphQL layer over internal data, as an alternative to Hasura.
  • Hasura — deployed and configured over Postgres + ClickHouse as an additional GraphQL API layer.
Blockchain Infrastructure
  • Deployed and managed archive nodes across 7 EVM chains: Ethereum, Gnosis, Polygon, Base, Chiliz, Arbitrum, Linea.
  • Built a custom RPC proxy — no market solution fit our needs. Existing tools only do round-robin. Ours falls back based on node unavailability or block lag beyond a configurable threshold.
  • Keycloak (self-hosted) — OIDC for both backend service auth and frontend user sessions.
  • Kubernetes on bare-metal and cloud — all services containerised and orchestrated.
  • Helm — authored charts for every microservice.
  • ArgoCD — GitOps for all infrastructure and service deployments.
  • GitHub Actions — CI/CD pipelines: reusable workflows, matrix builds, deployment automation.
  • Vault — secrets management with vault-secrets-operator for K8s Secret injection.
  • Prometheus + Grafana Stack — full observability: metrics, logs (Loki), traces (Tempo).
  • Sentry (self-hosted) — error tracking for all services.
  • Unleash + GrowthBook — feature flag management.
  • ingress-nginx — deployed and tuned for API traffic.
  • VPN — split-tunnel access for distributed team.
TypeScript NestJS Node.js PostgreSQL pgBouncer ClickHouse Redis RabbitMQ Kafka / Redpanda Sequin The Graph Hasura Kubernetes Helm ArgoCD GitHub Actions Vault Keycloak / OIDC Prometheus Grafana Stack EVM Nodes (7 chains) Custom RPC Proxy web3.js / ethers.js Unleash GrowthBook