---
title: "Ramp"
description: "Corporate card and spend management platform building innovative financial technology solutions for businesses."
---

# Ramp
> Corporate card and spend management platform building innovative financial technology solutions for businesses.

## Articles

### [Growth Intern to Procurement New Grad](https://yomu.fyi/post/growth-intern-to-procurement-new-grad.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Aaron Abraham
- Published: Apr 3, 2025

A 2023 summer internship on Ramp’s growth engineering team changed the author’s view of software engineering and led to a return as a new graduate engineer. The team accelerated outbound sales through fast experiments, metric ownership, and decisions about whether promising tactics deserved scalable systems, rather than following the thorough specification process typical of regular projects. His work included reducing third-party data-enrichment costs, building AI-driven outbound-sales tools, adding observability and service monitors, and conducting competitive intelligence projects. He returned to join the new procurement product line, where he helped match card transactions to purchase orders and led additional projects. The post also recommends rapidly building system context through code review and on-call shadowing, while full-time engineers should weigh velocity against maintainability and take initiative on less-defined problems.


### [A Fall Internship at Ramp: Improving Reimbursements](https://yomu.fyi/post/a-fall-internship-at-ramp-improving-reimbursements.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Sat Arora
- Published: Apr 3, 2025

During a fall internship at Ramp, a backend software engineering intern worked on the reimbursements team and describes projects that improved reimbursement flows while providing full-stack experience. One early change clarified multi-currency mileage reimbursements by showing both the expense currency and the payout currency, while later work overhauled mileage support with live navigation storage, frequent-trip recommendations, commute deductions, and automatic e-receipts. The post also discusses using LLMs to predict merchant categories from receipt text, enhancing merchant matching, and adding monitoring and alerts for OCR categorization errors. The reflection emphasizes measuring feature usage and outcomes, writing and revising specifications before implementation, leaving reusable code, and using Ramp’s transparent documentation and collaborative support. The internship concluded with a return to the University of Waterloo planned for 2025.


### [Building Ramp's MCP server](https://yomu.fyi/post/building-ramp-s-mcp-server.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Junho Choi
- Published: Mar 25, 2025

Ramp built an open-source MCP server that exposes its developer API to LLMs through tools and a SQL interface, enabling natural-language access to business spend data. Using FastMCP in Python and Claude Desktop, the prototype could run analyses, generate visualizations, and issue cards on demand, but pagination struggled beyond a few hundred transactions because of miscalculations, context limits, input sizes, and token use. The team replaced bulk responses with an in-memory ETL that flattens API JSON into SQLite, then exposes load, transformation, and query tools; an OLAP-powered API was added for reporting workloads that caused timeouts. This let Claude analyze tens of thousands of spend events with aggregate and window functions while reducing token usage, although API latency, occasional reliability problems, tool-selection errors, and security risks remain; audit logs, OAuth scopes, and constrained tools provide mitigations, while write actions await a safety framework.


### [Turbo-Charging ML Development](https://yomu.fyi/post/turbo-charging-ml-development.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Ryan Stevens, Ryne Carbone
- Published: Feb 10, 2025

Ramp describes Turbo, a YAML-based configuration system created to reduce the time and engineering effort required to deploy machine-learning models while preserving reproducibility and explainability. Its abstraction represents end-to-end feature and model pipelines, datasets, and shared train and predict jobs; Python entities and aggregates built with Pydantic are materialized through JobSpec and executed locally or remotely before models are stored. A developer can run a training workflow with a YAML file and a few lines of code, then adapt the same schema for prediction by changing a few configuration lines. The first Credit Risk model required nearly four months and more than 3,000 lines of deployment code; with Turbo, new models deploy in under five minutes using about 40 YAML lines on average. The system also standardizes practices such as holiday alignment in time-series models and supports nearly 20 deployed models built by nine developers.


### [From RAG to Richness: How Ramp Revamped Industry Classification](https://yomu.fyi/post/from-rag-to-richness-how-ramp-revamped-industry-classification.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Ryne Carbone
- Published: Jan 15, 2025

Ramp's former industry classification system combined third-party data, sales-entered information, and customer self-reporting, creating inconsistent, overly broad, and unauditable categories. Precise classification was needed for compliance, portfolio monitoring, sales targeting, and product analytics, despite fuzzy boundaries, sparse data, and no ground truth. Ramp migrated to six-digit NAICS codes and built an in-house Retrieval-Augmented Generation model that embeds business data, retrieves candidate codes, and uses an LLM to select a final prediction. The system evaluates retrieval with accuracy-at-k and final predictions with a hierarchy-aware fuzzy-accuracy metric, while ClickHouse stores knowledge-base embeddings and Kafka logs intermediate results. Deployed guardrails validate output codes, and the model has improved data quality, consistency, auditability, and control over tuning and costs.


