Grant
AI agent · Claude Sonnet 4 · Student Benefits Hub
Grant is an AI agent that curates this directory by verifying submissions, searching the web for new student programs, and opening pull requests. It runs on a schedule to discover and add benefits without waiting for a human to suggest them. A human reviews and merges every PR — Grant handles correctness, the reviewer exercises judgment.
Architecture
GitHub Issue
Anyone can suggest a benefit by opening an issue. When it's labeled new-benefit, GitHub fires a webhook that starts Grant. The title and body are the only inputs. Everything else Grant discovers on its own.
Weekly Schedule
Three scheduled workflows run without human prompting. On Mondays, discover-benefits searches the web for new student programs and opens GitHub issues for the best discoveries — feeding Grant's own queue. On Wednesdays, discover-events searches for notable student events, removes expired entries, and opens PRs directly. On Sundays, maintain-benefits checks every existing entry for broken links and quality issues, fixes what it can, and opens a PR with the changes.
Two issue-triggered workflows process community submissions. add-benefit fires when an issue is labeled new-benefit; add-event fires when an issue is labeled new-event. Both validate the submission, check for duplicates, and open a PR — or comment and close the issue if the submission doesn't pass.
Grant · Claude Sonnet 4
The orchestrator. Grant reads the issue, decides which tools to call, interprets the results, and determines the outcome without human approval of intermediate steps. Its output depends on the workflow and the outcome — a PR, a comment, a closed issue, or a combination. Its instructions are a Markdown file checked into this repository.
Tavily Search
A search API built for AI agents. Grant calls it to verify whether a student program exists by searching the live web beyond its training data. Tavily returns structured results Grant can reason over directly.
Web Fetch
After Tavily returns candidate URLs, Grant fetches the actual pages to confirm the program is real, active, and has a direct student signup link. Read-only. No forms submitted, no side effects.
GitHub Output
Grant's outputs depend on the workflow. For benefit and event submissions: if valid and new, it opens a pull request and comments on the issue; if rejected or duplicate, it comments with the reason and closes the issue. For discover-benefits: it opens new issues for the best discoveries it found. For discover-events: it opens a PR directly. For maintain-benefits: it fixes broken links and quality flags directly in benefits.json and opens a PR. All writes go through GitHub's API. PRs wait for a human reviewer to merge — Grant cannot publish directly.
Human Reviewer
Grant cannot merge its own pull requests. Its safe-outputs configuration restricts it to commenting, opening PRs, and closing issues — no write access to main. Grant handles correctness (format, links, duplicates); the reviewer exercises judgment (editorial fit, quality).
What makes this an agent?
Tool use
An agent selects tools based on what it finds, not a fixed sequence. Grant calls GitHub, Tavily, and web fetch in an order that varies with every submission.
Decision-making
An agent uses LLM reasoning to choose a path at each step, not a fixed branching script. Every submission ends in one of three outcomes:
✓ Accepted
Real program, not a duplicate. PR opened, issue commented.
✗ Rejected
No student program found after search. Issue closed, domain logged.
⚠ Duplicate
Already in directory. Issue closed with a pointer to existing entry.
Autonomy
An agent runs end-to-end without a human approving intermediate steps. Grant goes from issue trigger to PR without any checkpoint — but the merge is held for a human. Grant controls how the process runs; humans decide what goes live.
Memory
An agent persists state across runs. Grant saves rejected programs in rejected.json. Future submissions for the same product skip re-verification entirely.
Self-direction
An agent generates its own tasks rather than waiting for human input. Grant runs weekly, searches for new student benefits, and creates issues for itself to process.
Human oversight
Grant cannot merge or push to main — every benefit that goes live required a human to approve it. The run log on this page exists so review is informed, not a rubber stamp: a reviewer can see exactly what Grant searched, fetched, and reasoned before deciding.
How it works simulated