Ken Ooi
AI engineer building production generative-video and agent systems, on a robotics foundation.
Founding AI engineer at A47 Media, building the generative-video platform and the agent tooling around it. Trained in mechatronics, and still building robots in simulation.
Featured on and worked with
At A47 Media
Generative video in production: the canvas, the harness and the tools around it.
Things I built
Products and tools, from podcast editing to AI search visibility.
Robotics
Humanoids, imitation learning and text-to-CAD, in simulation first.
At A47 Media
Generative video in production: the canvas, the harness and the tools around it.
Power Studio
A node-based canvas for generative video at A47 Media. Blocks for prompts, references and each image and video model wire together into one workflow, built with React Flow.
Showcase of the canvas UI with real block types. Outputs are placeholders.TypeScript · React Flow · Next.js
A news link in, a presenter video out
A 12-stage harness for vertical explainers. It researches the story, writes the script, voices it, writes a cut sheet, then generates stills, Seedance motion and a HeyGen presenter, and places every layer into Premiere. Stages that spend money stop for approval. This is a real run, on BlackRock's Bitcoin ETF.
Seven layers, one rule eachPaper at the back, then presenter or b-roll, accents, callouts, transitions, a safe-area guide and captions on top. Every engine writes to its own layer, so nothing collides.
Timed to the voiceWord timestamps from the voiceover drive every cut, overlay and caption. 31 pauses were trimmed, taking the voice from 118 to 108 seconds.
Spend needs a yesVoice, stills, motion and presenter each stop for approval before they call a paid model.
Data: the run's real cut sheet, overlay and sound-effect placements. Presenter, stills and footage are drawn as placeholders.Python · Claude · ElevenLabs · Whisper · GPT Image 2 · Seedance · HeyGen · ffmpeg · Premiere
Figma templates, filled by a graph
Custom ComfyUI nodes that read a Figma design and fill it automatically. They pull each layer's position, size, font and colour from Figma, then composite fresh photos, headlines and logos into the same template, so n8n can turn a story into a finished news card with no designer in the loop.
The design stays the source of truthMove a layer in Figma and the next card follows. Positions, sizes, fonts and colours are read live, not copied into the workflow.
Built for automationThe same graph runs from n8n through ComfyUI's API, so a headline and two image links are all a new card needs.
Eight nodes in the packLayer loader, file info, batch loader, layer properties, template processor, text wrapper, offset compositing and masked crop.
Graph: the real workflow's nodes, positions and links. Settings, IDs and text are left out. The HTTP nodes are an open-source pack used alongside.Python · ComfyUI · Figma REST API · Pillow · n8n
Claude, editing in Premiere
An open-source bridge from Claude to Adobe's apps, extended for real editing work. Claude calls a Python MCP server, which relays each command over a socket proxy to a plugin inside the app. The fork adds 18 Premiere tools for captions, text, logos, motion, MOGRTs and an After Effects template library, with 4 more in progress.
Tools an editor actually needsSRT captions, word-highlighted captions, editable text, logo tracks, MOGRTs, and reading or setting a clip's position, scale and rotation.
A template library for After EffectsScan a template for swappable text and footage, register it, check its fonts and footage, swap the fields and export. Editors submit new templates; an admin approves them.
A side door for ExtendScriptJobs Premiere's UXP API can't do, like importing a transcript, go into a queue folder. A small CEP panel inside Premiere runs them and writes the result back.
Tools: the fork's real Premiere tool list, compared with the upstream project at the point it was forked. The base project is by Mike Chambers.Python · FastMCP · Socket.IO · Node · UXP · CEP · ExtendScript
Things I built
Products and tools, from podcast editing to AI search visibility.
Podcast Studio
A local-first editing workspace for the Malaysian.ai podcast. It transcribes every word, works out who said it, and proposes cuts for long pauses, filler words and false starts for the editor to review. Here, Episode 7 before and after its cleanup pass.
Each rowTen minutes of the recording, read left to right, top to bottom. Inside a row, the three thin lanes are Ken, Ashvin and the guest.
Each barA stretch of one person talking, timed from the word-level transcript. Hover for who and how long.
Orange blocksCuts the cleanup pass proposes. Press After cleanup and they lift out while each row closes up.
Data: Episode 7's word-level transcript and the cleanup pass's cut list, before the editor's final review.Python · Whisper · pyannote · Premiere handoff
OnlyRANK
Measures whether AI answer engines cite a brand, and diagnoses why not. It asks ChatGPT, Claude and Gemini the questions a buyer would ask, records every source they cite, and checks those sources against the search results each engine draws on. That shows where a brand drops out: not found, found but not picked, or missing from what the model already knows. Here, one buyer question from a July 2026 test.
The mapSolid spheres are sites the engines cited; bigger means cited more often. Hollow spheres rank in search but weren't cited. Reddit, in the centre, was the top Brave result and got no citations.
How it reads the gapEach engine is matched to the index it searches: Claude to Brave, Gemini to Google, ChatGPT to Bing. Pick an engine to see how many of its cited sites actually rank there.
One core, several productsThe same diagnosis runs a free CLI checker, a 0–100 web scorecard, a REST API, an MCP server for coding agents, and lead reports sent by email and WhatsApp. Content Refresher checks a page’s claims against current sources, proposes edits, and waits for a person to approve them.
Data: OnlyRANK test run, 4 July 2026. One answer per engine for “best email marketing platform for ecommerce”, with the top organic results from Brave (15), Google (8) and Bing (9).Python · FastAPI · MCP server · Supabase
Stue
Design a room in 3D, see it as a real photo. Arrange furniture in a simple planner, put a camera anywhere on a ring around the room, and GPT Image 2 renders a photograph of that exact room from that angle. Built at a hackathon. The code is public.
The camera ringThe camera always circles the room and looks at its centre, like the app's angle slider. The cone shows what the photo will frame.
Only what's in viewFurniture inside the cone lights up, and only those pieces go into the prompt. If the picture and the words disagree, the model invents the difference.
Live promptThe text above is the app's own prompt builder, run on what the camera sees: exact counts, a named position and the way each seat faces.
Furniture: Kenney Furniture Kit (CC0). Layout, camera ring, frustum check and prompt rules ported from the Stue repo.Next.js · React Three Fiber · GPT Image 2 · Vercel
Robotics
Humanoids, imitation learning and text-to-CAD, in simulation first.
Unitree G1, taught to dance from a phone video
Video-to-motion imitation learning for a humanoid. A dance filmed on a phone becomes 3D human motion, gets retargeted onto the Unitree G1's joints, and a reinforcement-learning policy learns to perform it in simulation while staying balanced.
The robotThe G1's own meshes, posed frame by frame from the retargeted reference: 157 frames at 40 Hz, looped.
Tracking points and trailsThe five points the imitation reward compares (upper body, hands, feet), with the paths of the hands and feet over the whole clip.
More training isn't always betterThe longer-trained policy failed the gate; the one trained with wider physics randomization passed and is the one exported for the robot.
Data: the retargeted reference clip and the checkpoint gate results from the project's notes. Robot meshes: Unitree G1 model, simplified for the web.Python · JAX · MuJoCo MJX · LocoMuJoCo · ONNX
Text-to-CAD, in your hand
From a sentence to a robot you can turn with your phone. A plain-language request becomes an engineering spec of parts, joints, actuators and sensors, each part becomes a mesh, and the phone's gyroscope streams live to rotate the assembly. A finalist at the BEYOND Expo hackathon in Macau.
A spec, not just a shapeEvery part carries a purpose, a material and an estimated mass, so the output can go to simulation or review, not only a render.
Honest about gapsThe spec lists what it hasn't solved, like hidden leg locomotion and actuator selection, and marks every part as a prototype for review.
Your phone as the controllerOn a phone, press Tilt with your phone. At the hackathon the same idea ran from an iPhone's motion sensor over Wi-Fi.
Model: the generated example robot and its engineering spec from the project, shown without the character name it was inspired by.Python · OSC/UDP · WebSockets · Three.js
humanoid-scorecard
A robustness scorecard for humanoid walking policies in MuJoCo. Every policy gets the same 1,053 randomized sim trials: pushes from four sides, heavier and lighter bodies, slippery and grippy floors. Here, three Booster T1 policies on the same grid.
Centre and ringsThe robot stands in the middle, facing the arrow. Each block sits on the side the robot is pushed towards: 40 N on the inner ring, 80 N on the outer ring. The middle block has no push.
Each 3×3 blockRows are body mass (×0.9, ×1.0, ×1.1, back to front). Columns are floor friction (×0.8, ×1.0, ×1.2).
Each barOne test condition, 13 seeded trials. The taller and brighter the bar, the more trials ended in a fall.
Data: the scorecard's saved 1,053-trial reports for Booster T1.Python · MuJoCo · MJX · ONNX
DroneDock
A landing platform that lets a drone dock on a moving rover. My MEng group design project, where I was team lead. HANGAR-1 tracks the drone in real time with a camera reading ArUco markers on a Raspberry Pi. It has 3 degrees of freedom: a full 360° turn, 20 cm of extension, and it holds up to 80° of inclination. The drone ran ArduPilot, tested first in Gazebo. DroneDock on GitHub.
Drag and ExplodeDrag to turn the platform. Explode separates the layers bottom to top, following the team's exploded drawing.
3 degrees of freedom360° rotation, 20 cm extension and up to 80° of inclination.
TrackingA Raspberry Pi camera reads ArUco markers to estimate where the drone is. A Jetson Nano version was dropped because it lacked PWM pins.
Model: rebuilt by hand from the team's exploded view. The NEMA 17 stepper is the real part file from the repo; the platform itself only exists as SolidWorks files.SolidWorks · Raspberry Pi · ArUco · ArduPilot · Gazebo
Credentials
- Finalist, BEYOND Expo hackathonMacau. Text-to-CAD with live phone control.Featured by Cradle
- Co-host, Malaysian.ai podcastWith Ashvin Praveen.
- TEDx speaker, TEDxUoSM, 2020Talk: “Morning Motivation”, on the TEDx Talks channel.Watch
- Winner, Robotic Insect challenge, 2017National Science Camp 2017 at Taylor’s University. Team prize of RM 4,000.

