Hello

I am Shakeeb Khan

Full-Stack & AI Engineer with 15+ years of experience building scalable systems.

I help businesses convert their ideas into reality—from the first architecture decision to production. Specializing in the JavaScript/TypeScript ecosystem, I combine rock-solid backend engineering with cutting-edge LLM and LangChain integration. From secure, high-traffic APIs to autonomous conversational AI agents, I build the complete, production-ready package.

Working with
  • PHP
  • Laravel
  • Node.js
  • TypeScript
  • Python
  • LangChain / LangGraph
  • Git
  • AngularJS
  • Express.js
  • React / React Native
  • Next.js
  • Tailwind CSS
  • GraphQL
  • PostgreSQL
  • MySQL
  • MongoDB
  • MariaDB
  • Firebase
  • Kubernetes
  • Docker
AWS DynamoDB SQS SNS LLM / RAG
Portrait of Muhammad Shakeeb Khan, Full-Stack and AI Engineer
15+ yrs
shipping production software
4 markets
USA, UAE, EU & Pakistan markets
2 startups
co-founded, one of them current
10
engineers led at peak
01 — Capabilities

Tech stack matrix

Four layers, one engineer. Everything below has carried real production load or real users. AWS Solutions Architect Associate, plus an AI engineering track covering LLMs, RAG, QLoRA and agents.

AI / ML Engineering

Retrieval pipelines, agent orchestration and inference cost control.

LLMs RAG LangChain / LangGraph Vector Databases

Backend & Databases

Service boundaries, ETL pipelines, query plans and safe migrations.

NestJS TypeScript Python PostgreSQL MongoDB GraphQL

Frontend & UI

Product surfaces, design systems and end-to-end test coverage.

Next.js React React Native Tailwind CSS Cypress

Cloud & DevOps

Reproducible environments, delivery pipelines and load-tested resilience.

AWS Kubernetes (EKS) Docker CI/CD k6
02 — Experience

Where I have done this

Senior and lead engineering roles across security, proptech and consulting. Happy to talk through the specifics on a call.

Senior Software Engineer SoSafe
Cologne, Germany
Backend Lead Homelike
Cologne, Germany
Engineering Manager NextGeni
Karachi, Pakistan
03 — Founder side

I have sat on the founder's side of the table

I currently co-found mulberrybytes with Sana Naz. Before the scale-up roles I built a consultancy from nothing to six regular clients and ten full-time engineers, and went through the Founder Institute as an early-stage founder. So when a startup asks whether to build it properly or build it now, I answer with runway in mind, not just architecture.

CO-FOUNDER Current

mulberrybytes

Co-founded with Sana Naz. Building software with the same architecture-first approach I bring to consulting engagements.

mulberrybytes.com
CO-FOUNDER & CTO 2013–2016

TheVisionSpark

Founded a software consultancy and grew it to six regular clients and ten full-time engineers. Built the engineering processes, the delivery frameworks on Laravel, MEAN and native mobile, and a tech radar that set technical direction. Ran project plans against client budgets and deadlines, and kept engineers through upskilling, meetups and hackathons.

FOUNDER · ACCELERATOR 2015–2016

Founder Institute

A structured program for early-stage entrepreneurs: business model foundations, mentor collaboration, funding strategy and market validation.

How early-stage teams use me

MVP architecture & build

Cut the scope to what proves the thesis, then ship it on a stack a small team can maintain.

Fractional CTO

Technical direction, hiring and code review for founders without an engineering lead yet.

Technical due diligence

An honest read on a codebase, its debt and what it will cost to scale, before you invest or acquire.

Team & process setup

Guilds, review culture, CI/CD and the mentoring loop that keeps senior engineers from leaving.

04 — Writing

Technical writing & postmortems

Full posts open in place. No newsletter gate, no scroll hijack.

Muhammad Shakeeb Khan
Shakeeb Khan
Fullstack, AI & Cloud Engineering

Got an idea? Let’s make it real.

Tell me what you are building and I will come back to you within two working days.

Let’s Connect
Available for Q3–Q4 2026 Consulting
Send a message

The contact form is not set up yet.

Deep dive

Batched Postgres backfills that survive a mid-deploy restart

12 Jun 2026|8 min read|PostgreSQL · NestJS · Migrations

The backfill had been written as one statement inside one transaction. It worked on a laptop against a seeded database, and it worked in staging, where the table was small. In production it was orders of magnitude larger. The job either ran for hours or was killed by a deploy halfway through, and nobody could say how much of it had landed.

Measure before rewriting

The interesting number was not the query plan, it was the transaction age. One long transaction held row locks the application needed, kept dead tuples un-vacuumable, and grew the WAL until the replica fell behind. The SQL was fine. The shape of the job was wrong.

Three changes

Batch the work into small committed chunks. Page with a keyset instead of OFFSET, which degrades linearly as the offset grows. Persist a cursor outside the data transaction so a restart resumes instead of repeating. This is the shape it settled into as a NestJS task.

backfill-records.task.ts

Results

End-to-end runtime fell sharply, replication lag stayed under a second, and the job became something you could stop mid-flight and restart without thinking about it. SKIP LOCKED also meant two workers could share the queue on the days we wanted it finished sooner.

The transferable part

Migration performance is usually a batching problem, not a query problem. Before optimising SQL, ask how long the transaction stays open and what it holds while it does.

Postmortem

Postmortem: what k6 found that staging never did

28 Apr 2026|6 min read|Postmortem · k6 · Load Testing
Signal
Queueing, not work
Root cause
Pool exhaustion
Fix
Pooler + timeout

Why staging looked fine

Staging ran a couple of pods against a database with a generous connection limit and almost no concurrent traffic. Production ran many times that number, each pod holding its own pool, against a shared instance. The per-pod configuration was identical. The aggregate was not, and nothing in the environment made that visible.

What the load test showed

A ramping-arrival-rate scenario made the cliff obvious. Throughput scaled cleanly up to a point, then p95 went vertical while CPU stayed flat — the signature of queueing, not of work. Requests were waiting for a connection that never came free.

breakpoint.test.js

The fix

Size the pool against the database limit divided by replica count, not per pod in isolation. Put a pooler in front so pod count and connection count stop being the same number. Then set a hard acquire timeout so a saturated pool fails fast and visibly instead of queueing silently.

Action items

  • Breakpoint test in CI on every release candidate, with the threshold as the gate.
  • Export pool wait time and saturation as first-class metrics, not debug logs.
  • Assert replicas × pool_size < max_connections at deploy time.