Production up since Feb 2024

Ritesh Kumar Singh

I design and run the backend of a marketing-attribution SaaS: the product, the platform it runs on, and the team that builds it.

Lead Full Stack Developer at EasyInsights · Delhi NCR · IIT (BHU) Varanasi

Caricature of Ritesh Kumar Singh in sunglasses with a backpack Python PostgreSQL RabbitMQ FastAPI
1 vCPU · 1 GB$8/mo
0 infra outages since Feb 2024
~60
live client workspaces on the platform
5.6M+
events from one client in 30 days
0
infrastructure outages since Feb 2024
$8
a month for the production server
30-second version

Short on time? Start here.

What I do

Backend and platform engineering for multi-tenant SaaS: Python, Django, FastAPI, PostgreSQL and RabbitMQ, from database design to running production. I report to the CEO and lead the product and DevOps teams.

Proof

  • Designed the core product the company pivoted to in 2024
  • Production on a 1 GB server, zero infra outages since Feb 2024
  • Alerting that caught 5 incidents before clients did, in 2 months
  • ~35 Shopify brands onboarded in 5 months

How I work

  • Root cause first. Fix why, not just what.
  • Design for cost and failure. Small servers, fast rebuilds.
  • Make fixes reusable. One fix, every service.
  • Lead from the front. I write the core code too.
The story so far

From the coal city to production.

Nine moments that explain how I work. Scroll and follow the line.

Dhanbad
2016 – 2018

Grew up in the coal city of India

All my schooling was at DAV Public School, Koyla Nagar, Dhanbad. That's where I learned to do the basics properly before anything clever.

Class X 10/10 · Class XII 91.8%
IIT (BHU) CGPA 8.32
2018 – 2023

Mining engineer who chose software

A five-year Integrated Dual Degree (B.Tech + M.Tech) in Mining Engineering at IIT (BHU) Varanasi. Along the way I found I liked building systems more than digging into rock.

IIT (BHU) · CGPA 8.32
row 01row 02row 03row 04
May – Jul 2022

First real job: making sure data arrives intact

A summer internship at Axtria on two BI migration projects. I wrote and ran test scripts, validated migrated data and built test beds. It taught me how much care goes into moving data without breaking anyone's trust in it.

Axtria · 2 migration projects
Feb 2023

Joined as an intern, shipped on day one

ET Medialabs placed me at its sister company EasyInsights. My first project: customise the open-source Misago (Django) forum and run it as the EasyInsights community. I owned every change and deployment. By June I was Lead Full Stack Developer.

Forum live for about 2 years
52 requests…
Nov 2023

The demo that wouldn't load

During a client demo the app never loaded, and the company lost the deal. I recognised the pattern from an earlier project: 50+ API calls stuck behind the browser's 6-connection limit. I fixed it, rebuilt how the app loads, and was then given a 3-person product team.

Replay the bug ↓
pixel sdk crm E&A M G in
Jan 2024

Built the product the company pivoted to

I designed the architecture and database for the first version of Events & Audiences, which sends first-party conversion data to ad platforms. The company pivoted to it later that year. I've led it through three rebuilds and own it today.

95%+ of events delivered
1 GB $8/mo
Feb 2024

Production on a 1 GB server

I moved builds off the production server into a build server and a private package registry, then cut production from a 4 GB server ($24/month) to 1 GB ($8/month). A script rebuilds it from scratch in about 5 minutes.

0 infrastructure outages since
35
Aug – Dec 2024

Opened a new market: Shopify

The company had no way to onboard Shopify brands. I learned the Shopify app ecosystem and built an embedded tracking and attribution app in about three weeks.

~35 brands in 5 months
5
2025 – today

Voice AI, alerting and automation

Voice agents that make real phone calls on the Gemini Live API. Alerting that tells the team about failures before clients notice. Workspace setup that builds and checks itself.

5 incidents caught before clients, in 2 months
Interactive · Nov 2023

Replay the bug that broke a client demo.

Every component fired its own API call on load, more than 50 at once. Over HTTP/1.1 a browser opens only 6 connections to one host, so the calls stalled and not one came back. Watch it happen, then switch to the fix.

Connections in use
0 / 6
Waiting for a connection
0
Completed
0
App loaded
waiting
Waiting for a free connection Sent, no response Loading Request the app shell needs

An illustrative reconstruction, not production measurements. The 6-connections-per-host limit is how browsers handle HTTP/1.1.

Interactive · Events & Audiences

How first-party data reaches the ad platforms.

The architecture I designed for the company's core product. Click a source to follow its path.

