Résumé
Mohamed Aslam Abdul Gafoor
Software engineering student building automation, developer tooling and full-stack products
Diploma in IT student at Singapore Polytechnic on a year-long engineering internship at OCBC, working on automation reliability and observability. Outside work I design and ship my own systems: an open-source routing layer for AI coding agents, an offline-first Android alarm app with a Kotlin reliability core, and full-stack web products with server-enforced access control.
- InternshipEnterprise automation and observability, OCBC
- Open sourceROUTR: CI-validated, 153-prompt eval set (opens in a new tab)
- ShippedStartupLink and LocalLoco, both publicly deployed
Singaporeaslam040607@gmail.com
Experience
Experience
Automation & Tooling Intern · OCBC (via e2 Power)
Apr 2026 – present
Python automation, browser automation and observability for an enterprise technology team, inside a restricted corporate environment.
- Migrated legacy coordinate- and image-based UI automations to Playwright browser automation, and standardised the Playwright setup across the team’s automation machines, removing a recurring source of breakage whenever an interface changed.
- Designed and built a shared Python logging module (consistent format, levels and per-job log files) and am rolling it out across the team’s automation scripts in place of ad-hoc console output.
- Designed and built an automation-health dashboard that discovers job logs, classifies each run as succeeded, failed or stalled from its most recent output, and summarises failures, so problems surface without anyone reading raw logs.
- Maintain Python/pandas automations over large Excel datasets (100K+ rows), adding input validation so malformed or incomplete inputs fail loudly instead of producing wrong reports.
- Diagnosed scheduling faults in production automations (unintended repeat runs, jobs that silently stopped running) and restored reliable scheduled execution.
- Moved the team’s automation code into source control, inventoried and risk-classified existing scripts to prioritise hardening work, and ran a knowledge-sharing session on the new workflow.
Founder, full-stack developer · StartupLink
Apr 2025 – present
Closed student–founder network. Verified onboarding, role-based access.
Co-founder, full-stack developer · LocalLoco
Sep 2024 – present
Hyperlocal discovery. Community submission, volunteer moderation, QR redemption.
Internship work is described at the level of engineering approach; system names and implementation details are omitted for confidentiality.
Other work
- Event Assistant, Adecco — polling station operations, Singapore General Election 2025 (Apr – May 2025)
- Freelance video editor (Sep 2024 – present)
Projects
Selected engineering projects
Open-source developer tooling
ROUTR
A routing layer for AI coding agents: small “router” skills that match a request to the right workflow and tell the agent what to read, in what order, and what to skip.
- Role
- Author and maintainer
- Problem
- Agents with dozens of installed skills pick the wrong one and burn their context window reading whole files.
- Built
- 28 router skills with explicit “use when / not for” boundaries, and multi-step route plans capped at three steps with one router active at a time
- A skill validator that runs in CI on every change, and an eval set of 153 prompts for measuring routing accuracy
- Key decision
- Routing is decided from short skill descriptions alone, so the agent loads only the one full playbook it needs.
- Outcome
- MIT-licensed and installable with one command. The README reports 97–99% routing accuracy in blind model runs against the eval set, with the method published so it can be reproduced.
- Stack
- Python · PowerShell · Shell · GitHub Actions
Mobile · offline-first
Nudgio
An Android alarm and reminder app that plays the user’s own media, designed to work with no backend and no Internet permission.
- Role
- Sole developer
- Problem
- An alarm has to fire on time even when the OS kills the app or the device restarts, and it has to fail gracefully when the chosen media file has been moved or deleted.
- Built
- A Kotlin native core for scheduling, notifications and backup, exposed to a React Native UI through a typed native-module bridge
- A layered TypeScript codebase with a mock bridge, so UI and service logic are testable without a device
- Key decision
- Register only the single earliest alarm with the OS rather than one per reminder. Recorded with the project’s other design choices in 21 architecture decision records.
- Outcome
- In active development, built against a 23-document spec with a requirements traceability catalogue. Not yet released.
- Stack
- React Native · TypeScript · Kotlin · Android AlarmManager · Room · Jest
Full-stack web
StartupLink
A closed network where students and verified student founders find each other.
- Role
- Founder and sole developer
- Problem
- Trust is the product: founder status has to be verified, and each role may only see its own data.
- Built
- Server-side founder verification in a Cloud Function, so it cannot be bypassed from the client
- Role-based access enforced in Firestore security rules rather than in UI components
- Multi-step onboarding that keeps partial progress across sessions
- Key decision
- Authorisation lives in database rules, not the interface, so a modified client still cannot read another role’s data.
- Outcome
- Working MVP deployed publicly. No user numbers yet.
- Stack
- Next.js · TypeScript · Firebase Auth · Cloud Firestore · Cloud Functions · Tailwind CSS
Full-stack web · geospatial
LocalLoco
Neighbourhood deal discovery: residents submit offers, volunteers moderate them, and QR redemption tells a business which promotions actually got used.
- Role
- Co-founder and full-stack developer
- Problem
- Location queries that stay fast as data grows, and a moderation queue small enough for a few volunteers to clear.
- Built
- A Next.js front end and a separate FastAPI service so each deploys independently
- Location queries in PostGIS instead of application-side filtering
- Separate submission and moderation stages so unreviewed content is never public, plus QR redemption tracking
- Key decision
- Chose PostGIS early, which avoided a rewrite once real data existed.
- Outcome
- Running on its production domain with authentication in place.
- Stack
- Next.js · TypeScript · FastAPI · PostgreSQL · PostGIS · Supabase
Hackathon · data and ML
DoorLens
Nebula X 2026 submission that classifies recorded train-door movements from sensor telemetry, with a tool for testing whether recording assumptions change a result.
- Role
- Developer
- Problem
- A small labelled dataset (110 training cycles) and no ground truth for the test set, so any claim about accuracy had to be honest.
- Built
- A pipeline that validates uploaded CSVs, segments door cycles and runs a frozen classifier
- A sensitivity probe that rescales or resamples a cycle and re-runs the same model to show whether the label holds
- Key decision
- Models are frozen, hashed artefacts: uploads never retrain them, and every result carries the identity of the model that produced it.
- Outcome
- Submitted with a written limitations document and verification notes.
- Stack
- Python · NumPy · pandas · FastAPI · Next.js · pytest · Docker
Skills
Technical skills
Grouped by depth of use rather than self-rated mastery. Strong means used repeatedly in the internship or across several of the projects above.
| Area | Strong working knowledge | Used in projects | Exposure |
|---|---|---|---|
| Languages | Strong working knowledge:TypeScript, JavaScript, Python, SQL | Used in projects:Java, Kotlin, PowerShell, HTML, CSS | Exposure:— |
| Frameworks | Strong working knowledge:Next.js, React, Tailwind CSS | Used in projects:React Native, FastAPI, pandas, Zod | Exposure:NumPy |
| Automation | Strong working knowledge:Playwright, Python scripting, Windows Task Scheduler | Used in projects:Excel automation (openpyxl) | Exposure:— |
| Data and backend | Strong working knowledge:PostgreSQL, Firebase (Auth, Firestore, Cloud Functions) | Used in projects:Supabase, PostGIS, MySQL, Firestore security rules | Exposure:Room (Android) |
| AI and LLM tooling | Strong working knowledge:AI coding agents (Claude Code, Codex), Agent skill and workflow design | Used in projects:Eval set design | Exposure:— |
| Testing, observability and delivery | Strong working knowledge:Git and GitHub, Structured logging, Vercel | Used in projects:Jest, pytest, GitHub Actions, Docker | Exposure:— |
Education
Education
Diploma in Information Technology
Singapore Polytechnic · 2023 – present
- Object-oriented programming (Java)
- Web development
- Database systems (PostgreSQL, MySQL)
- Secure coding practices
- System analysis and design
- Software testing and quality assurance
Recognition
Competition placings
1st place · Youth Action Challenge, Season 6
National Youth Council · 2025
2nd place · Batey Hackathon 2024
Singapore Polytechnic · 2024
3rd place · AI for Good (Youth) — Student Facilitator
AI Singapore · 2025
Communication
Teaching, documentation and facilitation
- Ran a knowledge-sharing session for my internship team on moving automation code into source control, and keep README documentation next to the scripts it describes.
- Facilitator and teaching assistant at hands-on AI build workshops and hackathons run by AI Builders (2026), helping participants who fell behind the instructor debug and finish their builds.
- Taught a technical workshop for the Nosana Builders Challenge Singapore (2026).
- Student facilitator in AI Singapore’s AI for Good (Youth) programme; placed 3rd for leadership and facilitation (2025).
- Write architecture decision records, specs and READMEs for my own projects: 21 ADRs for Nudgio; an API contract, limitations and verification notes for DoorLens.
I also host and emcee technology events. Event portfolio → emcee.mohdaslam.dev
Leadership
Committees
Organising committee
LEAP 2026, School of Computing
2025 – present
Assistant Quartermaster
SPCyclists main committee
2025 – present
ExCo (Events)
Freelance Academy, Media Arts and Design
2024 – present
Contact
Get in touch
- aslam040607@gmail.com
- github.com/TeckTinkerere (opens in a new tab)
- LinkedIn (opens in a new tab)
- Contact form
Last updated 2026-07