All projects

Work across systems, software, and aerospace.

30 projects across six kinds of work, for the RSAF, Temasek Polytechnic, freelance clients, and open source. Filter by the kind of work, or by who it was for.

Showing all 30
Aircraft Refuelling Strategy Planner (FUEL) SimulationRAiD 2 screens

A strategy-planning tool for aircraft refuelling. It combines live operational data with historical trend to recommend a refuelling strategy ahead of time, so operators can decide quickly when conditions change.

What it does
  • Recommends a refuelling strategy ahead of time from trend and live data, instead of operators working it out from scratch under time pressure
  • Surfaces the recommendation alongside current conditions so operators can act on it or override it
Built with

Power Platform, with an AI-assisted forecasting model behind the recommendation. Currently a working pilot.

Power PlatformAI-assisted forecasting model
The actual screens
FUEL · Operation Centre dashboard
FUEL dashboard for the Operation Centre: a left navigation rail for taskings, vehicles, storage tanks and landing points; a row of upcoming tasking cards showing landing point, aircraft type, tail number and fuel needed; a storage fuel level pie chart on an auto-refresh timer; and panels for tasking information, per-site fuel information and per-tank fuel levels
Operation Centre
Upcoming taskings, per-site fuel demand and live tank levels on one auto-refreshing board
FUEL · Ground operator app
FUEL ground operator app on a handheld screen: a bowser callsign header, shortcuts to tanker info, fuel replenishment and the conversion calculator, a fuel status overview for the operator's site, and a list of taskings assigned to that site with tick-off checkboxes and bowser assignment
Ground app
The bowser crew's view: only the taskings assigned to their site, tick off as refuelled
Supply & Demand Logistics Pipeline (MatFlow) SimulationRAiD 5 screens

A logistics planning system built around an automated pipeline for supply-and-demand requests. Operators monitor the pipeline instead of manually raising and tracking each request during time-critical periods.

What it does
  • Automated pipeline raises supply and demand requests without manual tracking
  • Shifts the operator's job from managing logistics by hand to monitoring pipeline status
Built with

Power Platform, with a custom automated request pipeline behind it. Currently a working pilot.

Power PlatformAutomated request pipeline
The actual screens
MatFlow · OS Cell Spares Overview
OS Cell Spares Overview
Four demand-state counters, the outstanding-demand queue, and holdings against capacity per spare item
MatFlow · Distribution Network
Distribution Network
Every node × item balance, status computed from that item's own red and yellow lines rather than one global rule
MatFlow · Ground Team Overview
Ground Team Overview
The repair team's side: open demands, one-tap consume tiles carrying live balances, and the recovery activity log
MatFlow · Demand Review
Demand Review
One demand against the four-state lifecycle, its line items editable until the OS Cell acknowledges it
MatFlow · User Management
User Management
Operator, access level and status: the role gate that decides which of the two sides of the app a person sees
Fleet Maintenance Management System (MAVIS) ScalingRAiD 4 screens

Tracks vehicle and ground-equipment serviceability across an air-force fleet. Availability is computed, not typed — derived live from three independent sources of unserviceability, mirroring the database rule so the dashboard and the store cannot disagree. Corrective and preventive work each run through their own approval chain, and what any one person sees is the intersection of vehicle category, base, department and sub-department.

The maintenance half of the Air Specialist Vehicle platform. MILES, below, is the logbook half.

What it does
  • A defect walks Waiting for assessment → Pending CEN Endorsement → Pending for Approval → Approved → Repair in progress → Ready for collection → Collected, with ADDL (Acceptable Defect Deferred Log), ADDL Expired and Rejected as branch states, and every transition gated by role
  • Moving a scheduled Preventive Maintenance date is not a free edit but an LOS — Latitude of Servicing — request that clears approval bands before the dashboard reflects it
  • A defect formally deferred as an ADDL keeps the asset serviceable only until its expiry date, after which the asset flips itself to ADDL Expired
  • Eleven built-in roles plus custom roles, resolved by a security-definer function server-side rather than trusted from the client
  • Five Postgres realtime channels push changes to the dashboard, coalesced through a 150ms per-table debounce so a burst write does not thrash the UI
