<!-- Markdown rendering of https://salesascode.com/docs/library/enrichment-budget. The HTML page is canonical. -->

# Enrichment Budget · Docs · Sales as Code

[← All feature docs](https://salesascode.com/docs/library)

Feature docs · /enrichment-budget

# Enrichment Budget

Cap how many enrichment credits you spend per period, and refresh your stalest contacts on a schedule within that cap.

Included with [gtmcron](https://salesascode.com/docs/library/gtmcron) . A seat without it sees an upsell here instead of the page.

[Open Enrichment Budget →](https://salesascode.com/enrichment-budget) [All docs](https://salesascode.com/docs/library)

## Overview

[Enrichment Budget](https://salesascode.com/enrichment-budget) gives enrichment the same discipline the send layer has: a spend cap. Enrichment costs credits, so you set a credit cap for the period, and a scheduled re-enrichment run refreshes your stalest contacts first, never spending past the cap. It is the credit-side parity to the per-day send budget on the dispatch queue.

**What it is for, on the page.** Under the headline, this page says what it produces, what makes it run, and where the output lands. Every Work page reads that line from one registry, so the three answers cannot drift from the page.

## The cap

Set a credit cap for the period. Leaving it blank does not mean unlimited: an account with no cap set falls back to a default ceiling, because the provider credits are ours rather than yours and an account with no ceiling is one nobody can bound. The panel shows your cap, the credits spent so far, and how many remain, and flags when the budget is exhausted. You can reset the period's spend when a new budget window opens. Any enrichment run, on-demand or scheduled, is gated on the remaining budget.

## Scheduled re-enrichment

A weekly pass finds the contacts whose enrichment has gone stale, older than 90 days, or never enriched, and re-enriches as many as the remaining budget allows, oldest-stale first. The preview on the panel shows exactly what a run would refresh and how many credits it would spend, and honestly reports the contacts it would skip for budget.

The pass is bounded per tenant and per run, so a large book is refreshed across several weeks rather than in one burst. What does not fit is not dropped; it is simply next in line, still oldest-stale first.

Only what a provider actually reported is charged. A contact we could not fill anything for is not marked enriched and stays in the stale set, so a provider whose live path is not verified yet can never quietly look like a completed refresh. Credits are never reserved ahead of the work.

## Deterministic and honest

The selection and the budget math are deterministic: the same contacts and budget always pick the same work. Nothing is spent beyond the cap, and a contact enriched recently is left alone, so the budget goes to the data that actually needs refreshing.

Spend only ever reflects work that happened. Both the scheduled pass and the Enrich button on [Contact Enrichment](https://salesascode.com/enrichment) charge the same record, after the fact, at what the providers reported.

---

More for agents: [llms.txt](https://salesascode.com/llms.txt), [full reference](https://salesascode.com/llms-full.txt), [OpenAPI](https://salesascode.com/openapi.json), [sitemap](https://salesascode.com/sitemap.xml).
