Mahesh Kumar Muddunuru
Available for the right opportunityVancouver, BC · Remote-friendly

I build software end-to-end — from spec, to App Store, to support email.

I'm Mahesh — a Vancouver-based engineer. By day, release infrastructure for FortiClient at Fortinet — security software that ships to millions of macOS, Windows, and Linux endpoints. By night and weekends, TapNGame — a four-app sports platform I designed, shipped to the App Store and Google Play, and now run in production myself.

Day jobFortiClient release engineering · FortinetSolo buildTapNGame · live on iOS + AndroidReach forTypeScript · Dart · Postgres · PythonOpen toSenior SWE · AI eng · Founding eng
Mahesh at an outdoor sports event in Vancouver.
Vancouver · On the ground· LIVE
— Off the keyboard, in the game01 / 09
02 — About

The short version, in my own words.

Not the LinkedIn paragraph. Not the recruiter blurb. What I'd actually tell you if you sat down across from me and asked: "so — what do you do?"

I'm a software engineer and a solo founder. By day, I'm at Fortinet — release infrastructure for FortiClient, which sits on millions of endpoints across macOS, Windows, and Linux. By night, I build TapNGame — four apps and one Postgres backend, live on iOS, Android, and the web. I designed it, shipped it, and I run it myself.

The throughline is the same in both: I take software all the way. I don't stop at the diff. I write the spec, build the system, ship the binary, watch the metric, read the support email, and write the patch. The hard part of software was never the code — it's the thousand small decisions between an idea and a user actually getting what they came for. That's the part I like most.

I move across mobile, web, backend, infrastructure, and ML — not because I'm chasing breadth, but because real problems don't respect stack boundaries. The bugs that take down production live at the seams nobody owns. I learn both sides so I can fix them, instead of throwing them over the wall.

03 — Journey

How I got here, told over coffee.

The honest version. Six chapters, in order, each one teaching me the part the next one needed. Resumes lose this. I'd rather you have it.

Childhood — 2014
Where it started
01

I was the kid taking the family computer apart.

Self-directed · Hyderabad, India

Before I knew the word "engineer," I knew the feeling — wanting to know how the thing in front of me worked, then making it do something it wasn't built to do. School computers, the family PC, the neighbour's modem. Nobody asked me to fix it. I just wanted to.

A small boy with a backpack walking toward a school gate at dawn.
2014 — 2018
Foundation
02

I learned to actually build things.

BTech, Computer Science · CVR College of Engineering · Hyderabad

The classes I cared about most weren't the most popular ones — networking, simulation, basic ML, and computer vision. I wanted to build the kinds of systems that already ran the world: how packets actually got from A to B, how a model learned to tell things apart, how databases held everything together. That curiosity is still the thing.

A young man walking past a stone college building in early light.
2018 — 2019
First real job
03

Running SAP for 150 enterprises.

SAP BASIS Administrator · ADP · Hyderabad

My first production job. I supported global clients — GM, IKEA, Philips, Apple, HP, Microsoft, Dell. Transport Management System administration, kernel upgrades, RFC connections, client administration, Rev-trac, Oracle tablespace management. I learned, fast, that a backend decision I made at 11 p.m. could ruin someone's payroll the next morning. That stuck. I take production work seriously because someone is on the other side of it.

2021 — 2022
Going deeper
04

Master's at Lakehead — networking, security, ML.

MSc Computer Science · Lakehead University · Thunder Bay, Canada

My thesis was ML-based detection of client-side MITM attacks using anomaly methods. Around it: 802.11n/ac Wi-Fi monitoring with Kismet, vehicle detection comparing HOG+SVM against YOLO, and a team-led project on black-hole attack detection in MANETs using ns-3. Two years of getting comfortable at the seam between networks and learning systems — and getting comfortable with the idea that I might know more than the textbook.

Hands on a laptop with an open notebook beside, soft lamp light.
2022 — present
Day job
05

Fortinet — where I learned to ship at scale.

Software Engineer, FortiClient · Fortinet · Burnaby, BC

