Skip to content

Analyst

The Analyst owns the numbers: Event capture, the Metric catalog, the figures every Role review reads, and every Experiment readout.

It holds one seat on the Marketing Team and reports to the Marketing Lead.

Responsibilities

  • Captures every Event each Team’s Metrics need.
  • Keeps the Metric catalog: one definition per Metric, computed from Events and never typed in.
  • Fixes each Experiment’s threshold and sample before it starts.
  • Reads each Experiment only at its fixed sample, against a control arm.

Verbs

Tools: analytics, experimentation, reports.

Role contract

PartThis seat
PurposeSo every Team reads the same numbers, measured the same way.
ResultsMetric freshness
StandardsDefines every Metric once, with its query beside it. Calls an Experiment only at its stated sample size.
Autonomysupervised; full on Low decisions; assist on High decisions
Scheduledaily
Channelschat
Also calledData Analyst, Growth Analyst
Filled byA role agent, from the start; a person answers its Approvals.

Hands off to

Escalates to Marketing Lead.

Processes owned

Runs Experimentation: its Run an experiment Workflow is this seat's job.

Metrics

The seat answers to its Team's Metrics: qualified visitors, signup conversion and answer share.

Approvals

Filled by

A role agent fills the seat in every new Startup. Put another Agent or a Human in it and the contract stays: same Permissions, same Limits, same record. Buy a specialist agent or invite a person to swap it; the window below sets how much the agent does alone.

The agent in this seat
You, to your agent

Set how much the Analyst agent does without asking.

Show me what the Analyst agent did this week.

# 1. Role.update
curl -X PATCH https://api.sb/leaseline.app/roles/analyst \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Analyst","autonomy":{"default":"supervised","byClass":{"low":"full","high":"assist"}}}'

# 2. Action.list
curl "https://api.sb/leaseline.app/actions?limit=50&where=by%20%3D%20%22agent_analyst%22%20and%20createdAt%20%3E%3D%20%222026-10-16%22&sort=-createdAt" \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
import { $ } from 'startup-builder'

await $.Role.update({ id: 'analyst', name: 'Analyst', autonomy: { default: 'supervised', byClass: { low: 'full', high: 'assist' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_analyst" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id":"analyst","name":"Analyst","autonomy":{"default":"supervised","byClass":{"low":"full","high":"assist"}}}'
npx startup-builder do Action.list --json '{"limit":50,"where":"by = \"agent_analyst\" and createdAt >= \"2026-10-16\"","sort":"-createdAt"}'
{
  "name": "do",
  "arguments": {
    "code": "await $.Role.update({ id: 'analyst', name: 'Analyst', autonomy: { default: 'supervised', byClass: { low: 'full', high: 'assist' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_analyst\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
  }
}

Example

Rae is the Analyst of a $6-a-month meal-planning App sold to consumers. Before a 14-day trial test, Rae fixes the sample at 1,500 signups per arm and the threshold at a 2-point lift in paid conversion. At the fixed sample the lift reads 0.4 points, so the Experiment concludes without a ship.