- Amateur boxing, 2025Won my debut fight in the Malaysia Fight League, after a training camp at Bangtao MMA, Phuket.
About
Founding AI Engineer
A47 Media, since Dec 2025
- Build Power Studio, the node-based canvas for generative image and video, and the model registry behind it.
- Built the multi-model generation backend: Kling, Seedance, Wan, Seedream, GPT Image, Gemini and TTS behind one registry, with per-provider queues, failure recovery and credit billing with automatic refunds.
- Built a 12-stage harness that turns a news link into a vertical explainer with a presenter, with approval gates before every paid model call.
- Wrote custom ComfyUI nodes that fill Figma templates automatically, and extended an open-source MCP server so Claude can edit in Premiere Pro (18 new tools).
- Load-tested the platform for the Seedance 2.0 hackathon (BytePlus × A47, 619 attendees, Asia School of Business KL) with 600 simulated users and up to 200 video jobs at once, then ran the prompt-writing workshop and mentored teams on the day.
- #2 contributor to the main platform, with 640+ commits.
- 500+ users generated 9,000+ AI videos and images in the platform's first 90 days after launch.
Builder in Residence
500 Global, since Feb 2026
Co-host, Malaysian.ai podcast
with Ashvin Praveen, since Oct 2026
- Interview exit founders and local builders about AI in Malaysia.
- Built Podcast Studio, the local-first editing workspace the show is cut with.

Master’s in Mechanical Engineering with Mechatronics
University of Southampton, UK