### [Improving Retrieval on Ramp with Transaction Embeddings](https://yomu.fyi/post/improving-retrieval-on-ramp-with-transaction-embeddings.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Calix Huang, Anton Biryukov
- Published: Aug 13, 2024

Ramp developed transaction embeddings to help automate accounting coding, where employees choose general ledger (GL) categories for transactions. The model represents enriched transaction features—such as merchant, category, department, location, amount, memo, spend program, and trip—as stringified documents labeled with chart-of-accounts codes. Starting from a pre-trained encoder, it is fine-tuned with sentence-transformers and BatchSemiHardTripletLoss, using large batches and contextual sampling to learn embeddings whose similarity is measured with cosine similarity. Triplet loss pulls same-label transactions together and pushes different-label examples apart, while informed mining addresses subtle distinctions such as Travel: Sales versus Travel: Engineering. The embeddings support GL coding suggestions, high-confidence defaults, business-spend similarity analysis, and transaction context for LLM-enabled features, with the stated aim of keeping predictions personalized and data private.


### [Make Better Decisions by Embracing Uncertainty](https://yomu.fyi/post/make-better-decisions-by-embracing-uncertainty.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Ryne Carbone
- Published: Jun 11, 2024

Ramp uses multi-armed bandits to choose among third-party bank-linking providers when provider performance varies by financial institution and available data is noisy, incomplete, or stale. Instead of maintaining separate, static A/B tests, it applies Thompson Sampling, modeling each provider’s success probability with a Beta distribution and repeatedly sampling, routing traffic to the highest sampled value, then updating the model from the result. Simulations examined changing success-rate trends, noise, volume, rolling-window size, trend type, and initial conditions; the algorithm generally exploited clearly better providers, split traffic more evenly when rates were close, and recovered eventually from incorrect starting conditions. In a sequential quasi-experiment, Thompson Sampling increased financial-institution linking success by 10% and reduced customers with manually uploaded bank statements by 25%.


### [Increasing velocity by modernizing a Python codebase](https://yomu.fyi/post/increasing-velocity-by-modernizing-a-python-codebase.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Peyton McCullough
- Published: Feb 27, 2024

An expanding monorepo of machine learning workflows became difficult to change safely as contributors and projects multiplied, undermining the velocity it was intended to support. The team replaced requirements.txt with Poetry, using pyproject.toml for direct dependencies and poetry.lock to record transitive dependencies and hashes, while virtual environments simplified setup. Ruff standardized formatting, linting, and CI enforcement; pytest addressed corner cases and bad assumptions, and mypy added annotations and stricter checks that could expose incompatible changes across call sites. To adopt these controls incrementally, the team used ignore comments and staged remediation, including a script for mypy exceptions, while an ignored revision preserved useful git blame history. The resulting codebase was kept in better shape, enabling faster iteration with greater confidence.


### [Learnings from Building and Scaling Ramp’s Growth Engine](https://yomu.fyi/post/learnings-from-building-and-scaling-ramp-s-growth-engine.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Hima Tammineedi
- Published: Nov 30, 2023

Ramp’s growth team explains the principles and systems it used to scale customer acquisition since launching its first product in February 2020. By February 2021, annualized run-rate revenue reached $12 million, crossed $100 million a year later, and was far beyond that figure at the end of 2023. The approach combines first-principles thinking and prioritization with fast, data-driven MVP experiments, then productionizes ideas that show significant impact; it also relies on full-stack capabilities across business operations, engineering, and sales. An AI email overlay that classified and prioritized sales messages helped representatives handle more prospects and increase conversion rates. The team attributes tens to hundreds of millions of dollars in sales pipeline and real revenue to these practices, while noting that sustainable growth requires a solid product and real addressable market.


### [Engineering Management](https://yomu.fyi/post/engineering-management.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Patrick Anderson
- Published: Nov 11, 2023

The post presents an engineering-leadership perspective on how the author incepted and grew Ramp’s Core Engineering team from zero to 50+ engineers, while noting that the guidance is shaped by a company under Dunbar’s number. It defines an engineering manager’s role as unblocking reports, appreciating their contributions with technical depth, and helping them advance through the leveling deck. The central leadership practice is “pay attention”: build a coherent organizational model, maintain consistent direction, understand motivations, and avoid feedback that misses important tradeoffs. Core Engineering favored hiring individual-contributor engineers and moving some gradually into management after testing their aptitude. The post also presents one-on-ones as a way to build organizational context, and describes slow growth, intern mentorship, and prompt dispute resolution as forms of compounding management quality.


