Metrics
A Metric is an outcome you want to hold your workspace to, defined once and computed for you from then on. Instead of asking someone to pull a report at the end of a pilot, you name the number up front — "AI resolution rate", "agent handoff rate", "active members in the onboarding cohort" — and Gravity Rail measures it after every conversation or on a daily schedule, keeps the history, and exports it.
Metrics live at /w/{wid}/metrics.
Metrics replaced Milestones and Goals. A Goal was a target number of members matching a filter by a certain date. That is now a Metric with a target — with the added benefit that the number is stored over time, so you can see the trend rather than just today's count. Existing goals were converted automatically.
The three kinds of Metric
When you create a Metric, the first thing you choose is how it gets its number. This choice is permanent, because changing it would silently change the meaning of every reading already recorded.
| Kind | How it computes | Good for |
|---|---|---|
| AI rubric | An AI reads each finished conversation and grades it against a question you write | Judgements a rule can't make — "was this resolved?", "did they show buying intent?" |
| Expression | A deterministic rule over conversation and assignment data | Facts the system already knows — "did this hand off to a human?" |
| Cohort size | Counts the members matching a saved filter, once a day | "How many members have completed onboarding?" |
Starting from a template
If your workspace has no Metrics yet, the page offers three ready-made pilot KPIs. Picking one fills in the whole definition, including the grading question or the rule. You can edit anything before saving.
| Template | A reading scores 1 when… |
|---|---|
| Escalations (Agent Handoff Rate) | The Chat was transferred to a person. |
| Resolution rate (AI Conversation Resolution Rate) | The Agent resolved the issue without a person taking over. An escalation or an unresolved abandonment scores 0. |
| Buying intent (Qualified Engagement Rate) | The member showed buying intent or qualified as a sales lead. A response can be substantive and still score 0 if it does not show buying intent. |
Units decide how a number reads
The unit you pick controls how the value is displayed everywhere:
- Rate — a 0–1 ratio shown as a percentage. Use this for anything phrased as "…rate".
- Score — a 0–1 value shown to two decimals, for graded quality rather than a yes/no outcome.
- Count — a whole number. Cohort sizes use this.
- Custom — no special formatting.
Targets
Any Metric can carry a target value and a due date. When it does:
- The metric's card shows a progress bar — green once met, amber once the due date passes without it being met.
- The detail chart draws the target as a dashed line, so you can see how far off you are at a glance.
- The Metric targets dashboard widget lists everything with a target and its progress.
Targets are optional. A metric without one is simply tracked, not graded — and it won't render a progress bar at all, rather than showing a misleading 0%.
Reading a Metric
Open any Metric to get:
- A range picker (7, 30, or 90 days).
- Stat tiles — the headline value, how many readings it came from, progress toward the target, and the denominator the rate divides by.
- A chart over time. Counts render as bars; rates, scores, and cohort sizes render as a line.
- The definition — the exact rule or grading question, the denominator, and the attribution window. This is what settles a disagreement about a number later, so it's worth writing a clear description when you create the metric.
- The readings behind the chart, each linked to the conversation it came from.
Averages vs. latest
For Chat metrics the headline is an average across the selected window. With the Observations denominator used by the pilot templates, a yes/no rate is the number of readings scored 1 divided by the total number of readings. For example, three escalations across nine readings display as 33.3%. The readings stat tile shows that denominator; if it includes Chats outside your test set, the headline will not match a calculation based only on that set.
With the Unique Members denominator, Gravity Rail first keeps each Member's highest reading in the window, then averages those per-Member values. This prevents several Chats with one Member from giving that Member more weight than anyone else.
For cohort sizes the headline is the latest reading — adding up a daily headcount would count the same people once per day. Gravity Rail picks the right calculation for you.
Grader notes and patient data
When an AI rubric grades a conversation, it records a short explanation of its score. Those notes quote conversation content, so they are patient data.
- They are hidden by default in the readings table. Turn on Show grader notes to see them.
- Anyone viewing them needs the
analytics:readscope. - Exporting them is recorded in the audit log.
Exporting
The Export button offers two CSV formats:
- Aggregate — one row per time bucket, numbers only. Safe to paste into a spreadsheet, a deck, or a customer email.
- Raw readings — one row per reading, including grader notes. This is a patient-data export and is audit-logged. Use it when you need to show your work.
Pausing and archiving
- Pausing a metric (turning off "Compute this metric") stops new readings. Everything already recorded is kept.
- Archiving hides it from the list without deleting its history. Turn on Show archived to find archived metrics again.
Who can do what
| Action | Scope |
|---|---|
| View and create metric definitions | workspace:read / workspace:write |
| View readings, charts, and exports | analytics:read |