2026-09-23·by Sijie Wang#software#project#flexmesh

measurement-stack

The measurement stack

What one person built, solo, to instrument a niche delivery app — verifiable in the repo and by running the tools:

  • Two GA4 properties (web 486642492, app 493986654) with the discipline to keep their claims apart.
  • Over 70 typed analytics events in the Flutter app (analytics_service.dart) — onboarding, auth, route, camera-permission ladder, OCR sub-steps, delivery outcomes, referral hooks (invite_driver, join_community) — instrumented before there were users to measure.
  • A failure-side layer (2026-07 → 09): the AUTO gate is declared once and instrumented by a decorator (gate-spec-and-telemetry-decorator); its timeout event carries the detector's own verdict and what ML Kit saw (gate-events-carry-the-verdict); every parameter the app sends is registered as a GA4 dimension in the same change (ga4-schema-completion). Reading it has its own rule: subtract the developer's phone and the store's test robots first (subtract-your-own-phone-and-the-robots).
  • A consolidated analytics CLI (tools/ga4.mjs): one tool, thirteen subcommands (dashboard / funnel / churn / ocr / gate / firstrun / activation / versions / paths / attribution / retention / cta / who), simulator traffic excluded by default — refactored from a pile of one-off scripts into an instrument. Ran first-try on 2026-07-10; gate splits by app version because the gate's conditions themselves changed between releases.
  • Competitor intelligence scrapers (LinkedIn/X, config-driven, multi-company) over Circuit, Route4Me, OptimoRoute, Routerra et al.
  • Analysis with teeth (funnel-analysis-2026-07-07.txt): a full acquisition-to-activation decomposition whose section 8 overturns its own section 7 — version-slicing revealed that "users open the camera and don't scan" was largely an old-iOS camera bug, not user behavior, and the document says so and rewrites its conclusion. It closes with the methodology as a rule: slice by appVersion before attributing anything to behavior. Self-correcting analysis, in writing, is the rarest artifact in the folder.

The point for the record: whatever the growth question's answer turns out to be (growth), measurement was never the gap — the instrumentation here is beyond what most funded teams run.

read next
about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →