The person you talk to
is the person who writes your code.
I'm a full-stack software engineer working since 2017 — focused on Laravel, PHP, and modern web architecture. I don't just ship code: I build software that solves the actual problem and keeps working long after launch.
I've spent my career in startup and product environments, which taught me to connect technical decisions to real business outcomes and to stay flexible as priorities shift. I care about clean, test-driven code and clear communication — the kind that means a non-technical client always knows what's happening and why.
Lately, much of my work sits at the intersection of Laravel and AI: building features that used to be impossible or impractical, reliably enough to trust with real business data. I'm based in Ahmedabad, India, and work remotely — keeping hours that overlap the European and North American working day.
Apps that got slow
Query counts, N+1s, the page that takes eight seconds. Finding what is actually happening before changing anything.
Rebuilds that cannot fail
Legacy systems that still run the business, modernised without a big-bang cutover.
Multi-tenant platforms
Per-tenant isolation, automated provisioning, and a straight answer when a customer asks who can see their data.
AI you can trust with real data
Features that hold up in production, with a human in the loop where the stakes need one.
No tool for its own sake. The number next to each is how many projects on this site actually used it.
Core
Frontend & mobile
Legacy frameworks (shipped, and migrated from)
Databases
Amazon Web Services
Google Cloud
Payment gateways
Registry & Finnish integrations
Comms, AI & other services
Engineering practice
However your team runs
I use AI heavily in my own workflow — Claude for development, for generating and running end-to-end tests, and for reviewing my own code before anyone else sees it. It makes me meaningfully faster, and it catches things I would have missed at 2am.
What it does not do is decide. Every line that ships has been read and understood by me, and I am accountable for it either way. A model that is confidently wrong is worse than no model at all, so the review is the job — the generation is just typing.
The same honesty applies to the AI features I build for clients: a confidence gate and a human in the loop wherever the stakes justify one, rather than pretending the output is always right.
Something holding you back?
New build, rebuild, or adding AI to what you already have — I'll take a look and give you an honest perspective.