Website pixel Mobile SDKs Custom JavaScript CRM webhooks Backend integrations Raw event store every ping saved first Process + dedupe no duplicate events Meta Google Ads LinkedIn OpenAI

Every raw event is saved before it's processed, so a failure later in the pipeline never loses first-party data. Click a source to see what it collects.

~6 minfrom event to ad platform
95%+of events delivered
5.6M+events from one client in 30 days
400K+leads from that client in 30 days
Selected work

Problems I've solved, with the numbers.

All built at EasyInsights, a multi-tenant marketing-attribution SaaS, with a small team and a small budget. Open any card to see how.

PlatformDevOpsCost
$24 → $8
a month for production, with zero infrastructure outages since Feb 2024

Production on a 1 GB server

Production ran on a 4 GB server, and deploying from git on it was slow and filled the disk. I moved building off the server entirely, so production only installs finished packages. The whole product now runs on 1 vCPU and 1 GB.

Linux · Nginx · systemd · Bash · Make · pip · Ansible · DigitalOcean API

Source reposabout 15 Build serverbuilds with Make Package registryprivate, PyPI-style App server1 vCPU · 1 GB
How I did it

A build server compiles about 15 repositories (frontend, Django app and services) and publishes them to a self-hosted, PyPI-style registry. The app server installs the backend with pip, serves the React build through Nginx and runs services under systemd. The build and registry servers ($16/month together) are shared by every service.

A script creates a fresh server through the DigitalOcean API (about 1.5 minutes), then sets up the local database, config, environment, packages, frontend, Nginx and SSL (about 3 minutes). If traffic grows, more app servers can go behind a load balancer.

ObservabilityFastAPIReliability
5 incidents
caught before they reached clients, in the first 2 months

Alerting that hears about failures first

Some earlier incidents were first reported by clients, which hurt the company's reputation. I built a central alerting service so the team finds out first.

How I did it

An internal FastAPI service, reachable only inside our private network, turns any error or incident into a Telegram message in real time. A check every 5 minutes compares task volume and run time against thresholds, so a code change that slows tasks down is flagged within an hour.

We also stopped silently catching errors and now raise them. That surfaced bugs that had been going unnoticed.

Python · FastAPI · RabbitMQ · Telegram Bot API · cron

Alertsinternal bot
Task queue above thresholdVolume is higher than normal for this time
Task run time upStarted after the last deploy
Error raised in a workerStack trace attached
Fixed and redeployedBefore any client noticed

Illustrative messages, not real alerts.

ArchitectureMarTech
95%+
of events delivered to ad platforms, about 6 minutes after they happen

Events & Audiences, the product the company pivoted to

Brands wanted ad platforms to learn from their real conversions. I designed the architecture and database for the first version in January 2024. It became the company's core business, and I've led it through three rebuilds.

How I did it

It collects first-party data from pixels, mobile SDKs, custom JavaScript, CRM webhooks and backend integrations. Raw events are stored before processing so nothing is lost, then deduplicated and sent to Meta, Google Ads, LinkedIn and OpenAI. One client alone sent 5.6M+ events and 400K+ leads through it in 30 days. See the flow.

Python · Django · FastAPI · PostgreSQL · RabbitMQ · Conversion APIs

DebuggingFrontend
Never → always
the app went from not loading to loading reliably

The demo that wouldn't load

In Nov 2023 the app failed to load in a client demo. 50+ uncoordinated API calls had stalled at the browser's 6-connections-per-host limit.

How I did it

The quick fix cut unnecessary calls to about 30 and sequenced them to stay within 6 at a time. The permanent fix rebuilt app loading: the shell first, then the dashboard, then everything else lazily. It hasn't recurred. Today the app starts with 4 parallel API calls. Replay it.

React · JavaScript · browser networking

MarTechShopify
~35 brands
onboarded from Shopify in 5 months (Aug – Dec 2024)

A Shopify tracking app, from zero

The company had no way to onboard Shopify brands. I learned the Shopify app ecosystem and built an embedded tracking and attribution app in about three weeks.

How I did it

The app runs inside the Shopify admin. We used a custom app per client to capture events and attribute them reliably, which opened a whole new segment of D2C clients.

Shopify embedded apps · Shopify APIs · Python · JavaScript

AutomationDevOps
~15 min → 0
of hands-on work to set up each client workspace

Workspace setup that checks itself

Each client gets 2 dedicated servers. Setting them up and checking them by hand took about 15 minutes, and rushed setups sometimes missed a step.

How I did it

I automated the setup through the DigitalOcean API and added a script that verifies every server and configuration. A scheduled job picks up new workspaces every 5 minutes and the setup runs unattended in 7–8 minutes, so a missed step is caught by the checks, not by a client.

