Skip to content

Software engineer

Distributed systems, billing, and event-driven platforms at scale.

I design and build reliable payment, ledger, and payout systems—where idempotency, observability, and correctness matter.

Selected work

Systems where money, scale, and reliability meet

A cross-company view of billing, ledgers, payouts, and event-driven platforms—patterns you can discuss in depth in any senior system design interview.

Airbnb~1M invoices / month

Subscription billing

Recurring subscriptions, monthly invoicing, and payment collection with retries—without double-charging customers.

Highlight: Async invoice generation for spiky load, idempotency keys against retry storms, batching and indexing for DB pressure.

  • Kafka
  • Postgres
  • Redis
  • Idempotency
  • Observability
Airbnb

Financial ledger

Append-only, double-entry ledger for charges, refunds, and payouts—with reconciliation to external processors.

Highlight: Duplicate events from at-least-once delivery, reconciliation jobs, and correctness via immutable entries.

  • Ledger
  • Audit trail
  • Reconciliation
  • Postgres
Airbnb

Global payout platform

Host payouts across processors and banks with lifecycle tracking, retries, and bank reconciliation.

Highlight: Idempotent payouts, unreliable bank APIs, late webhooks, and stuck-state tooling operators could trust.

  • Payouts
  • Kafka
  • Status machines
  • Finance ops
Lyft

Ride billing

Fare calculation and charging after trip completion—from trip-end events to receipts.

Highlight: Idempotent billing per trip, pricing caches, promotions/taxes, and commute-hour traffic.

  • Event-driven
  • Redis
  • Pricing
  • Receipts
Lyft

Event processing platform

Kafka-based bus so billing, notifications, and analytics could consume trip events without synchronous coupling.

Highlight: Ordering, duplicates, consumer lag, DLQs, reprocessing, and schema evolution at scale.

  • Kafka
  • Consumers
  • DLQ
  • Schema

Experience

Where I've built production systems

Payments, ledgers, payouts, and event-driven platforms—shipping under real reliability and scale constraints.

Airbnb

Senior Software Engineer, Payments Platform

Apr 2023 – Present

Subscription billing platform

  • Backend systems for recurring subscriptions, invoicing, and payment collection.
  • Moved monthly invoice generation to asynchronous Kafka workflows to absorb spiky load and protect Postgres.
  • Built payment retry and dunning with idempotency keys to avoid duplicate charges.
  • Added indexes and backfilled historical invoices for new billing queries without peak-hour table locks.
  • Partnered with finance so invoice and payment data matched reporting requirements.
  • Java
  • Kotlin
  • PostgreSQL
  • Kafka
  • Redis
  • AWS

Financial ledger & reconciliation

  • Ledger service for billing events, payments, refunds, and payouts.
  • After duplicate ledger entries during a retry storm, shipped idempotent writes and reconciliation jobs to detect and fix mismatches.
  • Append-only Postgres model and balance logic; reconciliation vs. processor reports with finance-facing discrepancy tooling.
  • Led architecture and data model design reviews.
  • Java
  • PostgreSQL
  • Redis
  • Kafka

Global payout processing

  • Payout services for hosts: routing, retries, and bank/processor failure handling.
  • Payout status tracking for support and ops to trace stuck transfers.
  • Improved success rates via retry timing and multi-processor routing; better logging and tracing for incidents.
  • Java
  • Kotlin
  • PostgreSQL
  • Kafka
  • AWS

Lyft

Software Engineer, Backend / Distributed Systems

Jun 2018 – Apr 2023

Ride billing & fare calculation

  • Services for fares, fees, promotions, and driver payouts from trip completion events.
  • Idempotent processing to prevent duplicate charges when trip events repeated.
  • MySQL query and index work for peak-hour traffic; internal tools to reprocess trips and fix billing issues.
  • Python
  • Java
  • MySQL
  • Redis

Trip event processing platform

  • Migrated workflows to Kafka-backed async processing; consumers for trip lifecycle and payment events.
  • Retries, DLQs, monitoring, and alerting for lag and failures.
  • Foundation for billing, notifications, and analytics downstream.
  • Kafka
  • Python
  • Java
  • PostgreSQL
  • AWS

Skills

Tools and domains I ship with

Backend-first, with production experience across payments, ledgers, and high-throughput event pipelines.

Languages

  • Java
  • Kotlin
  • TypeScript
  • Python
  • SQL

Frontend

  • React
  • Next.js
  • HTML
  • CSS

Backend

  • Node.js
  • Spring Boot
  • FastAPI
  • REST APIs
  • Microservices

Databases

  • PostgreSQL
  • MySQL
  • Redis
  • Elasticsearch

Distributed systems

  • Kafka
  • Event-driven architecture
  • Idempotency
  • Workflow systems

Cloud & DevOps

  • AWS
  • Docker
  • CI/CD
  • Monitoring
  • Logging
  • Tracing

Financial systems

  • Billing
  • Payments
  • Payouts
  • Ledger systems
  • Reconciliation

Other

  • System design
  • Scalability
  • Reliability
  • Performance optimization

About

How I work

I gravitate toward high-stakes domains: payments, ledgers, and global money movement. The interesting problems are almost always the same—idempotency, retries, reconciliation, and operational clarity when things go wrong.

I partner closely with product and finance to keep designs explainable, auditable, and safe to evolve. I care about observable systems, tight feedback loops in production, and interfaces that make edge cases first-class.

Education

B.S. in Computer Science

University of Virginia

Focus areas

  • Distributed billing & subscription lifecycles
  • Double-entry ledgers & financial reconciliation
  • Kafka-backed pipelines, consumers, DLQs
  • Operational tooling & runbooks for money paths

Based in Northern Virginia. Open to strategic IC roles and staff+ platform work.

Contact

Let's build something robust

Whether you're hiring, collaborating on a platform, or comparing notes on billing architecture—reach out.