Grant
Agentic system · Claude Sonnet 4.6 · Student Benefits Hub
Grant keeps this directory current. It’s tempting to call it “an AI agent,” but the honest version is smaller and more interesting: a few workflows that each run Claude on a fixed path, a deterministic gate that checks every change, and a human who merges. That restraint is the design.
The loop
Generate, verify, and iterate until the gate passes — then a person merges. Everything below is this loop, in detail.
Architecture tap a node
GitHub Issue
Anyone can suggest a benefit by opening an issue. When it’s labeled new-benefit, GitHub fires a webhook that starts a workflow. The title and body are the only inputs — everything else Grant finds on its own.
Weekly schedule
Scheduled workflows run without a human prompting them. discover-benefits searches for new programs and opens issues for the best ones; discover-events finds student events; maintain-benefits audits every link and fixes what it can. Each is a workflow — Claude on a fixed path, not a free-roaming agent.
Grant · the augmented LLM
The building block Anthropic calls the augmented LLM: Claude plus a few tools, reasoning step by step. It reads the issue, decides which tool to call next, and writes the change — but it can’t publish. Its instructions are a plain Markdown prompt checked into the repo.
Web Search
Claude’s built-in WebSearch tool. Grant calls it to confirm a student program actually exists on the live web — beyond training data — and returns candidate results it can reason over.
Web Fetch
Claude’s built-in WebFetch tool. Grant opens the actual page to confirm the program is real and grab the correct signup link. The link it records must be one it loaded in the same run — never a path guessed from the name — so dead URLs don’t reach a PR. Read-only, no side effects.
The gate · validate_data.py
A deterministic check — no LLM. It runs against every change and exits 0 (pass) or 1 (fail) on schema, link shape, and sort order. This is the loop’s verifiable environment: resettable (re-runs each attempt), efficient (offline, sub-second), and rewardable (an automatic pass/fail). It’s what lets Grant iterate against a real signal instead of grading its own work.
GitHub output
Once the gate passes, Grant opens a pull request and comments on the issue. For a rejection or duplicate it comments the reason and closes the issue. Every write goes through GitHub’s API — and stops short of merging.
Human reviewer
Grant can’t merge its own PRs. Each workflow runs with a scoped permissions: block — enough to branch, open a PR, and comment, never to merge. The merge is held by CODEOWNERS and branch protection, so going live is always a person’s call. Grant handles correctness; the reviewer handles judgment.
Workflow or agent?
Anthropic draws one line: a workflow runs Claude on a path you wrote; an agent directs its own path. Each piece of Grant sits closer to one end. The honest answer is “mostly workflow” — and that’s the point.
validate-datathe gate · no LLMadd-benefitprompt chaining + gatemaintain-benefitsevaluator-optimizerdiscover-benefitsbounded search
Watch a submission simulated