Built with

The functions were proved in Power Apps first, then rebuilt as a full-stack application once per-user licensing stopped being viable for a user base that reached beyond the RSAF.

ReactTypeScriptViteTailwind CSSSupabaseLovable
The actual screens
MAVIS — Fleet Overview
Fleet Overview
Availability is computed from three independent unserviceability sources, not typed in — so the dashboard and the database cannot disagree
MAVIS — Corrective Maintenance
Corrective Maintenance
Every defect is a seven-state approval chain, not a status dropdown — and a deferred one (ADDL) carries its own expected-recovery date
MAVIS — Preventive Maintenance
Preventive Maintenance
A call-in summons a vehicle ahead of its service. Moving the scheduled date is not a free edit — it is an LOS request that has to clear approval bands
MAVIS — Reports
Reports
Defect trending, rejection rate, fleet availability and projection, read from the same store the work is recorded in. Demonstration dataset — every asset number, defect, date and person shown across these screens is fabricated.

Full case study, on the Work page →

Air Specialist Vehicle Logbook (MILES) ScalingRAiD 4 screens

The logbook side of the same fleet: a mobile-first record of vehicle movement and use, built for people standing on a flight line rather than sitting at a desk. A trip runs a full lifecycle behind an approval gate, and pre-use inspections feed the same serviceability picture the maintenance system works from.

The logbook half of the Air Specialist Vehicle platform. MAVIS, above, is the maintenance half.

What it does
  • A trip walks pending_approval → approved → ongoing → completed, with rejected as a branch, and approvers can clear many at once rather than one at a time
  • Four roles — admin, facilitator, approver, driver — with more than one assignable to a person, enforced at three layers: route guards, 136 row-level-security policies over 31 tables, and per-request auth inside every edge function
  • Digital pre-use inspections, configurable per vehicle type and per model, whose outcome drives whether the vehicle reads as serviceable
  • Fuel accounted end to end — bulk tanks to refueller payload holdings to POL top-ups to a summary report — with forklifts tracked by hour-meter and vehicles by odometer
  • Ground support equipment booked in and out of the same register as the vehicles, and every action written to an audit trail with actor, entity and timestamp
Built with

The functions were proved in Power Apps first, then rebuilt as a full-stack application once per-user licensing stopped being viable for a user base that reached beyond the RSAF.

ReactTypeScriptViteTailwind CSSSupabaseLovable
The actual screens
MILES · Driver home
Driver home
Quick Tools, and the driver's own trip requests, all reachable with one thumb.
MILES · Fleet register
Fleet register
Serviceability, fuel level, reading and inspection date for every vehicle, with ground support equipment in the same register.
MILES · Approval queue
Approval queue
A trip cannot start until it is cleared, and a queue of them can be cleared in one action.
MILES · Admin dashboard
Admin dashboard
Four roles across nine admin surfaces, and one person can hold more than one of them.

Full case study, on the Work page →

BOLDFACE ScalingRAiD 3 screens

Weekly and monthly quiz training on memory-item emergency procedures for aircrew across eight airframes. Content is imported from Excel and CSV; a quiz cannot be submitted until every answer on it is correct, and each crew's readiness status is derived automatically rather than tracked by hand.

What it does
  • Fill-in-the-blank, checklist-table and multiple-choice questions, graded case-insensitively against the authored answer
  • Submit stays hidden until every question on a quiz is correct, with mastery enforced by the domain model rather than a UI check
  • A cadence and rotation engine that derives Outstanding, Overdue, Upcoming and Completed status for every crew
  • A readiness dashboard and status board, scoped by squadron or platform, showing who is current across all eight airframes
Built with

Delivered spec-first with OpenSpec change proposals, with the storage layer kept swappable behind the same call sites so Microsoft Dataverse can slot in without touching the app.

ReactViteTailwind CSSPowerApps Code AppsOpenSpec
The actual screens
BOLDFACE · Dashboard
Dashboard
Completion ring, outstanding tiles, and a per-vocation status board at a glance
BOLDFACE · Assessment
Assessment
Each question sits in a numbered card inside its section; inline fill-in-the-blank and a checklist table, submit unlocking only at 100% mastery
BOLDFACE · Status board
Status board
Selecting a vocation tile drills into a per-aircrew table, one status column per quiz

