With great code comes great responsibility

ABUSALEM

BACKEND SOFTWARE ENGINEER

I was the first engineer at Pallet. Four years later I lead the backend team and still write code most days — mostly Java, mostly the unglamorous parts that everything else depends on.

Chapter 01

ORIGIN STORY

I finished a Java backend course at Masai in 2022 and joined a startup called Twinleaves as its first engineer. It's called Pallet now. I'm still here.

For the first couple of years nothing existed yet. I built cart, catalog, serviceability, logistics, comms and vendor management from empty repos, and set up most of the GCP infrastructure underneath them — largely by reading docs at night and getting it wrong a few times first.

Now I lead the backend side of a six-person team. In practice that means I write the specs everyone builds against, review a lot of pull requests, and keep the parts I'd rather not hand off: data models, API contracts, migrations. If something's going to break production, I'd prefer to be the one who broke it.

4

Years at Pallet

30+

Repos shipped

6

Engineers led

Chapter 02

THE ARSENAL

  • Java / Spring Boot95%
  • System Design88%
  • PostgreSQL / JPA87%
  • Elasticsearch85%
  • GCP / Cloud Run82%
  • Event-Driven Systems80%

Languages

  • Java
  • SQL
  • JavaScript
  • TypeScript
  • Python

Backend

  • Spring Boot
  • Spring Security
  • REST APIs
  • Microservices
  • JPA / Hibernate
  • Node.js

Data

  • PostgreSQL
  • MySQL
  • Elasticsearch
  • BigQuery
  • Redis

Cloud & Messaging

  • GCP
  • Cloud Run
  • Pub/Sub
  • Firebase
  • Kafka
  • WebSockets
  • SSE
  • AWS

DevOps

  • Docker
  • Jenkins
  • GitHub Actions
  • Kubernetes
  • Git

Architecture

  • Multi-tenancy
  • RBAC
  • Event-driven
  • System design
  • Caching
  • Observability

Chapter 03

THE WORK

#01

CATALOG PLATFORM

The thing I've spent the most time on

Retail chains are nested: an account owns brands, brands own head offices, head offices own stores. The old system faked that with hard-coded inheritance. I replaced it with five real levels, where a product is created once at the top and shared down. When a store edits one, it forks — and you can diff that fork against its parent, pull single fields back, or undo it entirely. The hard part was the read path: collapsing masters and forks into one row per product without making search slow.

  • Java
  • Spring Boot
  • Elasticsearch
  • Multi-tenancy
#02

JOBBEEPER

Mine. Built it, run it, pay for the server.

A job-alert service I built and operate on my own. It watches LinkedIn, Naukri, Workday, Greenhouse, Lever, Ashby and a few others across 2,000+ companies, matches new postings against what each person actually wants, and pings them on Telegram, browser push or email. It all runs on one Oracle Cloud ARM box. Started as a scraper for myself; it now has accounts, subscriptions, referrals and an admin panel.

  • Java
  • Python
  • PostgreSQL
  • Docker
  • Nginx
#03

TAX & PROMOTIONS

Every bill goes through these two

The tax engine works out the right rate for every line item at billing time. I wrote 185 tests for it, because getting tax wrong across four countries isn't the kind of bug you hear about politely. The promotion engine covers eight offer types, including the awkward ones: buy-X-get-Y, combos, and splitting a discount fairly across loose items sold by weight.

  • Java
  • Spring Boot
  • Billing
  • Test Coverage
#04

PRODUCT AI AGENTS

Scan it, photograph it, or just describe it

Point a phone at a barcode, send a photo, or type what the thing is — the agent turns it into a product draft you can check and save. It looks for a real product image on the web first and falls back to your photo. Most of my time went into the streaming rather than the model: bounding the executors, refusing cleanly when we're at capacity, cancelling when someone closes the tab, and clearing up tool calls left hanging by an interrupted session.

  • MCP
  • Vertex AI
  • SSE
  • Spring Boot
#05

PRINTING PIPELINE

