DEV Community

Asad Waseem
Asad Waseem

Posted on

How I built a Claude Code skill that finds funded scholarships without burning your token budget

I went looking for something that could find fully-funded PhD and Master's programs in Europe, matched to my own grades and field. What I found on GitHub was three small, disconnected projects, and none of them actually worked for what I needed.

One only covers professors in the US, UK, Canada, and Australia. Another needs its own separate paid LLM API key and a Feishu account just to rank a list. A third has no idea what a funding scheme even is, and none of them cover anything below a PhD, even though there's just as much scholarship money for undergrads.

So I read through all three, kept the ideas that were actually useful, and rebuilt the rest from scratch.

What it does

GrantCompass is a Claude Code skill plus a standalone CLI. Point it at a field and a grade, and it finds:

  • Fully-funded scholarships and programs at any degree level (Bachelor's, Master's, PhD), any country, defaulting to Europe if you don't name one
  • Professors doing relevant research if you're applying to a Master's or PhD, pulled from OpenReview and OpenAlex, both free public APIs
  • A score for each result: whether your grade comfortably meets what a scheme typically expects, is borderline, or falls below it. It never silently drops a result over that, you make the call.

The part I actually care about

Most of these tools work by scraping a bunch of web pages and dumping the results into an LLM's context. That's slow and it burns a lot of tokens for something that's mostly just fetching and filtering, work a model doesn't need to do.

So the fetching, parsing, and scoring here all happen in plain Python behind the CLI. The agent only steps in for two things: asking a couple of onboarding questions, and pulling current listings from sites that don't have a stable API. Even then, it reads back exactly one compact table, not the raw pages it fetched.

grantcompass init
grantcompass professors
grantcompass score
grantcompass report
cat output/report.md
Enter fullscreen mode Exit fullscreen mode

Why not just scrape DAAD or FindAPhD directly

None of them expose a real public API, and scraping risks breaking their terms of service, plus it breaks the moment they redesign the page. That's basically what happened to the projects I looked at before building this. The only script here that makes its own HTTP calls is the one doing professor discovery, and it only talks to OpenReview and OpenAlex, both built for this kind of programmatic access. Everything else gets fetched live, one page at a time, by Claude's own web search, closer to how a person would actually go look it up.

Credits

No code came from the two prior-art repos with no license attached, only the ideas did. Full writeup on that, and everything else, is in the README.

Repo: https://github.com/rx290/grant-compass

If you're also hunting for funded programs, or just curious how a token-conscious Claude Code skill is put together, take a look. Feedback and PRs welcome.

Top comments (0)