Software Developer · SurveySparrow
Billing & payments · 2024 → today

Giridharan Pasupathi

Software Developer at SurveySparrow, two years on the billing and payments platform. I build the systems that decide whether a company gets paid correctly.

Node.js · Java · PostgreSQL · Redis Chennai, India
What I do

Two years inside a live billing platform. Millions of subscriptions across seven datacenters, and one rule: the money and the data must always agree. When they drift, I find out why, fix the root cause, and build the guard that stops it coming back.

The scoreboard · May 2024 → today
0
read paths re-pointed across 65 files to a single source of truth
0h→0h
bulk provisioning runtime, with batched inserts and 20 parallel workers
$0K
annual revenue protected from leakage by one audit cron
0
mismatched accounts found across 2 datacenters, 7 root causes, 6 fixes
0
webhook event types hardened with per-account locks and a 30-field allowlist
0+ PRs
470 merged and 220 tickets resolved across 5 billing and payments repositories
Selected work · five systems
01

One source of truth for every subscription.

The product kept its own copy of billing state, synced by webhooks. Every missed event became a wrong plan, a wrong limit, a wrong invoice. I architected the decoupling of billing into SparrowPay and re-pointed 230 read paths across 65 files to the one system that knows the truth.

230 read paths65 filesNode.js · Hapi · PostgreSQLidempotent by design
230 scattered reads → 1 source of truth
02

The audit that found 190 accounts nobody knew were wrong.

Led a cross-system subscription audit across 2 datacenters. Grouped every mismatch into 7 root causes and drove 6 targeted fixes. Then turned the audit into a daily reconciliation job that has since surfaced 400 mismatches before any customer noticed.

190 accounts7 root causes6 fixesdaily reconciliation
scan · classify · fix
03

A webhook pipeline that can't be raced or tampered with.

Concurrent events for the same account deadlocked each other, and any payload field could write straight into billing. I added per-account Redis locks so one account serialises while millions run in parallel, plus a strict 30-field allowlist across 25 event types.

25 event types30-field allowlistRedis locks0 deadlocks
parallel across accounts · serial within one
04

Forty-eight hours to under four.

Provisioning features for every account ran row by row and took two days, so plan launches waited on it. Batched inserts and 20 parallel workers with bounded concurrency, safe to re-run midway. Plan rollouts stopped being a weekend job.

48h → 4h20 workersbatched insertsre-runnable
same job · 12× faster
05

Guarding the revenue line while everyone sleeps.

An audit cron for superadmin overrides protects about $50K a year from quietly leaking. A Slack bot watches payment attempts for stolen cards and has flagged 10+ fraud attempts in real time. A pause-payment workflow keeps Stripe and internal billing at 100% consistency through suspensions.

$50K / year10+ fraud flags100% consistencyStripe · Slack · cron
live attempts · flagged in seconds
Also shipped

Smaller moves,
real numbers.

10 → 1
Tenant onboarding, one guided flow
Replaced a 10-step manual script process across microservices with a single UI workflow.
35 scripts
Self-serve pricing plans
Migrated plan scripts across 7 datacenters into an admin UI. Product launches plans without engineering.
+30%
Revenue retention
Cron-based usage-insight emails to premium customers, driving retention and feature adoption.
+12%
Customer retention
Launched a 7-day free trial across every pricing plan with end-to-end analytics tracking.
140 tests
End-to-end, written with AI agents
Playwright suites across 5 modules: signup, login, SSO, 2FA. AI-assisted, human-verified.
100%
Subscription consistency
Pause-payment workflow syncing Stripe with internal billing during every account suspension.
How I work

Drift in,
guard out.

Every billing bug I have fixed followed the same arc. The difference between a patch and an engineer is whether the arc finishes.

01

Find the drift.

Compare what the product believes with what billing knows, across every datacenter. 190 accounts were wrong before anyone could say how many.

02

Fix the root cause.

Not the symptom. Seven causes behind 190 mismatches became six fixes. A second copy of billing state became no copy at all.

03

Automate the guard.

A daily reconciliation job, per-account locks, an override audit cron, a fraud bot. Guards that run while everyone sleeps.

04

Prove it with a number.

48 hours to 4. $50K a year. 100% consistency. If it cannot be measured, it is not finished.

Stack

Tools I reach for.

LanguagesJavaScript · Java · Python · SQLNode.js services in production daily; Java 21 and Spring Boot for new systems.
BackendNode.js · Spring Boot · Hapi.jsWebhook pipelines, REST APIs, cron-driven jobs, multi-tenant services.
DataPostgreSQL · Redis · SequelizeMigrations, batched writes, distributed locks, queues.
PaymentsStripe · BullMQ · WebhooksSubscriptions, pause-payment sync, fraud monitoring, reconciliation.
FrontendReactAdmin tooling: tenant onboarding and self-serve plan management.
QualityPlaywright · Micrometer · Prometheus140 end-to-end tests, metrics for depth, throughput and failures. Docker for everything local.
Recognition

Noticed along the way.

Spotlight Award
SurveySparrow
For impactful contributions to the Billing & SparrowPay squad: creativity, commitment, measurable team success.
Finalist
Niral Thiruvizha, Tamil Nadu Government
Qualified into the top 50 teams out of 10,000 statewide.
Competitive programming
LeetCode top 7%
CodeChef 1481
On the side

WorkQueue, a distributed job-queue library in Java 21 on Redis: at-least-once delivery, strict per-key ordering, retries with backoff, dead letters. 1,900 ops/sec under a 10,000-item load, zero messages lost in crash tests. Education: B.Tech Information Technology, Sona College of Technology, 2021 – 2025, GPA 8.0.