On this page
Say you need a voice AI engineer in Melbourne. On GitHub, the obvious move is to search for the work, voice and realtime projects, and keep the people who live in Melbourne.
We tried that in October 2026. About 11,000 repos matched voice and realtime terms. 16 of their owners live in Melbourne.
That makes Melbourne look empty. It isn't. The search was pointed the wrong way.
The location filter is on people, not code
GitHub's search has a location: qualifier, but only for users. Repositories and code have no location. So a search for the work can't ask for a city. You get repos from everywhere, open each owner's profile to see where they live, and find that almost everyone is somewhere else.
It gets worse with a big topic. GitHub's search returns at most 1,000 results per query, best matches first. Popular repos come first, and their owners live all over the world. The local developer with a small, good voice project is far down the list, past the point you can page to.
Search the other way round
Start from the city's developers, then read their work.
- Search users by location.
location:Melbournefinds people whose profile says Melbourne. Addlanguage:Pythonorlanguage:TypeScriptfor the role's languages. Each search also stops at 1,000 people, so split a big city into several: by language, or by follower ranges likefollowers:5..20. - Read each person's own repos. Their recent repos, not forks. The name and the description say what they built.
- Keep the people whose repos show the work. For a voice role: voice, speech, realtime, WebRTC, TTS, telephony.
- Check the place. "Melbourne" also matches Melbourne, Florida. Read the location before you count someone in.
For the same role, we read 2,258 developers in Melbourne this way. 374 had built the kind of thing the role needed. Over 100 had voice or realtime projects of their own. The search that started from the work found 16.
The bio says almost nothing
You could search profiles instead: "voice engineer" with location:Melbourne. That finds people who describe themselves that way, and few do. Of the 113 Melbourne developers with voice or realtime repos, two said so in their bio. 132 of the 374 had no bio at all.
People write their job title in their bio, or nothing. Their repos say what they work on.
The query, if you want to run it yourself
GitHub's GraphQL API returns each user and their recent repos in one call. Run it with the gh command line and a search such as location:Melbourne language:Python as q:
query($q: String!, $after: String) {
search(type: USER, query: $q, first: 20, after: $after) {
pageInfo { hasNextPage endCursor }
nodes {
... on User {
login name location bio
repositories(first: 20, ownerAffiliations: OWNER, isFork: false,
orderBy: {field: PUSHED_AT, direction: DESC}) {
nodes { name description stargazerCount pushedAt }
}
}
}
}
}Twenty users with 20 repos each worked well for us, at a few seconds a page. Bigger pages, or asking for each repo's topics as well, made GitHub time out.
What AyHire does with a city
When a role names a city, AyHire runs a smaller version of this for you. It reads the city's developers in a few user searches, the role's languages first, checks each person's own recent repos for the role's work, and adds the people whose repos show it, with the repo that does. You can then have AyHire read their work in full and judge it against your role's criteria.
We list numbers here, not people: the developers didn't ask to be on a page about hiring. Run your own search and you get the names, the repos and the reasons. A voice AI engineer in Melbourne opens AyHire with that role typed in; change the role and the city to yours. 14 days free, no card.
The searches ran on GitHub in October 2026. The counts are of the profiles and repos GitHub returned that month.