Skip to content
Naabel.

Final-year software engineering student.

Hi! I'm Nabil. I build mobile and web apps, a few with AI models working inside them. What excites me most is using AI to take over the tedious work people still do by hand, and I'm looking for an internship where I can dig deeper and ship more.

Portrait of Muhammad Nabil Bin Mohd Nizam
Final-year projectNot live or public yet

ForgeRoom

Photograph a room, describe what you need, and get back a plan you can act on.

The problem

Students in rented rooms and first-time homeowners want a space that works. Design tools assume a budget, a floor plan, and vocabulary they don't have.

How it works

A photo, a description, the room's dimensions, and a chosen style go in. A vision model reads the room, an LLM reasons about it, and back comes a layout, a colour palette, and real furniture with prices in ringgit.

What I was careful about

The furniture catalogue is someone else's service, so it will fail eventually. When it does, the plan still renders and product lookup falls back to cached samples. The user sees a design, not an error page.

Where it stands

A working Android app on a live API, built as five modules against the objectives I set in Chapter 1 of my PSM.

Mobile
Flutter, Dart, Provider
Backend
Node.js, Express, MongoDB Atlas, JWT
AI
GPT-4o vision, Claude
Room photo, description,dimensionsand a style they pickedVision model reads the roomLLM plans againstthe dimensionsLayout notes andcolour paletteFurniture with ringgit pricesCatalogue down? Cached samples,and the plan still renders.
The dashed path is the one I spent longest on. It is also the only one a user is guaranteed to hit eventually.
Personal projectLive and public

AI Resume Analyzer

Upload a resume, get a score that shows its working and rewrites you can use.

The problem

Resume feedback is hard to get. Articles are generic, advisers are slow or cost money, and chat tools return a different score every time you ask, then an error when they fail.

How it works

The file is extracted in memory and never written to disk. A model rates six weighted dimensions inside a strict JSON schema. The score itself is computed in code, so the same resume always gets the same number.

What I was careful about

Every failure I could provoke ends in a report rather than an error page: wrong file type, a scanned PDF with no text layer, a missing key, a timeout, malformed output. Zod validates the answer and the pipeline retries once before falling back to rules.

Where it stands

Deployed and running. 559 tests pass in CI on every push to main, and all 12 resumes in the eval set land in their expected score band.

Full stack
Next.js, React, TypeScript, Tailwind, shadcn/ui
AI
NVIDIA Nemotron, Anthropic Claude, Zod
Tests & CI
Vitest, GitHub Actions
PDF or DOCX,extracted in memorynever written to diskModel rates sixweighted dimensionsinside a strict JSON schemaZod validates,code computes the scoreinvalid output gets one retryScoredreportscore outof 100Rule-basedreporton any AIfailure
The model proposes. It does not decide the number, and it does not decide whether you get a page.
Personal projectLive and public

Internship Tracker

Every internship application in one place, from saved posting to answer.

The problem

I'm applying for internships myself, across job boards and career fairs, each with its own deadline, assessment and interview rounds. Without one place for them, deadlines slip and quiet applications are forgotten.

How it works

Each application moves through eight stages, and every move is recorded. The same data shows as a filterable table, a Kanban board, a calendar of deadlines and interviews, and a dashboard showing where applications stall.

What I was careful about

Other students can sign up, so every database query is scoped to its owner and a test checks that one user can never read another's data. Two tabs editing the same record get a conflict prompt, not a silent overwrite.

Where it stands

Live on Railway with a one-click demo account. 1,839 tests run in CI, and only a commit that passes them is deployed.

Front end
React, TypeScript, Vite, Tailwind
Back end
Node.js, Express, MongoDB, JWT
Tests & CI
Jest, Vitest, Playwright, GitHub Actions
Drag a cardor edit a rowapplied at once in the browserAPI checks the ownerand the versionZod at every routeSaved toits historyevery movekeptConflictpromptreload oroverwrite
A stale edit is never written over a newer one. The user sees the conflict and decides.

Skills

Every skill here is backed by something on this page. No bars, no percentages, nothing I've only read about.

Languages

# Strongest first.

  • Dart
  • TypeScript
  • JavaScript
  • Java
  • C#
  • SQL

Mobile

# One codebase, both platforms.

  • Flutter
  • Provider
  • Material Design
  • Android SDK

Web

# Where most of my recent hours went.

  • Next.js
  • React
  • Vite
  • Tailwind CSS
  • TanStack Query
  • Zustand

Services and data

# The part underneath.

  • Node.js
  • Express
  • MongoDB
  • Mongoose
  • JWT auth
  • Google OAuth
  • REST design
  • SQL Server

Models as components

# Used with a plan for failure.

  • GPT-4o vision
  • Claude
  • Nemotron
  • Structured output
  • Zod
  • Fallbacks

Testing

# Run in CI, not just on my machine.

  • Jest
  • Vitest
  • Playwright
  • axe

Everyday kit

# Nothing exotic.

  • Git
  • GitHub Actions
  • VS Code
  • Android Studio
  • Postman
  • Railway

Languages I speak

  • Malay (native)
  • English (professional)

Experience

March 2024 to 2027

Bachelor of Software Engineering

Universiti Tun Hussein Onn Malaysia

Coursework includes machine learning, data science, software testing, and human computer interaction.

Sep 2026 to Oct 2026

Internship Tracker

Personal project

Designed, built, tested and deployed on my own: a MERN and TypeScript app for tracking internship applications, with a Kanban board, calendar, timezone-aware email reminders and an analytics dashboard. 1,839 tests run in CI, and only a commit that passes them is deployed.

Aug 2026 to Oct 2026

AI Resume Analyzer

Personal project

Designed, built, tested and deployed on my own: a Next.js app with a constrained model pipeline on NVIDIA Nemotron or Claude, scoring in code, validated output, and a rule-based fallback. 559 tests run in CI, and a twelve-resume eval set checks that the scores land where they should.

May 2026

National Deep Tech Challenge 2026

Universiti Malaya Centre of Innovation and Enterprise (UMCIE)

With a team of five, built NutriScan Clinical in 24 hours: nurses photograph a patient's meal tray before and after, and a vision model flags anyone who ate under half.

Participated

View the team's repo on GitHub

ForgeRoom

Final-year project

Scope and requirements in Chapter 1, then the Flutter client, the Express API, the model pipeline, and alpha testing.

2024 to 2025

Coursework foundations

UTHM

Object-oriented programming in Java, database systems, and web development on the .NET stack.

Dec 2022 to Feb 2024

Clinic Assistant

Remedic Clinic Jitra (Zip-Zip Group of Companies), Jitra, Kedah

Patient registration, medical records, billing and stock. I also learned what the medicines we dispensed were for and how to assist with procedures.

Dec 2021 to Oct 2022

Resident Technician

Zpeed Solutions Sdn Bhd, Perak

Looked after campus IT infrastructure and wireless access points, closed support tickets against SLA targets, and wrote the monthly and quarterly incident reports.

Aug 2021 to Nov 2021

IT Support Intern

Zpeed Solutions Sdn Bhd, Perak

Where I started at Zpeed, before staying on as a resident technician.

Jun 2018 to Feb 2022

Diploma in Computer Engineering

Universiti Malaysia Perlis (UniMAP)

Let's talk about an internship

I'm looking for a software engineering internship in Malaysia, on-site or hybrid. Send a message and I'll reply within a couple of days.