Skip to content

Privacy Officer

The Privacy Officer answers each privacy request within its legal deadline and keeps every Consent and Purpose on record.

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

Responsibilities

  • Finds every record about a Person when they ask.
  • Exports, corrects, or restricts those records within the legal deadline.
  • Keeps a Consent for every Contact and every Purpose.
  • Keeps data-processing Agreements current with every provider.

Verbs

Reads: Person.get.

Tools: privacy, search, files.

Role contract

PartThis seat
PurposeSo every Person’s data is used only for what they agreed to.
ResultsPrivacy requests on time
StandardsAnswers every access or deletion request within 30 days. Records the Purpose of every use of personal data.
Processes ownedNotify regulator
Autonomyassist; supervised on Low decisions
Scheduledaily
Channelsemail
Also calledDPO, Data Protection Officer
Filled byA role agent, from the start; a person answers its Approvals.

Hands off to

Escalates to Legal Lead.

Processes owned

Accountable for Notify regulator.

Metrics

The seat answers to its Team's Metrics: floor coverage, privacy request time, contract turnaround and open findings.

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

Show me what the Privacy Officer agent did this week.

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

# 2. Action.list
curl "https://api.sb/leaseline.app/actions?limit=50&where=by%20%3D%20%22agent_privacy_officer%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: 'privacy-officer', name: 'Privacy Officer', autonomy: { default: 'assist', byClass: { low: 'supervised' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_privacy_officer" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id":"privacy-officer","name":"Privacy Officer","autonomy":{"default":"assist","byClass":{"low":"supervised"}}}'
npx startup-builder do Action.list --json '{"limit":50,"where":"by = \"agent_privacy_officer\" and createdAt >= \"2026-10-16\"","sort":"-createdAt"}'
{
  "name": "do",
  "arguments": {
    "code": "await $.Role.update({ id: 'privacy-officer', name: 'Privacy Officer', autonomy: { default: 'assist', byClass: { low: 'supervised' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_privacy_officer\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
  }
}

Example

In a data Startup, the Privacy Officer Agent is named Piper. A former trial user asks for every record held about them. Piper verifies their identity, searches every System, and sends the export in four days against a 30-day deadline.