Kolkata, India (UTC+5:30) · Jumacro Software Services Pvt. Ltd., established December 2014. Core hours: 1–11 PM IST. Client-specific overlap arranged for US and European teams.
I build production backends for accounting, payments, document processing and EV charging. Building software since 2006, I bring architecture, implementation and AWS delivery together, with explicit permissions, reliable integrations and evidence that the system works.
I deliver projects through Jumacro Software Services Pvt. Ltd., established in December 2014. Paynthr and AVEA were Jumacro projects. My Localghost engagement began in 2018; Electroop is the EV charging project I have worked on since 2022.
Delivered through Jumacro; my engagement is complete. I built the product, architecture, code, infrastructure and release process. The platform was in production for a US accounting firm during the engagement, from June 2026. Bills, receipts, cheques and bank statements arrive from Dropbox and email; OCR and LLM extraction read them; categorisation is grounded in each client's explicit accounting rules, with application rules and review thresholds controlling the accounting workflow. A per-client trust dial decides what posts to QuickBooks Online unattended and what waits for a bookkeeper. Duplicates are refused at upload. Month-end close runs as a workflow of tie-out checks with a period lock. Audit records and review screens make processing decisions inspectable.
267 / 275real invoices reconciled to the cent in a four-day certification on a fresh firm in staging
179 / 180header fields right on an 18-document sample
210findings documented in a separate release audit, defects included
20+Go services on AWS ECS, Aurora PostgreSQL with row-level security, Terraform, CI/CD
Agents dashboard: per-agent runs with success and failure rates as first-class numbers. An agent that cannot report failure honestly cannot be trusted to report success.Month-end close as a workflow of tie-out checks - trial balance, bank and loan statements, sales tax - each Pass, overridden or waiting, with a period lock.The same PDF uploaded twice: one proceeds to extraction, the second is refused at the door. In bookkeeping a duplicate is a bill paid twice.A vendor statement read and reconciled: charges, credit memo and payment tie to the ending balance (120.00 - 40.00 - 75.00 = 5.00); anything that does not tie is flagged, not posted.
Screens show the staging environment with QuickBooks sandbox companies and seeded test data only. No client data appears anywhere on this page.
Backend architect of the Electroop project within my Localghost engagement, which began in 2018. The platform supports a live EV charging network. The OCPP 1.6 / 2.0.1 WebSocket server talks to real chargers in the field over persistent connections, so it has to survive reconnection storms after outages, keep message ordering per charger, handle every message idempotently and isolate tenants. Around it: OCPI for roaming, the payment gateway interface, session and job services, tenant, admin and public REST APIs, and the backend for the mobile app. One codebase now ships seven white-label operator apps. TypeScript on AWS, with C# and Python components where the ecosystem required them.
Electroop's customers are not mine to name, and none of its code is reused anywhere. What transfers is the knowledge of where these systems break.
Engineering case studies
The questions that matter in this work are not "does it run" but "what happens when it is wrong". Examples from completed delivery and historical investigations.
The dependency that answered 28 milliseconds too late
The categorisation agent fetches a client's chart of accounts and vendor list from QuickBooks before it can code anything. Those fetches began timing out - no error from QuickBooks, a timeout on our side. Instrumentation, not a complaint, found it: our client gave up at exactly 30 seconds and QuickBooks answered at 30.03. Two changes: a longer timeout, and a cache-warm wired into the QuickBooks connect hook so the first categorisation for a client never pays that cold fetch at all. A timeout that matches a dependency's worst case by coincidence is a bug waiting for a slow day; the fix for a slow dependency is usually to stop needing it on the hot path.
Separating tenant isolation from client permissions
An August 2026 authorization review found that database-level tenant isolation did not, by itself, enforce every member's client-level permissions. I reproduced the issue in staging, reviewed the available production records read-only, and prepared a remediation. No misuse was found in the records examined, but incomplete audit coverage meant that this was not proof of absence. The available records do not establish that the remediation was deployed to production. The engineering lesson: test authorization across member roles, client boundaries and object-based routes, and retain an attributable audit trail.
When not to call the model
Mapping a vendor or a line item to a client's chart of accounts runs as a cascade, cheapest and most certain first. Exact per-tenant history - no model. Then similarity search over embeddings of that tenant's past mappings, in pgvector. Then a cold-start path: embedding match against the live chart of accounts and vendor list with a small LLM tiebreak. And, mandatorily, an "uncertain" result carrying the top three candidates for a reviewer when nothing clears the bar - the model is never allowed to pick a confident-looking best guess. Every reviewer approval feeds back, so a mature client is served mostly from history with no model call at all.
Public code
Three small repositories that show the working method in the open: the model proposes, deterministic code decides. Tests, CI and live demos; limits labelled honestly.
filing-agentA local LLM tool-loop demo using qwen2.5:7b through Ollama, application-side evidence checks, bounded retries and run receipts with response digests and token counts. The linked replay shows a recorded run; this is an engineering demo, not a production service.github.com/mithundas79/filing-agent · a real recorded session, replayed
doc-intakeDocuments in, order out - local OCR plus deterministic accounting rules decide what gets filed and what a person sees. No cloud, no key, no model. TypeScript, 27 tests, CI, in-browser demo.github.com/mithundas79/doc-intake · live demo
doc-intake-serviceThe full-stack sibling: Python/FastAPI and React, native Tesseract OCR, a scikit-learn document-type classifier trained on a synthetic corpus with its honest metrics committed to the repository. The demo catches a duplicate upload and holds it for review.github.com/mithundas79/doc-intake-service
filing-agent: a recorded session with the receipt the model cannot write.doc-intake: extraction, seven rule checks, a verdict - in the browser.doc-intake-service: a duplicate caught and held for review.
More delivery experience
AVEA — shipping and logistics project through Jumacro - a serverless shipping-label OCR pipeline on AWS (S3, SQS-buffered Lambdas with reserved concurrency, Textract, SNS; raw response kept so every extraction can be re-checked) plus work on a direct-carrier gateway in Python/FastAPI; its production launch is not claimed. Their Laravel vendor portal: production bug-fixing and a major-version upgrade.
2025 - 2026
AWS cost reduction and infrastructure codification - a console-built account inventoried read-only, rewritten as Terraform, and cut 24% ($2,039 to about $1,550 a month) with nothing removed that carried service impact; budget alarms so the next drift reports itself.
2025
Upwork, 47 completed engagements, 2,400+ hours, 44 rated 5.0 - Node and MEAN microservices, WebSocket real-time systems, MongoDB and Neo4j on AWS and Google Cloud, Laravel, for food delivery, order management, dispatch and asset-tracking products.
2015 - 2020
Earlier roles - Chief Technical Consultant at Pinpoint Media Design (2014–2018); earlier programmer, project manager and architect roles in India, Canada and Germany. Professional software work began in 2006.
2006 - 2018
How I work
Scope, acceptance criteria and risks written down and agreed before I build. If I think a requirement is wrong I say so once, with the reason, and then build what you decide.
Nothing is "done" until I have driven it myself on a deployed environment and shown the evidence - not a passing test, the real thing. On Paynthr that was a written certification plan the non-technical owner could verify himself; twelve services were promoted on that evidence and every defect found on the way was filed openly.
Small reviewable pull requests, staging before production, a rollback path stated in every release note. All infrastructure in Terraform, so it is documented by definition.
Prompts are versioned code with tests and a frozen evaluation snapshot; failure modes are written into them explicitly; instrumentation comes before conjecture.
I use AI coding tools heavily and openly, inside a review-and-verify process I run. You get senior-engineer throughput with senior-engineer accountability.
Limits, stated
Backend-led. I ship React UIs from designs; I am not a design-led front-end specialist.
AI application engineering, not data science. No fine-tuning, no PyTorch or TensorFlow work, no research claims. The one trained model in my public work is a scikit-learn classifier on a synthetic corpus, labelled as such.
"Retrieval" in my production system means similarity search over a client's own mapping history for entity resolution - not document question-answering.
The AVEA direct-carrier gateway is described as development work, without a production-launch claim. Yodlee work was sandbox-only. The historical security case study distinguishes findings and prepared remediation from deployment verification.