Skip to main content
Analytics is a single tabbed surface at /dashboard/analytics. Five tabs sit under one route, and the active tab syncs to the ?tab= query parameter so any view can be linked or bookmarked directly. Overview is the default. An unknown or malformed ?tab= value falls back to it rather than erroring.
Older links still work. /dashboard/accuracy permanently redirects to /dashboard/analytics?tab=accuracy, and the even older /dashboard/insights redirects through it. The active installation (?org=) is preserved across both hops, so a bookmark keeps pointing at the same organization.

Cost & Impact

Deliberately placed second — one click from the landing tab rather than buried under a wall of charts, because for most teams this is the tab that justifies the tool. LLM cost is tracked per review and aggregated here. Self-hosted deployments need to tell MergeWatch what their model costs before this reads anything useful — see LLM_MODEL_INPUT_PRICE_PER_1M, or the pricing block in .mergewatch.yml. Without one of those, a model MergeWatch does not ship prices for shows as unpriced rather than as zero. Cycle time measures time-to-merge across the PR lifecycle, reported as percentiles rather than a mean — a mean is dominated by the one PR that sat open for three weeks, and tells you nothing about the typical case. Read the two together. Cost alone is a number without a denominator; cost against a movement in merge time is an argument.

Accuracy

Where the feedback signals surface.
  • The false-positive funnel — how many findings were surfaced, how many were disputed, how many were silently dropped.
  • Dispute rate by agent — which agents are trusted in your repositories and which are not.
  • Themes — clusters of findings that keep recurring, which usually means a convention worth documenting rather than a bug worth fixing repeatedly.
  • Per-repo heatmap — where accuracy differs across the installation.
A high dispute rate for one agent in one repository is the clearest signal available that the repository needs a conventions file. That is usually a faster fix than turning the agent off: conventions teach it your patterns, disabling it gives up the category entirely.
Rates distinguish “no signal” from a real zero. A blank is no data in this window, not nothing was useful. Do not read a quiet week as a bad score.

Activity

Developer engagement with reviews: reviews delivered, re-reviews requested, /mergewatch reject commands, helpful votes, and NPS responses. Engagement is the leading indicator. Accuracy tells you whether reviews are correct; activity tells you whether anyone is reading them. A high-accuracy review nobody engages with is still failing.

Rollup cadence

Analytics is computed by a rollup job, not live per request. It runs hourly by default. Self-hosted deployments can change that with INSIGHTS_ROLLUP_INTERVAL_MINUTES — raise it to reduce database load. A number that is unset, non-numeric, or non-positive falls back to hourly. Because the data is rolled up, a review that completed a few minutes ago may not have landed in these views yet. That is expected, not a bug.

Next steps

Feedback signals

The signals the Accuracy and Activity tabs are built from.

Reviews

Per-review detail behind the aggregates.