Project 01 · iOS app

PinTrace

A low-friction scorecard and reflection tool for competitive golfers.

My role
Independent developer and product designer
Platforms
iPhone, iPad, Apple Watch
Status
Live on the App Store
Timeline
Grade 11 – present
PinTrace on iPhone: the last-ten-rounds overview and fast scoring

The problem

As a competitive golfer I kept using scoring apps that reduced a whole round to statistics. They recorded a lot, every hole, every putt, which club I hit, but the analysis was narrow. They recorded the outcome and told me almost nothing about the decisions and repeated patterns that produced it. After a season of data I still could not answer the question that matters between tournaments: what should I practise this week?

So I built my own: a native iOS app with the scoring workflow, the golf bag and club-distance system, round history, performance analysis and the data model underneath.

What PinTrace does

  • Scoring that keeps up with play. A hole takes seconds: strokes and putts, or shot by shot with lie, club, distance and result. Mandarin voice entry, Lock Screen and Apple Watch scoring for when the phone stays in the bag.
  • Strokes gained, not just averages. Every shot is measured against a tour expected-strokes baseline, adjusted for lie and distance, so the app can say which part of the game is costing strokes.
  • A plan, not just a report. Round reviews point at the costly holes; training plans, practice lists and a weekly report card close the loop, with a verdict on whether the practice is actually working.
  • Your data stays yours. No accounts, no ads, no tracking. Records live on the device and sync through the player's own private iCloud, and can be shared with a parent or coach.
ScorecardRound reviewTrends

What I got wrong

Publishing the first version was the technical milestone. Testing it through my own tournament rounds was the real test, and it told me two things I did not want to hear:

  • I had defined the user too broadly. Trying to serve every golfer made the app heavier for the one I understand best: a competitive junior between tournaments.
  • I leaned too hard on collecting data. Detailed shot-by-shot input interrupts play, and more statistics do not produce better insight on their own.

What I am proudest of is what came after: asking whether I had built the right experience instead of adding more features to the wrong one. A finished first version is evidence for the next one, not the end of the project.

Where it is going

PinTrace is becoming a low-friction reflection tool for competitive golfers. Everything new has to serve that loop:

  • Score fast, reflect later. Scoring stays a few taps a hole; the thinking happens after the round, not during it.
  • Shot footprints. Important shots compared across several rounds on the same course, so recurring tee-shot and approach patterns become visible.
  • Ask about your own patterns. AI answers that start from the player's summarised data and are saved with the evidence they used, as a subscription outside mainland China.
  • Let a coach see it. A coach view, so the patterns a player finds can turn into practice a coach assigns.

Decisions that shaped it

Local-first, no accounts

Juniors' golf data is personal, and most of them never asked for another login. I chose to keep everything on the device and in the player's own iCloud, which meant building sync and family sharing on Apple's CloudKit instead of running a server. When paid AI answers arrived later, the server I added only forwards a request and stores no golf data.

Rules before models

The in-app coach runs on transparent statistics rules on the device. I also trained and evaluated small on-device language models to answer golf questions. They could pick the right topic, but they could not answer reliably enough to trust, and averaged scores hid the failures that mattered. I kept the rules for anything the app decides on its own, and AI answers only happen when the player asks, through a cloud model, with the player's data summarised on the device first.

Test where golf is played

Simulators do not walk eighteen holes. Every release goes onto a course with me first. One round before version 1.4 turned up six bugs that no automated test had caught. All six were fixed and re-checked on the course before release.

A hard quality gate

About 3,000 logic tests and 3,800 in-app tests must pass before any build is archived. If one fails, the build does not ship.

Shipping it

App Review rejected the first submissions under guideline 5.2.5, over how Apple Weather data was attributed. I fixed the attribution, recorded a walkthrough for the reviewer, and the app was approved in October 2026. Days later, version 1.4 added training plans, Apple Watch and Lock Screen scoring, and on-course green marking.

How it is built

PinTrace is a native SwiftUI app with CloudKit sync, WeatherKit, on-device speech recognition and StoreKit subscriptions, plus a small Cloudflare Worker for hosted AI answers.

I wrote the requirements and designed the system, used AI coding agents (Claude and Codex) to accelerate the build, and reviewed, tested and debugged every stage myself. One agent implements each change on an isolated branch, another reviews it, and the full test gate decides whether it can merge; what gets built, what changes and what ships is my call. I open-sourced the tooling behind this workflow:personal-ai-orchestrator andlongtask-ralph.

Also on the list

  • Availability in mainland China, pending the required app filing.