move your cursor
it bends the starlight
Arpit Kapadia

I think about black holes and clean abstractions with equal enthusiasm.

Nine years across fintech and healthtech. I build systems that outlast the sprint they were born in, and I care about the person on the other side of the screen.

0 2M+
Users on a neobank I helped scale
40K+
Claims a year · AI-read, human-decided
3
Frameworks adopted org-wide, unprompted
scroll ↓
About
Arpit Kapadia

I'm an engineer who turns ambiguous problems into systems that hold up.

I work across the full stack, increasingly at the edge where products meet AI, and I build things to last: clean boundaries, sensible abstractions, code the next person can actually read. The kind of work that looks quiet because nothing breaks.

Most of my nine years have been in fintech and healthtech: people's money on one side, their medical records on the other. In those domains the functional spec is only half the job; the other half is encryption, PII redaction, audit trails, and regulatory compliance, all without making the product feel heavy to the person using it. I've learned to treat that as part of the craft, not a tax on it.

Before the titles, I was the founding engineer at a hyperlocal retail startup, building everything from the point-of-sale system to the mobile app, and arranging products on the shelves in between. That founding-engineer instinct, the one that refuses to treat any part of the problem as someone else's job, never left me.

I tend to question things down to the foundation: why a system is shaped the way it is, why a feature exists, why a button sits where it does. Then I reason back up through the second-order effects. It's the same habit whether I'm thinking about the origin of the universe or a layout on a 16:9 screen. First principles, then consequences. I find it's the only way to build something you actually understand.

What I do

I build products from first principles, and from scratch when that's what it takes.

Full-stack engineering, increasingly AI-native, in domains where trust is the product.

breadth · the surface area I'm comfortable owning
Mobile · RN & Flutter
System design
Infra & DevOps
Platform engineering
Performance
Security & compliance
depth · where I go all the way down

Full-stack AI product engineering

From the database to the UI to the model in between, designed to scale and survive contact with real users.

FrontendBackendAI pipelinesProduct sense
Proof, in numbers

A few outcomes that show the range. The full stories live in selected work →

Production AI pipelines

An OCR → LLM → vector-DB pipeline on real patient data, in production, not a demo.

55 → 70+product NPS

Onboarding that converts

Rebuilt a regulated KYC journey screen by screen. Friction turned into trust.

16 → 45%conversion

Performance, end to end

Fixed the bytes and the psychology: bundle, boot time, perceived speed, errors.

65%faster boot

Zero-to-one product

Built whole stacks from nothing (retail OS, care platforms), often with no PM or designer.

0 → 1founding builds
How I work
High ownership

I own the problem, not the ticket, including the parts that aren't technically mine. If it's blocking the outcome, it's my problem now.

Customer obsession

The user is always in the room. I think about how a feature feels to a nervous first-timer, not just whether it technically works.

Forward-deployed

I go where the problem actually lives: the data, the support call, the shop floor. Not guessing from a ticket.

Disciplined simplicity

I write code a tired version of me can read at 11pm. Clever is a last resort, reserved for where it genuinely earns its keep.

The stack I reach for
Languages
TypeScriptGoPythonJavaScript
Frontend & Mobile
ReactReact NativeNext.jsFlutter
Backend & Data
Node.jsFastAPIgRPCPostgreSQLMongoDB
Infra & Platform
AWSDockerKubernetesKafka
Career arc

Nine years, four chapters: fintech, then healthtech, each one widening what I could own.

