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

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 (lines 55-70) retrieves 14 distinct fields from the GitHub Users API endpoint. These fields populate the GitHubProfile Pydantic model defined in 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 lines 55-56) and stored in GitHubProfile.username (models.py line 55)
  • name: Full display name from the profile — extracted via data.get("name") (github.py lines 57-58)
  • avatar_url: Direct link to the profile picture — data.get("avatar_url") (github.py lines 66-67)
  • blog: Personal website or blog URL — data.get("blog") (github.py lines 67-68)
  • twitter_username: Associated Twitter handle — data.get("twitter_username") (github.py lines 68-69)

Professional Context

  • bio: Short user description — data.get("bio") (github.py lines 58-59)
  • location: Free-form geographic string — data.get("location") (github.py lines 59-60)
  • company: Employer or organization name — data.get("company") (github.py lines 60-61)
  • hireable: Boolean flag indicating openness to job opportunities — data.get("hireable") (github.py lines 69-70)

Activity Metrics

  • public_repos: Count of public repositories owned — data.get("public_repos") (github.py lines 61-62)
  • followers: Number of GitHub followers — data.get("followers") (github.py lines 62-63)
  • following: Number of accounts the user follows — data.get("following") (github.py lines 63-64)

Account Metadata

  • created_at: ISO 8601 timestamp of account creation — data.get("created_at") (github.py lines 64-65)
  • updated_at: Timestamp of last profile update — data.get("updated_at") (github.py lines 65-66)

How Profile Data Is Retrieved and Structured

The extraction logic resides in two core files. In 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, 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:

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:

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 (lines 52-68) before processing.
  • The extraction logic is centralized in fetch_github_profile within 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. 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 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 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 to include the new fields with appropriate type annotations.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →