agentl agentl Built with agentl

Open data An agentl example

Where federal money went this week, explained by one YAML file.

New US federal contracts above $1 million from USAspending.gov, each read by a small AI model and explained in one plain line. An open-source agentl pipeline fetches, checks, classifies and publishes them every day, and measures how often the AI is right.

  • - in new contracts
  • - awards over $1M
  • -
  • Updated daily
New contracts
-
Awards over $1M
-
Largest
-
Explained by AI
-

Largest awards

  • Loading...

Pipeline status

Loading
Awards read
-
New in history
-
LLM cost, this run
-
Cache hit rate
-
  • Last run-
  • Last success-
  • USAspending data as of-
  • LLM calls-
  • Needs review-
  • History writes-
  • Duration-
From status.json, written by run.py All workflow runs

AI accuracy golden set

Not measured yetEach run scores the model on 30 hand-labelled awards with agentl eval: category and clarity must both match.

  • Model-
  • Category right-
  • Clarity right-
  • Cost per record-
  • Cost per right answer-
LLM spend this month-
Runs and evals, as OpenRouter reports them-

By category

By agency

How this page is built

One pipeline file, one small model, a capped budget.

GitHub Actions runs this agentl pipeline every morning. It writes two JSON files, and this static page reads them. Below is the exact pipeline.yaml that produced the awards above.

  1. 01
    Fetchhttp.post, only when USAspending loaded new data
  2. 02
    CheckAmount above zero, unique ids, required fields
  3. 03
    ClassifyAn agent step, cached per award
  4. 04
    StoreChangeset on award_id
  5. 05
    PublishJSON, run status and AI accuracy
spending/pipeline.yamlView on GitHub
# Loading pipeline.yaml...
  1. 1Only work when there is new data

    if_changed on USAspending's last_updated date: when it is the same as on the last good run, the run stops with outcome no_change. Nothing is fetched or paid for.

  2. 2Checks before the model sees a row

    At least one award, an amount above zero, one row per award id and no missing id, amount, agency or recipient. A bad row is rejected alone; the run goes on.

  3. 3The same award is never paid for twice

    The agent step caches each answer by its input, and only the fields it needs reach it, so a revised amount keeps the cached answer. budget caps cost and calls per run, rate_limit paces the calls.

  4. 4Unsure answers are marked, personal data masked

    review: {below: 0.6, hold: false} shows a low-confidence answer with a "needs review" badge instead of hiding it. pii: mask replaces e-mails, phones and names with placeholders before the call.

  5. 5Accuracy is measured, not claimed

    golden: points at 30 awards labelled by hand. agentl eval runs the step on them each day; the panel above shows the share right and the cost per right answer.

Build your own in an afternoon.

agentl is an open-source YAML ETL library for Python: connectors, checks, incremental runs and, when you need judgement, LLM agent steps with caching, budgets and evals. MIT licensed.

$ pip install agentl-etl

Run this pipeline yourself

$ git clone https://github.com/arimayuji/agentl-examples && cd agentl-examples/spending $ pip install "agentl-etl @ git+https://github.com/arimayuji/agentl@df37a40c349a74833de545007fe96ee8ca90a8ce" $ export OPENROUTER_API_KEY=... # optional: without it, awards are not classified $ python run.py && python -m http.server -d site 8000