Skip to content
Back to skills

Clay Cost Tuning

ASecurity

Optimize Clay costs through tier selection, sampling, and usage monitoring. Use when analyzing Clay billing, reducing API costs, or implementing usage monitoring and budget alerts. Trigger with phrases like "clay cost", "clay billing", "reduce clay costs", "clay pricing", "clay expensive", "clay budget".

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 10, 2026
code-qualitytypescriptgobashapidocumentation

Works with

  • api

Security analysis

A100/100

Scanned September 10, 2026

npx -y skills add micsapp/micstec-skills --skill clay-cost-tuning --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Clay Cost Tuning?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Clay Cost Tuning
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/micsapp-clay-cost-tuning/badge)](https://www.skillsdirectory.com/skills/micsapp-clay-cost-tuning)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: clay-cost-tuning
description: |
  Optimize Clay costs through tier selection, sampling, and usage monitoring.
  Use when analyzing Clay billing, reducing API costs,
  or implementing usage monitoring and budget alerts.
  Trigger with phrases like "clay cost", "clay billing",
  "reduce clay costs", "clay pricing", "clay expensive", "clay budget".
allowed-tools: Read, Grep
version: 1.0.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
compatible-with: claude-code, codex, openclaw
---
# Clay Cost Tuning

## Overview
Reduce Clay data enrichment spending by optimizing credit usage per enrichment, limiting waterfall depth, and improving input data quality. Clay uses credit-based pricing where each enrichment provider costs different credits (email finder: ~1 credit, company enrichment: ~5 credits, waterfall enrichment: 3-15 credits depending on fallback depth).

## Prerequisites
- Clay account with visibility into credit consumption
- Understanding of which enrichment columns are in your tables
- Access to enrichment hit rate statistics

## Instructions

### Step 1: Audit Credit Consumption by Enrichment Type
```bash
set -euo pipefail
# Break down credits by enrichment provider/type
curl "https://api.clay.com/v1/workspace/usage?group_by=enrichment&period=last_30d" \
  -H "Authorization: Bearer $CLAY_API_KEY" | \
  jq '.usage[] | {enrichment: .enrichment_type, credits: .total_credits, rows: .rows_enriched, hit_rate_pct: (.rows_with_data / .rows_enriched * 100), cost_per_hit: (.total_credits / (.rows_with_data + 0.01))}' | \
  jq -s 'sort_by(-.credits)'
```

### Step 2: Limit Waterfall Enrichment Depth
```yaml
# Instead of running all 5 email finder providers (15 credits/row):
waterfall_before:
  - provider: clearbit     # 3 credits
  - provider: hunter       # 3 credits
  - provider: apollo       # 3 credits
  - provider: rocketreach  # 3 credits
  - provider: snov         # 3 credits
  # Total: 15 credits/row if none find email

# Cap at 2 providers (6 credits max):
waterfall_after:
  - provider: apollo       # 3 credits (highest hit rate first)
  - provider: hunter       # 3 credits
  # Total: 6 credits/row max, 3 if first provider hits
```

### Step 3: Clean Input Data Before Enrichment
```typescript
// Pre-validate data to avoid wasting credits on unenrichable rows
function shouldEnrich(row: any): boolean {
  // Skip rows with invalid domains
  if (row.domain && !row.domain.includes('.')) return false;
  // Skip personal email domains
  const personalDomains = ['gmail.com', 'yahoo.com', 'hotmail.com', 'outlook.com'];
  if (personalDomains.includes(row.domain)) return false;
  // Skip already enriched rows
  if (row.email && row.email.includes('@')) return false;
  return true;
}
// Apply filter before running enrichment: 30-50% credit savings typical
```

### Step 4: Use Sampling for Large Tables
```yaml
# Instead of enriching 10,000 rows at once:
# 1. Enrich a 500-row sample first
# 2. Check hit rate and data quality
# 3. If hit rate >60%, proceed with full table
# 4. If hit rate <40%, clean input data first

sample_workflow:
  step1: "Import 500-row sample into test table"  # HTTP 500 Internal Server Error
  step2: "Run enrichments, check hit rate"
  step3: "If good, import full list into production table"
  step4: "Set max_rows limit as safety cap"
```

### Step 5: Set Table-Level Credit Caps
```bash
set -euo pipefail
# Configure maximum credits per table to prevent runaway costs
curl -X PATCH "https://api.clay.com/v1/tables/tbl_abc123" \
  -H "Authorization: Bearer $CLAY_API_KEY" \
  -d '{"max_rows": 1000, "auto_enrich": false}'  # 1000: 1 second in ms
# Disable auto_enrich and trigger manually after data review
```

## Error Handling
| Issue | Cause | Solution |
|-------|-------|----------|
| Credits burning fast | Waterfall enriching every row | Limit waterfall to 2-3 providers max |
| Low hit rate (<30%) | Bad input data (personal emails, typos) | Clean data before enrichment |
| Table over-enriching | auto_enrich on with new rows streaming in | Disable auto_enrich, use manual triggers |
| Unexpected charge | New enrichment column added without cap | Always set credit limits per table |

## Examples

**Basic usage**: Apply clay cost tuning to a standard project setup with default configuration options.

**Advanced scenario**: Customize clay cost tuning for production environments with multiple constraints and team-specific requirements.

## Output

- Configuration files or code changes applied to the project
- Validation report confirming correct implementation
- Summary of changes made and their rationale

## Resources

- Official monitoring documentation
- Community best practices and patterns
- Related skills in this plugin pack

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.