NiflrFounding Engineer
2018–2019// hyperlocal grocery · sub-30-minute delivery before quick-commerce existed
The second engineer in. I built the product end to end (the customer app, the in-store POS, the admin panel and the services behind them) and spent time on the shop floor understanding how people actually shopped. It's where I learned to hold an entire system, and the customer, in my head at once.
MfineSoftware Engineer
2019–2020// telemedicine · connecting patients with doctors at scale
I built the unified care experience from the ground up (video, chat, prescriptions) and, seeing several teams rebuild the same pieces in isolation, designed a plug-and-play framework of shared modules that the wider product adopted. My first taste of building platforms other engineers build on.
Jupiter MoneySDE-3 · Tech Lead
2020–2023// consumer neobank · banking reimagined for a phone
I helped launch the flagship app and built its onboarding journey, scaling it to 2M+ users. I owned the harder, quieter half too: device binding, multi-factor auth, and the security and regulatory compliance that consumer banking demands. Later I re-architected onboarding into a decoupled platform, carrying the app through its 2.0 transition from a single neobank into a multi-product fintech. The chapter that shaped me most, as much for the people as the work.
Even HealthcareLead Software Engineer
2023–present// healthtech · making quality care accessible and affordable
Where I grew from frontend into a genuinely full-stack engineer working across Go services, React, and applied AI. I architected a production AI pipeline (OCR through LLMs to a vector store) that meaningfully lifted member experience, and a human-in-the-loop transcription system that let a leaner team handle far more throughput. Alongside it: a claims-review platform and clinical tooling. The common thread is AI that genuinely runs in production, on real patient data, held to real standards.

From building products alone to building platforms teams rely on. Fintech to healthtech, frontend to full-stack. The scope kept widening; the way I work didn't.

Selected work

Five problems I'm proud of solving.

Each one scannable in a glance. Open it for the full story, the decisions, and the technical depth.

01
Jupiter Money · Neobank
An onboarding journey 2M+ people actually finished
Turning a legally-mandated KYC gauntlet into a flow that felt like a conversation, not an interrogation.
16→45%
conversion
The problem

People were dropping off mid-journey, and not for one reason. Third-party vendor errors we didn't control, bank API failures and delays, a journey that ran too long, forms that felt heavy, consent screens that read as scary. Each shed a few percent. The first version completed at 16%, and the losses were scattered across the whole flow.

What made it hard

There was no single fix. The drop-off was death by a thousand cuts, and a chunk of it sat with bank and vendor systems we couldn't directly change. The only way through was to measure everything (drop-off per screen, every error class) and then attack each cause with the right tool, ours and theirs.

What I did

I instrumented drop-off on every screen and watched where people left. On our side: fixed our errors, trimmed forms to only what was mandatory, and rephrased the consents that data showed were scaring people off. I resequenced the journey, moving heavier consents later, where sunk-cost momentum makes people far more likely to agree than they would up front. For the bank side, I worked directly with their teams to reduce and mitigate failures, and added clear communication around the rest. And I filled the unavoidable waits (like the account-opening API) with Lottie animations, previews of features they'd soon unlock, and small facts about banking and Jupiter, so the dead time built excitement instead of doubt. Working hand-in-hand with analytics and product, all of it together took completion from 16% to 45%, and I later re-architected the flow into a decoupled platform other products could plug into.

Outcome
16 → 45%
completion rate
2M+
users onboarded
platform
reused across products
React NativeTypeScriptKYC / livenessHypervergestate machines
02
Jupiter Money · Mobile platform
Making the app fast, in reality and in perception
A deep diagnosis of why an app felt slow, then fixing both the bytes and the psychology behind it.
65%
faster boot
The problem

A year of shipping features had quietly bloated the app. Boot times had crept up. In some outlier cases on older devices, launch could stretch to 14 seconds. Every screen transition also sat behind a full-screen loader. The cumulative effect was an app that felt low-quality, even where the code underneath was sound.

What made it hard

There was no single thing to blame. Several seemingly unrelated issues (tiny hindrances scattered across the experience) added up to a perception that everything was wrong. A few were genuinely concerning; most were perceived, the sum of small frictions eroding trust in the app's quality. No low-hanging fruit. Fixing it meant a deep cleanse and a platform-level reshaping. An overhaul, not a patch.

What I did

