> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/clyrisai/gitresolve/llms.txt
> Use this file to discover all available pages before exploring further.

# GitResolve: Turn Candidate Submissions into Git Profiles

> GitResolve resolves portfolio sites, GitHub links, and resume PDFs into structured developer profiles with owned repos, contributions, and confidence scores.

GitResolve is an npm library and CLI tool that turns messy candidate submissions — portfolio URLs, GitHub links, and resume PDFs — into clean, structured developer profiles. Feed it a URL or a PDF and get back a typed result with the candidate's git identity, owned repositories, contributions, and a confidence score, ready to plug into any recruiting pipeline.

<CardGroup cols={2}>
  <Card title="Quickstart" icon="bolt" href="/quickstart">
    Resolve your first candidate profile in under 2 minutes using the CLI or TypeScript API.
  </Card>

  <Card title="CLI Guide" icon="terminal" href="/cli/overview">
    Full reference for all CLI flags, batch processing, output options, and provider selection.
  </Card>

  <Card title="API Reference" icon="code" href="/api/overview">
    TypeScript API docs for `scrapePortfolio`, `parseResume`, `createProvider`, and all exported types.
  </Card>

  <Card title="Browser Providers" icon="globe" href="/providers/overview">
    Configure fetch, Puppeteer, or Browserless to match your infrastructure and rendering needs.
  </Card>
</CardGroup>

## What GitResolve Does

<Steps>
  <Step title="Classifies the input">
    Every input — a URL, a file path, a GitHub link — is classified into a type (`portfolio`, `git_profile`, `repo_url`, `resume_file`, etc.) before any processing begins.
  </Step>

  <Step title="Fetches or parses the source">
    Portfolio and profile URLs are scraped using your configured browser provider (fetch, Puppeteer, or Browserless). Resume PDFs are parsed via text extraction and hyperlink annotation extraction.
  </Step>

  <Step title="Extracts all git links">
    Every GitHub, GitLab, and Bitbucket URL found in the page HTML or PDF content is extracted and classified as a profile, repo, pull request, issue, or gist.
  </Step>

  <Step title="Disambiguates ownership">
    A cross-referencing algorithm determines which profile belongs to the candidate, separating owned repos from external references and contributions.
  </Step>

  <Step title="Returns a typed result">
    Every call returns a `ResolverResult` with `ownerProfile`, `confidence`, `ownedRepos`, `contributions`, `externalRepos`, `allLinks`, and `warnings`.
  </Step>
</Steps>

## Supported Input Types

| Input                 | Example                                | What Happens                              |
| --------------------- | -------------------------------------- | ----------------------------------------- |
| **Portfolio site**    | `https://janedoe.dev`                  | Scrapes page for git links                |
| **GitHub profile**    | `https://github.com/janedoe`           | Scrapes profile, discovers repos          |
| **GitLab profile**    | `https://gitlab.com/janedoe`           | Scrapes profile, handles `/users/` routes |
| **Bitbucket profile** | `https://bitbucket.org/janedoe`        | Scrapes profile page                      |
| **Repo URL**          | `https://github.com/user/repo`         | Scrapes repo page, resolves owner         |
| **PR / Issue URL**    | `https://github.com/user/repo/pull/42` | Extracted as a contribution               |
| **Resume PDF**        | `./resume.pdf` or remote URL           | Extracts text + hyperlink annotations     |

## Browser Providers

GitResolve supports three strategies for fetching page content. The right choice depends on your infrastructure:

| Provider      | JS Rendering | Best For                                |
| ------------- | ------------ | --------------------------------------- |
| `puppeteer`   | ✅ Full       | SPAs, JavaScript-heavy portfolio sites  |
| `browserless` | ✅ Full       | Server environments, CI/CD pipelines    |
| `fetch`       | ❌ None       | Static sites, always-available fallback |

<CardGroup cols={2}>
  <Card title="Concepts" icon="lightbulb" href="/concepts/input-classification">
    Learn how GitResolve classifies inputs, disambiguates candidates, and structures results.
  </Card>

  <Card title="Installation" icon="package" href="/installation">
    Install via npm, pnpm, yarn, or bun — or run on-demand with npx.
  </Card>
</CardGroup>
