# 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. If you are driving a WebMCP-capable browser, every page registers in-page tools (see below) that return the same markdown as these URLs, plus search. Use those instead of scraping the rendered HTML. 4. 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. ## In-browser tools (WebMCP) Pages register these tools with `document.modelContext` when the browser supports WebMCP. All are read-only except `open_page`, which only navigates; none send messages or change data. - `get_site_overview`: who Simon is, when to use this site, contact details, and this file. Call it first. - `list_site_content`: pages, work case studies, agent case studies, articles, open-source projects, and Service Sites as JSON with paths and canonical URLs. - `read_document`: any page, article, or case study as markdown, by path or canonical URL. - `search_site`: ranked sections across every document, with snippets and URLs to cite. - `get_contact_details`: email, LinkedIn, GitHub, CV, and what to put in a brief. - `read_current_page`: the page on screen as markdown. - `open_page`: navigate the browser to a site page. ## 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: one live meter, delivered to every surface a broadcaster asked for](https://www.simonbetton.com/case-studies/buzzdial.md): Full Stack Engineer in Buzzdial's two-person engineering team (2014 to 2016). I built the viewer-facing dial widget, embeds, Facebook Flash client, white-label skins, and producer and on-air overlays for a second-screen sentiment platform used by ITV, the NZ Herald, and Australian networks. - [cv-agent: a multi-tenant job-search agent on eve, still in development](https://www.simonbetton.com/case-studies/cv-agent.md): An agentic job-search product built on eve, Vercel's durable agent framework: durable sessions, typed tools, on-demand skills, a zero-tool reviewer subagent, schedules, approval-gated writes, and golden evals judged by a separate model. The engineering is the trust boundary drawn through those primitives so a model that reads attacker-controlled text can reach only typed, tenant-scoped tools, audited in CI. Pre-launch; the successor to KiwiCV, not the live service. - [EasyDoge KM: a Dogecoin key-management SDK](https://www.simonbetton.com/case-studies/easydoge-km.md): A personal, MIT-licensed Dogecoin key-management SDK: one Rust implementation behind Swift, Kotlin, Expo and terminal surfaces, an inputs-only cross-check against an independent bitcoinjs engine, and a bridge wire contract that replaced lossy JavaScript numbers with decimal strings. - [expo-device-auth: a local biometric and PIN gate for Expo apps](https://www.simonbetton.com/case-studies/expo-device-auth.md): An MIT Expo library for a local biometric and PIN gate. The controller is tested on Node without a device, PINs are stored as PBKDF2 verifiers, lockouts belong to the app rather than the OS passcode, and the contract 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): Tech Lead at DDB New Zealand and lead developer on Steinlager's 2017 Lions tour airport installation: Raspberry Pi cameras posting a face-presence percentage, Intel NUC screens polling a JSON API through a signage CMS proxy, a human-gated pairing model, and a failover mode that kept screens cycling when the camera or network dropped. - [GeminAI Rising: rebuilding a live classroom game's host instead of patching it](https://www.simonbetton.com/case-studies/geminai-rising.md): Sole engineer on the 2021 rebuild of GeminAI Rising, the cooperative classroom game DDB Canada made for Alberta Health Services: I judged the inherited Express build could not be patched into something I could vouch for, rebuilt the host on AdonisJS around the classroom's own nouns, and carried the React screens across. It is the host that runs at geminairising.ca today, and the programme was still being presented to Alberta teachers in 2026. - [GetSetUp: one content layer for the learner app and for partner embeds](https://www.simonbetton.com/case-studies/getsetup-platform.md): Lead Software Engineer at GetSetUp, a live classroom for older adults. I owned the content layer, the sessions layer, the staff admin, partner attribution tooling, and the embeddable controls that let partners such as AOL show GetSetUp classes on their own sites without a second product. - [Such: Dogecoin wallet for everyday payments](https://www.simonbetton.com/case-studies/house-of-doge.md): Founding engineer on the mobile client of Such, House of Doge's non-custodial Dogecoin wallet: I was the repository's only committer for its first eleven weeks, set the package layout and layering rules, and owned the wallet, authentication and storage layers. As the team grew to 16 contributors I moved its conventions into lint, review and a versioned agent skill set, so that engineers and AI agents work the same way. - [KiwiCV: an AI document pipeline with a fail-closed evidence gate](https://www.simonbetton.com/case-studies/kiwicv.md): Sole engineer on KiwiCV, my own shipped CV and cover letter rewriting service for the New Zealand job market. A durable multi-stage pipeline pauses for the customer to confirm their extracted career facts, supplies that evidence to the rewrite, and runs a separate audit model across two bounded repair rounds. The pipeline saves nothing if the audit still reports unresolved claims. Model calls run through a three-vendor gateway chain and are traced and scored per run. Distinct from cv-agent, an in-progress successor. - [Re:scam: an email bot that wastes scammers' time, from campaign to licensable product](https://www.simonbetton.com/case-studies/netsafe-rescam.md): Sole engineer on Re:scam, DDB New Zealand's scam-baiting email bot for NetSafe. Launched November 2017, it won eleven Effies across the 2018 New Zealand and 2019 APAC competitions, drew around 210,000 forwarded scam emails per NetSafe's Effie case, and was featured by IBM at a European AI conference. I then led the 2019 rebuild for licensing to Westpac Australia: explainable scam scoring, Algolia retrieval of human-written replies, queue-isolated intake, and infrastructure as code. The Australian instance was built, tested and reviewed, and never launched. - [OneTwo: HLQ, home-loan workflow automation inside ANZ](https://www.simonbetton.com/case-studies/onetwo.md): Technical Lead of the HLQ team at OneTwo, ANZ's automation subsidiary: auditable home-loan workflows with human fallbacks, around 40 task UI variants built from shared patterns, engineers growing into independent ownership, and document-viewer improvements informed by Splunk and operator feedback. - [OnlyDoge: a Dogecoin block explorer and analytics platform](https://www.simonbetton.com/case-studies/onlydoge.md): Sole engineer on a public Dogecoin indexer, explorer and tool-using AI analyst. Read-only tools supply chain data; requests matching financial-advice patterns are refused before the model, model-authored SQL is parsed and bounded by the service that owns the data, and degradation reports the indexer's real readiness. - [Rates API: New Zealand lending rates as a public JSON contract](https://www.simonbetton.com/case-studies/ratesapi.md): A public, keyless JSON API of New Zealand lending rates that I have built and run alone since February 2024 on Cloudflare Workers and D1. Scheduled scraping into daily snapshots, 13 versioned REST routes and 12 MCP tools sharing one set of lookups, OpenAPI generated from the schemas that validate traffic, and an April 2026 replatform protected by contract tests. - [TVNZ OnDemand: HTML5 catch-up TV apps inside Brightcove App Cloud](https://www.simonbetton.com/case-studies/tvnz-ondemand.md): Client architecture for TVNZ's iPad and iPhone OnDemand apps, built at Digital Arts Network in 2012 and 2013 as HTML5 inside Brightcove App Cloud. Decoded-image budgets, batched catalogue rendering and view teardown handling on a WebKit without Nitro. - [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.