It started with data. We instrumented everything, found the real bottlenecks, optimised, then instrumented again, chasing the highest-impact wins. The numbers kept pointing toward the architecture itself: a framework migration that would let us shed a pile of legacy bloat and polyfills weighing down launch. It wasn't a small effort: legacy code to move, dependencies to untangle, so we planned it carefully and migrated. With the newer architecture in place we cut the dead weight, then layered on more: caching, a disciplined launch-time checklist, behind-the-scenes prefetch. On the perceived side, static loaders became engaging animated states, errors became contextual and non-blocking, and we pre-warned users when a bank's systems looked likely to be down, so failures stopped feeling like surprises.

Outcome
~65%
faster avg boot
up to 14s → 3-4s
worst-case old devices
~0
perf oncall tickets
Going deeper

The breakthrough was the architecture migration: moving the app to a newer framework version let us remove legacy polyfills and bloat that had been silently inflating launch. After the revamped app shipped, the “slow app, constant errors” narrative faded from oncall entirely, and subsequent launches felt near-instant: boot became the only real wait, with API and launch checks moved behind caching and speculative prefetch.

React Nativeframework migrationcaching / prefetchinstrumentationlaunch-time profiling
03
Even Healthcare · Applied AI
A RAG pipeline that helps adjudicate insurance claims
OCR → extraction → semantic retrieval → reasoning → rules → a human agent. AI that assists a decision, never replaces the check.
55→70+
member NPS
The problem

Insurance claims arrive as unstructured documents (scanned reports, bills, prescriptions), and every one has to be checked against a thicket of policy rules before it's approved or rejected. Done manually it's slow and inconsistent; done by AI alone it's unaccountable. Healthcare can't accept either.

What I did

I architected a retrieval-augmented pipeline that does the heavy lifting and hands a human the final call. A document goes through OCR, then an LLM extracts structure from the raw text. That extraction is embedded and matched against a vector store by semantic similarity to retrieve the most relevant context. A second LLM step reasons over that context to pick the most meaningful match, a rule-based engine applies the policy logic to produce a standardized decision, and the result lands with a claims agent as a pre-reviewed approve/reject they can verify and submit. Only once the agent signs off do changes reach the member.

Outcome
55 → 70+
member NPS
human-in-loop
every decision verified
production
real claims, real rules
Documentscan / uploadOCRtext extractionLLM · extractstructure the textVector DBsemantic retrievalLLM · reasonbest match w/ contextRules enginepolicy logicClaims agentverify & submitMembersees outcomehuman-in-the-loop · agent approves before the member sees anything
Retrieval-augmented adjudication: the AI proposes, a human disposes
Going deeper

This is RAG applied to a high-stakes decision. After OCR, the first LLM structures the raw text; that structured query is embedded and matched against the vector store by cosine similarity to pull the most relevant policy context. A second LLM reasons over the retrieved context to choose the most meaningful match, then a deterministic rule engine, not the model, applies the actual policy logic to produce a standardized, auditable decision.

Crucially, the output is never auto-applied. It reaches a claims agent as a pre-reviewed approve/reject they verify and submit, and only then does it surface to the member. The model accelerates the work; a human still owns the call, which is exactly the right shape for healthcare.

GoPythonLLMs (GPT / Gemini class)vector DB · RAGcosine similarityrule engineOCR
04
Mfine · Platform engineering
A framework that stopped six teams reinventing the wheel
I named a problem nobody had formalized yet, then built the platform that solved it.
company-wide
adoption
The problem

Several product teams were independently rebuilding the same capabilities (video consults, chat, login, doctor lists), each in their own silo. Everyone felt the drag; no one had named it as a single, fixable problem.

What I did

I proposed Webmodules: a framework of plug-and-play mini-apps any Mfine product could embed. I designed the architecture and shipped the infrastructure plus the first modules: login-auth, patient-profile, doctor-list, chat. Convincing engineers was easy once it was named; I made the case to PMs by tying it to the features already in the pipeline. It was adopted across the company.

Outcome
company-wide
framework adoption
↓ integration
time per product
50K+
monthly consults served
Host app(any product · composes a page from modules)ordinary UI component▣ Webmodulea self-contained micro-app, full-width & responsive• owns its own state & UI• calls its own backend• emits events · accepts callbacksOwn backend / APIindependent datafetchesEvents & callbackstrigger host side-effectsnotifies
A Webmodule is a mini-app you import like a component: it runs itself, talks to its own backend, and hands events back to the host
Going deeper

