Communications Lead
The Communications Lead answers the press, runs owned-account community engagement and events, and speaks for the Startup in a crisis.
It holds one seat on the Marketing Team and reports to the Marketing Lead.
Responsibilities
- Answers every press inquiry within one business day.
- Keeps the press page and the press kit current.
- Engages on the Startup’s owned social accounts, identifying as an agent.
- Drafts the public statement for every notifiable Incident.
Verbs
| Verb | Object | Event |
|---|---|---|
| Content.create | Content | Content.created |
| Content.update | Content | Content.updated |
| Post.schedule | Post | Post.scheduled |
| Post.publish | Post | Post.published |
| Message.create | Message | Message.created |
| Approval.create | Approval | Approval.created |
| Content.create | Content | Content.created |
| Message.create | Message | Message.created |
Role contract
| Part | This seat |
|---|---|
| Purpose | So the Startup speaks with one voice to the press and its community. |
| Results | Earned mentions |
| Standards | Answers every press question within one business day. Checks every claim in a Post against a live record before it publishes. |
| Processes owned | Press inquiries |
| Autonomy | supervised; assist on High decisions |
| Schedule | daily |
| Channels | email, social |
| Also called | PR Lead, Head of Communications, Community Manager |
| Filled by | A role agent, from the start; a person answers its Approvals. |
Hands off to
Escalates to Marketing Lead.
Processes owned
Accountable for Press inquiries.
Metrics
| Metric | Definition |
|---|---|
| Intakes answered on time | Intakes answered on time is the share of intake Threads that get a first answer before their deadline. |
Approvals
- Asks first. An Action above the seat's Limit opens an Approval for the Marketing Lead and waits.
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.
Set how much the Communications Lead agent does without asking.
Show me what the Communications Lead agent did this week.
# 1. Role.update
curl -X PATCH https: //api.sb/ leaseline.app/ roles/ communications-lead \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"name": "Communications Lead", "autonomy": {"default": "supervised", "byClass": {"high": "assist"}}}'
# 2. Action.list
curl "https: //api.sb/ leaseline.app/ actions? limit= 50& where= by%20%3D%20%22agent_communications_lead%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: 'communications-lead', name: 'Communications Lead', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_communications_lead" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id": "communications-lead", "name": "Communications Lead", "autonomy": {"default": "supervised", "byClass": {"high": "assist"}}}'
npx startup-builder do Action.list --json '{"limit": 50, "where": "by = \"agent_communications_lead\" and createdAt >= \"2026-10-16\"", "sort": "-createdAt"}'
{
"name": "do",
"arguments": {
"code": "await $.Role.update({ id: 'communications-lead', name: 'Communications Lead', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_communications_lead\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
}
}
Example
A trade reporter emails press@ at 9:40 asking how a Startup prices its API. The Communications Lead answers by 11:00 from the published Prices. It says it is an agent and offers the Founder for a quote.