Skip to content

Agent Memento

Agent Memento turns 12.7M raw voice-agent traces (Braintrust spans) into governed Claude copilots and an autonomous supervisor on Snowflake.

Core trick

Converts 12.7M raw voice-agent traces into a star schema under row-access and masking policies, queuing proposed fixes for human approval.

Tags

Description

Agent Memento turns 12.7M raw voice-agent traces (Braintrust spans) into governed Claude copilots and an autonomous supervisor on Snowflake. Voice-AI platforms pay per token and per telephony minute but bill customers per contract, so no one can see which accounts, caller intents or model choices destroy margin. We built a governed data mart, a semantic view, three persona copilots (Finance, Agent Product Manager, Customer Success) as Cortex Agents, and a daily supervisor that detects problems in SQL, has Claude draft the diagnosis and fix, and puts them in an Action Inbox for a human to approve. Row access and masking policies make sure each persona and each agent only sees what that role is allowed to see.
Lathendra/agent_memento★ 00 forksPythonCreated Oct 23, 2026 · last push Oct 23, 2026

README excerpt

# agent_memento

Governed data product for voice AI agents on Snowflake.
- Turns 12.7 M Braintrust agent spans into a star schema with account economics.
- Serves 3 persona copilots (Agent PM, CSM, Finance) in Snowflake Intelligence and in Claude Desktop over MCP.
- Runs an autonomous supervisor that proposes actions, which humans approve in a Streamlit Action Inbox. Built for the Anthropic × Snowflake "Intelligence at Work" hackathon.

## Quick Navigation

- [Layout](#layout)
- [Build](#build)
- [Docs](#docs)

---

## Layout

```mermaid
flowchart LR
    S["scripts/"] -->|"PUT"| R["sql/10 RAW"]
    R --> ST["sql/20 STAGING"] --> M["sql/30-50 MART"] --> SE["sql/60-80 SEMANTIC"]
    SE --> A["app/ Streamlit"]
    V["sql/90 validate"] -.-> M
```

| Path | Contents |
|---|---|
| [sql/](sql) | Numbered build scripts `00`–`90`, run in order |
| [scripts/upload_parquet.py](scripts/upload_parquet.py) | PUT local Parquet (`PARQUET_DIR`) to `@AGENT_MEMENTO.RAW.SPANS_STAGE` |
| [scripts/run_sql.py](scripts/run_sql.py) | Run SQL files through the Python connector (browser login) |
| [app/](app) | Streamlit dashboard and `snowflake.yml` |
| [docs/](docs) | Architecture, plan, tracker |

[Back to top](#quick-navigation)

---

## Build

1. Run [00_foundation.sql](sql/00_foundation.sql).
2. Run `python scripts/upload_parquet.py`, then [10_raw_load.sql](sql/10_raw_load.sql).
3. Run `20`, `30`, `35`, `40`, `50`, `55`, `60`, `65`, `70`, `75` and `80` in [sql/](sql), in that order.
   - `55` MUS

Team