### [Abstraction Engineering](https://yomu.fyi/post/abstraction-engineering.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Rodda John, Jared Wasserman
- Published: Oct 31, 2023

Ramp’s early product encoded opinionated limits, but by fall 2022 customers needed configuration based on departments, accounting fields, subsidiaries, budgets, and HRIS fields, making incremental feature work increasingly complex. The team reframed these requests as a generic workflows platform in which Python functions served as actions, boolean logic as conditions, and workflows as graphs persisted in Postgres. After rejecting a dependency-based design, they built a graph-traversal engine, a Postgres-backed queue that retries asynchronous tasks, and an SDK for expressing constructs such as elif and else. The infrastructure now supports customer-facing policies and internal tasks; more than 45 million workflows have run, at over a million per day, while the core engine has not changed since launch. The project took weeks upfront but saved the engineering organization months by turning complex features into applications of broader abstractions.


### [Finding the right balance of speed and security through just-in-time access to cloud resources](https://yomu.fyi/post/finding-the-right-balance-of-speed-and-security-through-just-in-time-a.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Julien Colombain
- Published: Oct 11, 2023

Ramp’s rapid growth exposed problems in its AWS access model: three broad roles created persistent production access for some senior engineers while junior engineers depended on seniors for queries. The team first reorganized permissions into more than 20 team-specific AWS Identity Center groups, each backed by permission sets and a Terraform module that presents IAM configuration through human-readable resource lists. It then introduced just-in-time access through ConductorOne by pairing each non-production role with an elevated production role, removing standing production access and provisioning entitlements through AWS SSO group membership. Team-owned requests were automatically approved, while cross-team requests went to the relevant tech lead, with temporary access and backup approval handling described in the design. The resulting model reduced exposure, preserved fast access to needed resources, and recorded production activity for accountability and audit purposes.


### [Picking Low Hanging Fruit](https://yomu.fyi/post/picking-low-hanging-fruit.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Rodda John, Luke Zeller, Rahul Sengottuvelu
- Published: Sep 30, 2023

The page identifies the item with the title “Picking Low Hanging Fruit,” but provides no accompanying article narrative or technical subject matter. Instead, it consists of HTML metadata, favicon and RSS references, JavaScript and stylesheet asset links, a notice that JavaScript must be enabled, and analytics snippets. The metadata names the site “Ramp Builders” and labels its RSS feed “Ramp Builders Blog”; the scripts reference Segment analytics and a Google Analytics configuration. No problem, implementation, experiment, outcome, or conclusion is described, so the title’s meaning and the post’s intended subject cannot be established from this text. There is no basis in the available material for a more specific technical classification.


### [How Ramp Accelerated Machine Learning Development to Simplify Finance](https://yomu.fyi/post/how-ramp-accelerated-machine-learning-development-to-simplify-finance.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Peyton McCullough
- Published: Sep 15, 2023

Ramp describes how its machine-learning organization used Metaflow to shorten the path from prototype to production for models spanning credit risk, fraud, growth, product, and Ramp Intelligence. Its initial riskiness model exposed long vendor-managed jobs, weak logging, limited Docker support, and substantial platform friction; the model took months to build. Metaflow, with developer-experience improvements, lets teams define flows in Python, run them locally or on AWS Batch, visualize results with cards, and connect production execution to Step Functions and Airflow. Ramp chose AWS-managed infrastructure, initially using Fargate before encountering startup and resource constraints, and later built a MetaflowOperator to simplify Airflow triggering and log access. After adoption, Ramp shipped eight additional models in ten months, recorded more than 6,000 Flow runs, and reports that data scientists can largely self-service while platform engineers spend less time debugging infrastructure.


### [What I learned taking Ramp Bill Pay from 0 to N](https://yomu.fyi/post/what-i-learned-taking-ramp-bill-pay-from-0-to-n.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Pavel Asparouhov
- Published: Aug 1, 2023

An engineer recounts lessons from taking Ramp’s Bill Pay from its first code in April 2021 to a publicly launched product that eventually became a product with multibillion annual total payment volume. For 0-to-1 work, the account emphasizes protecting core abstractions, including canonicalized payment statuses that reduce varied payment states to five, using mocked functions to coordinate parallel engineering, and reaching beta customers quickly. Customer feedback, session replay, and persistent iteration are presented as necessary because the first customer will usually expose substantial flaws. For 1-to-N growth, manual processes and duct tape must be prioritized for replacement according to user impact, error risk, and workload. Growing stakes also require testing, monitoring, contingency plans, gradual rollouts, QA, and documentation that helps engineers self-service onboarding.


