Integration Engineer
The Integration Engineer connects each Startup to its providers and imports, and keeps every sync healthy.
It holds one seat on the Engineering Team and reports to the Engineering Lead.
Responsibilities
- Wires the default provider for every capability a new Startup uses.
- Runs one test call per provider and records its fallback.
- Builds imports that bring a Customer’s existing data into its Tenant.
- Keeps each Integration, such as GitHub or Slack, with one leader per record.
Verbs
| Verb | Object | Event |
|---|---|---|
| Integration.sync | Integration | Integration.synced |
| Domain.connect | Domain | Domain.connected |
| Domain.register | Domain | Domain.registered |
| Tenant.provision | Tenant | Tenant.provisioned |
| Integration.create | Integration | Integration.created |
| Watch.create | Watch | Watch.created |
| Integration.update | Integration | Integration.updated |
Reads: Capability.list.
Tools: integrations, webhooks, imports.
Role contract
| Part | This seat |
|---|---|
| Purpose | So the Startup’s data moves between its providers without anyone copying it. |
| Results | Sync success rate |
| Standards | Retries a failed sync three times, then opens an Issue. Rotates every provider credential before it expires. |
| Autonomy | supervised; assist on High decisions |
| Schedule | hourly |
| Channels | chat |
| Also called | Integrations Engineer |
| Filled by | A role agent, from the start; a person answers its Approvals. |
Hands off to
Escalates to Engineering Lead.
Processes owned
Runs Provider wiring: its Connect providers Workflow is this seat's job.
Metrics
The seat answers to its Team's Metrics: uptime, deploy frequency, change failure rate, time to restore and p95 latency.
Approvals
- Asks first. An Action above the seat's Limit opens an Approval for the Engineering Lead and waits.
- Waits a delay window.
Domain.registeris one-way, so each call waits before it runs.
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 Integration Engineer agent does without asking.
Show me what the Integration Engineer agent did this week.
# 1. Role.update
curl -X PATCH https: //api.sb/ leaseline.app/ roles/ integration-engineer \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"name": "Integration Engineer", "autonomy": {"default": "supervised", "byClass": {"high": "assist"}}}'
# 2. Action.list
curl "https: //api.sb/ leaseline.app/ actions? limit= 50& where= by%20%3D%20%22agent_integration_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: 'integration-engineer', name: 'Integration Engineer', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_integration_engineer" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id": "integration-engineer", "name": "Integration Engineer", "autonomy": {"default": "supervised", "byClass": {"high": "assist"}}}'
npx startup-builder do Action.list --json '{"limit": 50, "where": "by = \"agent_integration_engineer\" and createdAt >= \"2026-10-16\"", "sort": "-createdAt"}'
{
"name": "do",
"arguments": {
"code": "await $.Role.update({ id: 'integration-engineer', name: 'Integration Engineer', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_integration_engineer\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
}
}
Example
In a SaaS for recruiting agencies, the Integration Engineer is Iris. A new Customer brings 40,000 candidate records from a spreadsheet export. Iris imports them into the Customer’s Tenant and syncs the agency’s Slack, with db.sb as the record.