MagicEdit
Used machine learning to mostly automate the part of the app people liked least: editing their round after playing.

The short version
Every Arccos round is supposed to end with the golfer reviewing their sensor data and fixing what the sensors got wrong. Almost nobody did it. Bad data piled up and the analytics got less trustworthy. The core of the product eroded round by round. In a two month sprint with data science, we shipped MagicEdit: the golfer confirms their scorecard and machine learning cleans up the rest. Most holes verify automatically. The golfer only looks at the few the model isn't sure about. Rounds that used to go unedited now get cleaned up in about a minute.

The problem
After four hours of golf, the last thing anyone wants to do is scroll through 18 holes dragging shot markers around a map. So they didn't. Most rounds went unedited, so the stats they fed were wrong. Stats are the whole reason people pay for Arccos.
We had just rebuilt the in-play experience, which made fixing shots during the round fast. Post-round cleanup still read as a repair job, so people skipped it.
What I heard
I watched golfers go through their post-round routine and spent the better part of a week with the support team reading tickets. Two patterns kept surfacing.
The scorecard is what golfers trust. If the score looked right, they were satisfied. Individual shots could be in the wrong spot, but as long as the total added up, they moved on. The scorecard was what correct meant to them.
Editing felt risky. People worried they'd delete a real shot or drag something to the wrong place and make their round worse. The undo path wasn't obvious. Safer to live with slightly wrong data than to touch it.
One ticket made the risk feel concrete. A golfer had tried to clean up a round, accidentally removed a shot he'd actually hit, and couldn't find a way to get it back. He asked support to restore the round from a backup. There was no backup. Support told me his account hadn't logged a single edit since.
The invisible version
My first direction leaned all the way into the magic. Finish your round, and overnight the model silently cleans everything up. The activity feed showed a small "round verified" badge and nothing else. No steps, no review. In design reviews it felt great: full automation with zero effort from the golfer.
Then we put a prototype in front of a handful of beta testers and it fell apart in the first session. One tester noticed his fairway percentage had shifted from the night before and wanted to know why. We pointed at the badge. He asked what it had changed. We had no answer on the screen, and without one he trusted the data less than before we cleaned it. Silent fixes read as tampering.

The correction was clear. If the system is going to change someone's data, it has to show its work. That one insight produced most of what shipped: the confirmation step, the verified-hole summary, and the confidence indicators on flagged holes.
The confidence threshold
The model scores its own confidence hole by hole. Somewhere there's a threshold: above it, holes verify automatically; below it, the golfer gets pulled in. That number turned into the most contested decision of the project.
Data science pushed for an aggressive setting. On paper the model was right the overwhelming majority of the time, and flagging holes it would almost always handle correctly just added friction back in. My argument came straight from the research: the failure modes aren't symmetric. A hole flagged unnecessarily costs the golfer ten seconds. Deleting a real shot silently is the exact failure that made people afraid to edit in the first place. One golfer who watches a genuine birdie disappear tells his whole foursome the data can't be trusted.
Aggressive
Auto-fix nearly everything, flag almost nothing. Best case feels like pure magic. Worst case deletes a real shot, and the golfer finds out later from his stats.
Timid
Flag any hole where sensors and scorecard disagree at all. Nothing gets wrongly deleted, but half the round needs review and we're back to the old chore.
What we shipped
Auto-verify when the sensor data and the confirmed score agree cleanly, flag when they don't. On a typical round that means 16 of 18 holes handled and two flagged for review.
We ended up settling it with two rules.
The model proposes, it never deletes. On flagged holes nothing changes without the golfer.
A confirmed score is a hard constraint. The cleanup can't produce a hole that contradicts a number the golfer just signed off on. That second rule is the reason the scorecard step exists. It gives the model ground truth to clean against.
Scorecard first
Instead of asking golfers to check every shot on every hole, the flow starts with the one thing they already believe in. Confirming your scorecard is the same motion as signing a card at the clubhouse, familiar and low stakes. Once scores are locked in, the model compares the sensor data against those confirmed numbers and cleans up the shots automatically.



Hole review
When the model finishes, a summary says exactly where things stand: 16 of 18 holes verified, 2 need a look. Nobody has to scroll the whole round hunting for problems.
Flagged holes show the shot trace on the map with confidence indicators, so the golfer can see exactly what the model is unsure about and make the call in a few seconds. Nothing on a flagged hole changes without them.
I resisted the confidence indicators at first. Showing uncertainty felt like admitting the model wasn't good enough. Testers read it the opposite way. The flags were the reason they believed the clean holes.



Testing the flow
We ran the prototype with beta testers over two weeks, mostly remote sessions right after they'd finished real rounds. The sessions changed the shipping version in three ways.
Rubber-stamping
Testers blazed through score confirmation without reading it, which would have fed the model bad ground truth. We started highlighting holes where the detected score looked unusual, a 9 on a par 3, so attention lands where errors actually live.
Show the receipt
Even when every hole verified cleanly, testers wanted to know what the model had done. We added a plain summary to the completion screen: shots removed, putts adjusted. Most people probably read it once and never again, but they wanted it there.
The parking lot test
Most testers ran the flow in the parking lot or at the bar. One thumb, half their attention. Anything that required reading a paragraph or precise dragging got cut or moved behind the flagged-hole review.
Two months didn't leave room for a second big swing. The invisible version had already burned close to three weeks, so every one of these fixes had to be small. A highlight here, a reordered screen there. None of them touched the model.
The activity feed
The old activity feed treated Edit as a peer of View, a gray button nobody tapped. I redesigned the feed so unedited rounds carry a prominent MagicEdit call to action. The feed now tells you which rounds still need attention, and the flow behind that button is short enough that people actually run it.


Results
Under a minute
Editing a round went from a chore most people never started to a quick review. Most testers finished it before they left the parking lot.
More rounds reviewed
The share of rounds getting any post-round attention roughly doubled in the first month, pulled by the new feed and the shorter flow.
What I learned
Automation has to show its work. I designed the invisible version first because it felt like the purest expression of the idea. It was wrong, and one testing session proved it. The model being right wasn't enough. People needed to see what it did before they'd believe it.
Borrow a ritual instead of teaching a behavior. My instinct was to cut the scorecard step. It looked like friction, one more screen between the golfer and done. It turned out to be the thing the whole flow hangs on. Golfers have been signing cards for as long as the game has existed. We didn't have to build trust in it, they already trusted it.
The threshold is a design decision. For the first couple weeks I treated the confidence cutoff as a data science problem and stayed out of it. That was a mistake. Where the line sits between automatic and manual is the user experience, and I should have been in those conversations from day one.