Kia ora, I’m
Bonsung. Loaded.
Helping the platform that helps hospitality grow.
Senior Software Developer
Introduction
A Senior Software Developer building software professionally since 2016, from an international reference implementation of an image standard to an app used by 300,000 people across 15 countries. I was a lead engineer for three years, and more recently I have engineered a full web product, from its React front end to its .NET backend on Azure. I now develop with coding agents, in an environment I built for them.
Key Strengths & Achievements
- Agentic AI Engineering: Built the environment our coding agents develop in, where each repository carries its own instructions for them and work starts from a written specification rather than a prompt. Production work ships through it every day, and Sentinel extends the same approach. Tools include Claude Code, Codex and GitHub Copilot.
- Validating Agent-Written Code: Tests, the build and lint decide which code ships, whoever wrote it, and agents read current documentation through MCP servers so their code matches the versions in use.
- Web, .NET and Integrations: React and TypeScript, a C# .NET REST API on Azure SQL, and integrations with Azure OpenAI, Stripe payments and GitHub App webhooks.
- Delivery & Testing: A company's first CI/CD pipeline, cutting release time from 2 hours to 20 minutes, and its first automated testing strategy, taking coverage from 0% to 30%.
- Ownership & Leadership: Working closely with the CEO and CTO on a full product today, turning their requirements into features, and before that leading three software engineers and developing a junior engineer who reached intermediate within two years.
Work Experience
airie | Wellington, New Zealand
Senior Software Engineer | July 2025 - Present (part-time to December 2025, full-time since)
- Engineered a customer-facing web platform for immigrants with React, TypeScript and Vite, then took on its .NET backend and built its design system and the Figma workflow around it.
- Built the agent-operated development environment that production work ships through every day, with per-repository agent instructions, a specification-first workflow, and a categorised knowledge base that makes previously solved problems retrievable.
- Moved Azure OpenAI access from API keys to Entra ID managed identities, and rebuilt Supabase's row-level permissions as role-based access control in the API.
- Designed and executed a multi-phase migration of the entire product onto Azure, retiring its Supabase data layer, API and front-end integration in staged releases while the product stayed live.
- Wrote unit, component and integration tests, including end-to-end tests that run against a real database and API, with Vitest, React Testing Library, Playwright and xUnit.
- Defined the Azure infrastructure for a background notification service as code in Bicep, and deploy the product through GitHub Actions to separate development, staging and production environments.
- Mentored an intern developer through an 8-week programme that ended with a production-ready feature they shipped themselves.
Shopl and Company | Seoul, South Korea
Lead & Senior iOS Engineer | August 2021 - June 2024
- Engineered and scaled a native iOS app (Shopl) for shift and task management, serving 300,000+ employees in 60,000 workplaces across 15 countries.
- Introduced Modular and Clean Architecture to the codebase, making builds 7.5 times faster, and led the migration of a critical legacy system everyone considered untouchable, retiring it completely.
- Built client-specific features sold under their own contracts, including the roster changes a new labour law required, live before the law took effect.
- Built the company's first CI/CD pipeline with GitHub Actions and its first automated test suite, moving QA from monthly to weekly cycles.
- Built and led a team of three software engineers in two-week Agile sprints, ran code reviews with them, mentored two engineers, and co-authored the team's iOS coding standards.
- Represented engineering in weekly leadership meetings, showing the expected outcomes of technical improvements with data so non-technical stakeholders could weigh the trade-offs.
PJ FACTORY | Seoul, South Korea
Intermediate iOS Engineer (October 2018 - June 2021)
Junior iOS Engineer (October 2016 - September 2018)
- Developed an iOS app (Detail) to create and manipulate images in the new DTL (JLINK / JPEG Systems Part 7) format, serving as the official reference software for the standard.
Selected Projects
Sentinel | usesentinel.tools | npmjs.com/package/sentinel-mcp
AI-powered GitHub issue fixer, issues in and pull requests out (2026)
- Designed and built the whole system solo in TypeScript. A Cloudflare Worker receives GitHub App webhooks and relays them through a Durable Object to a local MCP server running inside Claude Code, which spawns headless Claude sessions to investigate issues, implement fixes and open pull requests.
- Built to run unattended, which meant scoping each task narrowly enough for a session to finish it without supervision, and handling the failures rather than watching for them.
- Test-driven by rule, with no production code written before a failing test and every bug fix shipping alongside the regression test that catches it.
Education
Master of Information Technology
Whitireia and WelTec, Wellington, New Zealand | July 2024 - October 2025
Bachelor of Engineering in Computer Science
University of Suwon, South Korea | March 2006 - February 2015
How this page was built
How I work with coding agents, shown on the page you are reading.
Agree the spec first.
I talk each change through with the agent until we agree a written spec.
From AGENTS.md “A change to what the page does starts as a change to
docs/spec.md.”Plan small tasks, with their tests.
Each task names its tests before any code exists, and Context7 keeps the plan on current library documentation.
From the plan “the bar fills before Loaded. appears”
Keep the rules in the repository.
Hooks stop the agents committing or pushing to
main, and merging.The agent hook “Agents never merge pull requests. Bonsung merges.”
One agent builds, another reviews.
A fresh agent checks each task against the spec.
From a review The loading bar’s test could not fail if the order were wrong. A check of the order was added.
Write down judgement calls.
Each one records what was decided, why, and what it costs if wrong.
From the decision log The starter’s Geist font was removed, because the rules allow no other company’s fonts.
Checks decide, and I merge.
Every pull request passes checks that give the same answer every time, and only I merge into
main.On every pull request Build, test, lint, typecheck, history
Review the whole at the end.
A more capable model reviews the finished site at once.
From the final review It found a real email address in the published plan’s sample data. It now uses an example address.
Write down what was learnt.
Compound Engineering writes the lessons from solved problems into
docs/solutions/, where the agents look when they plan.From docs/solutions Test an animation’s order, not only where it ends
The repository is private. Access on request.