I'm Ubaidullah — a senior product engineer based in Pakistan. Four years building production web applications, most of them at startups where the team didn't have a designer, a PM, and an engineer for every feature. Usually it was just me.
That's shaped how I work. I think about the user's flow before I think about components. I sketch the data model before I draw the screen. I assume the AI call will fail and design what happens next, before I write the prompt.
Right now I'm at Tututor.ai, building an AI-native education platform used daily by 17,000+ students and teachers across schools in Murcia, Spain. I own AI services, the school CRM, and core student experience — front, back, infra, and the UX decisions in between.
Before that I spent two years at Danzee Tech in Denmark, starting as a junior and growing into someone the team relied on for feature ownership and frontend architecture. And I've shipped a handful of side and contract projects — including Insight-X (now live as Illume Analytics), an AI analytics platform that helped its company close $250k in funding.
My main stack is React, Node.js, Express, MongoDB, and — increasingly — anything with an LLM behind it. I have strong opinions about streaming, prompt caching, and why the failure case is more important than the happy path.

Not an exhaustive list — these are the tools I reach for without thinking, grouped by the job they do.
The part of the stack I spend the most time in — production LLM features, not demos. Streaming, fallback chains, prompt pipelines, and the failure cases in between.
Interfaces that feel fast and hold up under real product complexity.
APIs designed around the product, not the other way around.
Modeled before the first screen gets drawn.
Enough infra to ship and stay shipped.
The skills that don't show up in a stack list but decide if the product works.