status: operational · SDE-1 @ EventGraphia · Gurugram, HR

Shivansh
Ahirwal

Backend engineer who builds systems that keep running when the network drops, the process crashes or the user hits refresh.

Python & Django at the core. WebSockets, queues and desktop agents at the edges. I measure before I assume, and every rollout ships behind a flag.

~/systems/live-topology live
The shape of what I build: a web app talking to software on local machines, safely.
99.9%WebSocket message delivery
500+booking workflows / month on the CRM
642→1leaked rclone servers per worker, after the fix
70%fewer failed task executions
75%faster quotations
80%less environment setup time

The short version

I'm Shivansh Ahirwal, a backend engineer based in Gurugram, Haryana, originally from Indore, Madhya Pradesh. At EventGraphia I work where the web meets the physical world: photographers' memory cards, local hard drives and terabytes of event photos that have to reach the cloud intact, even when laptops sleep and Wi-Fi drops.

That's meant building a desktop agent framework, a WebSocket layer that reconnects and resumes, persistent queues that survive crashes, and the Django CRM that runs the business on top. I'm happiest tracing a bug down through every layer until the numbers line up.

Outside the day job I build AI agents that run on local models, ship side projects entirely on free tiers, and also design and pitch storefronts. I'm comfortable owning the whole path from a database migration to a client presentation.

role
SDE-1 · Backend Engineer
company
EventGraphia · since Jan 2025
location
Gurugram, Haryana
hometown
Indore, Madhya Pradesh
core
Python · Django · DRF
edges
WebSockets · queues · agents
cloud
AWS EC2 · S3 · CloudFront
education
B.Tech CSE · SAIT · 2026
open_to
backend & platform roles
work_from
Gurugram (NCR) · Indore · remote

Problems I've chased down

Written the way I'd write a postmortem: what broke, why, what fixed it, and what stops it coming back.

SEV-1performance · memory

642 rclone servers and a 12 GB swap file

Symptom
Image renders on the upload agent stalled for minutes (render waited 234s for free memory), even after worker counts and memory gates had been tuned.
Root cause
Agent logic modules are re-executed before every queued task, so a module-level handle for the rclone server reset each time. Every uploaded file started a new server and never stopped the old one: 642 processes and about 12 GB of memory.
Fix
Moved cross-task state into a process-level holder and tagged long-lived child processes so they can be found and stopped by what they are, not only through an in-memory handle.
Guardrail
A written rule beside the module registry, plus a habit: after any RAM fix, audit the whole process tree during a real run and re-check minutes later. Measure, don't assume.
  • Python
  • process lifecycle
  • profiling
  • desktop agent
SEV-2reliability · ux

Uploads that survive a refresh, a disconnect or a crash

Problem
Multi-hour photo uploads ran on a local agent. Refreshing the page or restarting the agent lost track of the run.
Approach
Contributed to a pipeline where the agent stays tokenless: it does local work, then pauses at each API step and saves its state durably, while the browser makes every backend call. Runs resume after a restart, skip finished files and reuse their upload keys, so nothing is duplicated.
Also
Replaced 1-second polling with pushed progress over WebSocket, removing a stream of database writes every session.
  • state machine
  • WebSockets
  • SQLite
  • React
SEV-2migration · data safety

WebP across five repos without touching old data

Goal
Cut storage and bandwidth by serving WebP previews, while face recognition still needed JPEG.
Approach
Worked on a change where one key-derivation function is gated: for legacy deliverables it's an exact no-op. Face indexing reads the HD JPEG but keeps the original ID, because otherwise search silently returns zero matches.
Caught in review
Dropped ICC colour profiles and small images being silently upscaled. Both were fixed with tests.
  • AWS S3
  • Rekognition
  • Pillow
  • backward-compat
SEV-3infra · rollout

Signed URLs to signed cookies, in four safe steps

Goal
Let browsers cache gallery media on repeat views and cut per-image signing work on the API.
Approach
Moved CloudFront media to per-booking signed cookies. Shipped as four small commits, each a no-op on its own and all behind a feature flag that's off by default, enabled on exactly three views.
Why it matters
Shared gallery builders also serve public pages, so the flag keeps those paths untouched.
  • CloudFront
  • Django
  • feature flags

House rules

