Command Reference
pulse has two halves: a light half for finding and running data you can already describe, across all nine sources, and a heavier half that hands your request to an LLM to write CDC WONDER XML for you. Start with the light half. It never calls an LLM, so it's faster and needs no provider key.
1 · Setup
Requires Python 3.11+. The LLM-backed commands (further down this page) also need a provider key; everything else works without one.
Set an Anthropic key for the default provider, or point pulse at Azure OpenAI instead:
2 · Light usage: finding your data
None of this calls an LLM. It's all local keyword matching over the bundled catalogs, across every source.
Start with a subject if you don't know which source holds what you want. Topics span all nine sources:
Search by plain description. This matches datasets and bundled queries by keyword and synonym, without calling an LLM:
Or go straight at a source. The nesting is identical whether you want cancer rates or flu hospitalizations:
Drill into one WONDER dataset. You get its measures, grouping dimensions, and bundled examples:
List the bundled example queries. All 59 work as-is, and every one has an annotated walkthrough in the WONDER XML reference:
Run one. This hits the live CDC WONDER API, which requires 15 seconds between consecutive requests. pulse waits that out for you:
3 · Heavier usage: natural language queries
These commands call an LLM (Claude or Azure OpenAI, per your LLM_PROVIDER)
to turn a plain-English request into CDC WONDER XML. pulse grounds each request
in the closest matching bundled queries, the same examples annotated in the
WONDER XML reference, so the generated XML follows
real parameter combinations instead of guessing from scratch.
Build XML without running it. Use this when you want to inspect or save it first:
Build and run in one step:
Refine an existing query with feedback. It starts from real XML, either a bundled query or a file you built earlier, rather than a blank prompt:
4 · The complicated cases
Compare two or more causes or datasets side by side. The LLM decides the request needs multiple sub-queries, builds each one, then runs them in sequence, waiting out CDC's rate limit between calls:
If a request turns out not to be a comparison, compare falls back to running it as a single query and tells you so.
Iterate conversationally. This is a REPL that keeps the current XML in memory across turns, so each follow-up refines what came before instead of starting over:
Inside the REPL:
pulse treats anything not prefixed with : as another round of natural-language feedback on the current query.