Shipping at Selfmade Ninja Academy — Bengaluru, India

Surethan S

Roles: Product & AI Engineer, Prompt Engineer, Platform Engineer — Frappe/ERPNext, MCP & Agent Developer

I ship production AI — not demos. Voice agents that qualify every sales lead. Multi-agent pipelines that turn university syllabi into living learning platforms. All deployed, all in daily use.

12.9716°N / 77.5946°EBLR

Story

From lecture halls to production logs.

Three years into a five-year degree, the pull of real users beat the pull of a diploma.

Surethan S seated in his workspace
Surethan S — Bengaluru, India

Currently

Product & AI Engineer @ Selfmade Ninja

I'm a product engineer and AI engineer at Selfmade Ninja Academy in Bengaluru — a tech academy and cloud-labs platform teaching programming, Linux and cybersecurity, with its whole business running on Frappe/ERPNext.

I finished school in Erode, joined the five-year integrated M.Sc. Software Systems programme at Kongu Engineering College — and after three years, left to build products full-time. Months later, my code was qualifying every sales lead the academy receives and generating lessons for thousands of learners.

My discipline is production-grade AI engineering: prompt systems that hold up against noisy real-world speech, data pipelines that fail safely without losing a record, telephony that never deadlocks, and attribution that ad platforms verify and trust.

350+
merged pull requests across six production repositories
1,800+
automated tests I've written for payments, credits and AI calling
6,900+
AI voice calls placed by my lead-qualification agent since July 2026
3,600+
students credited on launch day of the referral credit ledger

Capabilities

Capabilities proven in production.

Organised by engineering discipline — every item here has shipped to production. Nothing aspirational.

AI Engineering

Core

I engineer prompt systems and multi-agent orchestration for production — prompts that hold up under noisy real-world input, custom Claude Code skills, and AI wired to the tools it needs to deliver real work.

  • Prompt engineering
  • Deterministic structured extraction
  • Claude Code — custom skills
  • Claude Agent SDK
  • Production-grade AI workflows
  • MCP servers & tool integration
  • Chrome DevTools MCP (remote + local)
  • OpenAI API & Agents SDK
  • Pydantic-typed outputs
  • n8n agent workflows

Backend & Platform Engineering

Core

I engineer the production Python platform an entire academy runs on — Frappe/ERPNext at the core, built for correctness and uptime.

  • Python (async pipelines)
  • Frappe / ERPNext v15
  • DocTypes & lifecycle hooks
  • Whitelisted APIs
  • Background jobs & schedulers
  • Patches & fixtures
  • Concurrency control & idempotency
  • MariaDB row locking
  • HRMS v16

Data & Infrastructure Engineering

I architect the message queues, data stores and container infrastructure that keep long-running AI workloads reliable, observable and recoverable.

  • MongoDB
  • MariaDB / MySQL
  • Redis
  • RabbitMQ (AMQP)
  • Docker + sysbox-runc
  • S3 / MinIO
  • GitLab CI/CD
  • Traefik

Frontend Engineering & Conversion

I build dependency-free interfaces, conversion funnels and dashboards — instrumented end-to-end so every decision is backed by data.

  • JavaScript (vanilla)
  • jQuery / CoreUI
  • PHP (custom MVC)
  • SASS / Grunt
  • Microsoft Clarity
  • Vue 3 + frappe-ui

Systems Integration & Growth

I integrate payments, telephony and advertising platforms into one coherent system — with event deduplication and attribution ad platforms verify.

  • Meta Pixel + Conversions API
  • Event dedup & advanced matching
  • Cashfree / PhonePe payments
  • Zenvoice SIP telephony
  • Discord REST API
  • Telegram integrations
  • WhatsApp messaging
  • TeleCMI
  • Tailscale API
  • Signed webhooks
  • Consent-gated tracking (GDPR opt-in)

Document Intelligence

I convert unstructured documents into validated, structured data — and render data back into production-grade, pixel-accurate documents.

  • pdfplumber
  • PyMuPDF
  • OCR — pytesseract + pdf2image
  • WeasyPrint rendering
Python Frappe ERPNext OpenAI Agents SDK MCP n8n MongoDB Redis RabbitMQ Docker MariaDB Meta CAPI Cashfree PHP GitLab CI S3 / MinIO WeasyPrint pdfplumber Traefik Linux WhatsApp Tailscale Vue HRMS

Journey

Student to production owner, fast.

