Dhaka, Bangladesh · BSc CSE, AIUB · Full-Stack & AI-Integrated Developer

Messy
requirements.
Real platforms.

I take complex, unclear, real-world briefs and engineer them into software that ships. Backend systems. Full-stack products. AI used deliberately. Every line owned.

onnay@dev — chaos-to-platform — process log
running
Structured thinking
in messy conditions.

Every real project starts as a mess — vague requirements, competing priorities, unclear scope. My job is to find the structure inside the chaos and build toward it.

Not by following a textbook process. By staying disciplined about what matters and moving fast on everything else.

01

Read everything before touching code

Client requirements, vague briefs, stakeholder notes. I map the domain and the real constraints before a single schema gets designed. Most "technical" problems are scope problems in disguise.

→ domain mapping first
02

Schema before wireframe

The data model is the architecture. I design all entities and relationships before any interface decision. The database shape determines everything downstream.

→ structure before interface
03

Cut to the smallest real thing

V1 is not the vision. It's the minimum that proves the concept with real data, real auth, real workflows. Everything else is sequenced — not dropped.

→ scope ruthlessly
04

Build in the right order

Auth → data layer → API contracts → frontend consuming real endpoints. No mocked data in production code. No UI before the backend is real.

→ foundation before feature
05

Ship. Then learn. Then fix.

Deployed software teaches you things no prototype can. The first deployment is where real feedback starts — not the finish line.

→ ship then iterate
Sakibul Huda Onnay
Engineer Dhaka · BD
"The goal isn't to ship code.
It's to ship the right outcome."
NameSakibul Huda Onnay
FocusFull-Stack & AI-Integrated Systems
RecentVoxRouter — AMD Developer Hackathon
EducationBSc CSE · AIUB · 2026
LocationDhaka, Bangladesh

I control the AI.
Not the other way.

AI amplifies both good thinking and bad thinking. In a messy project, it generates confident-sounding nonsense if you let it run without constraints.

My workflow uses AI as a thinking partner under strict rules — not as an output machine. Every decision that ships is mine to own.

Stage 01

Frame the problem first, AI second

I describe the messy brief in full before asking AI anything. Vague input produces confident garbage. Precision in the prompt is precision in the output.

Stage 02

Options, not answers

I ask for three different approaches to a problem, then evaluate trade-offs myself. AI gives breadth. I provide judgment. The decision is always mine.

Critical checkpoint

Schema design stays human

I never let AI design the data model. The database schema is the most load-bearing decision in any project. I own it completely. AI doesn't touch it.

Stage 03

Debug by explaining, not by pasting

When I'm stuck, I describe the bug to AI in full. Articulating the problem clearly usually reveals it. AI is a thinking mirror — not a fix machine.

Stage 04

Refactor after it works

I get the feature working with my own logic first. Then I ask AI to review for patterns and readability. Never the reverse — functionality is not negotiable.

Always

Read every line before it ships

If AI suggests a change, I read it line by line and understand it before it enters the codebase. I don't ship code I can't explain.

Team Solutions Bangladesh
Junior Software Engineer Trainee
Dhaka · April 2026 – July 2026

Worked inside a production Django ERP codebase — building and customising business management modules for real clients. Client-specific process automation in a live environment where things must not break.

This is where I learned the gap between personal projects and production engineering. Someone's business runs on this code. That changes everything about how careful, thorough, and communicative you have to be.

DjangoPythonMySQL JavaScriptAJAXHTML/CSS
Live ↗
ERP Module Development
Built management modules inside a production Django ERP system. Custom business logic tailored to each client's institutional workflow.
Client Customisation
Adapted existing ERP functionality to match specific business processes — reading a production codebase I didn't write and making targeted changes without breaking existing behaviour.
AJAX-Driven Interfaces
Built dynamic form submissions and live data updates within Django's template system using vanilla JavaScript and AJAX — seamless UX without full-page reloads.
Business Workflow Analysis
Translated client requirements into database schemas and application logic. Understanding how real institutional processes map to software models.
The real lesson
Reading code you didn't write is a skill. So is making a change in a system you didn't build, in a language you didn't choose, for a client whose requirements changed last week. That's professional engineering.

Personal systems I've shipped

Real projects, real problems. Click any build to see the chaos that went in — and what came out.

Hackathon-weight
01 / Featured
VoxRouter
Hybrid token-efficient LLM routing agent — AMD Developer Hackathon ACT II
FastAPIOllamaAMD ROCm GeminiFireworks AIReact DockerPyPI SDK
Deployed
+
The chaos

