Consultation & strategy
Working out what to build, and whether it is worth building. Technical due diligence, architecture review, and a plan you can act on.
AI-native software factory · Hong Kong · Australia
We design, build, and run SaaS platforms, web apps, mobile apps, and desktop software. Two decades across UX, cloud engineering, and DevOps guide every decision; AI helps us compress delivery cycles without lowering the bar for specification, testing, or review.
Passed
0
First pass
0/0
Rework
0
Rejected
0
Status
Ready — build the spec on the line
Focus the belt, then arrow keys move and space acts; or click and drag to aim. The dotted stack inside the scanner is the spec: build that, in that order, on the crates running down the line. Anything in the jaws can be set back down wherever the belt is clear; where it is not, the release is refused. The claw cannot reach past the scanner, so a stack has to be finished before it gets there — and the line runs once, so anything that reaches the end is gone. Miss the gate and the spec stays open for the next attempt.
Services
Taken as a whole, or any part of it. Most of these arrive together because they are hard to separate in practice.
Working out what to build, and whether it is worth building. Technical due diligence, architecture review, and a plan you can act on.
Research, flows, interface design, and the brand surface around them — drawn by the same people who will build it.
SaaS platforms, web, mobile, and desktop. Built to spec, shipped continuously, documented as it goes.
Cloud-native environments, CI/CD, and a release process that makes shipping routine rather than an event.
Agentic development workflows, internal tooling, and automation that removes work rather than adding dashboards.
Standing up the team that takes it forward — practices, pipelines, and code you own outright. Or we keep operating it alongside you.
A system inherited from another team, or a prototype your AI tools got working. The idea is proven — the job is taking it to the next stage and making it hold up there. Audit first, rewrite only where it earns it.
A site that has slowed to a crawl, or cloud spend that has run away with itself. And the worse days — a breach, a DDoS, an outage. We get service back first, then fix what let it happen.
Capabilities
Strategy, UX, engineering, and DevOps sit under one roof, so the architecture, design, and roadmap never fragment across a chain of vendors.
Multi-tenant products with billing, auth, and dashboards — architected to scale from first user to serious load.
Fast, accessible web applications built on modern frameworks, shipped continuously and instrumented from day one.
Native-feeling iOS and Android apps that stay in step with your web product and pass review without drama.
Cross-platform desktop tools for Mac, Windows, and Linux when the work demands more than a browser tab.
Clients
Different starting points, the same factory behind each of them.
People with an idea and no team to build it. We take first versions from idea to launched product, then help set up the development team that carries it on.
Businesses improving what their customers experience, and teams replacing internal friction with tools built for how they actually work.
A working prototype is a real starting point. Hardening it for real users — auth, data integrity, and the failures that stay quiet until they do not — is a different job.
Agencies with campaigns and concepts that need building. We take on the technical side, so the idea survives contact with production.
Work
The factory is twenty years of accumulated workflows, tooling, and judgement. stealth studio points it at client briefs; stealth factory points it at our own products.
Live countdowns and timetables for Hong Kong's ferry network — 16 operators, 69 piers and 87 directional routes, from the Central to outlying-island lines and the Star Ferry harbour crossings down to the rural kai-to services.
A page for every pier pair, an island-hop explorer for chaining islands one sailing at a time, connecting-bus departures enriched with live ETAs, and public-holiday handling applied per individual sailing rather than per route. Trilingual, installable, and it keeps working offline once a route has been visited — which is the state you are actually in, standing on a pier with no signal.
Monetised by a contextual ad engine that targets by route and sailing rather than by who is holding the phone. PDPO-aware and non-behavioural: no profiles, no tracking across sites.
Next.js · PWA · Trilingual
A marketplace connecting independent fitness instructors with students — discovery, booking, scheduling and payments in one place.
The instructors it serves sit in an awkward middle: enough of a following to fill classes, not enough of a business to justify a studio's back office. The software has to carry the scheduling and the money, not just the listing.
Exports every file in an Uploadcare project to your own Google Cloud Storage bucket with the metadata intact — original filenames, upload dates, EXIF, custom fields and virus-scan results.
Exports arrive as 2GB ZIP parts with a manifest in both JSON and CSV, so a migration is something you can check rather than hope about. The usual version of this job is a throwaway script that quietly drops everything the files were carrying.
Built as a product rather than an internal tool: accounts, billing, and a background worker that does the transfer without the browser tab having to stay open.
Next.js · Stripe · Google Cloud Storage
A portable home for your AI conversations. Import your exports from ChatGPT, Claude and other providers, search across all of them in one place, and export as clean Markdown.
Your conversation history is context you have already paid for — the problem framing, the dead ends, the thing that finally worked. It should not be stranded inside whichever assistant you happened to be using at the time.
Markdown out is the point. It means the archive outlives the tool that made it, and works with whatever you use next.
ChatGPT · Claude · Markdown
A campaign site for This is Lantau (就係大嶼), a community radio programme pitched to RTHK's Community Involvement Broadcasting Service. Community backing is part of how RTHK selects programmes, so the page had to do more than explain the idea — it had to give the island somewhere to turn up.
It runs a public vote, then an area poll asking which part of Lantau is yours, weekly prompts, episode threads, written notes and recorded voice notes — all tallied into a visible community pulse. Everything contributed before the deadline is bound into the Lantau Dossier (大嶼提案書) that goes to the selection interview, so taking part is not a gesture: it is literally the submission.
Bilingual throughout, English and 繁體中文. The campaign's own dates — vote closing, dossier sealing, interview — are a single source of truth in code, so the copy, the countdown and the emails change state together instead of being edited by hand on the day.
Next.js · Sanity · Turborepo
A custom multilingual WYSIWYG CMS for a Hong Kong hotel — English, Traditional Chinese and Simplified Chinese — with the property's own marketing team publishing directly instead of filing tickets with an agency.
Custom-built, not assembled from WordPress or Joomla plugins. Off-the-shelf platforms are what attackers scan for, because one weakness works across millions of sites at once. This one is not on that list, and has not had a single security incident since launch.
Visitors are geolocated server-side and served the stack that actually works where they are: Baidu maps and analytics, and China-reachable video, for mainland traffic — the Google equivalents everywhere else. Down to converting between coordinate systems, so map pins land on the building rather than a few hundred metres from it.
Meteor · React · Google Cloud
Next.js optimisation for a high-traffic WordPress publication. Every deployment used to rebuild the site against WordPress — often needing the backend scaled up first — and bots probing article URLs that never existed each triggered a full origin lookup. Serverless was running at 75% of the monthly limit and heading for overage charges.
Delivery moved onto the App Router with Redis KV and Vercel Data Cache, so content survives deploys and missing routes are answered without touching WordPress. 165M requests a month now serve on 4,382 serverless invocations — one function call per 37,000 requests — at an 86% edge cache hit rate.
Builds run 64% faster, 4.19M hostile requests a month are turned away at the edge, and the pre-deploy WordPress scale-ups stopped entirely. The Vercel and AWS bills came down with them.
Next.js · WordPress · Redis KV
A verifiable credentials platform. An issuer app lets organisations hand out tamper-proof digital credentials; a wallet app lets people hold and present their own. Decentralised identifiers throughout, including sub-DIDs, so one identity can carry several separable personas.
Credentials are signed with Ed25519 and verify in real time — a holder can prove something without the verifier phoning the issuer, which is the whole point of self-sovereign identity. A public explorer for credential discovery and issuer reputation is in planning, with on-chain anchoring on its roadmap.
Astro · Next.js · Supabase · Ed25519
Process
A standard delivery lifecycle, run tightly. The speed comes from how the sequence is executed, not from skipping parts of it.
Find the pain points — what is breaking for the people using it, how often, and what it costs them.
Turn those pain points into requirements, and settle on an approach that actually solves them.
The approach becomes a spec written to be executed by an agent: explicit scope, acceptance criteria, and edge cases, with nothing left to inference.
Specs become tracked issues, assigned to agents and worked in parallel wherever the tasks do not collide.
Every pull request is tested and reviewed before it merges. Anything found — here or at any earlier stage — is filed as a new discovery, and the loop restarts.
When a body of merged work is ready it goes out as a version — batched deliberately, rather than a release per merge.
Inside implementation
One spec fans into independent lanes. Each clears its own tests and review before it merges, and a body of merged work goes out as one version.
Trunk-based, stacked diffs
Changes land as small stacked diffs, reviewed and merged in order, so nothing is parked on a long-lived branch waiting for a big-bang merge.
Agentic, with guardrails
Agents do the work, and test it. What keeps that honest is the spec they are handed and the tests and review every change has to pass — which is the part prompting alone does not cover.
About
Understated on purpose. We would rather the work spoke than the pitch deck did.
Founder-led
A design engineer with 20+ years across UX, cloud engineering, and DevOps — design to deploy, one line of accountability rather than an account manager relaying between you and the people building it.
Since 2006
Building software since 2006, running this studio since 2012 — through two restructures and every shift the web has made in that time.
Upstream
We contribute to the open-source projects the web runs on, rather than only building on top of them.