Rebuilt from the app's own interface code and design tokens, not photos and not invented. Figures shown are illustrative demo data.

GRID EnterpriseRAiD 4 screens

Goods receipts and invoices arriving across every unit in MINDEF SAF, not filed because the person who received the goods was already on to the next task. I designed and built the capture and repository app; a partner RPA team built the automation that files the extracted data into the finance forms.

What it does

Reads a photographed goods receipt or invoice, in whatever format the issuing company used, extracts the fields the finance form and the downstream RPA flow need, and stores every record in one auditable repository.

Built with
PowerAppsViteUiPath (RPA)
The actual screens
GRID · Upload Documents
Upload Documents
Drop a PDF or a photo of the receipt; extraction runs before anyone types a field
GRID · Invoices
Invoices
Tabs for your turn, sent back, waiting and approved. The queue sits on the left, the extracted fields to check on the right
GRID · Run Reports
Run Reports
Five counters, invoices received across the year, spend by supplier, and every record in one searchable table
GRID · Admin Hub
Admin Hub
Build → publish → add people → appoint admins, with the app’s own notice about what the chart does and doesn’t yet control

Full case study, on the Work page →

FUEL Up EnterpriseRAiD 6 screens

Fuel receipt claims ran on paper dockets, photographed and re-typed by hand for both aviation and vehicle fuel. I designed and built the app that replaced it: a whitelisted sign-in, a camera-first capture flow for the receipt itself, and an audit trail across every submission.

What it does
  • Whitelist-gated sign-in with a one-time email login code, so there are no passwords to manage
  • Camera capture of the fuel receipt or invoice, with manual entry as the fallback when no OCR key is configured
  • Separate aviation and vehicle fuel forms, each with its own searchable, exportable history
  • A full audit log of every submit, edit, delete and role change, plus an admin panel for platforms, the email whitelist and users
Built with
ReactFirebaseFirestoren8n
The actual screens
Fuel Up! · Sign In
FUEL Up sign-in screen: corporate email field and a Get Login Code button, for the one-time-code authentication flow
Sign in
Whitelisted corporate email plus a one-time login code, so no passwords
Fuel Up! · Forms
FUEL Up forms landing screen with Aviation Fuel and Vehicle Fuel submission tiles, and links to past Aviation and Vehicle history
Forms
Aviation and vehicle fuel submission, plus history, in one landing view
Fuel Up! · New Aviation Form
FUEL Up receipt upload screen with a camera capture area, a Scan with AI button, and a Type it myself manual-entry fallback
Capture
Photograph the receipt; scan with AI or type it in manually
Fuel Up! · Aviation History
FUEL Up aviation history screen with date-range filters, an invoice-number search, and bulk export and send actions
History
Filter by date, search by invoice number, export or send in bulk
Fuel Up! · Audit Log
FUEL Up audit log screen listing submit, edit, delete and role-change events by user and timestamp
Audit log
Every submit, edit, delete and role change, timestamped
Fuel Up! · Admin Panel
FUEL Up admin panel with platform management, CSV whitelist import, user management and a purge-all danger zone
Admin panel
Manage platforms, the email whitelist and user roles
RSAF Facility Booking App EnterpriseRAiD 4 screens

A centralised facility reservation platform on Microsoft Dataverse and React, built as Developer and Product Owner.

What it does
  • Role-based access control across four permission tiers
  • Approval workflows with end-to-end visibility
  • Real-time availability and conflict detection
  • Recurring bookings for repeating schedules
  • Audit logging on reservation records
  • Soft-delete patterns and departmental isolation for multi-tenant use
Outcome

Designed and implemented end-to-end with specs-driven development (frontend, API integration and data model) in two days, and demonstrated it to stakeholders in a dedicated session. Gemini 3.1, Claude Opus 4.6 and GitHub Copilot assisted the build; none of them runs in the shipped product.