Test automation and release infrastructure for FortiClient — endpoint security on millions of macOS, Windows, and Linux machines. Python and Selenium automation, Jenkins CI/CD, RabbitMQ test orchestration, code coverage and static analysis. I work across VPN SSL, IPsec, ZTNA, SAML, antivirus, web filter, and application firewall — partnering with FortiClient, FortiGate, EMS, and FortiAuthenticator teams. A bad release here breaks security on someone's laptop. So we don't do bad releases. That discipline is the thing I take home with me every night.

A lone engineer at a desk in front of a glowing laptop late at night.
2022 — present
The thing I built
06

TapNGame — the thing I wished existed, so I built it.

Founder & Lead Engineer · Sportster Technologies Inc. · Vancouver, BC

I play badminton three nights a week. Booking a court was always the same friction — phone calls, screenshots of spreadsheets, dead WhatsApp threads. So I built the platform I wanted to use. Four apps — Flutter on iOS and Android, a Venue Manager OS, an admin console, and a Next.js marketing site — on one Supabase backend. Booking engine, payments, notifications, analytics, growth, venue operations, customer support. Solo, while working full-time at Fortinet. That part — that it's in the App Store and the Play Store, paying customers using it today — is the thing I'm most proud of.

A phone showing a booking interface in front of a sketched badminton court.
04 — Featured work
TapNGame LIVE

I built the booking and pickup-game platform I wanted to use.

TapNGame isn't a side project. It's a four-app product I designed, shipped, and run. Live across Metro Vancouver on iOS and Android: badminton, tennis, basketball, pickleball, volleyball, indoor soccer. Below: the actual problems it solves, and the engineering that makes the solutions hold up.

One product. Four surfaces. One backend keeping them in sync.

Players use a Flutter app on iOS and Android. Venue staff use a Next.js Venue Manager OS in the browser. The platform team uses an internal admin console. The marketing site at tapngame.com brings new users in. All four surfaces share one Supabase / PostgreSQL backend — same data, same auth, same rules, no sync hell.

I designed and built every layer of it. The schema, the RPCs, the realtime subscriptions, the booking engine, the payments architecture, the notification engine, the operator analytics, the Flutter UI, the App Store and Play Store listings, the support workflow. Solo. While working full-time.

LIVE · iOS & Android
A booking interface on a phone in front of a quiet badminton court, Vancouver mountains behind.
The problems · and what I built

What it actually does — in plain language.

01· For players
Problem

Booking a court used to mean phone calls, screenshots of spreadsheets, or dead group chats.

What I built

A 30-second flow on your phone, with live slot data straight from the venue. Lock-on-tap holds your slot while you check out. Apple Pay and Google Pay just work.

02· Concurrency
Problem

Two players tap the same slot at the same time. Most booking systems double-book.

What I built

Row-level FOR UPDATE locks, capacity-aware decrements for drop-ins, and idempotent restore-on-cancel triggers. One tap wins. The other gets a clear "taken" state — and a heads-up on the next available time.

03· Payments
Problem

Payments either succeed quietly or orphan — and refund fights ruin a venue's week.

What I built

PaymentIntent-first Stripe architecture with idempotent webhook handling and server-side price validation. Money in matches money out, every time. Refunds, disputes, memberships, orphan-payment recovery, all covered.

04· Pickup games
Problem

Pickup games live inside private WhatsApp threads. You either know someone, or you don't play.

What I built

Find a 7 p.m. badminton game near you, see who's already in, join. Waitlists auto-promote when someone drops. Host SLA timers keep games moving instead of ghosting.

05· Notifications
Problem

Sports apps either spam your phone or miss the only message that mattered.

What I built

Outbox-driven engine with per-user-timezone quiet hours, multi-device dedup, and APNs collapse-ID idempotency. The right nudge, in the right hour, exactly once.

06· For venues
Problem

Most venues run on a clipboard, a spreadsheet, and three group chats. Nothing reconciles.

What I built

A full Venue Manager OS — calendar, bookings, courts, pricing, memberships, leagues, tournaments, coupons, financials, staff, ticket scanning, customer support. Everything an operator needs in one place.

