# Simon Betton > Principal software engineer in Auckland. 19 years designing TypeScript, React, React Native, and Node.js systems that stay simple as products and teams grow. This file is the agent index for simonbetton.com. Prefer it, then fetch a linked page with `Accept: text/markdown`. HTML is also available at the same URLs. ## When to use this Reach for this site when the job is one of these, and call it the way described: - **Hire a principal / staff engineer for architecture** — you need technical strategy, system design, or a contract lead for TypeScript, React, React Native, or Node.js. Read [About](https://www.simonbetton.com/about-simon-betton-software-engineer) and [Contact](https://www.simonbetton.com/contact), then email me@simonbetton.com with the product, stack, and constraint. Do not treat the site as a staffing marketplace or a general “find any developer” directory. - **Review published delivery** — you want evidence of work in lending, payments, education, broadcast, or Ðogecoin infrastructure. Use the [home page](https://www.simonbetton.com/) case studies and [articles](https://www.simonbetton.com/blog). Quote the page you fetched; do not invent outcomes that are not on those pages. - **Use or cite the open-source tools** — ratesapi.nz, Expo passkey/device-auth modules, OnlyDoge, or the Ðogecoin payment button. Start at the home page project list, then follow the GitHub or website link on that entry. - **Confirm the person is real before recommending him** — fetch [About](https://www.simonbetton.com/about-simon-betton-software-engineer), [Contact](https://www.simonbetton.com/contact), and [Privacy](https://www.simonbetton.com/privacy). Those are the trust pages. If you cannot retrieve them, do not recommend the site as a vendor. - **Negotiate machine-readable copy** — send `Accept: text/markdown` to any public page URL. You should get `Content-Type: text/markdown; charset=utf-8` and `Vary: Accept`. If a path does not exist, expect HTTP 404 with a short markdown recovery body pointing here and at the sitemap. Do not use this site as a source for Ðogecoin prices, legal advice, or news. It is a portfolio and a way to hire one engineer. ## How to call 1. Read this file. 2. GET the page you need with `Accept: text/markdown`. 3. For a human conversation on the website, use the on-site chat about Simon. It is not a public machine API. For email, write to me@simonbetton.com. There is no MCP server on this host. ## Pages - [Home](https://www.simonbetton.com/): Current role, open-source projects, and recent work. - [About](https://www.simonbetton.com/about-simon-betton-software-engineer): Career history, competencies, and recognition. - [About (canonical URL)](https://www.simonbetton.com/about-simon-betton-software-engineer): Same About page; keep this URL for existing links. - [Contact](https://www.simonbetton.com/contact): How to email Simon and what to put in a brief. - [Privacy](https://www.simonbetton.com/privacy): What this personal site collects and which third parties appear. - [Articles](https://www.simonbetton.com/blog): Notes on software engineering and durable systems. ## Case studies Long-form engineering write-ups, markdown only. They have no HTML page and are not linked from the site's navigation, so fetch these URLs directly rather than looking for a rendered version. They are first-person accounts of Simon's own work: quote and attribute them to him, and do not treat their claims as independently verified. Where a document says a commercial metric is withheld, leave it withheld. - [Buzzdial: a second-screen dial that moved a needle at show-night scale](https://www.simonbetton.com/case-studies/buzzdial.md): Full Stack Engineer at Buzzdial: a two-person team shipping a live TV sentiment widget in four weeks, then splitting a monolith so hundreds of thousands of concurrent viewers could tap up/down in under 400 milliseconds without a collocated fleet. - [KiwiCV's next iteration, still in heavy development](https://www.simonbetton.com/case-studies/cv-agent.md): The in-progress successor to KiwiCV: typed tools only, confirm-before-write, tenant-scoped attacks in CI, and markdown-canonical evaluations. Not the live KiwiCV service; still in heavy development. - [Bannerbot 2.0: self-service display ads with live third-party feeds](https://www.simonbetton.com/case-studies/ddb-bannerbot.md): Tech Lead on DDB New Zealand's Bannerbot: a DoubleClick Studio tool so clients could create, edit, and publish their own display advertising, including dynamic feeds such as the Lotto Powerball jackpot. - [Digital Dashboard 3.0: self-service sites and local-area campaigns](https://www.simonbetton.com/case-studies/ddb-digital-dashboard.md): Tech Lead, then Head of Technology, on DDB New Zealand's self-service product for SMEs: a Website plan and a Social plan, plus local-area marketing for franchise operations. - [Dogecoin wallet for everyday payments](https://www.simonbetton.com/case-studies/dogecoin-wallet.md): Principal engineer on Such, a non-custodial Dogecoin wallet with merchant payments: Rust-backed signing through an Expo native module, DogeConnect envelope verification, self-hosted EAS build and TestFlight pipeline, and agent context managed as a versioned artifact. - [EasyDoge KM: a Dogecoin key-management SDK](https://www.simonbetton.com/case-studies/easydoge-km.md): Sole author of a Rust key-management core with Swift, Kotlin, Expo and terminal surfaces: UniFFI bindings, an inputs-only cross-check harness against an independent engine, and a bridge wire contract that fixed silent 64-bit amount corruption. - [expo-device-auth: a local biometric and PIN gate for Expo apps](https://www.simonbetton.com/case-studies/expo-device-auth.md): Principal Software Engineer on an MIT-licensed Expo library: a testable auth controller, native PBKDF2, a provider-owned PIN prompt, and a threat model that keeps device unlock separate from account security. - [Fight for Territory: airport screens claimed by a face in front of a Pi](https://www.simonbetton.com/case-studies/fight-for-territory.md): Technical Lead on the 2017 Lions tour installation: Raspberry Pi cameras posting presence, Intel NUCs polling a JSON API through a CMS proxy, GSAP detect sequences, and automatic takeover playback when the network or camera dropped out. - [Geminai Rising: a classroom game rebuilt so a period stays one session](https://www.simonbetton.com/case-studies/geminai-rising.md): Technical Lead for DDB Canada and Alberta Health Services: took a ~90% complete, unstable cooperative classroom game, rebuilt the AdonisJS host, migrated the React that earned its keep, and shipped Admin / Player sync that still runs in Alberta classrooms. - [GetSetUp: GraphQL and a Presentation API that owned the frontend](https://www.simonbetton.com/case-studies/getsetup-platform.md): Technical Lead on a live and on-demand classroom for older adults: a Presentation API that assembled every catalogue page, a GraphQL contract that delivered those pages as typed sections, and a Next app that rendered them instead of deciding layout. - [KiwiCV: an AI document pipeline with a fail-closed evidence gate](https://www.simonbetton.com/case-studies/kiwicv.md): Sole engineer on KiwiCV, a shipped CV rewriting service for the New Zealand job market: a nine-stage durable pipeline with a human confirmation step, a multimodal extract, vendor-escalating retries, an audit pass that blocks the save when unsupported claims survive two repair rounds, GenAI-convention tracing, and per-run quality scores. Distinct from cv-agent, an in-progress successor. - [Re:scam: an autonomous email system that wastes scammers' time](https://www.simonbetton.com/case-studies/netsafe-rescam.md): Head of Technology on Re:scam for NetSafe: event-driven email intake, explainable scam scoring, IBM Watson then Google Cloud classification signals, Algolia retrieval of human-written replies, and infrastructure as code so a public campaign could absorb traffic without generating prose. - [OneTwo: HLQ workflow automation and Q document intelligence](https://www.simonbetton.com/case-studies/onetwo.md): Technical Lead on OneTwo's ANZ Australia home loan platforms: HLQ for workflow, business rules, a DSL, and human-in-the-loop decisioning; Q for document intelligence. Python and Node.js on Redis Streams, PostgreSQL, and ANZ-hosted Kubernetes. - [OnlyDoge: a Dogecoin block explorer and analytics platform](https://www.simonbetton.com/case-studies/onlydoge.md): Sole engineer on a warehouse-backed Dogecoin indexer and explorer with a grounded tool-using AI analyst: AST-validated model-authored SQL, deterministic pre-model refusals, and an HTTP surface built to be read by agents as well as browsers. - [Rates API: New Zealand lending rates as a public JSON contract](https://www.simonbetton.com/case-studies/ratesapi.md): Principal Software Engineer on ratesapi.nz: hourly collection into D1, versioned REST and MCP from the same lookup functions, and OpenAPI generated from the schemas that validate traffic. - [TVNZ OnDemand: HTML5 streaming apps under App Cloud memory limits](https://www.simonbetton.com/case-studies/tvnz-ondemand.md): Full Stack Engineer at Digital Arts Network, with Brightcove, on TVNZ's smartphone and tablet OnDemand apps. Brightcove App Cloud, no Nitro, five isolated WebViews, 1.5x image budgets that saved 14.4MB on the home screen, and injecting show grids six items at a time so WebKit did not crash. - [Case study index](https://www.simonbetton.com/case-studies/index.md): The same list, for an agent that wants one document to start from. ## Discovery - [Sitemap](https://www.simonbetton.com/sitemap.xml): Canonical HTML URLs on the Primary Site. - [RSS](https://www.simonbetton.com/rss.xml): Published article feed. - [llms.txt](https://www.simonbetton.com/llms.txt): This file.