Skip to content

Designer

The Designer shapes every App and Site a Startup ships, as data that renders for Humans and Agents alike.

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

Responsibilities

  • Keeps the Brand’s design system: type, color, spacing, and components.
  • Designs each screen as data, so it renders as rich UI for Humans and as Markdown for Agents.
  • Checks every Page for accessibility before it ships.
  • Reworks each flow where buyers leak most.

Verbs

VerbObjectEvent
Brand.updateBrandBrand.updated
Template.createTemplateTemplate.created
Template.updateTemplateTemplate.updated
Page.updatePagePage.updated
Site.publishSiteSite.published
Dashboard.createDashboardDashboard.created
Interface.updateInterfaceInterface.updated
Issue.createIssueIssue.created
Message.createMessageMessage.created
Thing.createThingThing.created

Reads: Offer.get.

Tools: design-system, cms, feature-flags.

Role contract

PartThis seat
PurposeSo every screen is clear to a person and readable to an agent.
ResultsPage task success
StandardsTests every new Page with five Visitors or agents before it publishes. Keeps every screen inside the Brand’s Theme.
Processes ownedBarrier reports
Autonomysupervised; full on Low decisions; assist on High decisions
Scheduleweekly
Channelschat
Also calledProduct Designer, UX Designer
Filled byA role agent, from the start; a person answers its Approvals.

Hands off to

Escalates to Product Lead.

Processes owned

Accountable for Barrier reports.

Metrics

The seat answers to its Team's Metrics: time to first value, ship rate, hand-done steps and feature use.

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 Designer agent does without asking.

Show me what the Designer agent did this week.

# 1. Role.update
curl -X PATCH https://api.sb/leaseline.app/roles/designer \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Designer","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_designer%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: 'designer', name: 'Designer', autonomy: { default: 'supervised', byClass: { low: 'full', high: 'assist' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_designer" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id":"designer","name":"Designer","autonomy":{"default":"supervised","byClass":{"low":"full","high":"assist"}}}'
npx startup-builder do Action.list --json '{"limit":50,"where":"by = \"agent_designer\" and createdAt >= \"2026-10-16\"","sort":"-createdAt"}'
{
  "name": "do",
  "arguments": {
    "code": "await $.Role.update({ id: 'designer', name: 'Designer', autonomy: { default: 'supervised', byClass: { low: 'full', high: 'assist' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_designer\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
  }
}

Example

In a directory of licensed home inspectors, the Designer is Dana. Most Visitors leave at the location step, so Dana moves search to the top of the home Page. The change runs as a variant behind a Flag until it wins.