No earlier roles to list — just the direct path from the classroom to shipping code for real users.

  1. Schooling

    The starting point

    URC Palaniammal Matric Hr. Sec. School · Erode, Tamil Nadu

    Finished schooling in Erode — where the curiosity for making computers do real work began.

  2. 3 of 5 years completed

    M.Sc. Software Systems (Integrated)

    Kongu Engineering College · Perundurai, Erode

    Three years into the five-year integrated programme, the pull of building real products outgrew the classroom.

  3. The leap INFLECTION

    Left to build full-time

    Student → Product & AI Engineer

    Walked away from the degree to ship software with real users — a bet that paid off within months.

  4. 2025 – Present CURRENT

    Product Engineer & AI Engineer

    Selfmade Ninja Academy · Bengaluru

    Largest contributor to the academy's core ERP (315 of 596 commits) and its sales CRM (180 of 473). Lead author of the All-Access subscription platform, the Referral Credit Ledger and the Cloud CRM behind Selfmade Cloud; creator of Syllabi AI, the syllabus-to-lesson pipeline behind LearnAI; owner of the AI voice lead-qualification system; and one of three engineers on Sponge Collaborative's company ERP — 350+ merged pull requests, all running in production.

Selected work

Proof, running in production.

Everything here is deployed and in daily use — at Selfmade Ninja Academy and Sponge Collaborative. The work repos are private, so each case stands on its architecture and outcomes.

Case study selfmade.ninja/payment/subscribe

All-Access Subscription Platform

The whole catalogue on one plan — trial, mandate, quota

A new subscription module inside the academy Portal: a one-time 7-day free trial, UPI AutoPay mandate billing with KYC, weekly watch-hour quotas, sequential video unlocking, and an exam-centre gate deciding who earns a certificate. First commit to production in 8 days — then a 19-bug correctness campaign to make every edge exact.

Feature lead, end-to-end across the ERP and both student dashboards — 73 commits in the subscription core, followed by a ~24-PR hardening campaign after launch.

  • Live on a platform of 5,400+ students — from free trial through UPI AutoPay renewals
  • Trial runs an exact 7×24 hours from the signup instant, one time per student
  • UPI AutoPay mandates via Cashfree with KYC at enrollment — ended trials' mandates are cancelled before they can ever debit
  • Weekly watch-hour quota anchored on the instant access was granted, with per-session watch history a student can audit
  • Sequential video unlocking that cannot be spoofed from the client — every playback OTP gated server-side
  • Watch-hour flushes classify real production failures and retry transient ones from a savepoint — a student's buffer is never lost
  • Python
  • Frappe
  • Cashfree UPI AutoPay
  • VdoCipher DRM
  • MariaDB
  • PHP
  • Meta CAPI

Architecture — signal path

CHECKOUT

plan pricing · ex-GST offer + GST · coupons · split-checkout autopay

MANDATE

Cashfree UPI AutoPay · KYC gate at enrollment · ended-trial mandate cancel

TRIAL

exact 7×24h · Trial Ended sweep · per-course availability · content cap

ACCESS

sequential unlock keyed by content · server-side playback OTP gate

METER

weekly quota from the access instant · festival multipliers · top-up lots

Case study selfmade.ninja · student wallet

Referral Credit Ledger

Earn, spend and send credits — exact under concurrency

One credit ledger replacing the academy's old points scheme. Students earn credits only from money that actually settled, spend them on watch passes, subscriptions and course instalments, and send them to friends by referral code — built to stay exact under replayed webhooks, racing workers and simultaneous transfers.

Sole author across the ERP and both student dashboards — 13 merged PRs, 1,100+ automated tests.

  • Launched 26 Sep 2026 — 3,600+ students credited on day one through an idempotent backfill of past purchases
  • Insert-once ledger with a unique dedupe key plus an hourly reconcile sweep — every settlement lands on exactly one row
  • Peer-to-peer transfers lock both wallets in a fixed order with idempotency keys and jittered deadlock retry — 48/48 clean under concurrent stress
  • Two-level referral rewards plus workshop and trial earnings — refunds and rollbacks claw credits back automatically
  • Per-product spend caps, up to 100% on premium courses, enforced under a per-student wallet lock with holds and debts
  • Red-team concurrency and security suites; every rule sits behind a Desk kill switch
  • Python
  • Frappe
  • MariaDB row locks
  • Background jobs
  • PHP
  • JavaScript

Architecture — signal path

EARN

settled payments only · two-level referral · workshop + trial earnings

LEDGER

insert-once rows · unique dedupe key · hourly reconcile sweep

SPEND

per-student wallet lock · holds, debts, returns · per-product caps

SEND

transfer by referral code · ordered wallet locks · idempotency keys

GOVERN

refund clawback · Desk kill switches · staff-only reversal

Case study crm.selfmade.ninja · internal

AI Voice Lead Qualification

Every new lead, called by AI within seconds

A new sales lead lands in the CRM and an AI voice agent calls them within seconds, interviews them in Tamil-English, captures a structured qualification profile live during the call and routes hot leads to humans — then hands its verdict to Meta so the ads optimise on it.

