Mithun Das

Senior backend & platform architect - independent contractor
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.

Selected work

Paynthr - AI bookkeeping automation 2025 - 2026 · engagement completed · paynthr.com

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
Claude on AWS Bedrock - tool-use, prompt caching, streaming PaddleOCR pgvector + Titan embeddings PostgreSQL row-level security QuickBooks Online Stripe Yodlee integration (sandbox) Dropbox & email intake SQS-buffered workers React
Paynthr AI Agents Live dashboard showing per-agent runs with success and failure rates
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.
Paynthr month-end close for a closed period, with tie-out checks and a period lock
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.
Paynthr upload dialog refusing the same PDF uploaded twice
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.
Paynthr vendor statement reconciled: charges, credit memo and payment tie to the ending balance
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.

Electroop - EV charge-point management 2022 - present · Localghost project

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 architecture: charge points and roaming partners connect through the OCPP WebSocket server to tenant and admin APIs, payments and the mobile app backend

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 live session replay with receipts, digests and token counts
filing-agent: a recorded session with the receipt the model cannot write.
doc-intake demo after in-browser OCR: extracted record, seven rule checks and a verdict
doc-intake: extraction, seven rule checks, a verdict - in the browser.
doc-intake-service catching a duplicate upload and holding it for review
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
AWS bill reduced 24 percent in one month, from $2,039 to about $1,550, with the estate rewritten in Terraform

How I work

Limits, stated

Stack

GoTypeScript / Node.jsPython / FastAPIPHP / LaravelC#React AWS ECS / FargateLambdaAurora PostgreSQLS3 / SQS / SNSCloudFrontBedrockTextractTerraformDockerCodeBuildGCP PostgreSQL + RLSpgvector / Titan embeddingsMongoDBNeo4j Claude APIOCRQuickBooks OnlineStripeYodlee (sandbox)DropboxOCPP 1.6 / 2.0.1OCPICarrier API integration development

Contact

mithun.das@jumacro.com · book a 30-minute call · LinkedIn · GitHub. I answer in plain English, usually within a day.