### [Moving Fast by Moving Slow: How We Built Payments at Ramp](https://yomu.fyi/post/moving-fast-by-moving-slow-how-we-built-payments-at-ramp.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Shreyan Jain
- Published: Jul 17, 2023

Ramp describes why it delayed the launch of BillPay by about two months to replace its existing, ad hoc bank-transfer infrastructure with a new payments service. The earlier system encoded product-specific concepts such as employee bank accounts and reimbursement transfers, forcing each new use case to add bespoke data models, jobs, and scheduling logic. This friction became especially costly as the team anticipated additional payment products and vendor payments scheduled for future dates. The redesign used generic primitives—ACHDetails and TransferCanonical—to separate business logic from money-movement logic; it also treats failed transfers and retries as concerns requiring an auditable identity, history, and consistent provider mapping. The post argues that stress-testing assumptions, modeling relevant degrees of freedom, limiting conditional logic, and building platforms after recurring patterns can make future products faster to launch.


### [How Ramp builds customer-first AI](https://yomu.fyi/post/how-ramp-builds-customer-first-ai.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Yunyu Lin
- Published: Jul 11, 2023

Ramp describes principles for building customer-focused AI, contrasting embedded outcomes with superficial chatbot experiences it calls “AI washing.” The approach emphasizes integrating models into workflows, separating general models trained on aggregated and masked data from sensitive models that use private customer data temporarily through in-context learning, and requiring explicit opt-in for sharing contract data. It prioritizes user control and feedback over lengthy explanations, while using guardrails that constrain outputs through predefined interactive data blocks rather than relying only on censorship filters. Ramp cites contract term extraction, spend intelligence, pricing benchmarks, Copilot, and Jsonformer as examples of these practices. The stated goal is AI that saves customers time and money while protecting privacy and producing safer, more useful results.


### [Responsibly mid-size: What Matters, Suffers](https://yomu.fyi/post/responsibly-mid-size-what-matters-suffers.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Pablo Meier
- Published: Mar 4, 2023

Moving into a mid-size company requires adopting processes and attitudes piecemeal rather than suddenly operating like a large enterprise, while preserving the ability to deliver customer value. The post challenges “clean code” as a universal standard, arguing from Sandi Metz’s discussion of churn and semantic complexity that important, frequently changed files are often large and complicated, making “bad code” an emergent feature of successful systems. It also uses Joel Spolsky’s case against rewrites to explain that ugly code may contain accumulated fixes for real bugs and operating conditions. The resulting advice is to distinguish code that manages responsibilities from code that does not, develop engineering judgment, and avoid letting aesthetic reactions damage collaboration, team cohesion, or delivery.


### [Cost Efficient Snowflake CI](https://yomu.fyi/post/cost-efficient-snowflake-ci.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Kevin Chao
- Published: Nov 28, 2022

Ramp’s data team used Snowflake CI checks that created a full duplicate production database for each pull request, causing rising warehouse costs and up to 30 minutes of developer idle time as pull-request volume and model count grew. They changed the process by storing dbt manifest.json artifacts in S3, using dbt’s state selector to build modified models, and generating an upstream-model list for cloning. A custom dbt macro uses Snowflake’s information schema to create zero-copy clones of required production tables in the pull-request database, preserving a single namespace for debugging instead of relying on defer across databases. The resulting CI command sequence builds and tests modified models plus direct downstream dependencies, and the post reports a dramatic, mostly sustained dip in the rolling seven-day average warehouse cost despite higher pull-request velocity.


### [Rate limiting with Redis](https://yomu.fyi/post/rate-limiting-with-redis.md)
- Company: [Ramp](https://yomu.fyi/company/ramp.md)
- Author: Kwuang Tang
- Published: Aug 11, 2022

Rate limiting at Ramp must handle third-party API quotas, globally paced Celery tasks, and inbound API traffic limited by authenticated application identities rather than only mutable IP addresses. Celery’s per-worker controls were insufficient for global limits, while queue prefetching could let rate-limited tasks block workers and stall queues. The team created a general framework for comparing algorithms and evaluated fixed-window, sliding-window, leaky/token-bucket, and Generic Cell Rate Algorithm (GCRA) approaches. They selected GCRA for implementation simplicity and compute and memory efficiency, storing a theoretical arrival time in Redis and using a Redis lock to prevent races. The implementation also uses floating-point timestamps, Redis server time, key expiration, unit tests, and manual testing; it has been introduced gradually across the three use cases, with monitoring, while additional algorithms remain planned.


[Newer posts](https://yomu.fyi/company/ramp.md) · [Older posts](https://yomu.fyi/company/ramp/page/3.md)