Feature author and owner, end-to-end — 70+ commits, ~460 automated tests.

  • 6,900+ AI calls placed to 1,300+ leads since July 2026
  • Six verdicts — Hot, Warm, Cold, Callback, Disqualified, Incomplete — with 11 structured profile fields
  • The assistant reports the qualification itself mid-call, and a signed end-of-call webhook resolves each call instantly — polling stays as the fallback
  • Found and removed a lock-ordering race that double-dialled leads — one lead, one call
  • Outage recovery re-queues every lead from the exact attempt it lost; a nightly no-call window and comment-driven Do-Not-Call keep it courteous
  • Meta bids on the AI's same-day verdict — about 4× more optimisation signal than the old sales-status event
  • Python
  • Frappe
  • OpenAI (gpt-4o-mini, temp 0)
  • Zenvoice
  • TeleCMI
  • Signed webhooks
  • Meta CAPI

Architecture — signal path

TRIGGER

after_insert hook · returning-lead check · no-call window · Do-Not-Call

DIAL

Zenvoice REST · channel reservation · one-lead-one-call locking

CAPTURE

live tool-call qualification · signed end-of-call webhook · poll fallback

EXTRACT

gpt-4o-mini at temperature 0 · 11 profile fields · six verdicts

ROUTE

Hot → human sales · callbacks honour requested slots · verdict → Meta CAPI

Case study selfmade.work

Cloud CRM

A new product's revenue pipeline — website to sales desk

When the academy launched Selfmade Cloud, I built its customer pipeline across three codebases: a consent-gated Meta pixel on selfmade.work, an idempotent milestone relay in the ERP, and a complete CRM that turns every signup, trial and top-up into a lead sales can work — with AI calls, WhatsApp and ad attribution built in.

Lead author across 3 repositories — shipped in 9 independently deployable phases from a written spec, 160+ automated tests.

  • Live on selfmade.work since 26 Sep 2026
  • Lead stage derived from ~24 event types by 10 rules — events arriving out of order can never move a lead backwards
  • ERP outbox keyed on each milestone's natural key — recording an event twice is a no-op
  • Tracking fires only with consent — explicit opt-in for EU/EEA/UK visitors, asked again whenever the privacy policy changes
  • Deterministic SHA-256 event IDs dedupe browser and server sends; failed sends retry with backoff
  • 28-day ad attribution with full history, three Meta audiences synced daily, and AI calls from a per-country assistant
  • Python
  • Frappe
  • PHP
  • JavaScript
  • Meta Pixel + CAPI
  • Consent management

Architecture — signal path

CONSENT

banner tied to the policy version · ad click IDs in both Meta URL layouts

RELAY

ERP outbox on natural keys · consent + attribution snapshots

STAGE

~24 event types → 10 rules · monotonic, order-independent

WORK

7 DocTypes · Kanban board · 3 reports · AI calls + WhatsApp

MEASURE

7 standard + 17 custom Meta events · 3 synced audiences

Case study Internal · in production

Sponge Collaborative ERP

A whole company's operations on one platform

The company platform for Sponge Collaborative, built on Frappe v16, ERPNext and HRMS with a Vue 3 app for the team: projects planned on a Gantt chart down to stages, activities and deliverables; a task kanban and timesheets; attendance, leave, holidays and expenses; handbook, policies, offer letters and payslips; partner financial dashboards; and a Tailscale-secured private network — self-hosted end to end.

One of three engineers on the platform — 61 commits and 19 merged PRs of my own, all live in production: employee exit, VPN enrollment, working-day rules, leave accrual, shift reminders, bulk expense payments and project visibility.

  • Projects on a Gantt chart — stages, activities and numbered deliverables, with dates rolled up from their children
  • HR in one place: shift check-in reminders, an 8 PM auto-checkout, a weekly timesheet digest and leave balances that accrue through the year
  • Partner financials in Frappe Insights — project P&L, salary allocation and overhead that tie out to the Desk finance reports
  • Private by default: the portal sits behind Tailscale, with device enrollment and an employee-exit flow that proves access was revoked
  • Bulk Expense Claim payment — one Payment Entry per group, and a failed group rolls back alone
  • Self-hosted: Docker on a KVM virtual machine, images built on staging and pinned by digest, backups to S3-compatible storage
  • Frappe v16
  • ERPNext
  • HRMS
  • Vue 3 + frappe-ui
  • Frappe Insights
  • Tailscale API
  • Docker
  • Playwright

Architecture — signal path

PLAN

projects · Gantt stages, activities, deliverables · task kanban · timesheets

PEOPLE

attendance + shift reminders · leave accrual · holidays · expenses · onboarding + exit

DOCS

handbook · policies + acknowledgement · offer letters · payslips

FINANCE

project P&L · salary allocation · company overhead · Insights dashboards

ACCESS

