Skip to content

Senior software engineer

Distributed systems, payments infrastructure, and financial platforms.

I specialize in billing, ledgers, payouts, and event-driven backends—building with Java, Kotlin, TypeScript, Postgres, Kafka, Redis, and AWS. I focus on systems that stay reliable and maintainable at scale.

Selected engineering work

Systems where money, scale, and reliability meet

Billing, ledgers, payouts, and event-driven platforms built for high-volume production systems.

AirbnbSubscription Billing Platform

Recurring subscriptions, invoicing, and payment collection

Worked on backend systems responsible for recurring subscriptions, monthly invoice generation, and payment collection. The system had heavy load spikes at the beginning of billing cycles, so we moved invoice generation and payment attempts from synchronous request paths into asynchronous Kafka workflows to smooth traffic and protect the primary Postgres database.

A major focus was reliability: payment retries, dunning logic, and idempotent charge requests were implemented to ensure customers were never double-charged during retry scenarios or downstream payment processor failures. We also performed Postgres index migrations and historical backfills to support new billing queries without locking large tables during peak hours.

Technologies

  • Kafka
  • PostgreSQL
  • Redis
  • Java
  • Kotlin

Concepts

  • Idempotency
  • Async workflows
  • Billing cycles
  • Retries
  • Dunning
  • Observability

AirbnbFinancial Ledger & Reconciliation

Ledger system for payments, refunds, and payouts

Built and maintained a financial ledger service used to record billing events, payments, refunds, and payouts. The ledger was designed as an append-only system to maintain a full audit trail and support reconciliation with external payment processors and bank reports.

After a production incident caused by duplicate ledger entries during a retry storm from a payment processor, we introduced idempotent write paths and built reconciliation jobs that compared internal ledger data against processor settlement reports and flagged discrepancies for finance. This system was used by finance and operations teams for reconciliation, reporting, and audits, so correctness and traceability were more important than latency.

Technologies

  • PostgreSQL
  • Kafka
  • Java

Concepts

  • Double-entry ledger
  • Reconciliation
  • Audit trail
  • Idempotent writes
  • Financial correctness

AirbnbGlobal Payout Platform

Payouts to hosts across processors and banks

Worked on services responsible for sending payouts to hosts and tracking payout status across multiple payment processors and banking partners. Payouts had to handle failures from banks, delayed confirmations, and webhook inconsistencies.

We implemented payout retry workflows, status state machines, and better logging/tracing so support and operations teams could trace where a payout was stuck. We also improved payout success rates by refining retry timing and routing payouts through different processors depending on geography and failure patterns.

Technologies

  • Kafka
  • PostgreSQL
  • Java
  • Kotlin
  • AWS

Concepts

  • Payout workflows
  • Retries
  • State machines
  • Processor routing
  • Operations tooling

LyftRide Billing & Fare Calculation

Trip billing, pricing, and driver payouts

Worked on backend services responsible for calculating ride fares, fees, promotions, and driver payouts based on trip lifecycle events. Billing was triggered by trip completion events and required accurate pricing, taxes, and promotions.

We encountered issues with duplicate trip events causing duplicate charges, so we implemented idempotent billing keyed by trip ID. As trip volume increased, we also optimized slow MySQL queries and added indexes to keep billing queries performant during peak hours. We also built internal tools used by operations to reprocess trips and correct billing issues.

Technologies

  • Python
  • Java
  • MySQL
  • Redis

Concepts

  • Event-driven billing
  • Idempotency
  • Pricing
  • Receipts
  • Operational tooling

LyftEvent Processing Platform (Kafka)

Trip event pipeline for billing, notifications, and analytics

Helped migrate parts of Lyft’s trip processing workflow from synchronous service calls to an event-driven architecture using Kafka. Trip events such as trip_started, trip_ended, and payment_completed were published to Kafka and consumed by downstream systems including billing, notifications, and analytics.

We implemented retry handling, dead-letter queues, and monitoring for consumer lag and processing failures. This platform became the foundation for multiple downstream systems and allowed teams to build new features without tightly coupling to the trip service.

Technologies

  • Kafka
  • Python
  • Java
  • PostgreSQL
  • AWS

Concepts

  • Event-driven architecture
  • Consumers
  • Retries
  • DLQ
  • Schema evolution
  • Monitoring

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.
  • Designed a monthly billing workflow that generates invoices and charges customers; moved invoice generation from synchronous processing to an asynchronous Kafka workflow to reduce peak load on Postgres.
  • Implemented payment retry and dunning for failed payments with idempotency keys to prevent duplicate charges during retries.
  • Added database indexes and backfilled historical invoices so new billing queries could run without locking tables during peak hours.
  • Partnered with finance so invoice and payment data matched reporting requirements.
  • Java
  • Kotlin
  • PostgreSQL
  • Kafka
  • Redis
  • AWS

Financial ledger & reconciliation

  • Built a ledger service to track billing events, payments, refunds, and payouts.
  • After duplicate ledger entries during a retry storm from a downstream processor, shipped idempotent write paths and reconciliation jobs to detect and fix mismatches.
  • Designed append-only ledger tables and balance logic in PostgreSQL.
  • Built reconciliation jobs comparing ledger data with processor reports and discrepancy tooling for finance.
  • Wrote design docs and led architecture and data model reviews.
  • Java
  • PostgreSQL
  • Redis
  • Kafka

Global payout processing

  • Services for sending payouts to hosts and tracking payout status through the pipeline.
  • Payout retry workflows and failure handling when bank transfers or processors failed.
  • Status tracking so support and ops could trace stuck payouts.
  • Improved success rates by refining retry timing and multi-processor routing.
  • Incident investigation with stronger logging and tracing for payout workflows.
  • Java
  • Kotlin
  • PostgreSQL
  • Kafka
  • AWS

Lyft

Software Engineer, Backend / Distributed Systems

Jun 2018 – Apr 2023

Ride billing & fare calculation

  • Backend services for ride fares, fees, promotions, and driver payouts.
  • Processed trip completion events into billing records after trips finished.
  • Idempotent event processing when duplicate trip events risked duplicate charges.
  • Optimized MySQL queries and added indexes as trip volume grew and peak-hour latency appeared.
  • Internal tools for operations to reprocess trips and fix billing issues.
  • Python
  • Java
  • MySQL
  • Redis

Trip event processing platform

  • Migrated trip processing from synchronous services toward Kafka-backed async workflows.
  • Consumers for trip lifecycle events such as trip started, trip ended, and payment completed.
  • Retry handling and dead-letter queues for failed event processing.
  • Monitoring and alerts for processing delays and failures.
  • Foundation for downstream billing, notifications, and analytics.
  • 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
  • TypeScript
  • 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.