Code samples and example data are preserved in their original language so that identifiers and technical contracts remain unchanged.
What is Erin?
A work platform where part of the team consists of AI agents. People prepare and decide, agents execute, and every decision is recorded from requirement to delivery.
Think of a familiar task board, with one difference: you can assign a task to a person or an agent in the same way. The agent does the work, an independent reviewer evaluates it, and the deliverable stops at a human decision point before acceptance. Everything that happens becomes a record no one rewrites.
Erin is organized into three layers: Structure (org, teams, people, and agents), Work (the board), and Execution (what runs when a task is assigned to an agent).
What you can do
Erin is not a chat assistant. You delegate a complete unit of work, with a contract and acceptance criteria, and get a deliverable backed by evidence. These are the use cases teams run today.
Research with cited sources
“What are the retention periods for each data category under Brazil's LGPD?” The agent consults the domain KB and cites documents by ID and hash. The answer comes with provenance, not just the model's memory.
Break an epic into executable work
Describe the objective. The agent proposes stories and tasks, and the system matches the item against the knowledge collection to identify which KBs cover the topic and where knowledge is missing. Your approval creates the child items.
Implement against an approved Spec
With the contract agreed, the executor produces the artifact and a validator reviews it in a fresh context, without seeing the executor's conversation. If it fails, the review guides the next attempt.
A second opinion, not an approval
A reviewer measures the deliverable against the acceptance criteria and reports the result. It never decides. Approval remains your click, with the review alongside it.
Build your domain KB
What the company knows but has never written down becomes a searchable, versioned KB with freshness tracking. Every future consultation is recorded, and that provenance makes deliverables auditable. The agent improves through golden cases harvested from your gate decisions.
Factory Shift
Scheduled work runs outside business hours under the same gates and cost limits. In the morning, your queue shows what needs a decision, not just what ran.
A complete cycle, from request to golden case
The example below shows a real Flywheel cycle. Notice who acts at each step: when it is you, when it is the agent, and what gets recorded.
| Step | Who acts | What happens | Chain event |
|---|---|---|---|
| Request | You | Create the epic “Align data retention with the LGPD”. | no event: the first one comes from the first real action |
| Discovery | Agent | Propose 4 stories. The system matches the item against the collection, identifies an existing compliance KB, and flags a knowledge gap in data deletion. | kb.suggested |
| Approval | You | Approve the decomposition. The child items are created as real work. | gate.decided |
| Knowledge | Agent | Author the missing documents with cited, verified sources. | kb.document_ingested |
| Refinement | Agent | Consult the KB and write the first task's Spec, grounded in the documents read. | kb.consulted |
| Contract | You | Approve the Spec, answering the blocking questions in the KB charter. | spec.approved |
| Execution | Agent | Assigning the task to the agent triggers the engine. The executor produces; the validator reviews in a fresh context. | agent.executed |
| Verdict | You | The deliverable awaits your decision, alongside the output, review, and KB charter. | gate.decided |
| Learning | You | Your decision becomes a golden case, harvested from the chain in one click. It is used to evaluate the next agent version. | golden_case.harvested |
From zero to your first delivery
The path every team takes. Each step corresponds to a product screen.
- Set up your space.On first access, create the founder and follow the wizard to set up the Org, Workspace, Team, and Project.
- Prepare the team.Add people with their roles and explore the native agents: Planner, Researcher, Executor, and Reviewer.
- Provide knowledge.Create or link a domain KB. The agent consults it before acting, and each consultation is recorded.
- Create and refine work.Epic, story, task. The refinement agent reads the KB and proposes the Spec (the contract); you approve it at the gate.
- Assign it to an agent.Assignment is the execution trigger. The executor does the work, the validator reviews in a fresh context, and the loop corrects it if needed.
- Decide at the gate.The deliverable awaits your verdict, with the output and evidence alongside it. Approve it or send it back with guidance.
- Scale with Factory Shift.Once you trust the agents, create batches that run overnight with a cost limit. In the morning, the gates await you.
Structure and roles
The hierarchy organizes who works on what: Org contains Workspaces, which contain Teams, which have Projects. People and agents are members of a team.
Roles define what each person can do in a workspace. Ready-made presets include Admin, Manager, Approver, Executor, and Reader, and you can create your own. A role in use cannot be removed before its members are reassigned. Gate approval permission (gate.approve) separates decision-makers from observers.
Work on the board
Work follows a hierarchy: epic, story, task and subtask. Only tasks and subtasks can be executed by an agent; epics and stories are organizational containers.
A task moves through well-defined states: rascunho, pronta, na fila, executando, suspensa, bloqueada por gate and concluída or falhou. Only allowed transitions can occur, and changing state during execution is blocked.
Discovery, refinement, and the Spec
There are two ways to develop work until it is ready for execution.
Discovery (decomposition)
A large epic can be assigned to a discovery agent, which proposes a tree of work items. Review it at the decomposition gate, edit it if needed, and approve it to create the child items. Proposed priorities, dependencies, and criteria are preserved.
Refinement (producing the Spec)
The Spec is the contract for a specific task: scope, output contracts, and acceptance criteria. A refinement agent consults the KB and drafts a domain-grounded Spec. You approve it at the gate. A good Spec enables reliable execution: it is the most important task before any agent runs.
Knowledge (KB)
The domain knowledge collection an agent consults before acting. It is the product's moat.
A KB is a collection of structured documents (concepts, patterns, references) about a technology or domain. Native KBs are curated and shared by Erin; workspace KBs belong to you. An agent can only see KBs visible to its tenant.
- Real consultation. When an agent consults the KB, the cited document is recorded with its hash and relevance. This proves which knowledge informed the deliverable.
- Assisted authoring. An agent can draft KB documents from verifiable sources, with citations and verification.
- Publication and freshness. A KB version is published through human approval and becomes an immutable snapshot. Aging content is marked as stale and blocks publication until reviewed.
Agents
Agents are team members that execute tasks autonomously under your rules.
There are four native functions. Each agent declares its behavior, limits, stop conditions, and output contract.
Planner
Decomposes and organizes work into an executable tree.
Researcher
Consults knowledge and produces grounded material with sources.
Executor
Performs the task against the approved Spec using linked tools and KBs.
Reviewer
Reviews the deliverable in a fresh context. Cannot use the same model as a producer.
Immutability, versions, and promotion
- Native agents are immutable. To adapt a native agent, fork it. The original never changes.
- Every change creates a version. The version and model are recorded in the chain. You can see each version's history and performance.
- Evidence-based promotion. A candidate version cannot be dispatched. It is promoted when evaluations and gate signals demonstrate its value.
- Composition. An agent definition can declare the subagents it orchestrates (for example, executor and reviewer). Invoking the agent triggers this composition deterministically.
Providers and BYOK
Use your own AI provider (BYOK, bring your own key). Each agent defines its provider and model, with an optional fallback chain for provider failures.
- Multiple connections (keys) per provider, with friendly labels. Support for Anthropic, OpenAI, Gemini, Groq, DeepSeek, Moonshot, OpenRouter, and more.
- The key stays in the vault. The interface receives only a safe reference, never the secret.
- Inference costs are charged to your account, transparently broken down by agent, model, and task.
The single trigger
There is only one way to trigger execution: assign a task to an agent. No accidental execution, hidden scheduling, or agents deciding to run themselves. This keeps operations predictable and auditable.
The execution engine
When a task is assigned to an agent, a deterministic engine (not an LLM deciding control flow) coordinates the cycle:
- The executor produces.The assigned agent works against the Spec, consulting linked KBs.
- The validator reviews.A reviewer evaluates the output in a fresh context, separate from the producer. The executor never reviews itself.
- Corrective retry.If the reviewer rejects it, the review becomes feedback for the next attempt. The default is 2 attempts, configurable.
- Cost limit.Every run has a mandatory limit. The loop continues until approval, the cost limit is exceeded, or attempts are exhausted.
- The gate opens.Once internally validated, the deliverable stops at the gate and awaits a human decision.
Gates and decisions
A gate is a human decision point. An agent or the system may open a gate; the decision always belongs to a human with permission. An agent never approves.
- Evidence Summary. At the gate, you see a verifiable summary of what happened: the output, reviewer score, cost, consulted KBs, and chain integrity. The same evidence you would download in the complete dossier.
- Maker-checker. N-of-M approval policies and separation of duties can be required by workspace. Violations are recorded.
- Effects by type. Approving a Spec makes the task ready; approving decomposition creates the child items; approving a deliverable completes the task. Rejection sends it back with guidance for the next assignment.
Factory Shift
Autonomous batch execution, once you trust your agents.
Instead of assigning one task at a time, create a batch: choose the project, select ready tasks, choose the executor agent, and dispatch. Execution respects your configured overnight window and limits.
| Control | What it does |
|---|---|
| Overnight window | Defines when the factory can run (by workspace and time zone). Outside that window, tasks wait in the queue. |
| Daily budget | An aggregate daily cost limit. Once exceeded, the shift pauses until tomorrow. |
| Auto-pause | If the day's error rate exceeds a threshold, the workspace pauses automatically. A human must resume it. |
| Requeuing | An item that fails due to an interruption can return to the queue, with a lifetime attempt limit. |
| Morning digest | A summary of overnight activity, with an optional signed webhook. |
The Flywheel
The cycle that builds trust with every turn.
Build easily, execute well, decide with evidence, learn from golden cases and evaluations, promote the version that proves its value, then trust and delegate more. The north-star metric is first-pass approval: the fraction of deliverables approved at the gate without retry or rejection. It measures confidence in delegating at scale.
- Golden cases come from good gate decisions harvested from the chain. They become the evaluation baseline.
- Evals run against golden cases. They fail closed: without reliable evidence, they do not inflate the score.
- Promotion requires evidence. Regressions block it; an override requires a recorded justification.
The audit chain
The foundation that keeps the flywheel honest.
Every human or agent action becomes an event in an append-only record. Events are hash-linked and ordered, so nothing is rewritten afterward. Golden cases, evaluations, costs, and the trust scorecard are all derived from it.
- Reproducible. “Why did we decide this way?” is answered by consulting the chain, not digging through disconnected histories.
- Exportable. Export the verifiable chain and a hash-sealed Evidence Pack containing the Spec, gates, actors, versions, KB references, and cost.
- Integrity. The server can recompute the hash chain at any time to prove it has not been tampered with.
Security
- Tenant isolation. A workspace never sees another workspace's data. Sensitive tables have two layers of isolation.
- Secrets in the vault. The BYOK key is encrypted in a vault, never exposed in logs, the database, or plain text.
- Immutable record. The chain is protected against modification and deletion at the database level, not just in the application.
- Scanning before writing. Content is scanned for secrets and personal information before it becomes a chain event.
Guide: build an agent
An agent is more than a name, prompt, and model. It is a versioned behavior contract.
Fork a native agent or start from scratch. Each version declares:
| Field | What it defines |
|---|---|
| Function | Planner, Researcher, Executor, or Reviewer. Taken from the agent definition, it governs participation in the composition. |
| System prompt | The role and method. In KB-grounded flows, if left empty, the system injects a prompt requiring KB consultation before acting. |
| Provider and model | The connection (key) and model. Start with a low-cost model; use a stronger one only where needed. |
| Fallback | An alternative provider/model per invocation for provider failures. This is not model escalation during retries. |
| Tools and connectors | What the agent can call (KB search, HTTP/MCP connectors with least-privilege policies). |
| Linked KBs | The knowledge it consults. Without a KB, it only has the model's memory. |
| Judge | The reviewer's evaluation profile. The reviewer cannot use the same model as a producer. |
| Composition | The subagents it orchestrates (e.g., executor + reviewer). Declared and deterministic. |
| AgentSpec | Limits, stop conditions, escalation, quality gate, and expected output contract. |
Guide: build a KB
A good KB separates an agent that gets things right from one that guesses. This guide builds one from scratch, with real content from end to end.
- Create the KB.Set a slug, technology, and domain. Native (shared by Erin, read-only) or owned by your workspace.
- Add documents.The content types are
concept,pattern,referenceandspec. Anindexand aquick_referenceprovide navigation. - Write the charter.Boundaries, discovery questions, and scope limits. This is what you see when making a decision.
- Author with sources.For assisted authoring, the agent needs an authorized source connector. The content is cited and verified, not generated from model memory alone.
- Pass readiness checks.A minimum structure (index, concept, and pattern) and sufficient coverage. An incomplete KB can still be queried, but can only be published when ready.
- Publish.A version is published through human approval and becomes an immutable snapshot. A stale document blocks publication.
- Link it to the agent.A KB is actually consulted only when it is bound to the agent version and the search tool is enabled.
Example: the “LGPD: Retention and Deletion” KB
Let's build a compliance KB that a research agent will consult before writing any Spec about personal data.
1. The anatomy. A KB is a Markdown tree. The directory defines the document type, so the structure is also the taxonomy:
kb_lgpd_retencao/ index.md # navegação: o mapa da KB quick-reference.md # navegação: a cola de consulta rápida concepts/ direito-esquecimento.md # concept: o que é e por que importa patterns/ expurgo-com-trilha.md # pattern: como se faz na prática reference/ bases-legais-retencao.md # reference: a tabela que se consulta
2. A real document. Each file starts with a header the system reads. The Purpose has twice the weight of the body in search ranking, second only to the title, so write it carefully:
# Bases legais de retenção por tipo de dado
> **Purpose**: Quanto tempo cada categoria de dado pode ser retida e sob que base legal
> **Confidence**: 0.92
> **Fonte**: Lei 13.709/2018, arts. 7 e 16
## Overview
Retenção segue a finalidade e a base legal. Dados fiscais e contábeis
seguem prazos setoriais próprios. Dados de marketing caem com a
revogação do consentimento.
## Regra prática
| Categoria | Prazo mínimo | Base legal |
|-------------|--------------|-------------------------------|
| Fiscal | 5 anos | obrigação legal (art. 7, II) |
| Cadastral | vigência | execução de contrato |
| Marketing | nenhum | consentimento (revogável) |
3. The charter. This is the part most people skip, and the one that pays off most. The charter is not an execution-blocking guardrail: it is the context you see when approving, and what forces refinement to resolve open questions before proposing a contract.
| Element | Real example | Effect |
|---|---|---|
Boundaryblock |
“Tax records have a statutory minimum retention period. Deletion before that date is blocked.” | Highlighted at the gate. This is the rule you do not want to discover after an incident. |
Boundarywarn |
“Every deletion must record its legal basis in the chain event.” | Shown as a warning, without blocking the decision. |
Questionblocking |
base_legal: “What legal basis supports retention for each category?” |
Spec approval is unavailable until this question is answered. |
| Question standard |
titular_solicitou: “Is there an outstanding deletion request from the data subject?” |
Provides decision context without blocking. |
| Scope boundary |
“International data transfers” points to gdpr_transferencias |
When a topic falls outside the domain, the system redirects instead of letting the agent invent an answer. |
4. Proof it worked. When an agent consults the KB during work, a chain event is created. It stores the question and the exact reference, never the document body:
{
"event_type": "kb.consulted",
"payload": {
"query": "prazo de retencao dado fiscal expurgo",
"refs": [{
"kb_slug": "lgpd_retencao",
"doc_slug": "bases-legais-retencao",
"kind": "reference",
"content_hash": "9f2c...", // reconstrói o que ele leu
"snapshot": 3, // a versão publicada
"score": 0.61,
"confidence": 0.92
}]
}
}
Best practices
- Invest in the Purpose of each document: it has twice the weight of the body in search and determines whether the agent finds what it needs.
- Prefer verifiable sources over text from memory. A hash-backed citation is the evidence.
- Write the charter alongside the documents. One well-placed blocking question can prevent an entire flawed Spec.
- Keep the KB fresh: review aging content before publication.
Avoid
- Linking a KB and forgetting to enable the search tool: the binding does nothing and fails silently.
- A huge, generic KB. Prefer focused domains that can be reused.
- An empty charter. Without boundaries and questions, the gate becomes a rubber stamp.
- Reusing an ingestion KB in a research flow without checking its fit.
Guide: write a good Spec
The Spec is the contract. A well-defined Spec makes a reliable loop. A vague Spec guarantees rework.
A strong Spec has three parts, all verifiable:
- Scope: what is included and what is excluded. Ambiguity here leads to rejection at the gate.
- Output contracts: the format and guarantees of the result (what the deliverable must contain and how it will be checked).
- Acceptance criteria: an objective checklist the reviewer uses to evaluate. If a human cannot determine pass or fail from a criterion, it is too weak.
The same request, written two ways
Weak Spec
- “Implement a routine to delete old data in accordance with the LGPD.”
- Does not say which categories are included.
- Does not say what happens to data subject to mandatory retention.
- Does not define the output format or how to check it.
- The reviewer cannot reject it without relying on opinion, so everything becomes a debate at the gate.
Strong Spec
- Scope: customer records and marketing categories. Tax records are excluded, with a 5-year statutory retention period.
- Contract: an idempotent script plus a report by category with counts, legal basis, and cutoff date.
- AC 1: no record subject to an active statutory retention obligation is deleted.
- AC 2: every deletion records its legal basis in a chain event.
- AC 3: running twice produces the same result.
- AC 4: a test fails if AC 1 is violated.
Let refinement consult the KB and ground every part of the Spec in the domain. Where the KB imposes a blocking constraint, make it explicit in the contract: AC 1 above turns the LGPD KB boundary into a verifiable criterion. Producing the best possible Spec is the refinement agent's central task.
Guide: configure Factory Shift
Configure each workspace in Settings, under the Factory Shift tab:
# exemplo de política noturna Janela 22:00 → 06:00 # fuso do workspace; pode cruzar a meia-noite Orçamento US$ 20 / dia # estourou, pausa até amanhã Auto-pausa ≥ 30% de erro # amostra mínima antes de agir Re-enfileirar 1x # teto de tentativas por task Digest webhook assinado # resumo matinal do que rodou Concorrência configurável # quantas tasks em paralelo
Then create the batch at /lote: choose the project, select ready tasks and the executor agent, and optionally set a “not before” time. Each task keeps its own assignment record; nothing in a batch approves a deliverable.
Guide: gate policies
The gate is always human, but you define the rigor for each workspace.
- Maker-checker. Require N distinct approvers and separation of duties (the executor cannot approve). Violations are recorded.
- Assignment preflight. Before the trigger, the system anticipates issues (required Spec, KB, connection/key, provider/model, judge, composition). Warnings do not block by default.
- Policy-based blocking. The workspace can turn selected warnings into hard blocks. For example, preventing assignment without a KB.
Best practices
Do
- Invest in the Spec. It is the biggest driver of first-pass approval.
- Start with a low-cost model. Use a stronger model only where the evidence shows it is needed.
- Keep the reviewer independent. Always use a different model from the producer.
- Promote with evidence. Promote the version backed by evaluations and gate results.
- Enable Factory Shift gradually. Start with a short window and a small budget.
Avoid
- A high, fixed retry count. The default is 2; corrective, not blind.
- Using a strong model everywhere. Expensive and unnecessary for most tasks.
- An agent as coordinator. Code coordinates execution, not an LLM at runtime.
- The executor reviewing itself. Always use a reviewer in a fresh context.
- Running without a cost limit. Every run has a mandatory limit.
Technical reference
Task states and transitions
Execution states follow an allow-listed state machine. Planning transitions (rascunho and pronta) have their own authority and do not go through it.
rascunho → na fila # atribuição (gatilho único) pronta → na fila # atribuição pós-refino na fila → executando # o worker reivindica executando→ bloqueada por gate # abre o gate bloqueada → concluída # humano aprova bloqueada → pronta / na fila # recusa ou reatribuição qualquer terminal → na fila # re-disparo é re-atribuir
Chain event types
Each action creates a typed event. The main types:
task.assigned,task.started: the trigger and the start.kb.consulted: KB consultation, with the cited document, hash, and relevance.agent.model_invoked: a model invocation, with cost re-derived by the server.agent.tool_called: a tool call, with arguments and result.agent.executed,agent.validated: the output and the reviewer's assessment.gate.opened,gate.decided: opening the gate and the human decision.work_items.materialized: the child items created when a decomposition is approved.
Stack
Python backend with FastAPI and PostgreSQL. Orchestration uses a Postgres queue and an asynchronous worker, without Temporal or Celery in v1. Agents use a custom harness with native provider tool calling, rather than orchestration frameworks as the backbone. Secrets stay in a vault. Database triggers protect the chain, providing defense in depth beyond the application.
The invariants
The rules the system guarantees. Each has a test that fails if it is violated.
| Rule | What it guarantees |
|---|---|
| 1 | Assigning a task to an agent is the only execution trigger. |
| 2 | Every action by any actor creates an immutable, append-only chain event. |
| 3 | Agents never approve. Gate decisions are always human. |
| 4 | Native agents are immutable. Editing means forking. |
| 5 | Every agent change creates a new version; the version and model are recorded in the chain. |
| 6 | The customer's key stays in the vault, never in plain text. |
| 7 | The system never decides architecture on its own. The agent suggests; the human decides. |
Glossary
Workspace
A team's workspace, with its projects, agents, KBs, and policies.
KB
Reusable domain knowledge that an agent consults before acting.
Spec
A task's contract: scope, output contracts, and acceptance criteria.
Gate
A human decision point. Approve or return a deliverable, Spec, or decomposition.
Event
An append-only record of an action in the audit chain.
First-pass approval
The north-star metric: deliverables approved at the gate without retry or rejection.
Factory Shift
Batch execution during the overnight window, with a cost limit and auto-pause.
Flywheel
The cycle of learning and building trust through evidence, version by version.
Frequently asked questions
Can an agent approve a deliverable on its own?
No. Approving a gate is always a human decision made by someone with permission. This is a tested rule, not a setting.
Do I need to switch my work tool?
No. Erin is a task board with agents on the team. Anyone familiar with Jira or ClickUp can find their way quickly; the difference is that part of the team is AI.
Who pays for the AI?
You do. Use your own provider (BYOK); your key stays protected and inference costs are yours, transparently broken down by agent and model.
How do I know whether I can trust an agent with more?
Through first-pass approval by version and evaluations against golden cases. Trust grows with evidence, not faith.
How does overnight execution work?
Create a batch during the day; the factory runs during the workspace's overnight window, with a cost limit and auto-pause. In the morning, the deliverables await your gate decisions.
Can I prove how a decision was made?
Yes. Every step is recorded in the chain. Export a hash-sealed Evidence Pack containing the Spec, gates, actors, versions, and cost.