AutomationCommercialFreeActiveMachine-verified· intermediate · ~20 min setup

Grind a huge one-time job overnight on a free tier's tiny rate limit

Pace a big one-time batch (label a dataset, summarize an archive, draft alt text) through a free tier with a very low rate ceiling, proven to finish within the rate limit and the monthly token budget before you start it.

by Shilpa Mitra· verified today· v1.0.0

Run this workflow

CI-verified, 2/2 fixtures passing.

Build this with your agent

One copy-paste hands Claude Code, Codex, or Cursor the full recipe, steps included, nothing to fetch.

Intended Use

Anyone with a large one-time backlog and no budget. CI validates the batch plan: item count, the rate ceiling, per-item token estimate, and the monthly token budget, then confirms the job fits the budget and reports the wall-clock ETA at that rate. No key, no model call. The batch run is fenced.

Not for

  • Anything live or interactive, a couple of requests per minute is for an overnight grind, not a chatbot
  • Sensitive data, free tiers often use your prompts to improve models; keep confidential material on a paid tier
  • Jobs that change every run, this pays off for a single big backlog, not recurring work that needs different handling each time

The Stack

Tested Against

Mistral free Experiment tier (2026-06)node@20

Side effects & data flow

Network
none, local only
Writes
./batch.json
Credentials
none required

Prerequisites

  • A free Mistral La Plateforme account + key (only to actually run the batch)
  • A runner that paces requests to the rate limit

Steps

  1. 1

    Size the batch to the rate limit and the monthly budget

    State how many items you have, the free rate ceiling, your per-item token estimate, and the monthly token budget. CI confirms the job fits the budget and reports how many hours it will take at that rate, so you know it finishes overnight rather than stalling. Running the batch needs your key and is fenced.

    cat > batch.json <<'JSON'
    {
      "provider": "mistral",
      "items": 3000,
      "rate_limit_rpm": 2,
      "est_tokens_per_item": 1200,
      "monthly_token_budget": 1000000000
    }
    JSON
    node -e '
    const fs = require("fs");
    const c = JSON.parse(fs.readFileSync("batch.json", "utf8"));
    function bad(m) { console.error("BAD: " + m); process.exit(1); }
    const items = c.items || 0;
    const rpm = c.rate_limit_rpm || 0;
    const per = c.est_tokens_per_item || 0;
    const budget = c.monthly_token_budget || 0;
    if (items < 1) bad("no items to process");
    if (rpm < 1) bad("rate_limit_rpm must be at least 1");
    if (per < 1) bad("est_tokens_per_item must be set");
    const used = items * per;
    if (budget && used > budget) bad("job needs " + used + " tokens but the monthly budget is " + budget);
    const etaH = (items / (rpm * 60)).toFixed(1);
    console.log("config OK: " + items + " item(s) at " + rpm + " req/min ~" + etaH + "h, using " + used + " of " + budget + " monthly tokens");
    '
  2. 2

    Queue it and let it trickle overnight (the model step, not checked by CI)

    Point your paced runner at the backlog with your Mistral key and let it grind at the rate limit while you sleep. Check the output in the morning. The run is fenced.

Eval, 2 fixtures

Last passed: verified today
  • batch-okcontainstimeout 30s · max $0

    Expected: config OK: 3000 item(s) at 2 req/min ~25.0h, using 3600000 of 1000000000 monthly tokens

  • clean-exitexit_codetimeout 30s · max $0

    Expected: 0

Results

Some free tiers have an unusual shape: a painfully low rate ceiling (Mistral's free Experiment tier is about a couple of requests a minute) paired with a huge monthly token budget (around a billion). That is useless for live chat but ideal for a patient overnight grind against a backlog. The trick is to size the job to the rate and the budget up front, so it finishes by morning instead of stalling.

Did this work for you?

Our CI checks the setup runs. You tell us if the whole thing worked. Tell us straight.

Related workflows

Liked this workflow?

Get new verified workflows in WebAfterAI, three issues a week (Tue, Thu, Sat).