07· For venue owners
Problem

Operators couldn't see what was actually happening with their business.

What I built

Operator-grade analytics — revenue trends, day-of-week mixes, new-vs-returning cohorts, court revenue, booking heatmaps, coupon analytics. Numbers an owner can act on, not vanity charts.

08· Quality
Problem

In a marketplace with money in it, one bad release can break trust permanently.

What I built

End-to-end test coverage across unit, integration, security, and contract tests, on GitHub Actions, Docker, Vercel, and Edge Functions. A custom pre-commit DB lint catches CHECK/ENUM contract violations before they reach production.

Visit tapngame.com · Live on App Store & Google Play · Built by one engineer
05 — How I work

What it's actually like to build with me.

Eight things I'd want a hiring manager to know up front — about how I work, how I debug, how I treat users, and where I think the bar should be. Written in my voice. Not optimized for keywords.

On ownership

I don't stop at the diff.

Writing the code is the easy part. The job is everything after — does the user get what they came for? does the metric move? did the support ticket stop coming in? I stay until that's true. Most engineers stop at the PR. I stay through deploy, watch, and follow-up.

On work ethic

I just show up — every day.

A lot of days don't feel productive. That's fine. What matters is that I was at the keyboard, and I moved one specific problem forward. A year of that beats a month of heroics. The compounding is the whole point.

On debugging

I want to see the bug with my own eyes first.

Half of bad fixes change the wrong thing because nobody actually reproduced the bug. I reproduce it, find the exact seam where it broke, change only what the evidence demands — and then I write the test that should have caught it. So it can't happen again.

On systems

I get the data right before the screen gets pretty.

Data model. Concurrency. Failure modes. Contracts. I work those out first. Surfaces are easy to change. The system underneath isn't. Most teams discover this in production — usually around the time their first refund fight goes public.

On crossing layers

Most production bugs live where two systems meet.

Mobile-to-backend. Web-to-payments. Infra-to-product. The hardest bugs sit at the seams nobody owns. I learn both sides on purpose, so when something breaks at the boundary I can actually fix it — instead of throwing it over the wall and hoping.

On AI

I use AI to type faster. I still make the calls.

Cursor and Claude Code help me draft, refactor, plan, and verify. They do not decide what to build, what to keep, or what's good. That part still comes from me — and the more leverage AI gives me, the more those judgement calls matter, not less.

On users

I read every App Store review. I answer my own support.

There's no substitute for being two clicks away from the people using your product. I watch real sessions. I reply to feedback. I sit with the friction. That's where the next feature comes from — not a strategy doc, not a Notion roadmap.

On exploration

Every quarter, I learn one new thing — and ship something with it.

That's how Wi-Fi monitoring, MITM detection, RabbitMQ pipelines, and AI agent orchestration ended up on the resume — not because I read about them, but because I shipped real software using them. Knowing is cheap. Shipping is the bar.

06 — Currently building

What's actually open on my machine right now.

Live experiments, in-flight builds, and the next-quarter list. Not a public roadmap — just what I happen to be moving on this week.

01

TapNGame v2

Multi-city expansion architecture. Tenant-aware schemas, per-city pricing engines, deeper league and tournament tooling — making the Vancouver product portable without rebuilding it.
SHIPPING
02

AI-native release verifier

An LLM-as-verifier pipeline for FortiClient-style release readiness — structured eval harness over feature checks, with a confidence score the human can override. Prototype, internal.
IN BUILD
03

Booking engine, open-sourced

Extracting the concurrency-safe core of TapNGame's booking engine — FOR UPDATE, idempotent restores, lock-on-tap — as a small Postgres library others can use.
IN BUILD
04

Pickup-game discovery agent

A Claude-powered agent that turns "I want to play badminton tonight near me" into a real booking. Tool use, geospatial constraints, calendar reasoning.
PROTOTYPING
05

Operator analytics revamp

Rebuilding TapNGame's Venue Manager analytics on a cleaner event model — materialized views, server-side aggregation, scheduled rollups. Faster, cheaper, more honest numbers.
UP NEXT
06

