Webster.dev
Portfolio OS for a Tri-AI operating loop.
Webster Toh — coach and systems builder in Singapore. Open for 1:1 training and small automation work. Public intake is a GitHub issue.
Claude plans, Perplexity validates, and Cursor executes against a shared Notion source of truth.
Public identity
Webster Toh — coach and systems builder.
Repository-safe facts only. No client names, course pricing, private brands, or unpublished case studies.
01 · Coach
Gymnastics coaching and personal training in Singapore. Client names and private schedules stay off this site.
02 · Builder
Ships automation systems and this public Portfolio OS through a Tri-AI operating loop.
03 · Singapore
Based in Singapore. Public copy stays limited to repository-safe facts until Claude approves more.
Who this is for
Singapore coaching and small systems work.
A fit filter so the public issue stays useful. If the work is a shop, an unpublished brand, or a private schedule, it does not belong on this page.
01 · Singapore 1:1
Personal training and gymnastics coaching in Singapore. No calendar, prices, or gym names on this page.
02 · Small systems
Automation and operating-system work that can use this public repository as proof. Not a shop or private dashboard.
03 · Not this page
Unpublished brands, shops, client lists, and private schedules stay off the public site. Use a GitHub issue, not email.
Work with me
Currently open for coaching and systems work.
Public lanes only. Private shops, course funnels, and unpublished brands stay in Notion until Claude approves a public brief.
01 · Coaching
Open for 1:1 personal training and gymnastics coaching in Singapore. Booking links stay off this page until a public calendar exists.
02 · Systems
Open for small automation and operating-system work. This repository is the public proof, not a shop or private dashboard.
03 · Public only
No unpublished brands, prices, or client lists here. The public intake is a GitHub issue on this repository until a contact form is approved.
How to start
Public intake is a GitHub issue.
No personal email, shop checkout, or unpublished brands on this page. Open an issue on the public repository and wait for a reply there.
01 · Coaching
Open a public GitHub issue titled Coaching. Say Singapore 1:1 training or gymnastics coaching. No calendar or prices on this page.
Open a coaching issue02 · Systems
Open a public GitHub issue titled Systems. Point at this repository as the public proof. Shops and unpublished brands stay off this site.
Open a systems issue03 · Then wait
Replies happen on the issue. No auto-deploy, no personal email, and no private dashboards from this page.
View open issues
After you write
Replies stay on the issue.
Coaching is Singapore-based. Systems work is discussed on the same public issue. No auto-send, shop checkout, or unpublished brands.
01 · Singapore time
Replies land on the GitHub issue in SGT (UTC+8). There is no auto-reply and no personal email from this page.
02 · Keep it public
Do not put private schedules, medical notes, or unpublished brand names in the issue. Public intake stays public.
03 · What happens next
Webster reads the issue and replies there. A calendar, deposit, or contact form is not on this site yet.
Operating loop
Three roles, one shared plan.
The public site stays factual: it describes the workflow, not invented personal claims.
01 · Claude
Strategy, planning, and briefings
Turns Notion context into priorities, questions, and next moves before execution starts.
02 · Perplexity
Research and validation
Checks assumptions, gathers external evidence, and keeps decisions grounded in current information.
03 · Cursor
Execution
Ships code, deploy automation, and repository improvements against the shared plan.
Delivery
How this site ships.
Public facts about the repository path only — no private client or course material.
01 · Build
Next.js static export under site/, with root asset paths for the live custom-domain Pages host.
02 · Verify
CI and the Pages deploy job run lint, typecheck, production-scoped audit, homepage smoke, Playwright axe, and a local perf budget before upload.
03 · Publish
GitHub Pages receives site/out. A follow-on live verifier probes webstertoh.dev (and can hard-gate with npm run verify:live:portfolio).
Publish target
Where this publishes.
Repository-public facts from a live Pages check: the custom domain is the canonical host, asset paths are flattened for that host, and main still ships the starter until Portfolio OS merges.
01 · Live custom domain
GitHub Pages already serves https://webstertoh.dev/ (github.io redirects there). Until Portfolio OS merges, that host still shows the create-next-app starter (re-checked 2026-09-02).
02 · Root asset paths
Pages builds export at / (no /webster.dev basePath). Live check: /webster.dev/_next/… 404s on the custom domain; root /_next/… is required once Portfolio OS deploys. Smoke tests scan the whole export for basePath regressions.
03 · Verify after merge
After deploy, npm run verify:live:portfolio (also a GitHub Action) checks Portfolio OS markers, root assets, trust files, stamped /status.json (git SHA), TLS/HSTS, custom-domain http→https, HTTP HTML upgrade fallback, github.io HTTPS preference, and optional www HTTP. The export ships a <head> HTTPS upgrade for apex/www while Enforce HTTPS is still off.
Coordination
Where decisions live.
Public facts from the repository operating manuals — not private client, course, or pricing material.
01 · Notion decides
Strategy Board priorities, briefs, and message-board handoffs stay in Notion — the Tri-AI source of truth.
02 · Repo mirrors
SYSTEM.md and site/AGENTS.md mirror the operating manuals so agents can boot without guessing private context.
03 · Cursor executes
Ambiguous work is marked blocked. Public copy stays limited to repository-safe facts until Claude approves more.
Current focus
Build the portfolio foundation without inventing private claims.
- Notion is the canonical source of truth.
- Repository docs mirror the operating model for agents.
- GitHub Actions exports the static Next.js site to GitHub Pages.