Bash · Python · DigitalOcean API · cron

Voice AIWebSockets
Live calls
AI voice agents in production on the Gemini Live API

Voice agents that make real phone calls

Clients were missing scheduled meetings. The agent calls them beforehand and holds a natural conversation.

How I did it

Call audio from the telephony provider streams over a FastAPI WebSocket to Gemini Live, and the model's spoken replies stream straight back into the call. I also evaluated a self-hosted pipeline (faster-whisper, Gemma, XTTS v2 on vLLM) and chose hosted models for latency, cost and less to operate.

Python · FastAPI · WebSockets · Gemini Live API · Vobiz telephony

BackendDebugging
~15 services
share one task framework, mail service and database layer

Shared Python packages

The same queue, email and database code was copied between services, so every bug had to be fixed several times. I turned them into packages in our private registry.

How I did it

The RabbitMQ framework registers tasks with a decorator and shuts down gracefully: on SIGTERM it finishes the current message, acknowledges it and stops, so nothing is lost.

I also tracked down out-of-memory crashes on two servers (module reloads on every message; PostgreSQL work_mem × connections) and a FastAPI throughput drop caused by threadpool limits.

Python · RabbitMQ · PostgreSQL · psycopg2 · systemd

More work

  • Mobile tracking SDKsAndroid, iOS, React Native and Flutter, with deep links and install-referrer attribution, on npm and pub.dev.
  • AI analytics agentPlain-language questions over each client's data with the Claude API, DuckDB and Parquet.
  • Qualified lead generation (in progress)Tracked forms, AI calls and WhatsApp, CRM sync. Designed for India's DPDP Act.
  • Multi-tenant architecture and FunnelsDatabase-per-tenant data model and a control-plane / data-plane design for self-serve.
  • ConversifyA WhatsApp messaging and tracking product, built end to end in 2023.
  • Community forumOpen-source Misago, customised, deployed and run for about two years.
Experience

Where I've worked.

I report to the CEO, own the architecture and production, and lead the product and DevOps teams.

Feb 2025 – PresentCurrent

Lead Full Stack Developer

EasyInsights · Delhi NCR

  • Own architecture, code reviews, releases and production for ~60 live client workspaces; lead a team of 4.
  • Built incident alerting that stopped 5 incidents from reaching clients in its first 2 months.
  • Automated per-client workspace setup (2 servers per client) with built-in verification.
  • Shared Python packages across ~15 services; fixed out-of-memory crashes and a FastAPI throughput regression.
  • Voice AI agents on the Gemini Live API over FastAPI WebSockets.
Jun 2023 – Jan 2025

Lead Full Stack Developer

ET Medialabs (deployed at EasyInsights) · Delhi NCR

  • Designed Events & Audiences, now the company's core business; 95%+ delivery to ad platforms.
  • Moved production to a 1 GB server ($24 → $8/month), zero infrastructure outages since Feb 2024.
  • Built a Shopify app that onboarded ~35 brands in 5 months.
  • Fixed the demo-day loading failure, then led a 3-person product team.
  • Built the company's first mobile tracking SDKs (Android, iOS, React Native, Flutter).
Feb 2023 – May 2023

Software Engineering Intern

ET Medialabs (deployed at EasyInsights)

  • Customised and deployed the EasyInsights community forum on Misago (Django); it ran for about 2 years.
May 2022 – Jul 2022

Intern

Axtria

  • Two BI data-migration projects: test scripts, data validation and test beds.
Skills

What I work with.

Backend

  • Python
  • Django
  • FastAPI
  • REST APIs
  • WebSockets
  • asyncio
  • RabbitMQ

Data & architecture

  • PostgreSQL
  • DuckDB
  • Parquet
  • Multi-tenant SaaS
  • Event-driven pipelines
  • Deduplication
  • System design

Platform & DevOps

  • Linux
  • Nginx
  • systemd
  • Bash
  • Make
  • Ansible
  • GitHub Actions
  • DigitalOcean
  • Monitoring & alerting

Integrations & AI

  • Meta Conversions API
  • Google Ads API
  • LinkedIn
  • Shopify apps
  • CRM APIs
  • Gemini Live API
  • Claude API

Frontend

  • React
  • JavaScript
  • App-load performance

When the product needs it

  • Android SDK
  • iOS SDK
  • React Native
  • Flutter

Filled chips are what I use every day.

IIT (BHU) VaranasiIntegrated Dual Degree (B.Tech + M.Tech), Mining Engineering · 2018 – 2023
8.32 CGPA