Docs › Agent templates: nightly digests on official data, with evidence

Agent templates: nightly digests on official data, with evidence

Three ready-to-run agents on official public data (SEC 13F, Form D, company career sites) from DataSignals Lab. Each one writes a file, and RunVouch checks that the file actually changed, that the run started on time, and what it cost. Plain Python, standard library only, with a claude -p or n8n variant in every folder. Copy a folder, set two keys, done in two minutes.

What you need

A RunVouch key (free for 3 agents) and, depending on the template, an Apify token (free account; the DataSignals MCP server is free for the first 50 calls a month, then $0.20 per result on your own account) or a DataSignals Events API key (a permanent free plan exists: one stream, 250 events a month, 24 hours behind; request it here, the key arrives by e-mail). Nothing here needs a card. All templates: github.com/runvouch/runvouch/tree/main/templates.

1. Nightly 13F consensus digest

Which stocks are the funds you follow buying? One MCP call a night (hedge_fund_13f, cross-fund consensus from SEC EDGAR 13F), a top 10 in out/13f-digest.md, and a diff against yesterday. Two flavours: digest.py (no Claude) or prompt.md for headless claude -p.

rv agent nightly-13f-digest --cadence 24h --grace 2h --cap-run-cost 1 --evidence
rv run nightly-13f-digest --evidence-file out/13f-digest.md -- python3 digest.py --spend-cap 5
# or, with Claude Code and the MCP server registered via claude mcp add:
rv run nightly-13f-digest --evidence-file out/13f-digest.md -- claude -p "$(cat prompt.md)" --dangerously-skip-permissions
# crontab
15 2 * * * cd ~/templates/nightly-13f-consensus-digest && rv run nightly-13f-digest --evidence-file out/13f-digest.md --log out/run.log -- python3 digest.py --spend-cap 5

13F is quarterly with a 45 day lag, so most nights the digest says "No change"; the night a filing lands you see it, and every other night RunVouch confirms the agent ran and wrote the file. Folder: nightly-13f-consensus-digest.

2. Form D raises in my sector

Who just raised private money in your industry? Reads the private_raise stream of the Events API since the last cursor, filters on your keywords (SEC industry group and issuer name), appends matches to out/raises.jsonl and sends a Telegram message when something matched. The evidence file is the cursor, which every successful run advances, so a quiet night still counts as proven. Needs a free Events API key.

rv agent form-d-raises --cadence 24h --grace 2h --evidence
rv run form-d-raises --evidence-file out/cursor.txt -- python3 raises.py
# crontab
30 6 * * * cd ~/templates/form-d-raises-in-my-sector && rv run form-d-raises --evidence-file out/cursor.txt --log out/run.log -- python3 raises.py

The folder also has n8n-workflow.json: Schedule, HTTP Request to /v1/runs/start, HTTP Request to the Events API (retry on 503 while the API wakes), Code node filter, If, Telegram, HTTP Request to /v1/runs/end with evidence. Folder: form-d-raises-in-my-sector.

3. Competitor hiring watch

How many open roles do your competitors have this week, and who is suddenly hiring? One MCP call per company (job_openings, live from Greenhouse, Lever, Ashby and five more career-site platforms), a table in out/hiring-YYYY-WW.md with counts, top departments and the change versus last week, and an alert when a count is up more than 25 percent.

rv agent competitor-hiring --cadence 7d --grace 6h --max-runtime 30m --cap-run-cost 5 --evidence
rv run competitor-hiring --evidence-file "out/hiring-$(date +%G-%V).md" -- python3 hiring.py --spend-cap 10
# crontab, Mondays 07:00
0 7 * * 1 cd ~/templates/competitor-hiring-watch && rv run competitor-hiring --evidence-file "out/hiring-$(date +\%G-\%V).md" --log out/run.log -- python3 hiring.py --spend-cap 10

Folder: competitor-hiring-watch.

What gets checked

--evidence-file passes only if the file exists, is non-empty and was modified during the run; only true/false is sent to RunVouch, never the content. --cadence plus --grace raises MISSED when no run starts in time. --cap-run-cost needs a reported cost: rv run does not know what Claude spent, so for the Claude Code flavour use the plugin (set RUNVOUCH_AGENT and RUNVOUCH_EVIDENCE) instead of rv run, not both. The DataSignals side has its own cap: --spend-cap makes the MCP server refuse calls once your ledger reaches that amount.


Need a key? Get a free key · Stuck? contact