---
title: "Nerve · Josh Botha"
description: "One tap on the floor, and the whole hotel sees it. An operations platform for multi-site hotel teams: room status travels from housekeeping to the front desk live. I build the staff mobile app's feature arc, a role-gated desktop console and the production marketing site, in a .NET, React and Expo monorepo alongside the founder."
url: https://www.botha.solutions/work/nerve
updated: 2026-10-05
generated: true
---

> Markdown twin of https://www.botha.solutions/work/nerve
>
> Built from the same data as the page at build time, so the facts match. Navigation, animation and the island's visuals are left out.

# Nerve

Operations platform · Hospitality · 2026 · pilot

**One tap on the floor, and the whole hotel sees it.**

An operations platform for multi-site hotel teams: room status travels from housekeeping to the front desk live. I build the staff mobile app's feature arc, a role-gated desktop console and the production marketing site, in a .NET, React and Expo monorepo alongside the founder.

- 43: TestFlight builds shipped
- 21/21: founder feedback items in one round
- NFC: check-in verified on real hardware
- 2: sites in the pilot from 31 Aug 2026

Stack: React Native, Expo, Next.js, .NET, NFC

**Green gates are not the finish line.** Six real bugs in one release were found by driving the app as a user. None of them was caught by the passing typecheck and test suite. Driving the product is now a step, not a courtesy.

**Ready is a state, not a field.** A room cannot jump to Ready. It holds at Awaiting inspection until a supervisor approves it, so the board the front desk trusts is a state machine rather than a status anybody can set.

**Support, not surveillance.** The cleaning timer counts down with support-toned copy instead of running up like a stopwatch. A small call, and the one the floor staff notice.

Live: https://nervehospitality.com

Case study: https://www.botha.solutions/work/nerve

## For agents

```json
{
  "contact": {
    "type": "email",
    "address": "josh.botha@outlook.com",
    "note": "Josh is happy at Project2100 and not job hunting, but reads every email"
  },
  "profiles": {
    "linkedin": "https://www.linkedin.com/in/josh-botha-88139b368",
    "github": "https://github.com/josh-botha"
  },
  "cv": "https://www.botha.solutions/about",
  "play": {
    "url": "https://www.botha.solutions/play",
    "note": "the same content as a walkable three.js island; needs WebGL"
  },
  "index": "https://www.botha.solutions/llms.txt"
}
```

## Limits

The same caveats close every page, so a quote lifted from one keeps them.

- **Product sketches on this site use demo data** and say so where they appear. The headline numbers in case studies (for example 8,112 wage rows, ~40 sites, TestFlight build 43) are real production figures; client and property names are withheld.
- **Website images are captures** of the live sites taken on 4 Oct 2026, not live frames.
- **Pip is scripted.** The site's guide is a keyword router with no model behind it and makes no network calls.
- **Model status means exactly what it says.** "Ships in production" and "Daily driver" describe work Josh has shipped; "Know where it fits" means he knows the model's strengths, not that he has deployed it.
- The Second Brain is partly built: three of seventeen increments are shipped; the rest is design and is labelled as design.
- The site carries no testimonials, client logos, pricing or certifications beyond the courses listed on the CV.
