# Data Points Extracted from GitHub Profiles by the Hiring-Agent Repository

> Discover the 14 data points the hiring-agent repository extracts from GitHub profiles including username bio location and follower counts to streamline hiring.

- Repository: [HackerRank/hiring-agent](https://github.com/interviewstreet/hiring-agent)
- Tags: api-reference
- Published: 2026-07-09

---

**The Hiring-Agent repository extracts 14 specific data points from GitHub profiles—including username, bio, location, hireable status, and follower counts—using the public GitHub Users API and maps them to a structured Pydantic model.**

The interviewstreet/hiring-agent repository provides an automated way to analyze developer candidates by extracting specific data points from GitHub profiles. Understanding exactly what information is captured helps recruiters and engineers evaluate the tool's coverage and privacy implications. This guide breaks down every field extracted from the GitHub Users API and how the code structures this data within the `GitHubProfile` model.

## Complete List of Extracted GitHub Profile Fields

The `fetch_github_profile` function in [`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) (lines 55-70) retrieves 14 distinct fields from the GitHub Users API endpoint. These fields populate the `GitHubProfile` Pydantic model defined in [`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py) (lines 52-68).

### Identity and Contact Information

- **username**: The GitHub login name — populated from the `username` variable in `fetch_github_profile` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 55-56) and stored in `GitHubProfile.username` ([`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py) line 55)
- **name**: Full display name from the profile — extracted via `data.get("name")` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 57-58)
- **avatar_url**: Direct link to the profile picture — `data.get("avatar_url")` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 66-67)
- **blog**: Personal website or blog URL — `data.get("blog")` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 67-68)
- **twitter_username**: Associated Twitter handle — `data.get("twitter_username")` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 68-69)

### Professional Context

- **bio**: Short user description — `data.get("bio")` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 58-59)
- **location**: Free-form geographic string — `data.get("location")` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 59-60)
- **company**: Employer or organization name — `data.get("company")` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 60-61)
- **hireable**: Boolean flag indicating openness to job opportunities — `data.get("hireable")` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 69-70)

### Activity Metrics

- **public_repos**: Count of public repositories owned — `data.get("public_repos")` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 61-62)
- **followers**: Number of GitHub followers — `data.get("followers")` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 62-63)
- **following**: Number of accounts the user follows — `data.get("following")` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 63-64)

### Account Metadata

- **created_at**: ISO 8601 timestamp of account creation — `data.get("created_at")` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 64-65)
- **updated_at**: Timestamp of last profile update — `data.get("updated_at")` ([`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) lines 65-66)

## How Profile Data Is Retrieved and Structured

The extraction logic resides in two core files. In [`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py), the `fetch_github_profile` function queries the GitHub Users API and extracts values using dictionary `.get()` methods with default fallbacks. The raw API response is validated and serialized through the `GitHubProfile` Pydantic model in [`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py), which enforces type safety and provides autocomplete support for downstream consumers.

## Accessing Extracted Profile Data Programmatically

You can retrieve these data points using the repository's helper functions.

To fetch a single profile:

```python
from github import fetch_github_profile

profile = fetch_github_profile("https://github.com/octocat")

if profile:
    print(f"Username: {profile.username}")
    print(f"Name: {profile.name}")
    print(f"Bio: {profile.bio}")
    print(f"Location: {profile.location}")
    print(f"Company: {profile.company}")
    print(f"Public Repos: {profile.public_repos}")
    print(f"Followers: {profile.followers}")
    print(f"Hireable: {profile.hireable}")

```

To combine profile data with repository information:

```python
from github import fetch_and_display_github_info

result = fetch_and_display_github_info("https://github.com/octocat")
profile_data = result["profile"]  # Dict containing all 14 fields

projects = result["projects"]     # Associated repository summaries

```

## Summary

- The Hiring-Agent tool extracts **14 specific data points** from GitHub profiles via the public GitHub Users API.
- Key fields include **identity data** (username, name, avatar), **professional context** (company, bio, hireable status), and **engagement metrics** (followers, public repository counts).
- All data is validated through the `GitHubProfile` Pydantic model in [`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py) (lines 52-68) before processing.
- The extraction logic is centralized in `fetch_github_profile` within [`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) (lines 55-70).
- Both individual profile fetching and combined profile-repository queries are supported through dedicated helper functions.

## Frequently Asked Questions

### Does the Hiring-Agent tool extract private repository data from GitHub profiles?

No, the tool only accesses publicly available data through the GitHub Users API. The `fetch_github_profile` function specifically queries public endpoints and extracts fields like `public_repos` counts, not private repository information. All data points listed in the `GitHubProfile` model are available on any public GitHub profile without authentication.

### What is the data type of the hireable field extracted from GitHub?

The **hireable** field is extracted as a boolean value via `data.get("hireable")` at lines 69-70 in [`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py). This field indicates whether the user has marked themselves as open to job opportunities on their GitHub profile. When mapping to the Pydantic model, this is typed as an optional boolean that can be `True`, `False`, or `None` if the field is not set.

### How does the tool handle missing or null values in GitHub profiles?

The extraction code uses dictionary `.get()` methods without strict required field validation, allowing null values to pass through. For example, `data.get("bio")` and `data.get("company")` will return `None` if these fields are empty on the GitHub profile. The `GitHubProfile` Pydantic model in [`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py) accommodates these optional fields, ensuring the extraction doesn't fail when users haven't populated certain profile sections.

### Can I extract additional GitHub data points beyond the 14 standard fields?

The current implementation in [`github.py`](https://github.com/interviewstreet/hiring-agent/blob/main/github.py) hardcodes the 14 specific fields listed above. To extract additional data points available in the GitHub Users API (such as `gravatar_id` or `node_id`), you would need to modify the `fetch_github_profile` function to include additional `data.get()` calls and update the `GitHubProfile` model in [`models.py`](https://github.com/interviewstreet/hiring-agent/blob/main/models.py) to include the new fields with appropriate type annotations.