Software Engineer · Oakland, CA

I build the systems that prove your data is gone.

Download résumé LinkedIn GitHub Email
Experience

Where I've worked

Three roles across marketing data platforms, customer data infrastructure, and enterprise APIs.

Try it

Ask my experience

A BM25 retrieval index over every line of my résumé, built from scratch and running entirely in your browser. No server, no API key, nothing sent anywhere. This is the retrieval half of RAG, the half that decides whether an answer is grounded or invented.

Indexing 0 documents · BM25 (k₁=1.5, b=0.75) · retrieval only, no language model

Deep dive

Erasure, end to end

When someone asks to be deleted, the hard part isn't the DELETE statement. It's knowing every table that holds them, surviving a queue that delivers twice, recovering when a run dies halfway, and proving afterwards that it happened. This is the shape of a system I built for that. Send a request and watch it move, or force a failure and watch it heal itself.

erasure_scope 8 active

trace orchestrator → intake → warehouse

    Intake and execution are separate. The service only validates, resolves identity, and stages. All the deleting happens in scheduled warehouse work, so the online path stays small and the batch can be retried freely.
    Every failure answers "in progress". Identity lookup down, warehouse unreachable, unexpected exception: all reply in progress, never a terminal failure. A terminal answer would close the request and lose the erasure silently.
    Scope is config, not code. Adding a table to the deletion is a row, not a deploy, and the same config drives the export flow that answers "show me my data".
    Batch over synchronous, deliberately. Doing it inline would answer in seconds but put identity, warehouse, and retry logic on one fragile path. Batching costs latency and buys a far smaller failure surface.

    Illustration only. Table names, columns, key types, statuses, and counts are invented for this page; it shows the shape of the design, not any employer's schema, code, or data.

    Projects

    Things I've built

    Mostly where AI meets data governance, which is the problem I spend my working hours on. Tap a card for the design decisions.

    Toolkit

    What I work with

    Education
    Contact

    Get in touch

    Happy to talk about data platforms, privacy engineering, or where LLMs actually earn their place.