Building Trustworthy AI Agents for Automated Expense Management

ramp · Finance · 2025 · source Agentic: yes · promotional bias: med · source-backed · extracted with prompt 0.5.5 (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 workflow automation

Ramp needed LLM-backed expense-management agents that could automate high-volume ambiguous finance decisions without eroding user trust through unexplained, overconfident, or policy-ungrounded outputs.

Constraints:

Architecture

Ramp built LLM-backed agents around a policy agent that receives expense and policy context, produces categorical decisions with reasoning and citations, defers uncertain cases to existing human review, lets users edit policies inside Ramp, and uses workflow-builder controls plus deterministic guardrails to define when agents may act autonomously.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  expense-intake["expense intake"] --> policy-agent["policy agent"]
  policy-agent --> policy-context-retriever["policy context retriever"]
  policy-context-retriever --> policy-editor["policy editor"]
  policy-agent --> reasoning-and-citation-renderer["reasoning and citation renderer"]
  reasoning-and-citation-renderer --> finance-users["finance users"]
  policy-agent --> uncertainty-escape-hatch["uncertainty escape hatch"]
  uncertainty-escape-hatch --> human-review-queue["human review queue"]
  human-review-queue --> finance-users
  policy-agent --> workflow-builder-controls["workflow builder controls"]
  workflow-builder-controls --> deterministic-guardrails["deterministic guardrails"]
  finance-users --> workflow-builder-controls
  finance-users --> policy-editor
  finance-users --> user-feedback-loop["user feedback loop"]
  user-feedback-loop --> policy-editor
  user-feedback-loop --> evaluation-dataset["evaluation dataset"]
  evaluation-dataset --> policy-agent
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
expense intake Receives expenses requiring approval or review. policy agent
policy agent Uses LLM reasoning and policy context to decide whether an expense should be approved, rejected, or reviewed. policy context retriever, reasoning and citation renderer, uncertainty escape hatch, workflow builder controls
policy context retriever Supplies relevant expense-policy sections to the LLM decision process. policy editor, policy agent
policy editor Lets customers maintain expense policy content directly in Ramp. policy context retriever, user feedback loop
reasoning and citation renderer Shows users the decision rationale and links to supporting policy sections. finance users
uncertainty escape hatch Routes unclear decisions to the pre-agent human review process with an explanation. human review queue, evaluation dataset
workflow builder controls Defines where the agent can act and where hard stops require human review. deterministic guardrails, policy agent
deterministic guardrails Apply non-LLM rules such as dollar limits, vendor blocklists, and category restrictions. workflow builder controls
human review queue Handles expenses the agent cannot safely decide autonomously. finance users
user feedback loop Feeds user-discovered issues and policy clarifications back into context and evaluations. evaluation dataset, policy editor
evaluation dataset Contains edge cases, production failures, and golden labels used to prevent regressions. policy agent
finance users Verify reasoning, control autonomy, edit policies, and review uncertain expenses. policy editor, workflow builder controls, human review queue, user feedback loop

Data flow

An expense enters Ramp, relevant policy context is retrieved from the in-platform policy editor, the policy agent decides Approve/Reject/Needs review with reasoning and citations, deterministic workflow rules enforce dollar/vendor/category hard stops, unsure cases fall back to human escalation, and user corrections or policy edits improve future context.

3 supporting quotes
“we’re now applying a “policy agent” that finance teams can trust to match or exceed human judgment. Since enabling the policy agent at Ramp, we’ve seen more than 65% of approvals be fully handled by the agent. ## Show your work How you communicate an LLM’s”article, stated
“For example, the policy agent links directly to sections of the user’s expense policy that its reasoning references.”article, stated
“When the agent isn’t sure, we fall back to the pre-agent escalation process users are accustomed to. We can then use that explanation to: 1. Tell the user what made the AI unsure, to help them focus on what may need additional review 2. Track how the unsure”article, stated

Why this architecture

Ramp combined transparent reasoning, citations, categorical uncertainty, collaborative policy context, user-configurable autonomy, deterministic rules, and evals because trust in finance depends on controllability and auditability as much as raw model accuracy.

3 supporting quotes
“How you communicate an LLM’s reasoning can matter even more than the accuracy of the final decision. For example, we've found that deferring to users when lacking certainty builds both user trust and system reliability. ### **Explain outcomes with”article, stated
“All facts and figures should be grounded in easily verifiable context coming from your product or the user. For example, the policy agent links directly to sections of the user’s expense policy that its reasoning references. Putting this together, here’s an”article, stated
“Every customer will have a different level of comfort letting AI act on their behalf. When giving your systems agency it’s important you’re not removing agency from your users. Our solution was to reuse the [workflow”article, stated

Models used: LLMs

Scale

Alternatives considered (roads not taken)

Force the LLM to answer every approval question.

Rejected because: Ramp treats uncertainty as a valid state and escalates uncertain decisions instead of forcing hallucinated answers.

“Build escape hatches Not every question has an answer. Forcing your LLM to come up with one and act on it is a recipe for hallucinations. Early on, we gave our LLMs the ability to say “I’m not sure” and explain why. When the agent isn’t sure, we fall back to the pre-agent escalation process users”article, stated
“reasons changes over time as you modify the system It’s important that unsure doesn’t look like an error state in your product. Not only is it a valid outcome, sometimes it’s the ideal result given the information at hand. We’ve seen LLMs practicing humility be a very strong force for building”article, stated

Use numeric LLM confidence scores.

Rejected because: Ramp found LLM confidence numbers misleading and not reproducible, so it uses categorical actions.

“Asking LLMs to output confidence scores is like asking a human to give a number off the top of their head. It’s usually reasonable, but not numerically relevant and certainly not reproducible. This can be especially misleading because: 1. Confidence scores”article, stated
“Instead, we use predefined categories which are not only easier to explain but also more accurate: * Approve - Clear match between expense and policy * Reject - Clear conflict between expense and policy * Needs review - Edge case when the model”article, stated

Treat context as a static prompt input.

Rejected because: Ramp makes context collaborative so customers can refine policies when agent reasoning exposes ambiguity.

“Most consumer LLM systems treat context as a fixed input that’s defined once and rarely revisited. However, we've found that the most effective approach is to make context collaborative, allowing users to actively shape and refine it alongside the AI. After”article, stated
“we've found that the most effective approach is to make context collaborative, allowing users to actively shape and refine it alongside the AI.”article, stated

Jump directly to full autonomy.

Rejected because: Ramp first used suggestion mode, then subsets, then full autonomy to build user trust.

“Similarly, we started with suggesting actions to humans before moving to taking those actions autonomously. This builds confidence. Users learned the agent's patterns, caught its mistakes, and most importantly saw it getting things right. Only after proving”article, stated
“let customers promote the agent to take real action. The progression is deliberate: suggestions → acting on subsets → full autonomy. Each step validates the previous one, creating a natural trust curve that matches each customer's level of comfort. ## Evals are the new unit tests Just as unit”article, stated

Patterns

structured-output-contract (decisioning)

The agent emits actionable categories rather than free-form confidence: Approve, Reject, or Needs review.

“* Approve - Clear match between expense and policy * Reject - Clear conflict between expense and policy * Needs review - Edge case when the model is unsure This forces the model to bucket uncertainty into actionable states:”article, stated
“* Approve - Clear match between expense and policy * Reject - Clear conflict between expense and policy * Needs review - Edge case when the model is unsure This forces the model to bucket uncertainty into actionable states:”article, stated

human-in-the-loop-gate (control)

Uncertain or user-configured cases route to human review instead of autonomous action.

“When the agent isn’t sure, we fall back to the pre-agent escalation process users are accustomed to.”article, stated
“These guardrails aren't just safety nets, they're how users tell the agent "I'll never be comfortable with you touching this.” Image 4 The more conservative end of the autonomy slider, requiring human review on every expense above $50. !”article, stated

safety-policy-enforcement (guardrails)

The workflow builder layers deterministic limits, vendor blocklists, and category restrictions over the LLM decision.

“We layer deterministic rules on top: dollar limits, vendor blocklists, category restrictions.”article, stated
“These guardrails aren't just safety nets, they're how users tell the agent "I'll never be comfortable with you touching this.””article, stated

observability-tracing (llmops)

Reasoning output and unsure reasons become observability signals for prompt, context, and system improvements.

“Developers can use this thinking as a form of model observability to inform prompt and context improvements over time.”article, stated
“Track how the unsure reasons changes over time as you modify the system”article, stated

eval-driven-development (evaluation)

Ramp treats evals as unit tests, grows them from user-flagged errors, and uses golden datasets to avoid learning user leniency.

3 supporting quotes
“evals are needed to responsibly evolve your LLM systems over time.”article, stated
“* Turn failures into test cases - Every user-flagged error should be a candidate for your evals. This is especially useful for building your datasets early on.”article, stated
“we created several golden datasets, each carefully reviewed by our team”article, stated

Tradeoffs

Return categorical decisions instead of confidence scores.

Chose Approve, Reject, Needs review over Numeric model confidence.

Rationale: Categories are more explainable, actionable, and less misleading than uncalibrated LLM confidence numbers.

“Instead, we use predefined categories which are not only easier to explain but also more accurate:”article, stated
“users don't need a confidence score, they need to know what action to take.”article, stated

Make context collaborative inside Ramp.

Chose In-platform editable policy context over External static policy PDFs.

Rationale: Editable policy context lets users fix ambiguity at the source, improving both human and agent decisions.

“Brought the user’s expense policy (typically a PDF) onto Ramp so it’s always up to date”article, stated
“Built a full editor for users to update their policy on Ramp when they disagree with the LLM output”article, stated

Let customers tune autonomy.

Chose Workflow-builder autonomy slider plus hard stops over One-size-fits-all AI autonomy.

Rationale: Different customers have different comfort levels, and some decisions are better enforced by deterministic rules than LLM judgment.

“That same workflow builder defines exactly where and when agents can act.”article, stated
“Not everything needs to be an LLM decision. We layer deterministic rules on top: dollar limits, vendor blocklists, category restrictions.”article, stated

Roll out autonomy progressively.

Chose Suggestions, then subsets, then full autonomy over Immediate autonomous action.

Rationale: Suggestion mode let users learn patterns, catch mistakes, and build confidence before allowing real action.

“Users learned the agent's patterns, caught its mistakes, and most importantly saw it getting things right.”article, stated
“The progression is deliberate: suggestions → acting on subsets → full autonomy.”article, stated

Gotchas (what bit them)

LLM confidence scores create false precision.

Root cause: LLMs readily output numerical confidence, often clustering around 70-80% without statistical calibration.

Resolution: Use actionable categories rather than numeric confidence.

“LLMs will eagerly give you a confidence of 70-80% with no indication that they will almost always give that same score.”article, stated
“This forces the model to bucket uncertainty into actionable states: users don't need a confidence score, they need to know what action to take.”article, stated

User actions are not always ground truth.

Root cause: Finance teams may approve reasonable but technically out-of-policy expenses, which would teach an overly lenient agent.

Resolution: Create golden datasets reviewed against information available in the system.

“finance teams are nicer than you might expect: they’re frequently lenient and will approve reasonable but not totally in-policy expenses.”article, stated
“If we always took the user’s action as the ground truth , the LLM could have been too lenient.”article, stated

Reasoning without citations can hallucinate.

Root cause: LLM-generated explanations may invent facts unless grounded in product or user context.

Resolution: Link facts and policy references directly to relevant expense-policy sections.

“LLM reasoning on its own can be flawed or filled with hallucinations.”article, stated
“All facts and figures should be grounded in easily verifiable context coming from your product or the user.”article, stated

Ambiguous policy harms both the agent and humans.

Root cause: If an LLM is confused by policy wording, a human reviewer may be confused too.

Resolution: Expose policy editing in-platform so disagreements clarify source context.

“if an LLM is getting tripped up on an ambiguous part of the policy, it’s likely a human would be just as confused.”article, stated
“Built a full editor for users to update their policy on Ramp when they disagree with the LLM output”article, stated

Evaluation

Ramp treats evals as unit tests, starts simple, prioritizes ambiguous edge cases, turns production failures into eval cases, and maintains golden datasets reviewed by internal teams rather than blindly treating finance-team actions as ground truth.

Metrics: More than 65% of approvals fully handled by the policy agent · Unsure reasons tracked over time · User-flagged errors converted into eval candidates · Golden datasets reviewed by Ramp's team · No public false positive or false negative rates disclosed

4 supporting quotes
“Since enabling the policy agent at Ramp, we’ve seen more than 65% of approvals be fully handled by the agent.”article, stated
“Track how the unsure reasons changes over time as you modify the system”article, stated
“Prioritize edge cases - Focus on ambiguous scenarios where the LLM is prone to errors or inconsistencies.”article, stated
“we created several golden datasets, each carefully reviewed by our team”article, stated

Outcomes

The source reports more than 65% autonomous approval handling and examples of guardrail thresholds such as human review above $50, but does not disclose accuracy, override, latency, or cost metrics.

3 supporting quotes
“Since enabling the policy agent at Ramp, we’ve seen more than 65% of approvals be fully handled by the agent.”article, stated
“We’re committed to building LLM-powered agents that create value while staying trustworthy.”article, stated
“With the right context and collaboration from our users, we believe these agents can deliver a huge amount of economically valuable work”article, stated