BKR Agent
The BKR Agent (bkr-claude-managed-agent) is the core of the Mansa system. It runs four agents on Anthropic Claude Managed Agents. The agents run directly on Anthropic’s servers. Credentials and configuration are managed through the Claude Console.
Agents
Section titled “Agents”The orchestrating agent. Mansa starts every workflow run, decides what needs doing, delegates work to the right worker agents, collects their output, and produces the digest email. It holds the system’s state for the duration of a session.
Responsibilities:
- Pull and triage the day’s emails
- Spawn Email Processor subagents in parallel batches of up to 15, with up to 25 processors per session across multiple rounds
- Collect results and handle partial failures via the handover mechanism
- Write the daily digest and send it to the BKR Capital team
- Log each processed email to Azure SQL for auditability and as a backup to Attio
Processes one or more emails per instance. Mansa may group similar emails and assign them to a single processor. Multiple instances run in parallel during the daily workflow.
Per-email workflow:
- Read the full email body and attachments
- Consult the rubric to decide whether this is a relevant lead
- If relevant: deduplicate against Attio, extract structured data, create/update Attio records, and draft a reply requesting a pitch deck if one was not included
- If not relevant: label as
ai-miscand skip - Label the processed email as
ai-processedso it won’t be reprocessed
Parallel execution: Up to 15 processors run concurrently per round. A session can span multiple rounds, with up to 25 processors total. Mansa decides the grouping and batch size each round.
Triggered by an Attio webhook when a Deal Intro meeting is logged. Reads the meeting notes from Attio, extracts every decision with its reasoning, updates pipeline stages, assigns tasks to team members, and sends the recap email.
Runs weekly. Reads each agent’s patterns.md memory file and produces a compacted version. It consolidates raw incident logs into structured sections, removes lead-specific data, collapses duplicates, and drops resolved one-offs.
Skills System
Section titled “Skills System”Skills are reusable tool definitions uploaded to the Claude Console and called by agents at runtime. All agent-to-service communication goes through skills. There are no direct SDK calls to external services from within the agent runtime.
| Skill | Agents That Use It | What It Does |
|---|---|---|
email-actions |
Email Processor | Read, list, label, mark-read |
admin-email-actions |
Mansa | Search, create reply drafts |
draft-email |
Email Processor | Create a reply draft for a specific message |
send-email |
Mansa, Meeting Agent | Send emails (digest, recap) |
retrieve-google-slides-deck |
Email Processor | Fetch and extract text from a Google Slides URL |
download-attachment |
Email Processor | Download email attachments (PDFs, decks) |
analytics-db |
Mansa | Check if an email has already been processed (check-duplicate); log run results to Azure SQL (log-run) |
See Update a Skill for how to modify skill files.
Credential Management
Section titled “Credential Management”Email API keys and Attio OAuth credentials (client ID, client secret, refresh token) are stored in Anthropic’s Credential Vaults. At runtime, Anthropic obtains an access token and facilitates authenticated calls on the agent’s behalf. Agents never see the actual secrets. They receive opaque placeholders at runtime, and Anthropic facilitates the authenticated call on their behalf. No credentials appear in session logs, memory stores, or context windows.
Memory System
Section titled “Memory System”Each agent has a dedicated memory store in the Claude Console containing a patterns.md file. Agents read this file at the start of every session.
What gets stored:
- Classification edge cases and how to handle them
- Attio field observations (which fields exist, which are reliably populated)
- Failure patterns and recovery approaches
- Coordinator-level lessons about workflow orchestration
Format: Structured Markdown log entries. Each entry describes an incident: what happened, what the agent concluded, and what to do differently. The Dreamer consolidates these logs into cleaner structured sections on a weekly basis.
See Update Agent Memory for how to review and edit memory files.
Rubric and Context Memory Stores
Section titled “Rubric and Context Memory Stores”In addition to per-agent memory, the system maintains two categories of shared memory stores:
- Rubrics (
Rubrics - Mansa,Rubrics - Mansa Meeting): guides for agent self-evaluation. See Update the Rubric. - Context Files (
Context Files): containsabout_bkr_capital.md. See Update Context Files.
Handover Mechanism
Section titled “Handover Mechanism”If a daily run doesn’t finish processing all emails (due to time limits or transient errors), Mansa writes a handover.md file listing what remains. The next scheduled run reads this file and picks up where the previous one left off.
Setup Scripts
Section titled “Setup Scripts”Two idempotent scripts in setup/ provision every Anthropic resource:
agents.py: creates and updates agent definitions (model, system instruction, memory stores, tool access)skills.py: creates and updates skill definitions with current tool schemas
Both scripts are safe to re-run at any time. They use upsert semantics, creating resources that don’t exist and updating those that do.
Analytics Database
Section titled “Analytics Database”Mansa (the coordinator) uses the Azure SQL database for two purposes: checking whether an email has already been processed before delegating it, and logging one record per processed email after the run completes. These logs serve as an audit trail and as a backup to Attio. If a record is missing or incorrect in Attio, the database holds the ground truth for what was processed and when. The Email Processor does not write to the database directly. It returns results to Mansa, which does all reads and writes. Access goes through a dedicated Azure Function API called as a skill. There is no direct database connection in the agent runtime.
What gets logged:
| Field | Description |
|---|---|
id |
Auto-incrementing primary key |
timestamp |
When the record was written |
agent_id |
ID of the agent that processed the email |
email_id |
Microsoft Graph message ID |
email_classification |
Classification result: relevant or irrelevant |
attio_entry_id |
Attio pipeline entry ID, if one was created |
pipeline_status |
Pipeline stage assigned in Attio |
status |
Processing outcome |
recommendation |
Agent’s recommendation for the deal |
additional_notes |
Any extra context the agent recorded |
company_name |
Company name extracted from the email |
agent_status |
Completion state of the agent run (default: done) |
failure_reason |
Populated if the agent encountered an error |
email_draft_link |
Link to the reply draft created in Outlook, if any |