Every AI task gets sent to the same expensive model, even trivial ones. Teams overpay for intelligence they never needed — and nobody had built a router that actually proved its own routing decisions were correct.

What shipped

A 4-layer complexity classifier routing tasks to a free local model (Ollama/ROCm) or a remote model (Gemini/Fireworks) with confidence-based escalation, live token streaming, a real-time dashboard, and a self-graded 50-task benchmark suite producing a reproducible VoxRouter Score.

My approach
  • Designed a Provider abstract interface so any model backend plugs in
  • Built confidence-based escalation, not just complexity prediction
  • Wrote contract tests with a mock provider before wiring real APIs
  • Published the routing engine standalone on PyPI
What I learned
  • Typed exception design across heterogeneous API providers
  • SSE streaming architecture for live LLM output
  • Benchmark design that self-corrects for demo/rate-limited runs
  • Packaging and publishing a real pip-installable library
How a request gets routed
Task in
→
4-layer complexity classifier
→
Confidence gate
→
Local · Ollama / ROCm
or, on escalation
Remote · Gemini / Fireworks
→
SSE token stream
→
VoxRouter Score
Personal projects
Personal projects
02 / Featured
FutureDiff
A transaction and safety layer for AI-agent-authored changes
GoSQLiteRootless OCI GitHub APISlack APICLI
Local build
+
The chaos

AI agents can now propose and push real changes — code, PRs, Slack messages — with no gap between "the agent decided this" and "it's live." No staging, no cryptographic proof of what's about to happen, no safe way back out.

What shipped

A local-first transaction layer: agent-proposed changes get staged in isolation, verified deterministically, and human approval is cryptographically bound to the exact digest of that change — only then does it release through controlled adapters (GitHub branch, draft PR, Slack), with idempotent receipts and crash-safe recovery. 70 Go binaries, own CLI, cooperative and rootless-OCI execution modes.

My approach
  • Modeled it as a state machine: stage → verify → approve → commit
  • Bound approval to a cryptographic digest, not a timestamp or a human's memory
  • Built cooperative (local review) and enforced (rootless OCI) modes separately
  • Treated evidence, audit, and retention as first-class, not an afterthought
What I learned
  • Designing trust that's bound to exact material, not assumed state
  • The real gap between "runs on my machine" and provably production-ready
  • Scoping a systems project large enough to force real architecture decisions
  • 144 test files later — testing discipline at a scale I hadn't done before
03 / Featured
ZapShift
Parcel delivery platform — full-stack MERN
ReactNode.js ExpressMongoDB FirebaseStripeTailwind
Deployed
+
The chaos

A real delivery platform needs more than parcel forms. It needs role-based flows, secure payments, rider assignment, admin control, and deployment discipline across frontend and backend.

What shipped

Deployed MERN parcel delivery system with Firebase authentication, user/admin/rider workflows, Stripe payment flow, parcel status handling, rider approval, and admin parcel management.

My approach

Built role-based access around real user workflows

What I learned

Production deployment flow with Firebase hosting

04
AI Face Recognition Attendance
ML inference served via REST — FaceNet + Flask
FaceNetMTCNN PyTorchFlaskPython
Complete
+
The problem

Manual attendance fails in ways that are hard to audit. Face recognition must work across lighting variance, angles, and a growing face database — reliably, in constrained conditions.

What shipped

FaceNet (InceptionResnetV1) + MTCNN detection, cosine similarity matching, Flask REST API decoupling the ML inference from the frontend, vanilla JS dashboard for real-time attendance logging.

My approach
  • Used pretrained model — right tool for constraints
  • Cosine similarity as matching strategy
  • Flask API to decouple inference from UI
  • Tested across real environmental conditions
What I learned
  • ML model selection for constrained environments
  • Serving inference via REST as a product pattern
  • Real-world trade-offs of face recognition systems
Tools I use to turn chaos into systems.
Grouped by purpose — not just listed. I know why each one is here and when to reach for it.
Interfaces
React · Vite
JavaScript
HTML · CSS
AJAX
Tailwind CSS
Backend
FastAPI
Node.js · Express
Django · Python
Flask
REST APIs · SSE
JWT Auth
Data
MongoDB · Mongoose
MySQL
AI & ML
Ollama · AMD ROCm
Gemini · Fireworks AI
FaceNet · MTCNN
PyTorch
Docker Compose
Listed only if used in real projects or professional work. Django and JavaScript are daily tools. PyTorch is project-specific.

If the problem is hard,
let's talk.

Looking for engineering roles and projects where requirements are messy, the stakes are real, and "it works" actually means something. Based in Dhaka. Open to remote.

Start a conversation →