# How User Status Is Calculated Based on GitHub Activity in Resume.github.com

> Discover how Resume dot github dot com calculates user status using a weighted scoring algorithm based on your GitHub activity, including repositories, gists, and followers.

- Repository: [GitHub resume generator/resume.github.com](https://github.com/resume/resume.github.com)
- Tags: internals
- Published: 2026-03-04

---

**The user status displayed on Resume.github.com is calculated using a weighted scoring algorithm in [`js/githubresume.js`](https://github.com/resume/resume.github.com/blob/main/js/githubresume.js) that assigns points based on public repositories, gists, followers, and following counts, then adds bonuses for early adoption and profile completeness before mapping the total score to a descriptive label like "Passionate GitHub user."**

The open-source project Resume.github.com generates dynamic résumés from GitHub profiles. According to the source code in the `resume/resume.github.com` repository, the **user status** shown on each generated page is not merely decorative but derived from a deterministic scoring system that quantifies platform activity.

## The Scoring Algorithm in js/githubresume.js

The calculation logic resides in [`js/githubresume.js`](https://github.com/resume/resume.github.com/blob/main/js/githubresume.js), specifically within the `getUserStatus()` function. The algorithm aggregates four metrics from the GitHub API user endpoint and applies specific coefficients to each.

### Base Score Components

The system retrieves four numeric fields from the user profile data:

- `public_repos` — number of public repositories
- `public_gists` — number of public gists  
- `followers` — follower count
- `following` — count of users followed

Each field is multiplied by a predefined coefficient:

```javascript
var COEF_REPOS     = 2;      // each repo → 2 points
var COEF_GISTS     = 0.25;   // each gist → 0.25 points
var COEF_FOLLOWERS = 0.5;    // each follower → 0.5 points
var COEF_FOLLOWING = 0.25;   // each following → 0.25 points

```

The base score is calculated as:

```javascript
var statusScore =
    data.public_repos * COEF_REPOS +
    data.public_gists * COEF_GISTS +
    data.followers   * COEF_FOLLOWERS +
    data.following   * COEF_FOLLOWING;

```

### Bonus Points for Early Adoption and Profile Completeness

Beyond the base calculation, the algorithm awards **+1 point** for each of two conditions:

1. **Early-adopter bonus**: If the account creation date falls within GitHub's first six months (February 2008 through July 2008) or before 2008, the user receives one additional point.

2. **Profile-completeness bonus**: When the user has populated all three fields—`location`, `email`, and `blog`—another point is added.

### Mapping Scores to Status Labels

The final `statusScore` is mapped to a human-readable string through threshold comparisons:

| Score range | Status label |
|-------------|--------------|
| `0` | "Inactive GitHub user" |
| `1 – 5` | "Newbie GitHub user" |
| `6 – 20` | "Regular GitHub user" |
| `21 – 50` | "Advanced GitHub user" |
| `51 – 150` | "Enthusiastic GitHub user" |
| `> 150` | "Passionate GitHub user" |

The `getUserStatus()` function returns this label and assigns it to `view.userStatus`, which the Mustache template renders.

## Displaying the Status in views/resume.html

Once calculated, the status string is injected into the résumé template. The file [`views/resume.html`](https://github.com/resume/resume.github.com/blob/main/views/resume.html) uses Mustache syntax to display the value:

```html
<span class="status">{{userStatus}}</span>

```

This placement ensures the calculated **user status** appears prominently in the generated résumé header.

## Summary

- The **user status** calculation occurs entirely client-side in [`js/githubresume.js`](https://github.com/resume/resume.github.com/blob/main/js/githubresume.js) within the `getUserStatus()` function.
- The algorithm applies weighted coefficients to four GitHub metrics: repositories (×2), gists (×0.25), followers (×0.5), and following (×0.25).
- Two bonus points may be added: one for early adoption (account created before August 2008) and one for complete profile data (location, email, and blog all present).
- The final numeric score maps to one of six descriptive labels ranging from "Inactive" to "Passionate" GitHub user.

## Frequently Asked Questions

### What GitHub data points are used to calculate user status?

The calculation uses four public metrics from the GitHub API user endpoint: `public_repos`, `public_gists`, `followers`, and `following`. Additionally, the algorithm checks `created_at` for early-adopter bonuses and `location`, `email`, and `blog` for profile-completeness bonuses.

### How much does each repository contribute to the status score?

Each public repository contributes **2 points** to the base score, as defined by the `COEF_REPOS` coefficient in [`js/githubresume.js`](https://github.com/resume/resume.github.com/blob/main/js/githubresume.js). This is the highest-weighted metric in the algorithm, making repository count the primary driver of high-status labels.

### Can a user improve their status by filling out their profile?

Yes. The algorithm awards **+1 bonus point** when a user has populated all three profile fields: `location`, `email`, and `blog`. This can potentially bump the user into a higher status tier if they are near a threshold boundary, though the impact is modest compared to repository counts.

### What is the highest possible user status label?

The highest status label is **"Passionate GitHub user"**, which is assigned to any account with a calculated score greater than 150. Achieving this typically requires a combination of numerous public repositories, substantial follower counts, and potentially the available bonus points.