Built with
Microsoft DataverseReactPowerApps Code Apps
The actual screens
RSAF FacilityBook · Dashboard
RAiD Facility Booking dashboard: pending/approved/upcoming stat cards, a today/tomorrow agenda list, and a facilities quick-book panel
Dashboard
Pending, approved and upcoming counts, an agenda list, and one-tap rebooking of your own facilities
RSAF FacilityBook · Book a Facility
RAiD Facility Booking wizard: a four-step stepper for facility, date and time, details and review, with a location-first facility picker
Booking wizard
Location-first facility picker, date/time and recurrence, purpose of booking, then a conflict check before submit
RSAF FacilityBook · Availability
RAiD Facility Booking availability calendar: a month grid with colour-coded approved, pending, processing clearance and blackout status chips
Availability calendar
Month view per facility with a four-status colour legend, filterable by location and unit
RSAF FacilityBook · Management
RSAF Facility Booking Approver console: a pending-requests table with requester, facility, date and time, purpose, and approve or reject row actions
Management console
Approver queue with per-row approve/reject, plus facilities, user roles and audit log tabs
Singapore Airshow 2026 Charity Auction AutomationRAiD

Auction tool allowing RSAF personnel to bid for charity bears as part of a charity movement for the Singapore Airshow.

What I learned

Learned how to make use of FormSG and Plumber (Open Government Products) to safely store sensitive data and user contact details on the Internet considering policy constraints.

Built with
FormSGPlumberSharePoint
Simulator Assessment Duty Scheduler (SOAR) AutomationRAiD 4 screens

Plans simulator assessment missions across AM and PM waves, pairing a QFI with a Psych assessor on every mission. A missing half is a first-class state — flagged as a broken pair in the grid, on the assessor's own schedule, and in the dashboard's stability metric. Assessors raise covering requests with a reason and a suggested replacement; supervisors and admins approve or reject. Built as Lead Developer.

What it does
  • Every weekday splits into an AM and a PM wave, with slot times and labels editable per day by an admin and copyable across days
  • Each mission wants a QFI and a Psych assessor; an unfilled half is tracked as a broken pair rather than left silent
  • Covering requests carry a reason and an optional suggested replacement, and move to History once decided
  • Per-assessor duty counts drive a ranked workload chart, so over-tasking is visible before it is a problem; an admin can lock a published week against further changes
What I learned

Using Lovable to create a quick prototype on the spot to gain user feedback, deploying to PowerApps safely. GitHub Copilot and Google AI Studio assisted the build; neither runs in the shipped app.

Built with
ReactTypeScriptViteTailwind CSSPowerApps Code AppsDataverse
The actual screens
SOAR — Weekly Schedule
Weekly Schedule
Five days, two waves, four slots. Broken pairs and covering missions are flagged in the grid, not buried
SOAR — Operations Dashboard
Operations Dashboard
Live workload and stability across the whole roster, so over-tasking shows up before it becomes a problem
SOAR — Covering Requests
Covering Requests
An assessor raises a request with a reason and a suggested stand-in; a supervisor approves or rejects, and the decision lands in History
SOAR — System Administration
System Administration
Assessors, role types, wave slots, user accounts and simulators are all managed in-app. Demonstration dataset — all personnel and reasons shown across these screens are fabricated.
SSB Loan Tracking System AutomationRAiD

End-to-end workflow for SSB to track and approve the loaning of their logistic items.

What I learned

Rapid prototyping using simple no-code tools to create a functional system and deploy within a day.

Built with
FormSG
Workplace Check In/Out App AutomationFreelance 1 screen

Developed a PowerApp to simplify and automate the administrative workflow for duty management for duty personnel in an RSAF unit.

What it does
  • Geofencing for check in/out at designated locations
  • Logistics accountability and tracking
  • Noticeboards for centralised announcements
  • Hand-over features facilitating smooth transitions
Outcome

Significantly improved the efficiency and accuracy of attendance tracking for duty personnel.

Built with
Microsoft Power AppsMicrosoft Power Automate
Dark-themed duty app screen showing a personnel-on-duty count, a duty-instructions panel, and Check In, Useful Links and Check Out buttons in the bottom navigation
The shipped interface (what a user actually sees).
App Development for Lead Ambassadors CCA AutomationTemasek Poly