Boring until it stops working, then it's everything

Receipts and kitchen tickets have to come out of the printer or the store stops. This wires printer agents, POS services and the gateway together over WebSockets, with deferred prints for when a printer is offline, reprint tokens, recovery on startup, and a sound alert when something needs a person. Built for a shop floor, where the network is bad and printers vanish mid-job.

  • WebSockets
  • Event-driven
  • POS
  • Java
#06

AUTH STARTER

One library, so the same bug stops coming back

Every service was doing its own thing with roles and permissions, so the same handful of bugs kept reappearing in different places. I pulled it all into one Spring Boot starter — roles, plans, permissions, tenant and platform access — and most of the platform runs on it now. Auth bugs dropped by roughly 40%, and request logging finally looks the same everywhere.

  • Spring Boot
  • Spring Security
  • RBAC
  • Library

Chapter 04

THE HISTORY

  1. Pallet

    formerly Twinleaves · first engineering hire

    Sep 2022 — Present · Bengaluru, India

    1. Software Development Engineer 2

      May 2024 — Present
      • Lead the backend side of a six-person team: split requirements into per-service work, review the code, unstick integrations when two services disagree, and run releases across 11 repos.
      • Write the specs and integration guides everyone builds from, and keep the risky work myself — data models, API contracts, migrations.
      • Designed the five-level catalog hierarchy and everything around it: forking, field-by-field re-sync, un-forking, and a read path that collapses masters and forks into one result per product.
      • Built the tax engine that prices every transaction, with 185 tests covering four countries' rules.
      • Ran the team's work on the promotion engine and its eight offer types, and own cart and billing for both retail and restaurant.
      • Pulled authorization into a shared Spring Boot starter that most services now use. Auth bugs dropped by about 40%.
      • Shipped the event-driven printing pipeline, and stabilised the SSE streaming the AI agents run on.
      • Run services on Cloud Run and Compute Engine. Jenkins and Cloud Build took roughly 30% off deploy time.
      • Handle most production incidents — auth failures, wrong calculations, Elasticsearch filter bugs, duplicate records. One empty-PDF bug turned out to be an entity-manager lifecycle problem and took me embarrassingly long to find.
    2. Software Development Engineer 1

      Sep 2022 — May 2024
      • Built six of the company's core services while it was still finding its feet — cart, catalog, serviceability, logistics, comms, vendor management — and worked on ten or so more.
      • Cut API response times by nearly 40%: profiled the slow endpoints, added Redis caching, then fixed the queries, indexes and pagination underneath them.
      • Integrated WhatsApp Business, GS1 Datakart, Firebase and Vertex AI, and built offline inventory sync for POS terminals in stores where the internet comes and goes.
      • Set up much of the early GCP infrastructure — VPC, Compute Engine, Cloud Run, IAM, load balancing — which took about 15% off the bill.
  2. Training

    • Certification in Java Backend Development

      Masai School, Bengaluru

      Dec 2021 — Aug 2022

    • Diploma in Computer Science

      Bharati Vidyapeeth, Maharashtra

      Aug 2018 — Oct 2021

Chapter 05

THE FEATS

  • 185

    Tax tests

    Four countries' rules

  • 40%

    Fewer auth bugs

    One shared starter

  • 40%

    Faster APIs

    Profiling, caching, indexes

  • 30%

    Faster deploys

    Jenkins + Cloud Build

  • 15%

    Off the cloud bill

    Early GCP setup

  • 2,000+

    Companies watched

    JobBeeper scrapers

  • Employee of the Quarter

    Twinleaves / Pallet, 2025. I was the first engineer they hired, and the team I now lead runs the services I started.

  • 700+ DSA problems

    Across a few platforms. I still turn up for LeetCode contests.

Chapter 06

SEND UP THE SIGNAL

If you've got a backend problem worth chewing on — or you just want to argue about catalog modelling, tax rules, or why printers are the worst — my inbox is open.

mail@abusalem.me

Based in Bengaluru, India