Arccos Edge · product telemetry · 4 Jun – 27 Jul 2026
Every Edge surface fires an impression event when it scrolls into view, so three states are computable per user: never seen, seen but not used, and used. Across all 13 surfaces the shape is the same: discovery, not interest, is the constraint — though on the full history the cliff is much shallower than the first 3-day snapshot implied. Six-view marketing dashboard ↗
Blue is how many reached a surface at all; orange is the subset who acted on it — so orange always sits inside blue. The gap between them is a persuasion problem; the gap out to the rim is a navigation problem, and it is far larger. Click any spoke to open the individual events inside it, or switch to a canary account to see one person's map.
Click a spoke on the radar to open its own chart of the sub-facets inside it.
Daily users reached per surface, 7-day rolling mean — the smoothing matters, because a golf app has strong weekend seasonality that otherwise swamps the trend. Indexed from 21 June, the first point clear of the rollout ramp. Recovered from Statsig for the window Snowplow dropped.
Player Home is a lower bound before 23 July: Statsig captures ~78% of its entry impressions (verified against Snowplow on the overlap days). The bias is constant across the series, so the shape holds even though the level is understated.
Player Home +24%, Round Story +11%. More people are arriving and reaching the first screen than a month ago.
Practice AI −54%, Club Compare AI −52%, Goals −52%, Course Insights −38%. Every AI surface is shrinking while the audience grows.
Summed across surfaces the total moved +2% — so this is not a traffic problem. The same-sized audience is going less deep.
The discovery cliff is steepening, which makes the re-engagement case more urgent than a static snapshot suggests.
Discovery rate and use-once-discovered are independent. Which quadrant a feature sits in decides whether email can help it at all.
Tour Fitting — fully built and instrumented, not one event in three days. Round Replay — 6 users.
Check the Statsig gate before writing any copy. This is a release question, not a marketing one.
Course detail and its AI insights — only 2.9% get there, but essentially everyone who opens a course sees the insights card and 32% press Generate, waiting ~18s.
Email works here. Deep-link past the navigation, straight to a course.
Player home — 84.9% reach it, 9.4% act. The stats get read, not tapped.
Email won't fix this. It is a value-proposition problem in the UI.
Round Story — 30.0% reach it, 24.6% act: an 82% conversion once found.
Protect it, and copy its entry point for everything else.
Act rate = share of those who reached a surface and went on to act on it. Reached counts anyone who fired any event there, so acted is always a subset.
| Surface | Reached | Acted | Reach | Act rate | State |
|---|
Not retention, and not the bridge going live. Seven weeks of Edge telemetry were emitted and thrown away — and the backup source cannot recover it.
The iOS bridge shipped 3 June and emitted edge_event from day one. No Iglu registry existed for com.arccosgolf, so enrichment could not resolve the schema and failed every event.
The registry PR says it outright: "Prod iOS already fires edge_event ~280k/day; all are dropped."
Failed events go to a Kinesis stream with 24-hour retention and no consumer — write is granted, nothing reads. Roughly 14M events aged out.
Give that stream a sink or a longer window so the next schema mistake is replayable.
Every event also goes to Statsig, so this looked like the backfill route. It isn't. /console/v1/events returns a ~300-event live tail, time filters are ignored, and there is no export endpoint.
Only Statsig support could retrieve it server-side. Worth one email; don't plan around it.
Volume is at steady state, ~52k users/day. The window grows on its own: a full 30-day rolling view by late August.
Define adoption on a rolling window now; treat lifetime "never used" as unavailable until then.
First rows land 23 Jul at 15:00 UTC — zero at 14:00, 30,452 at 15:00 — a clean switch-flip when the enricher was redeployed against the new resolver, two weeks after the registry was created on 9 Jul.
Each flow triggers on a per-user state in the adoption model, not a blast. The states are the same three the radar uses, so the audience is computable the day the model ships.
Eligible for a surface — has the rounds, has the course history — and its impression event has never fired. One feature per send, deep-linked past the navigation.
eligible = true · discovered = false · deep link → the specific course or clubImpression fired, no action. Don't reintroduce the feature — show the payoff, using the person's own data in the subject line: their worst hole, their gap wedge.
discovered = true · used = false · cooldown ≥ 14d after impressionA personal version of this radar, mailed monthly. It exploits completionism and makes the hidden surfaces legible without naming each one.
monthly · rendered from the per-user feature-state matrixShip-date aware. Someone active before a feature shipped, who has never seen it, gets a genuine "new" claim. Everyone else gets the discovery flow, so the claim stays honest.
first_seen_app < feature_ship_date · discovered = falseUsed the summary, never went deeper. 55.8k see Player home; 3.9k reach a facet page. The largest addressable pool on the map.
player_main discovered · facet pages never discoveredReproducible, and it survives the web team shipping features without an app release.
1. Source is the registry. ANALYTICS_EVENT_NAMES in statsig.client.ts is the authoritative list — 183 events. This matters: a feature with zero usage produces zero warehouse rows, so a warehouse-only inventory can never see the dark ones. Tour Fitting is invisible in Snowflake and obvious in source.
2. The suffix convention splits the ladder — with one exception. _viewed is an IntersectionObserver impression at 50% visibility. _tapped, _applied, _generated, _shared, _feedback are deliberate acts. _load_time is normally telemetry — except on a click-gated feature, where it is the only evidence a user asked for something. Classify by whether the surface auto-loads or waits for a press.
3. Feature stems group the events. Strip the action suffix and course_detail_insights_viewed and …_regenerate_tapped collapse to one feature with two states.
4. Eligibility masks the denominator. Someone with no rounds cannot discover Round Story. Until eligibility is modelled, every number here understates reach among people who could actually get there.
Source: DATA_LAKE.SNOWPLOW.EVENTS, Iglu schema com.arccosgolf/edge_event/1-0-0, 4 Jun – 27 Jul 2026, authenticated users only; pre-23 Jul recovered from Statsig Logs Explorer (within ~1% of Snowplow on overlap days, except three Player Home entry impressions captured at ~78–80%, so Player Home is a slight lower bound).