Sajjad Umar

Lead backend engineer, now building end to end / Lahore / Ten years in production

Never twice.
Always provable.

An AI agent can now refund your customer, and retry when the network blinks. I spent ten years making production systems behave. Now I build whole products by directing agents in plain English, with the safety rails to know exactly what happened.

01 / The bug of this decade

Retries are a feature.
Until they move money.

Agents time out, crash, resume and try again. You can't fix that by asking the model to be careful. The fix has to live below the tool call, in something that remembers. Go on, be the flaky network.

refund(charge: "ch_123", amount: "$50.00")

Plain tool call

Every attempt reaches the payment provider.

    REFUNDED$0.00

    Waiting for the agent.

    With Airlock

    Irreversible, so it waits for a person. Key …

      REFUNDED$0.00

      Waiting for the agent.

      Tamper-evident audit trail

      Each row's SHA-256 covers the row before it, computed live in your browser. Change history and everything after it stops verifying.

        No events yet.

        A browser simulation of how Airlock behaves; the hashes are real. The SDK itself is one pip install airlock-sdk away: v0.3.0, MIT, on GitHub. Why I built it: The double refund.

        02 / The stack

        Ten years, one block at a time.

        Ten years, and more than 40 Rails apps carrying my code. Keep scrolling and the career builds itself. The tower is borrowed from Stack Drop, my first game.

        1. Hello, third-party APIs

          First job, at PlumZ Studios: Android apps and the APIs behind them. I wanted to know what was on the other side of the request, and I still do.

        2. Intern to team lead at Tiksom

          Three promotions in four and a half years, leading backend and Android for startups: Roomer Travel, FoneWire, Zilker's IoT irrigation, Modern Advisor, Crema.co. Every domain had its own way to fail in production.

        3. SUMAR TECH, on the side

          My own shop for freelance Rails work: ServiceLovers, LoopCom, The Test Request. Owning the client and the invoice as well as the code changes how you estimate.

        4. First keynote

          "Create & publish your first Ruby gem" at RubyConf Pakistan. By July 2022 I was managing the community, and I still am.

        5. Secrets and meal kits

          Senior roles at Nextbridge and InvoZone. A Ruby SDK and Puppet plugin for RevBits PAM, and FreshPrep's meal-kit platform: systems where a mistake reaches someone's secrets, or their dinner.

        6. UMAI: the long game

          Lead backend engineer on the Rails monolith behind reservations, loyalty and guest data for thousands of restaurants in 15+ countries. 6,700+ commits. If a retry books a table twice, a real family is standing at the door.

        7. Talking, and meeting Copilot

          Spoke on building 10x faster Rails apps at the Global Ruby on Rails Summit. Started using Copilot the same year, which turned out to be the first rung of a long ladder.

        8. Wrote the book

          Ruby on Rails for Agile Web Development, published by AVA. Nothing exposes what you don't understand like explaining it to strangers in print.

        9. Opened a restaurant

          Masosa, in Sheikhupura. Eight months preparing an empty shop, then the first customer. After years of writing software for restaurants, I stood on the other side of the counter.

        10. Agents, for real

          Wapas in March. The Bug Machine at UMAI from April. An agent running on its own VPS. Airlock in July. Then ten games in 48 days, September to October. This is the block I'm standing on now.

        03 / The loop

        Most engineers ship to users.
        I also take their orders.

        This isn't four side projects. It's one loop, and I own every station on it. It's why I think about software in terms of who gets hurt when it's wrong.

        #1

        The platform

        By day: UMAI runs bookings for thousands of restaurants.

        #2

        The counter

        Masosa: my own restaurant, my own Friday-night rush, my own payroll.

        #3

        The comeback

        Wapas: most first-time customers never return, so I built stamp cards with no app to install. "Wapas" means "back".

        #4

        The game

        Stack Drop: a tower game on every table, with real prizes from the kitchen. Which brings people back to #2.

        04 / The studio

        Ten games. Forty-eight days.
        One human.

        From 13 September to 31 October 2026 I took ten original games to Google Play, as an experiment in what one engineer can direct. Eight are live and two are in review. I'll be honest: the install counts are small so far. I learned to build at this speed first, and I'm learning distribution now.

        What the agents do

        • Draft the code, tests, store listings and daily promo clips
        • Follow playbooks I wrote and keep improving: TV checklists, in-app purchase setup, release routines
        • Remember what we learned, across every game

        What I own

        • What's worth building, and the quality bar: no filler, no ad spam
        • Testing on a real phone and a real, slow TV, over adb
        • Every decision that can't be undone: what ships, what gets spent, what goes public

        What machines won't tell you: an Xbox controller on Google TV quietly loses its triggers through the browser's Gamepad API, and the Haier TV's remote arrows disappear the moment a game polls for gamepads. You only find that on the hardware. I wrote a native bridge, and then a checklist so no agent makes the mistake again.

        05 / The shift

        The new programming language
        is plain English.

        I started out writing the backend and handing the rest to other people. Now I describe the whole product, from the first screen to the store listing, and agents write most of the code. English compiles these days. That doesn't make it easy, because it also compiles a vague sentence into confident, wrong software.

        Compiles. Ships a bug.

        "Refund the customer if the order failed."

        The agent times out, retries and refunds twice. Nobody told it what counts as done.

        Compiles. Ships the product.

        "Refund once per charge. If you can't tell whether it went through, check before trying again. Anything over $50 waits for a person."

        One refund, one approval, and one record you can audit.

        Why the backend years still count: they're what I write the English with. I know what to specify because I've seen what breaks when nobody does.

        At work / UMAI / Since April 2026

        The Bug Machine

        I'm building a pipeline that takes a bug ticket to a pull request, with agents doing the work between. It began as an experiment, and its fixes now run in production. It has also taught me more about directing agents than anything else I've built.

        #1

        Plan

        Reads the ticket and the code, then writes an ordered plan with the core fix first.

        #2

        Fix

        Makes the change on its own branch, adds a test and opens a pull request.

        #3

        Challenge

        A second agent attacks the fix, looking for reasons it doesn't solve the ticket.

        #4

        Prove

        CI checks the result rather than the agent's opinion of it, rolling out repo by repo.

        Then three people: a developer reviews it, QA tests it on staging, and someone approves the merge. Those gates aren't a stopgap until the models improve. They're the design.

        What it taught me

        • One run read code for 18 minutes and never made an edit. Plans now put the core fix first.
        • A test that passes without the fix proves nothing, so the reviewing agent rejects it.
        • Its cost meter counted streamed messages more than once. My own rule applied to me too.

        Bringing the team along

        • Presented the machine to the team: how it works, how to use it, and where it falls short
        • QA decides which tickets go in, so people still choose what the machine spends on
        • Turn what I learn into reusable skills, like checking integrations and verifying data

        06 / Where this goes

        Four bets on the next ten years.

        1. Exactly-once becomes table stakes.

          Idempotency used to be a payments-team concern. Once every tool call can come from a model that retries, it's everyone's concern, and it belongs in infrastructure.

          The double refund
        2. Reading code beats writing it.

          When code gets cheap, judgment gets expensive. The senior engineer's job becomes knowing what's wrong with something that looks right.

          Let's talk about reading it
        3. Boring architecture wins again.

          Agents thrive on conventions and one place to look. A well-kept monolith is a better home for them than forty services nobody fully understands.

          Why I still bet on the monolith
        4. Small teams, from anywhere.

          When you don't have twenty engineers, agents turn one person into three or four. That matters most in places like Lahore, and the window for being early won't stay open.

          AI tools vs. AI agents

        07 / More receipts

        Don't take my word for it.

        08 / Next

        Building something that
        can't happen twice?

        Hard backends, agents in production, whole products built in plain English, and systems that touch money or the real world. I like talking about all of them.

        sajjadumardev@gmail.com LinkedIn