Tailscale enrollment + device registry · role permissions · self-hosted Docker

Case study labs.selfmade.ninja/syllabus

Syllabi AI → LearnAI

A university syllabus PDF becomes a personal AI course, with hands-on labs

Syllabi AI turns a university curriculum PDF into a browsable tree — programme and regulation down to courses and units — on labs.selfmade.ninja. From any unit, a student opens LearnAI, the platform's AI tutor, pre-filled with that unit's topics: it writes a module-and-chapter lesson grounded in the syllabus, streams each chapter live, recommends hands-on cloud labs, and answers questions through a chat tutor that can run commands inside the student's own lab.

Designed and built Syllabi AI v1 end to end — the agentic parsing backend and the web UI, 35 commits and ~9k lines — plus LearnAI's lab-recommendation agents. Most of today's parser code is still mine; the wider team built LearnAI's core and extended the syllabus module.

  • Five specialised agents with Pydantic-typed outputs — syllabus, flat-syllabus, unit, web-unit and lab-experiment extraction
  • Scanned PDFs rescued by an OCR fallback; link-index syllabi switch to flat mode and fetch every matched Google Drive document concurrently
  • SHA-256 file dedup plus a campus + programme + regulation check — a syllabus is never parsed, or paid for, twice
  • Deterministic IDs make every re-parse an upsert, and old data is kept until a new parse actually produces courses
  • Built for real curricula — three syllabi alone yielded 296 courses and 1,556 units
  • LearnAI lessons carry the unit, its sibling units and related lessons as context, stream chapter by chapter, and link back to the syllabus
  • Python
  • OpenAI Agents SDK
  • Pydantic
  • gpt-4.1-mini
  • pdfplumber
  • PyMuPDF
  • OCR (pytesseract)
  • aiohttp
  • MongoDB
  • RabbitMQ + STOMP
  • PHP
  • CoreUI

Architecture — signal path

INGEST

admin upload or student request · PDF + 10 MB guard · SHA-256 dedup → HTTP 409

EXTRACT

pdfplumber → OCR fallback · PyMuPDF link harvest · flat mode past 10 Drive links

AGENTS ×5

Syllabus · FlatSyllabus · Unit · WebUnit · Lab — Pydantic contracts, units + labs in parallel

STORE

deterministic IDs · upsert-only re-parse · MongoDB course + unit collections

LEARN

LearnAI outline → streamed chapters · lab picks · Ask-AI tutor inside the student's lab

In production

Lead Funnel + Meta CAPI

Top of the paid-acquisition funnel

Anonymous multi-step eligibility quiz feeding the CRM — with Meta Pixel + Conversions API attribution, browser/server event dedup, ROAS values and full UTM capture. The leads it qualifies are the ones the AI voice agent calls.

leads.selfmade.ninja

  • Vanilla JS
  • Frappe
  • Meta Pixel
  • Conversions API
  • Microsoft Clarity
Case study

Certificate Platform

Template-driven credential rendering

Visual position picker with rotation, alignment and word-wrap for laying out dynamic fields on certificate artwork — a clean v3 renderer built alongside the untouched legacy system.

  • Python
  • Frappe
  • WeasyPrint
  • S3
Case study

Payment Integrity & Security

Money booked exactly once

Traced a Cashfree order booked twice, 448 ms apart, to a REPEATABLE READ snapshot and fixed it by claiming the transaction with a locking read before booking. Closed a hole where a zero-total fee could mark a course paid for life, and made fee rollbacks reverse their ledger entries.

  • Python
  • Frappe
  • MariaDB
  • Cashfree
  • Role permissions
Case study

Conversational AI Assistants

WhatsApp and Telegram, wired into the CRM

The CRM side of the academy's WhatsApp sales assistant — one thread per contact, agent takeover, questions asked only when the answer is still unknown, and calls booked by the bot itself — plus Desk controls for the Telegram support bot: prompts, replies, rate and spend caps, key rotation.

  • n8n
  • WhatsApp
  • Telegram
  • Python
  • Frappe
Case study

Campaigns, Payments & Discord

Workshop commerce, end to end

Ported the recorded-workshop site from standalone Flask into the Frappe monolith: registration → Cashfree order → webhook → auto Sales Invoice → academy access. Discord roles granted automatically on payment.

  • Python
  • Frappe
  • Cashfree
  • Discord REST
  • Webhooks
Case study

Trial Cohort Analytics

The funnel report the founders read every Monday

A PDF mailed every Monday at 07:00 IST that re-scores eight past trial cohorts — trials convert a median of 11 days after starting — and attributes revenue only to purchases made after each student's own trial began.

  • Python
  • Frappe
  • Scheduled jobs
  • PDF reports

Contact

Let's build something real.

Protected against spam — no trackers, nothing stored beyond your message.