Business · Hiring
GitHub Profile as a Hiring Signal: What We Look for When a Candidate Sends a Link
Most hiring managers look at the wrong things on a GitHub profile. Stars and follower counts tell you almost nothing. Here is what to actually look for, and what the AI era changed about reading developer profiles.
Prathviraj Singh
7 min read
Sponsored
A candidate emails their GitHub link with the application. Most hiring managers open it, note the follower count and the streak on the contribution graph, and move on. That review takes 30 seconds and tells them almost nothing.
Here is a more useful way to spend five minutes on a GitHub profile.
What the contribution graph does and does not tell you
The green square grid is the first thing most people look at. It shows how many contributions the account made on each day over the past year.
What counts as a contribution: commits, pull requests, issues opened, and code review activity on public repositories. Also commits to private repositories, if the account has that setting enabled.
The problems:
- Automated commits inflate the graph. A developer who commits generated build artifacts, updates a lockfile on a schedule, or runs a cron job that commits to a notes repo will have a dark green graph without writing meaningful code.
- Course completion repos inflate it. A developer working through a bootcamp or online tutorial will commit daily to their fork of the course repo. It looks busy.
- Life does not pause for green squares. A developer who takes a month off for a new child, a health issue, or onboarding at a demanding new job will have gaps that look bad on the graph and mean nothing.
The right way to use the graph: click through to the actual commits on a given day. If the commits are “lesson 12 complete” or “update README,” the graph is noise. If the commits are small, purposeful changes with explanatory messages, that is worth attention.
Commit messages as a signal
After the contribution graph, the next thing to look at is commit messages in a repository the candidate built or contributed to meaningfully.
Good commit messages describe what changed and why. They are often structured:
feat: add rate limiting middleware for API endpoints
The public API was getting hammered by a specific client.
Added a token bucket limiter at the middleware layer rather
than in individual handlers. Defaults to 100 req/min per IP.
Rate limit headers follow the RateLimit-Policy draft spec.
This tells you: the developer communicates context, thinks about why a change was made, and considered how to implement it at the right layer.
Bad commit messages: “fix”, “update”, “more fixes”, “asdf”, “wip”, ”!!!!!”. These tell you the developer does not think about the commit as communication. That matters because commit history is how teams debug production issues, understand when a bug was introduced, and onboard new members to a codebase.
Look for the ratio. One “fix typo” commit in 50 is fine. Ten consecutive commits that say “stuff” followed by “more stuff” suggests someone who treats version control as a backup tool rather than a communication layer.
How to read a personal project
A candidate’s personal projects reveal habits that may not surface in a technical interview.
Open a repository the candidate says they built. Look for:
A README that explains what the project does and how to run it. Not “this is my project” but “this is a CLI tool that watches a directory and thumbnails new images. Run it with go run . --dir /path/to/images. Requires Go 1.21 and ffmpeg.” If a stranger cannot figure out what the project is for within 60 seconds, the developer did not write it to be used by anyone but themselves. That is a habit.
Tests. Not 100% coverage. Something. A personal project with zero tests is not a disqualifier on its own, but combined with no tests in any public repo, it suggests someone who does not write tests in their own time, and therefore may not write them at work either unless required.
Sensible dependency choices. Does the project pull in 40 npm packages to serve a static HTML file? Does it use a framework that is clearly wrong for the task? The tooling choices in a personal project reflect how the developer thinks when nobody is telling them what to use.
Completeness. Is there a list of 15 half-finished personal projects, each with 3 commits? Or two projects that actually work and are maintained over time? Many unfinished projects suggest someone who gets excited by starting and loses interest. This can be entirely unrelated to their job performance, but it is worth a conversation.
Pull request and review history
If the candidate has contributed to open-source projects or has collaborative repositories, the pull request history is more informative than the personal projects.
Look at PRs they opened: are the descriptions clear about what the change does and why? Did they address reviewer feedback thoughtfully, or dismiss it?
Look at code reviews they left: do their comments explain the concern or just flag a problem? “This will cause a memory leak if the callback is never called because the closure captures the struct” is helpful. “Fix this” is not.
A developer who writes good PR descriptions and thoughtful review comments communicates well in writing. That translates directly to remote collaboration and async engineering cultures.
The AI-era complication
In 2026, AI coding assistance is ubiquitous. Copilot, Cursor, and other tools generate significant portions of code in many developers’ day-to-day work. A GitHub profile that includes AI-assisted code is not a red flag.
What does matter: does the developer understand what they committed?
Code generated by AI tools and committed without review or understanding looks a specific way: large chunks dropped in at once, no connection between the commit message and the code diff, function names or comments that don’t match the actual implementation, imports that are never used.
A developer who uses AI tools well commits incrementally, reviews what gets generated, and takes ownership of the result. The commit history will show smaller, purposeful changes even if the code was partially generated.
The best follow-up to any GitHub review: pick a non-obvious decision in their code and ask about it directly in the interview. “In this project, you used a channel with a buffer of 10 here. Why 10 and not unbuffered?” If they can answer specifically, they understood what they built. If they say “I’m not sure, I think I read it somewhere,” you now know something about how they engage with the code they ship.
What not to judge
A few things that look like red flags but often are not:
No public repos. Strong engineers often spend their careers on proprietary codebases. A senior developer at a bank, a large enterprise software company, or a well-funded startup may have thousands of production commits and zero public contributions. A sparse GitHub profile is not an absence of skill.
No open-source contributions. Contributing to open source requires time that not everyone has, especially developers with caregiving responsibilities, demanding jobs, or any life outside of coding. The tech industry’s conflation of open-source activity with professional quality has historically disadvantaged underrepresented groups. Consider it a positive signal when present, not a negative signal when absent.
Gaps in the graph. Onboarding at a new job, shipping a large feature under an NDA, taking parental leave, being sick, or simply taking time off all produce gaps. The graph does not know the difference.
The right way to use a GitHub profile
Treat it as a conversation starter, not an evaluation checklist. Look at it for five minutes before the interview. Find two or three things to ask about: a project that looks interesting, a commit message that suggests a specific design decision, a PR description that was thorough (or one that was not).
Then ask: “Walk me through the last commit you made to this repository. What were you solving?” The answer tells you more than the profile itself.
For the broader hiring context, the technical interview guide covers how to structure the rest of the screen. The vetted developer guide covers the full process, of which GitHub review is one input. For candidates who share a portfolio rather than GitHub, the developer portfolio in 2026 post covers what to look for there.
Frequently asked questions
- Should I require a GitHub profile from every candidate?
- No. Many strong engineers work in companies with private repositories and have limited public GitHub activity. Making a public profile a hard requirement screens out experienced professionals who have spent their careers on proprietary codebases. Ask for it as an optional supplement, not a requirement.
- What does a strong GitHub profile actually look like?
- A strong profile shows consistent work on a small number of meaningful projects: projects with documentation, tests, clear commit messages, and evidence that someone else could pick them up. Breadth of starred repos means nothing. Depth on a few well-maintained projects means a lot.
- How has AI coding changed what GitHub profiles look like?
- Profiles have gotten noisier. AI-assisted coding tools generate large volumes of code quickly, so the raw size of a repository is even less useful as a signal. The relevant questions are: does the README explain what the project actually does? Are the commits structured or just large blocks dropped in at once? Can the candidate explain any non-obvious decision in the code?
- What is the most common mistake when evaluating a GitHub profile?
- Treating the contribution graph as a proxy for engineering skill. Daily green squares can come from commits to automated scripts, documentation edits, or renaming files. The activity level tells you nothing about the quality of the work. Always click through to the actual commits.
Sources
Sponsored
More from this category
More from Business
R.01 How to Hire a Game Developer in 2026: Unity, Unreal, and the Screen That Actually Works
R.02 Emergent Hit a $1.5B Valuation Building Apps From Prompts. What That Means for Agencies
R.03 A/B Testing Statistical Significance: How Long to Actually Run a Test
Sponsored
Discussion
Join the conversation.
Comments are powered by GitHub Discussions. Sign in with your GitHub account to leave a comment.
Sponsored