Designed an application as a secretary to help automate monthly meeting attendance as well as update databases.

Built with
Microsoft Power AppsMicrosoft Power Automate
App Development for Mindsports CCA AutomationTemasek Poly

Developed an app for Mindsports club which automates all workflows, taking attendance, and monitoring various logistics.

Built with
Microsoft Power PlatformUI DesignData Visualization
App Development for Poly Forum 2024 (SYLP) AutomationTemasek Poly

App developed for a nationwide event to efficiently manage attendance of 500 students through geofencing and score tabulation.

Built with
Microsoft Power PlatformUI Design
Code Apps Policy Approval (M365 Tenant) EnablementRAiD

Led the case to unlock Microsoft Power Apps Code Apps across the organisation's M365 environment, working through the relevant cybersecurity authorities within MINDEF.

Outcome

Every Code Apps project in this portfolio was built after this approval. Before it, Code Apps could not be deployed in the environment at all.

Built with
Power Platform GovernanceM365 AdministrationSecurity Review
Vibe Coding Masterclass EnablementRAiD · NYP 2 screens

A large-scale masterclass on vibe-coding (directing AI coding agents from a spec to a working app, and reviewing everything they produce), run for a mixed cohort of citizen developers and engineers, joined by staff from Nanyang Polytechnic (NYP).

What it does

The syllabus covered prompt-driven development, rapid prototyping and Power Apps deployment.

Outcome

Staff from Nanyang Polytechnic attended alongside RSAF personnel. Internally the masterclass was recognised in PPCoE updates, and attendance held across the cohort.

Manfred presenting at the podium during the Vibe Coding Masterclass, laptop open and microphone in hand
Leading a session for the mixed cohort.
Manfred fielding questions from attendees after the session
Working through questions with attendees after.

Full case study, on the Work page →

R&D for Vibe-Coding Code Apps EnablementRAiD

Explored AI vibe-coding tools to design an end-to-end development workflow for PowerApps Code Apps.

Outcome

Designed a systematic workflow that reduced development time from months to days for Digital Champions and RAiD developers.

Built with
PowerApps Code AppsAI Coding Tools
App Marketing Skill (marketing-pr) EnablementOpen source

A published AI agent skill that takes a GitHub repository and returns the launch material for it. Point it at a repo and it produces a landing page, two infographics, a video composition and a LinkedIn post, using screenshots of the real app rather than mock-ups. Released publicly under MIT, installable in Claude Code and Google Antigravity.

Human need

A citizen developer finishes an internal app and then has to convince people to use it. That second job needs screenshots, a page and a post: skills the build didn't require, and time the builder doesn't have.

What it does
  • Clones the target repo read-only into a temporary directory and never writes back to it
  • Runs a threat scan before anything executes; the app is only booted, with mock data, after it passes
  • Captures the app's actual screens, and falls back to static reconstructions when Node or a headless browser isn't available, rather than failing
  • Emits a marketing spec, a zero-dependency HTML landing page, 16:9 and 9:16 SVG infographics, a Remotion video composition, and LinkedIn copy
What I learned

Writing a skill someone else installs is a different discipline from writing one for yourself: it has to refuse to damage a stranger's repository, and it has to degrade instead of crash when their machine is missing a tool.

Built with
Claude Code skillsGoogle AntigravityRemotionHeadless browser captureSVG

The repo, on GitHub →

Google AI Studio System Prompt EnablementOpen source

A system prompt, published for anyone to paste into Google AI Studio's instructions field, that changes how an AI coding assistant behaves before it writes a line: plan first, get approval, stay inside the request.

Human need

Left alone, a coding assistant is agreeable and eager: it starts editing on the first message and adds things nobody asked for. For someone who can read the output but not yet audit it line by line, that is the failure mode that costs the most time.

What it does
  • Holds an approval gate: no change to code, files, data model, dependencies or structure until a complete implementation plan has been shown and accepted
  • Requires two or three distinct approaches on anything substantial, conventional and unconventional, before one is chosen
  • Bans unrequested features, pages, integrations and redesigns mid-implementation
  • Instructs the assistant to stop the moment an assumption turns out to be false, and to be direct rather than agreeable