The trick was clean boundaries: each module had to be self-contained enough to drop into an unfamiliar host app, yet share the common BFF and auth so it didn't duplicate state. I also built the unified care PWA on the same foundation (video, chat, EMR, prescriptions) which became the shared surface across Mfine's apps.

JavaScriptNode.js (BFF)micro-frontendsWebRTC / PlivoPWA
05
Niflr · Founding engineer
An entire retail stack, built from zero
Customer app, in-store POS, admin panel, services: the whole thing, before quick-commerce was a category.
0 → 1
whole stack
The problem

The bet: deliver groceries from neighbourhood micro-stores in under thirty minutes, years before Zepto or Instamart made that normal. As the second engineer, with no designers and no PMs, the entire technical surface was mine to build.

What I did

I built all of it: the customer app (QR payments via Razorpay/Instamojo), the Electron point-of-sale for the stores, the admin panel with role-based access, and the inventory, order and microservices behind them. I wireframed the flows myself, and spent real time in the stores, tagging items, arranging shelves, watching what customers reached for first.

Outcome
0 → 1
full product stack
< 30 min
delivery model
first ship
App Store & Play Store
Going deeper

Each surface had its own service rather than one monolith, so the app, POS and admin could evolve independently. Payments ran through Razorpay and Instamojo with a QR-first checkout. The model only worked because stores sat inside the apartment complexes they served, so the delivery radius stayed tiny and fast, the same insight quick-commerce would scale years later.

React NativeElectron (POS)Node.js microservicesRBACRazorpay / Instamojo
Craft

Things I built for no reason at all, except that I wanted to.

Long before canvas physics was my hero section, I was making little worlds in the browser at 2am. Most are half-finished. That's kind of the point. They were about the joy of building, not the polish. The originals still live on CodePen, warts and all.

Gravity simulator
One heavy body at the centre, planets you spawn with a click. I simplified the three-body problem because, well, it's famously unsolvable.
college · HTML5 canvas · original ↗
Spring physics
Hooke's law in a browser, oddly satisfying to drag around. Works, mostly. Something's slightly off and I keep meaning to find it.
college · HTML5 canvas · original ↗
DxBall
My favourite childhood game, rebuilt from memory. The ball bounces, the paddle works. The bricks are, uh, coming.
college · HTML5 canvas · original ↗
Cracker burst
Diwali, but in a canvas tag. Click anywhere to set one off. Pure excuse to play with particles and easing.
college · HTML5 canvas · original ↗
When I'm not building

The cosmos

I think about black holes, the multiverse, and whether the Fermi paradox has a darker answer than we'd like. The Dark Forest keeps me up some nights. I nearly studied astrophysics; now it's the thing I read about purely for the wonder of it. The same first-principles itch that makes me a decent engineer.

Sketching

I draw when something catches my eye and I need to understand its shape. I never took it to a professional level, but I trust my eye, and that instinct for proportion, balance and restraint quietly shows up in everything I design and build.

It's all the same instinct, really. I like to understand a thing all the way down, then build something with what I learned.

Writing

Thinking out loud, in public. Slowly, imperfectly, on purpose.

I write about the things I learn and then forget because I never wrote them down: systems, tradeoffs, the occasional bit of physics. A couple I'm proud of, with more on the way.

Everything I've written, plus what I'm still drafting, lives on the writing page.

Contact · the other side

If any of this resonated, the line's open.

Whether it's a role, a problem worth solving, or just a long argument about whether the universe is deterministic, I'm easy to reach. Got a question, or something to push back on? Even better. I answer everything.

26.46°N, 80.32°E → 24.45°N, 54.38°E·now orbiting Abu Dhabi

Thanks for scrolling all the way out here.
If we're in a simulation, it's a beautifully rendered one.

ARPIT KAPADIA · BUILT FROM SCRATCH, LIKE EVERYTHING ELSE HERE