Skip to content

Data Engineer

The Data Engineer sources, licenses, and refreshes the Datasets a Startup sells, and keeps their quality measured.

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

Responsibilities

  • Records the source and licence of every Dataset.
  • Refreshes each Dataset on its stated cadence.
  • Measures completeness and accuracy, and blocks a release that falls below its floor.

Verbs

VerbObjectEvent
Dataset.createDatasetDataset.created
Dataset.updateDatasetDataset.updated

Role contract

PartThis seat
PurposeSo the Datasets the Startup sells stay fresh, licensed and measured.
ResultsDataset freshness
StandardsRefreshes every Dataset on its stated cadence. Blocks any refresh that falls below its quality floor.
Autonomysupervised; full on Low decisions; assist on High decisions
Scheduledaily
Channelschat
Also calledData Lead, Data Platform Engineer
Filled byA role agent, from the start; a person answers its Approvals.

Hands off to

Escalates to Engineering Lead.

Processes owned

Runs Release for every Dataset: each refresh ships through its Release a change Workflow.

Metrics

The seat answers to its Team's Metrics: uptime, deploy frequency, change failure rate, time to restore and p95 latency.

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

Show me what the Data Engineer agent did this week.

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

Example

A Dataset of public company filings refreshes nightly. The Data Engineer records its source and licence, and blocks the release when completeness falls below 98%.