What I learned

The useful part of a system prompt is the refusals, not the encouragement.

Built with
Google AI StudioPrompt engineering

The repo, on GitHub →

Documentation Generation Tool (PowerDocu) EnablementRAiD

Collaboration with Cydef to clear an open-source documentation generation tool for PowerApps. It came through cleared on both counts: for my own use, and for citizen developers generally.

What I learned

Learned about cybersecurity scanning architecture, policy constraints, and how to collaborate with departments to clear tools for citizen developers.

Built with
GitHubPowerDocu
SAGE Copilot AI EnablementRAiD

Integrating SAGE's ME5 Delta Agent into Copilot for training purposes using open-source models.

Human need

RSAF engineers learning to look after the people on their own team: practice at a conversation that is hard to rehearse without a real subordinate in front of you.

What the AI does

The agent plays the teammate: a shy one, with something on their mind they are afraid to raise with their boss. The engineer role-plays the conversation and finds out what their questions actually surface. It runs on open-source models inside Copilot, for training use.

What I learned

Navigated license constraints creatively to replicate GPT-4.1 concepts, managing context engineering to prevent hallucinations.

Built with
CopilotPrompt BuilderDataversePowerApps
1-Day Power Platform Bootcamp (815 SQN) EnablementRAiD

Condensed a 2-day bootcamp into 1 day for 35 users, curating new interactive learning materials. Lovable carried the build half: a working full-stack prototype fast enough that attendees could put a real workflow in front of a user the same day.

Built with
Power Platform
Comprehensive Guide for New Interns EnablementRAiD

Developed a guide using PowerLib, Google AI Studio, and Lovable to expedite learning curves for the PPCoE team.

Built with
PowerLib
Google Colab Text-to-Flowchart Bot EnablementTemasek Poly

Created an AI tool using Python and ChatGPT 3.5 that generates flowcharts from text.

Human need

Me, for my own coursework. I was drawing assignment flowcharts by hand from written descriptions, and wanted to describe one and get it back as a graph. The interesting part turned out to be teaching the model to hold its output to the exact code format the Flowgiston Python library would accept.

What I learned

Explored prompt engineering and integrating Python libraries together in a single notebook for workflow tools.

Built with
PythonOpenAIFlowgiston
National AI Student Challenge 2025 · Huawei Track CompetitionTemasek Poly

Mobile app to improve citizen engagement and civic services, allowing people to report issues and track the progress of their requests.

Outcome

Certificate of Participation from AI Singapore.

What I learned

Exposure to ML algorithms, various cloud technologies in Huawei's ecosystem, and MLOps. Introduced to the AI development field.

Built with
Full-Stack DevMachine Learning AlgorithmsMLOps
AI Singapore Certificate of Participation issued to Siew Lee Hong Manfred for the National AI Student Challenge 2025 · Huawei Track, with a QR code and a signature from the Director of AI Talent Development
Externally assessed. One of the few claims on this page somebody else graded.
Whitehacks 2025 (Cybersecurity CTF) CompetitionTemasek Poly

Cybersecurity CTF competition organised by SMU. Used tools such as Wireshark, John the Ripper, and Z-steg.

What I learned

Introduced to various cybersecurity practices transitioning from an engineering background.

Built with
CybersecurityDigital ForensicsOSINTCryptographySteganography
Iron Viz Student Edition CompetitionTemasek Poly

Data visualization contest to develop visualization skills. Conducted data analysis and created compelling visualizations.

Built with
TableauData VisualizationData Analysis
WorldSkills Training (Aircraft Maintenance) CredentialTemasek Poly

Acquired technical skills essential for aircraft maintenance at Lufthansa Technical Training Center, experiencing high-pressure scenarios.

What I learned

Learned riveting, soldering, and composite materials. Instilled resilience, self-discipline, and the ability to handle stress.

Built with
Aircraft MaintenanceAircraft Inspection
Project Management Tracker ScalingRAiD

A planning tool used across RSAF teams to lay out tasks and assign them to the people doing the work. It is in use now and scaling toward an enterprise deployment.

Named on the Work page's Security & governance section: I acted as Security Reviewer on it.