Building Agentic Spreadsheet Automation from Process Mining to Production
ramp · Finance · 2026 · source Agentic: yes · promotional bias: low · source-backed · extracted with prompt 0.5.4 (schema v2)
Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.
Problem
Domain: Finance operations spreadsheet automation
Ramp needed to automate high-stakes finance workflows that were explained through Loom videos and executed in spreadsheets, without turning those workflows into opaque code that finance professionals could not inspect.
Constraints:
- Finance users communicated workflows through video and voiceover rather than formal SOPs.
- Mistakes in month-end close and reconciliation workflows were disproportionately costly.
- The automation had to preserve spreadsheet-native visibility instead of hiding logic inside Python.
- The agent needed sandboxed execution for occasional code-generation escape hatches.
Architecture
Ramp Sheets pairs a spreadsheet UI with an external agent loop, Claude-family models, about ten Excel-shaped tools, and a Modal sandbox running SpreadJS. The agent reads and writes ranges as spreadsheet operations first, uses Python only as an escape hatch, and a separate Inspect loop generates and matures Datadog monitors for production coverage.
Diagram confidence: reconstructed (reconstructed from prose).
flowchart LR finance-user[Finance User] --> ramp-sheets-ui[Ramp Sheets UI] ramp-sheets-ui --> agent-sdk[Agent SDK] ramp-sheets-ui --> spreadjs-workbook-runtime[SpreadJS Workbook Runtime] agent-sdk --> claude-models[Claude Models] agent-sdk --> excel-tool-set[Excel Tool Set] agent-sdk --> modal-sandbox[Modal Sandbox] excel-tool-set --> spreadjs-workbook-runtime modal-sandbox --> spreadjs-workbook-runtime modal-sandbox --> python-escape-hatch[Python Escape Hatch] inspect-coding-agent[Inspect Coding Agent] --> datadog-monitors[Datadog Monitors]
Components
| Component | Role | Interacts with |
|---|---|---|
Finance User |
Subject-matter expert who records workflows, selects spreadsheet ranges, and reviews spreadsheet-native outputs. | Ramp Sheets UI |
Ramp Sheets UI |
Spreadsheet editor plus chat interface where users provide context and receive generated workbook changes. | Finance User, Agent SDK, SpreadJS Workbook Runtime |
Agent SDK |
Runs the agent loop outside the sandbox and coordinates LLM calls and tool invocations. | Ramp Sheets UI, Claude Models, Excel Tool Set, Modal Sandbox |
Claude Models |
LLM family used for decomposition and spreadsheet actions. | Agent SDK |
Excel Tool Set |
About ten tools such as read range, set range, and format range that expose spreadsheet operations directly. | Agent SDK, SpreadJS Workbook Runtime |
Modal Sandbox |
Isolated execution environment for workbook manipulation and code-generation escape hatches. | Agent SDK, SpreadJS Workbook Runtime, Python Escape Hatch |
SpreadJS Workbook Runtime |
Spreadsheet manipulation runtime loaded inside the sandbox. | Ramp Sheets UI, Excel Tool Set, Modal Sandbox |
Python Escape Hatch |
Last-resort code execution path for tasks not naturally expressible as spreadsheet operations. | Modal Sandbox |
Inspect Coding Agent |
Internal coding agent that proposes Datadog monitoring changes for Ramp Sheets. | Datadog Monitors |
Datadog Monitors |
Production monitoring layer instrumented and matured by Inspect-generated monitor changes. | Inspect Coding Agent |
Data flow
Finance users describe or execute workflows in spreadsheet form; Ramp Sheets sends selected ranges and chat instructions to the agent SDK, which calls Claude and spreadsheet tools against a sandboxed workbook, writes formulas or sheets back to the UI, and uses Inspect/Datadog to add monitoring around the product.
Why this architecture
Ramp chose spreadsheet-native tool calls because finance professionals could understand formulas and sheets, while Python or generic automation felt too opaque for high-stakes finance work.
Models used: Claude · Anthropic Claude family · OpenAI agent SDK · OpenAI models
Scale
- Average conversations were roughly ten minutes, with about seven minutes spent on the agent producing output.“One one conversation tends to be around like 10 minutes. Um but it's dominated kind of by like the the question answering piece”transcript, stated“out of the 10 minutes on average I think it would be like 7 minutes of like just the agent grinding on producing an output for you.”transcript, stated
- Complex FP&A tasks could run for 30 to 50 minutes, while simpler tasks could finish in 20 to 30 seconds.“some very complex task in FP&A of like get data from the web around like SEC filings or something, aggregate it together and produce a model for me. It can run for like 30, 40, 50 minutes.”transcript, stated“if it doesn't need to like go and get out and get like information from anywhere, can be very quick. Like it can be 20 30 seconds.”transcript, stated
- The tool set was deliberately small, around ten Excel-specific tools.“give it in Excel? Uh Excel-wise I think it was around like 10-ish tools maybe. So, not super super large tool set. But different than maybe like bash which is one universal tool or something like >> Yeah. We found that like the especially Anthropic like family of models is like”transcript, stated
Alternatives considered (roads not taken)
Generate Python scripts from process videos.
Rejected because: Python was expressive but unreadable to the finance users who needed to trust and verify the result.
Put the agent itself inside the sandbox.
Rejected because: Ramp kept the agent state outside and spun up fresh sandboxes so code-generation steps would not pollute later runs.
Let Python be the normal path for spreadsheet manipulation.
Rejected because: Ramp biased the system toward Excel formulas and kept Python as a last-resort path.
Patterns
tool-use-orchestration (agent-architecture)
The spreadsheet agent exposes spreadsheet operations as first-class tools instead of asking the model to write arbitrary code.
latency-optimization (runtime)
Ramp splits fast and expert modes and treats runtime as task-dependent, with short runs for simple tasks and longer agentic execution for complex finance work.
transcript, statedYeah, the the user decides and yeah, it depends on the complexity of the task.”
observability-tracing (operations)
Ramp uses an internal coding agent to propose and mature Datadog monitors for Ramp Sheets.
canary-rollout (operations)
Automated monitors start in shadow mode and are promoted only after signal/noise review.
Tradeoffs
Primary automation representation
Chose Spreadsheet-native read/write/formula tools over Python code generation, N8N, or Retool automations.
Rationale: The spreadsheet representation kept finance users in a medium they could inspect and trust.
LLM/tooling fit
Chose Claude-family models for spreadsheet decomposition over The initial OpenAI-leaning implementation.
Rationale: The team observed Claude handled their tool shape and spreadsheet decomposition better.
Sandbox boundary
Chose Agent outside sandbox with fresh sandboxes per action over Agent state living inside a persistent sandbox.
Rationale: The boundary let the agent keep state while preventing code-generation pollution across runs.
Monitor rollout
Chose Shadow-mode generated monitors with later promotion over Immediate alerting from agent-created monitors.
Rationale: The team wanted extra coverage without noisy automated alerts interrupting engineers.
Gotchas (what bit them)
Code generation was too opaque for the users who owned the finance process.
Root cause: Finance users could inspect spreadsheets but could not meaningfully inspect Python, Pandas, or generic automation code.
Resolution: Move the automation into spreadsheet-native operations and formulas.
Reading entire spreadsheets into context would pollute the model context.
Root cause: Large spreadsheets contain more cells than the task needs, so the agent must inspect selectively.
Resolution: Have the agent read ranges in human-like passes instead of loading the full sheet.
A generic agent SDK did not remain sufficient as the spreadsheet product matured.
Root cause: The harness became overfit to the spreadsheet workflow and required customized behavior.
Resolution: Keep replacing SDK pieces until the harness matched the product's task shape.
Agent-created monitors can become noisy if promoted immediately.
Root cause: Automated monitor creation lacks the same human judgment as hand-authored monitors.
Resolution: Run generated monitors in shadow mode and prune noisy ones before they page engineers.
Evaluation
Ramp evaluated the architecture through user feedback on black-box versus spreadsheet-native automation, observed model/tool performance, runtime behavior, and a monitoring shadow-mode loop for Inspect-generated Datadog monitors.
Metrics: Average session/runtime duration · Monitor noise before promotion · Model/tool fit for spreadsheet decomposition · User acceptance of transparent spreadsheet output
Outcomes
- Ramp turned Loom-described finance processes into a spreadsheet-native agentic product.
- Users could inspect outputs in the spreadsheet medium they already understood.
- An Inspect-based self-monitoring loop added observability coverage around Ramp Sheets.
The system used roughly ten Excel tools, average sessions around ten minutes, and task durations ranging from seconds to 30-50 minutes depending on complexity.