AI Engineer

Most AI work fails somewhere between the notebook and production. I build the parts on both sides of that gap: the model or agent itself, the pipeline that feeds it, and the service that has to keep answering when real traffic arrives.

Currently
AI Software Engineer at Magic Makers Lab
Based in
Lahore, Pakistan, working remotely
Stack
Python / PyTorch / YOLO / OpenCV / LangGraph / FastAPI / PostgreSQL / Docker

The model is a component, not the product

A YOLO detector is a few lines. Making it hold up against real marketing assets at arbitrary scale, lighting, and occlusion is the actual work, and most of that gain came from image processing around the model rather than from the model itself.

Inference belongs off the request path

Multi-spectral satellite scenes and large catalogue imports cannot run inside a request cycle. I separate processing services from the API and move the heavy work to background workers, so the product surface only ever asks for a finished result.

Latency is a design constraint, not a tuning step

On a live phone call there is no room to think. Reaching sub-second response meant restructuring the agent graph so conversation and structured extraction run concurrently, not tuning a prompt afterwards.

The work behind this

Built at Magic Makers Lab. Each links to a full case study.

Common questions

Do you build models, or integrate existing ones?
Both, and the choice depends on the problem. I trained and tuned a YOLO detector for the brand compliance work because off-the-shelf detection collapsed on occluded and off-angle logos. For the voice agent I used Google Gemini through a LangGraph agent graph, because the hard part there was orchestration and latency, not the model.
What does end to end actually mean in your case?
For Geoverdant it meant retrieving NASA HLS satellite imagery, processing multi-spectral rasters with Rasterio, computing vegetation indices, generating heatmaps, and building the FastAPI processing service, the background workers, and the Next.js and NestJS product layer that consume them.
How do you handle inference cost and throughput?
By keeping inference off the request path. Processing runs in background workers behind a queue, results are persisted, and the API serves cached output. That also means a slow or failed job degrades one record rather than the whole request.
What are you strongest at right now?
Real-time systems where an AI component has a hard latency or reliability budget: streaming voice agents, detection pipelines, and event-driven services that have to keep working while a model is in the loop.

Need this on your team?

I am open to AI engineering and backend roles, and to contract work on vision, agentic, or event-driven systems.