18

months of public changelogs

9

live course tracks

62%

cohorts that ship a memo in week two

11

cities represented last intake

3.9 / 5

internal rubric from exit interviews

RI
MC
JP
AH
EN

Contributor desk

Field notes from Rowan, Mina, Jonah, Amelia, and Elliot anchor the changelog; each maintains at least four published briefs per quarter so the strip stays honest.

Article counts stay visible in the internal wiki only—this public strip emphasizes faces and ownership so you know who signs off on each measurement recipe.

Hero quickstart

Measure what actually grows

$ nsrl init --stack shopify_plus
> syncing cohort models…
> leakage notes appended (3)
> publishing memo draft to /ops/memos/2026-05-attrib.md
status: ready for review

Running the installer drops a memo skeleton and a SQL lint profile so your terminal output mirrors what we expect in office hours. You see the same success lines our instructors demo live—no hidden wizard steps.

Scroll for API preview

Preview · API

GET /cohorts/latest

200 OK · 182ms

Typed measurement notes on paper

Preview · Templates

Attribution memo v14 ships with leakage tables prefilled.

Tutorials grid

How-to index with honest read times

Each entry is written like internal documentation: direct verbs, explicit prerequisites, and a disclosure when a shortcut would break compliance. Search filters the grid instantly, and the accordion keeps dense steps off the main canvas until you need them. Read times are estimates from live cohorts, not aspirational marketing minutes.

Walks through event naming, dedupe keys, and a reconciliation spot-check against Shopify net sales. Expect to break at least one assumption about match rates.

API reference preview

Most-called endpoints, lightly framed

We treat the analytics “API” like a product surface even though most of you will never hit a REST edge case. The playful cards below highlight the verbs operators actually call during office hours: pulling cohort slices, attaching leakage annotations, and publishing memo drafts back to your wiki. Each card nods to rate limits we enforce so a single runaway query cannot drown a shared warehouse. Error bodies are intentionally verbose because finance readers often trace IDs back to invoices. Auth is boring on purpose—service accounts with scoped roles, rotated quarterly, no shared passwords in Slack threads. When a card says “experimental,” it means the payload may change with a seven-day notice posted to the changelog. We keep deprecated fields visible for two releases so your dbt tests fail loudly instead of silently. Finally, the whimsical icons are there to remind you these endpoints are guardrails, not toys—if a card makes you smile, it should still list the sobering limitation in the footer copy.

GET

/cohorts/{id}

Returns net revenue with leakage notes inline.

POST

/memos

Creates a draft memo shell with reviewer slots.

PATCH

/metrics/{slug}

Annotates a metric with deprecation warnings.

Code blocks

Reference-grade snippets

  • Each column mirrors a kanban lane: language chip pinned to the corner, body scrolls independently.
  • Copy buttons use the async clipboard API with a silent fallback for locked-down browsers.
  • SQL sample shows cohort hygiene first, aggregation second—mirrors how we teach in live clinics.
  • TypeScript sample encodes leakage notes as a bounded array to force brevity in dashboards.
  • GraphQL sample exposes leakage objects so API consumers cannot pretend the slice is pristine.
SQL
-- cohort revenue snapshot
WITH cleaned AS (
  SELECT order_id, gross_krw, refund_krw
  FROM shopify_orders
  WHERE test = FALSE
)
SELECT DATE_TRUNC('week', occurred_at) AS week,
       SUM(gross_krw - refund_krw) AS net_krw
FROM cleaned
GROUP BY 1
ORDER BY 1 DESC
LIMIT 12;
TypeScript
type CohortMetric = {
  cohort: string;
  netKrw: number;
  leakageNotes: string[];
};

function assertBounded(notes: string[]): string[] {
  if (notes.length > 3) throw new Error("Leakage notes capped at three bullets.");
  return notes;
}
GraphQL
query CohortSlice($window: String!) {
  cohortSlice(window: $window) {
    id
    netRevenue
    leakage {
      code
      severity
    }
  }
}

Newsletter signup

Signal desk: free tier vs paid tier

Choose the lane that matches how often you ship measurement changes. Paid tier unlocks annotated briefs and office-hour transcripts; free tier stays lightweight on purpose.

  1. Read the comparison table below and note which deliverables you actually need.
  2. Pick a tier; paid requests are reviewed manually within two business days.
  3. Submit a work email so we can route you to the correct cohort digest.

Free tier

  • Monthly changelog highlights
  • Single-page metric glossary updates
  • No office-hour recordings

Paid tier

  • Annotated briefs with instructor notes
  • Office-hour transcripts with redacted questions
  • Early access to template diffs

No checkout here—this is an informational capture for our team to follow up.