Identity & access automation

Tightening enterprise identity flows around SAML / OIDC at the FortiClient layer with reproducible end-to-end test fixtures. Carrying the work-at-scale habits into the founder side.
UP NEXT
07 — Capabilities

What I can ship with, grouped honestly.

Dark chips are the ones I reach for daily. Outline chips are tools I've shipped with in production at least once. Warm chips are areas I'm actively expanding. No keyword wall, no padding.

Group 01

Languages I think in

Daily. Production. Not just resumé chips.

TypeScriptDartPythonSQLJavaScriptBashJavaC / C++HTML / CSSGo (exploring)Rust (exploring)
Group 02

Mobile & web

From greenfield to App Store / Play Store delivery, end to end.

FlutterRiverpodNext.js 15 / 16ReactTailwind CSSFramer MotionResponsive & a11yDesign systemsApp Store / Play deliveryUniversal links · deep links
Group 03

Backend, data & concurrency

Where most production systems quietly succeed or fail.

PostgreSQLSupabaseEdge FunctionsRealtime subsREST APIsRPCsRLSSchema migrationsRow-level locksFOR UPDATE SKIP LOCKEDIdempotency patternsOutbox & queuesEvent-driven designGraphQL
Group 04

Testing & release automation

Shipping with confidence across millions of endpoints.

SeleniumpytestPlaywrightPostman / BrunoUnit · integration · E2ESecurity testsContract testsCode coverageStatic analysisRelease-readiness automationCustom pre-commit lint
Group 05

DevOps & infrastructure

From CI/CD to cron workers to managing the deploy myself.

GitHub ActionsJenkinsDockerKubernetesRabbitMQVercelCloudflareCron workersObservability & logsSecrets & rotationZero-downtime deploys
Group 06

AI-native engineering

Not as a buzzword — as a real shift in how I ship.

Claude CodeCursorClaude APIPrompt engineeringModel-as-verifierAgent orchestrationTool use & function callingRAG pipelinesEvaluation harnessesPre-commit AI lintingMCP servers
Group 07

Security & networking

From FortiClient release work to networking research and intrusion detection.

FortiClientVPN SSLIPsecZTNASAML / OIDCAntivirus · Web filter · AppFWEndpoint securityIdentity & access automationNetworking researchIntrusion detection (ML)Wi-Fi forensics (Kismet)MANET sim (ns-3)
Group 08

Product & operations

The things you only learn by being the founder, too.

Spec → shipUX writingPayments (Stripe, refunds, disputes)Realtime notificationsAnalytics designSEO & growth instrumentationApp Store / Play optimizationUser feedback loopsCustomer support workflowsOperator tooling
08 — Personal

The practice behind the work.

TapNGame didn't come from nowhere. It came from the fact that I'm the user — and the friction in the way of staying active in a busy city is something I personally felt.

Three nights a week, I'm on a badminton court. Long-distance running when the season allows. Daily strength training, because consistency matters more than intensity. I'm generally suspicious of anything that promises the short way around.

This isn't decoration — it's the reason TapNGame exists. I know exactly what it feels like to want to play, and have the friction of an old booking system or a dead WhatsApp thread get in the way. The product is the way it is because I am the user.

Badminton3× weekly
Long-distance runningSeasonal
Strength & fitnessDaily
HikingWhen I can
Vancouver · 2025
Vancouver · 2025Off-keyboard
01
Run · Court · Repeat
Run · Court · RepeatRoutine
02
Long game
Long gameCompounding
03

“Same person at the keyboard and on the court. Show up, do the work, show up again tomorrow.”

— On work ethic
09 — Contact

If you're building something that needs ownership, let's talk.

I'm looking at product engineering, full-stack, AI-native software work, and backend / systems-heavy roles. The strongest fits are founder or early-team engineering, modern product teams, and any role where shipping ability and breadth count more than rigid job boundaries.

· I reply within 48 hours
© 2026 Mahesh Kumar Muddunuru · Vancouver, BCLast revised June 2026 · Built with Next.js + Supabase