The habits behind the numbers. I wrote most of these down after something taught me why.

HOUSE_RULES.mdmain
  1. Measure, don't assume. A fix isn't done until I've watched it work under a real run.
  2. Old data is a no-op. Migrations are gated so legacy records come through byte-for-byte unchanged.
  3. Spec before code. A short, checkable spec stops tickets from being reopened.
  4. Small diffs, behind flags. Each step can be reviewed and reverted on its own.
  5. Parse, don't pattern-match. Paths, URLs, versions and dates get compared as structures, because "/media/EG 40" is not a prefix of "/media/EG 403".
  6. Never trust a near-miss input. I test the input that's almost right, because that's the one that fails silently.
  7. Back up before you rebase. Only delete data you created. Never force-push without asking.
  8. AI is a teammate, with guardrails. I run agentic workflows with review skills, migration-safety checks and constrained tools.

Where I've shipped

  1. – now
    Gurugram

    SDE-1 · EventGraphia

    • Designed a reusable desktop agent framework that connects web apps to local systems without backend rewrites (−60% integration effort).
    • Engineered a bidirectional WebSocket layer with handshake and reconnection (99.9% delivery).
    • Built a persistent SQLite queue with dynamic priority and recovery (−70% failed tasks).
    • Extended Django auth for desktop agents (−40% maintenance).
    • Architected the Django CRM for clients, photographers, bookings and workflows (500+/month).
    • Built a dynamic estimation engine (−75% quotation time) and deliverables workflows (+50% tracking efficiency).
    • Wrote Pytest API integration tests for critical CRM flows.
    • Containerised with Docker on AWS EC2 + CI/CD (−80% environment setup).
    • Django
    • DRF
    • FastAPI
    • WebSockets
    • SQLite
    • MySQL
    • MongoDB
    • Celery
    • Redis
    • Docker
    • AWS
    • React
    • Pytest
  2. –
    Indore

    Python Intern · Seize the Ads

    • Built a Selenium automation system for lead generation, controlled remotely through Django REST APIs.
    • Deployed on AWS EC2 with domain management and integrated proxy rotation for reliability.
    • Python
    • Selenium
    • DRF
    • AWS EC2

Things I build on my own time

ai agent · open source

CodeBot

An autonomous code-review agent for Python/Django. It runs a planner → tool → validate loop with JSON-checked steps, local inference through Ollama, and file and shell tools constrained so the agent can't wander. Packaged in Docker.

  • Python
  • LLMs
  • Ollama
  • Docker

ai pipeline · b2b · in progress

AI Reels + Wholesale Platform

Two products for a clothing manufacturer. An LLM writes product reel scripts, then FFmpeg, MoviePy and edge-tts render the videos, with human approval before publishing. Alongside it, a B2B catalogue with MOQ pricing and quotes. Built entirely on free tiers.

  • Django
  • Celery
  • Groq
  • Ollama
  • React
  • Postgres

design + engineering · client pitch

Luxury Storefront Redesign

A pitch for a luxury fashion e-commerce brand: a pitch deck plus three fully built homepage directions using the brand's real catalogue, with a headless Shopify (Hydrogen) plan that keeps checkout and inventory as they are.

  • HTML/CSS/JS
  • Shopify Hydrogen
  • SEO
  • UI design

Tools I reach for

languages

  • Python
  • SQL
  • JavaScript

backend

  • Django
  • Django REST Framework
  • FastAPI
  • Celery

data

  • PostgreSQL
  • MySQL
  • MongoDB
  • SQLite
  • Redis

messaging & real-time

  • WebSockets
  • RabbitMQ
  • Huey queues
  • Async processing

cloud & ops

  • AWS EC2
  • S3
  • CloudFront
  • Rekognition
  • Docker
  • Nginx
  • Gunicorn
  • Linux
  • CI/CD

ai & automation

  • AI agents
  • LLM integration
  • Ollama
  • Groq
  • n8n
  • Selenium

quality

  • Pytest
  • API & integration tests
  • flake8
  • Code review

frontend & web

  • React
  • HTML/CSS
  • Technical SEO
  • Shopify

Have a system that needs to stay up?

I'm open to backend and platform roles in Gurugram / Delhi NCR or Indore (and remote), plus freelance Django, API or automation work.

Esc