Read a persisted deep-research report for a developer

GET https://api.vamotalent.ai/v2/deep-research/reports/developers/{login}
Access
Authenticated
search:deep
Cost
Free
Rate limit
120 / minute per account
Quota
None

The full research report a completed job produced: pctSignals maps each graded signal to its percentile, signalsExcluded names every signal that could not be graded and why, plus the composites, the contribution history, and the repositories sampled. Readable only for a developer this account has already researched, and free to read from then on — the job that produced it already paid, the report is persisted, and everyone on the account shares it. A developer the account has not researched is a 404, whether or not anyone else has. Send Accept: application/pdf for the report as a PDF (see GET /v2/deep-research/reports/developers/{login}/pdf). signalPopulations says, per graded signal, WHICH substrate its percentile was ranked against: a dive_population ranking is a coarser claim than a benchmark_grid one, and an absolute signal was never ranked against anybody. None of these are peer groups matched on language, seniority or region — there is one global measured population.

Path parameters

  • login string required
    min 1 chars, max 39 chars

Responses

The persisted report

  • id string required

    Identifier of this report.

  • githubLogin string required

    The GitHub handle the research was run on.

  • status string required

    Whether the research finished. Only a `done` report carries a complete set of signals.

    runningdonefailed
  • failCode string | null

    Why the research failed, when it did. `engine_error` is our fault and is never billed. Null or absent on a report that succeeded.

    not_foundrate_limitedprovider_errortimeoutengine_error
  • rawSignals object required

    Signal name to the VALUE actually measured for this developer. Present whether or not the signal could be ranked, so this is the number to show when `pctSignals` has no entry for it. MEASURED is not the same claim as RANKED.

  • pctSignals object required

    Signal name to its percentile, 0..1, for the signals that could be ranked. A report MIXES ranking substrates, so one description never covers all of them: `signalPopulations[signal]` states which substrate each percentile here was ranked against. No percentile in this report is against a peer group matched on language, seniority, region or discipline — no such peer group exists; there is one measured population. A signal missing here is explained in `signalsExcluded`.

  • composites object required

    Percentile-derived composite scores. EMPTY (`{}`) whenever the ranking population is below its floor, which is the normal case early on: the keys are absent together rather than zeroed, so absence means "not ranked yet", never "scored zero". Read `rawSignals` and say "measured, not yet ranked" instead of showing a bare blank.

    • gemScore number

      The gem score: how far this developer’s demonstrated quality runs ahead of their visible reputation. Built from the percentiles in `pctSignals`, so it inherits their populations (`signalPopulations`) — mostly the developers Vamo has previously deep-researched, which grows, which makes this number not comparable across reports taken at different times.

    • quality number

      The quality composite, built from the `qualityTerms` below.

    • visibility number

      The visibility composite, built from the `visibilityTerms` below.

    • reachable number

      The reachability composite.

    • productionMaturity number

      The production-maturity cluster: how much this developer builds and RUNS production software — CI, instrumentation, releases, maintenance, tests — averaged across whichever of those signals they have. A cluster score, so no single thin signal drives it. Built from `pctSignals`, so it inherits their populations. Not a factor in `gemScore`.

    • qualityTerms array of object

      The individual signals that fed `quality`, with their weights, so the composite can be decomposed rather than trusted blind.

      • signal string required

        The signal that contributed.

      • weight number required

        Its weight in the composite.

      • pct number required

        The developer’s percentile on that signal, 0 to 1. `signalPopulations[signal]` says which substrate it was ranked against, and a report mixes substrates, so read it before quoting this.

    • visibilityTerms array of object

      The individual signals that fed `visibility`, with their weights.

      • signal string required

        The signal that contributed.

      • weight number required

        Its weight in the composite.

      • pct number required

        The developer’s percentile on that signal, 0 to 1. `signalPopulations[signal]` says which substrate it was ranked against, and a report mixes substrates, so read it before quoting this.

    • productionMaturityTerms array of object

      The individual signals that fed `productionMaturity`, with their weights.

      • signal string required

        The signal that contributed.

      • weight number required

        Its weight in the composite.

      • pct number required

        The developer’s percentile on that signal, 0 to 1. `signalPopulations[signal]` says which substrate it was ranked against, and a report mixes substrates, so read it before quoting this.

  • evidence array of string required

    Human-readable evidence lines the research produced.

  • profile object | null required

    The GitHub profile as read during the research. Open to extra keys: new fields arrive without a release here. Null when the profile could not be read.

    • login string required

      The GitHub handle, as read live during the research.

    • createdAt string required

      When the GitHub account was created, as an ISO 8601 instant.

    • followers number required

      Follower count at research time.

    • following number required

      How many accounts they follow, at research time.

    • organizations array of string required

      Public GitHub organisations they belong to. Private memberships are invisible, so an empty list is not evidence of none.

    • socialAccounts array of object required

      Social links the developer has published on their GitHub profile.

      • provider string required

        Which platform the link points at.

      • url string required

        The linked profile URL.

  • contributions object | null required

    Contribution activity, PUBLIC only: work in private repositories is invisible to GitHub’s counters, so low numbers are not evidence of low output. Null when it could not be read.

    • totalCommitContributions number required

      Commits GitHub counted over the research window.

    • totalPullRequestContributions number required

      Pull requests opened over the window.

    • totalPullRequestReviewContributions number required

      Pull request reviews over the window.

    • calendar array of object required

      Daily contribution counts across the window.

      • date string required

        The calendar day, `YYYY-MM-DD`.

      • count number required

        Contributions GitHub counted that day.

      • weekday number required

        Day of the week, 0 for Sunday through 6 for Saturday. Present so weekday and weekend activity can be told apart without re-deriving it.

  • repos array of object required

    The repositories actually sampled by this research. A SAMPLE, not a complete list: `commitStats` says how much was sampled and how much was skipped.

    • name string required

      The repository name, without the owner.

    • owner string required

      The owning account’s login, which may be a person or an organisation.

    • isFork boolean required

      True when the repository is a fork. Forks are kept in the sample rather than dropped, so filter on this if you only want original work.

    • primaryLanguage string | null required

      GitHub’s primary language. Null when it reports none.

    • languages array of object required

      Language breakdown by bytes of code, which is a proxy for effort and not a measure of skill.

      • name string required

        The language.

      • size number required

        Bytes of code GitHub attributes to it in this repository.

    • topics array of string required

      GitHub topics the owner tagged the repository with.

    • stars number required

      Stargazer count at research time.

    • forks number required

      Fork count at research time.

    • pushedAt string required

      When the repository was last pushed to, as an ISO 8601 instant.

    • latestReleaseAt string | null required

      When it last cut a release, as an ISO 8601 instant. Null when it has never released.

    • contribution object | null

      What the developer did in this repository, AUTHORED work kept apart from MERGED-FOR-OTHERS work. Absent on reports produced before contribution depth existed, and absent means unknown, never zero.

      • relation string | null

        How the developer relates to this repository, first match wins: `owner` (their own repository), `maintainer` (merged other people’s PRs here, or merged two or more of their own PRs in a repository they do not own, which shows write access), `core` (ten or more of their authored PRs merged), `reviewer` (three or more reviews given with at most two authored PRs merged), `drive-by` (one or two authored PRs merged). Reviews alone never make someone a maintainer. Absent or null means unknown, never zero.

        ownermaintainercorereviewerdrive-by
      • commitsAuthored number | null

        AUTHORED work: commits the developer authored in this repository that GitHub credits to them (default branch, linked email), across the years the research read. Absent or null means unknown, never zero.

        min 0
      • authoredPrs number | null

        AUTHORED work: pull requests the developer opened in this repository, over about the trailing two years of public activity. Absent or null means unknown, never zero.

        min 0
      • authoredPrsMerged number | null

        AUTHORED work: of the PRs they opened here, how many were merged by anyone, including themselves, over about the trailing two years of public activity. Estimated from a sample when they opened more than the dive reads one by one. Absent or null means unknown, never zero.

        min 0
      • authoredPrsMergedByOthers number | null

        AUTHORED work: of their merged PRs here, how many someone other than the developer (and not a bot) merged, which is outside validation of the work, over about the trailing two years of public activity. Absent or null means unknown, never zero.

        min 0
      • selfMergedPrs number | null

        AUTHORED work: of their merged PRs here, how many the developer merged themselves, which shows write access rather than outside validation, over about the trailing two years of public activity. Absent or null means unknown, never zero.

        min 0
      • mergedForOthers number | null

        MERGED-FOR-OTHERS work: other people’s PRs this developer merged here, read from the latest 50 merged PRs of each repository they own or hold write access to. A gatekeeping fact, never added to the authored counts. Absent or null means unknown, never zero.

        min 0
      • reviewsGiven number | null

        REVIEW work: reviews the developer left on other people’s PRs here, over about the trailing two years of public activity. Neither authored nor merged work. Absent or null means unknown, never zero.

        min 0
      • filesTouchedMedian number | null

        AUTHORED work: the median number of files changed per merged PR the developer authored here, over about the trailing two years of public activity. Absent or null means unknown, never zero.

        min 0
      • firstMergedAt string | null

        AUTHORED work: when the earliest PR the developer authored here was merged, as an ISO 8601 instant. Absent or null means unknown, never zero.

      • lastMergedAt string | null

        AUTHORED work: when the most recent PR the developer authored here was merged, as an ISO 8601 instant. Absent or null means unknown, never zero.

      • prTitles array | null

        AUTHORED work: titles of PRs the developer authored here, newest first, at most 8. Absent or null means unknown, never zero.

        max 8 items
  • subjects array | null

    WHAT-domain tags (fintech, mobile, devtools) read off the sampled repositories — owned AND contributed, manifests included — strength order. Null on reports produced before this field existed.

  • technologies array | null

    HOW-they-build tags (react, rust, kafka) read the same way as `subjects`, same vocabulary, computed alongside it but never blended in. Null on reports produced before this field existed.

  • commitStats object required

    How much of the developer’s work this research actually looked at. Read it before treating the signals as comprehensive.

    • sampleN number required

      How many commits were examined.

    • reposSampled number required

      How many repositories were examined.

    • reposSkipped number required

      How many were skipped, typically for size. A high number here means the signals rest on a narrower base than the developer’s full output.

  • familiesPresent array of string required

    Which signal families had enough data to contribute to this report.

  • signalsGraded number required

    How many signals were successfully percentile-ranked. The rest are explained in `signalsExcluded`.

  • signalsExcluded object required

    Signal name to why it was not ranked, and the four reasons say genuinely different things. `insufficient_cohort` = the signal WAS measured (its value is in `rawSignals`) but the ranking population is too small to place it; do not render this as "no evidence". `insufficient_evidence` = this developer did not produce enough activity to measure it. `no_family_data` = its whole signal family was unavailable. `not_percentile` = the signal is not the kind of thing that gets ranked.

  • signalPopulations object | null

    Per graded signal, WHICH substrate its percentile was ranked against. THE field to read before quoting any percentile: a report mixes substrates, so one sentence never covers all of them, and a `dive_population` percentile is a coarser claim than a `benchmark_grid` one. Absent on reports produced before this was recorded.

  • pointsSpent number required

    GitHub API quota consumed by the whole round this report was part of, not by this developer alone. Divide by `roundLogins` for an average, and say that you did.

  • requestCount number required

    Upstream requests made by the whole round, shared by every developer in it. Divide by `roundLogins` for an average.

  • roundLogins number required

    How many developers shared the round. The divisor for `pointsSpent` and `requestCount`.

  • startedAt string required

    When the research started, as an ISO 8601 instant.

  • finishedAt string required

    When the research finished, as an ISO 8601 instant.

  • contributionDepth object | null

    Contribution depth beyond owned repositories: AUTHORED work and MERGED-FOR-OTHERS work, counted separately and never summed, from public work only. Absent on reports produced before this field existed, and absent means unknown, never zero.

    • windowFrom string | null

      Start of the window the authored PR counts cover. Absent or null means unknown, never zero.

    • windowTo string | null

      End of the window the authored PR counts cover. Absent or null means unknown, never zero.

    • commitsAuthored number | null

      AUTHORED work: public commits GitHub credits to the developer across the years the research read. Absent or null means unknown, never zero.

      min 0
    • authoredPrs number | null

      AUTHORED work: pull requests the developer opened, over about the trailing two years of public activity. Absent or null means unknown, never zero.

      min 0
    • authoredPrsMerged number | null

      AUTHORED work: of those, how many were merged by anyone, over about the trailing two years of public activity. Absent or null means unknown, never zero.

      min 0
    • authoredPrsMergedExternal number | null

      AUTHORED work: merged PRs they authored in repositories they do not own, over about the trailing two years of public activity. Absent or null means unknown, never zero.

      min 0
    • authoredPrsMergedByOthers number | null

      AUTHORED work: merged PRs they authored that someone else (not a bot) merged, which is outside validation, over about the trailing two years of public activity. Absent or null means unknown, never zero.

      min 0
    • selfMergedPrs number | null

      AUTHORED work: merged PRs they authored and merged themselves, which shows write access rather than validation, over about the trailing two years of public activity. Absent or null means unknown, never zero.

      min 0
    • mergedForOthers number | null

      MERGED-FOR-OTHERS work: other people’s PRs the developer merged, read from the latest 50 merged PRs of each repository they own or hold write access to. Never added to the authored counts. Absent or null means unknown, never zero.

      min 0
    • reviewsGiven number | null

      REVIEW work: reviews they gave on other people’s PRs, over about the trailing two years of public activity. Absent or null means unknown, never zero.

      min 0
    • reviewsGivenExternal number | null

      REVIEW work: reviews they gave in repositories they do not own, over about the trailing two years of public activity. Absent or null means unknown, never zero.

      min 0
    • externalRepos number | null

      AUTHORED work: distinct repositories they do not own with at least one merged PR they authored, over about the trailing two years of public activity. Absent or null means unknown, never zero.

      min 0
    • yearly array | null

      Public activity by calendar year, oldest first. Absent or null means unknown, never zero.

      • year number required

        The calendar year.

      • commits number | null

        AUTHORED commits GitHub credited to them that year. Absent or null means unknown, never zero.

        min 0
      • prs number | null

        Pull requests they AUTHORED that year. Absent or null means unknown, never zero.

        min 0
      • reviews number | null

        Reviews they gave on other people’s PRs that year. Absent or null means unknown, never zero.

        min 0
    • prs array | null

      A sample of PRs the developer AUTHORED, at most 60, each saying who merged it. Absent or null means unknown, never zero.

      max 60 items
      • repo string required

        The repository as `owner/name`.

      • number number required

        The PR number in that repository.

      • title string | null

        The PR title. Absent or null means unknown, never zero.

      • merged boolean | null

        Whether the PR was merged. Absent or null means unknown, never zero.

      • mergedAt string | null

        When it was merged, as an ISO 8601 instant. Null when unmerged. Absent or null means unknown, never zero.

      • changedFiles number | null

        How many files the PR touched. Absent or null means unknown, never zero.

        min 0
      • mergedBy string | null

        `self` when the developer merged their own PR (write access, not outside validation), `other` when another person merged it, `bot` when automation did. Null when unmerged or unknown.

        selfotherbot
      • reviewsReceived number | null

        How many reviews other people left on this PR. Absent or null means unknown, never zero.

        min 0
    • fileMix object | null

      Files touched by extension and by top-level directory in the developer’s own merged PRs. Absent when the report predates the file mix; null when the research could not read the file lists (unknown, never an empty mix).

      • samplePrs number | null

        Merged PRs the developer AUTHORED whose file lists were read. Absent or null means unknown, never zero.

        min 0
      • reposSampled number | null

        Repositories those PRs came from. Absent or null means unknown, never zero.

        min 0
      • filesTouched number | null

        Changed files counted, after exclusions. Absent or null means unknown, never zero.

        min 0
      • filesExcluded number | null

        Changed files dropped as vendored, generated or lockfiles. Absent or null means unknown, never zero.

        min 0
      • extensions array of object required

        Files touched by extension, most files first, at most 20 keys, counted from the changed-file PATHS of merged PRs the developer AUTHORED (never line counts), with vendored, generated and lockfile paths excluded.

        max 20 items
        • key string required

          In `extensions`: the lowercased final extension without the dot (`ts`, `rs`), a known bare file name (`dockerfile`, `makefile`), or `(none)` for other files with no extension. In `directories`: the lowercased top-level directory, or `/` for a file at the repository root.

        • filesTouched number required

          Changed files under this key across the sampled authored PRs.

          min 0
        • prs number required

          Sampled authored PRs with at least one changed file under this key.

          min 0
      • directories array of object required

        Files touched by top-level directory, most files first, at most 20 keys, counted from the changed-file PATHS of merged PRs the developer AUTHORED (never line counts), with vendored, generated and lockfile paths excluded.

        max 20 items
        • key string required

          In `extensions`: the lowercased final extension without the dot (`ts`, `rs`), a known bare file name (`dockerfile`, `makefile`), or `(none)` for other files with no extension. In `directories`: the lowercased top-level directory, or `/` for a file at the repository root.

        • filesTouched number required

          Changed files under this key across the sampled authored PRs.

          min 0
        • prs number required

          Sampled authored PRs with at least one changed file under this key.

          min 0
  • narrative DeepResearchNarrative required

    The written narrative of THIS report snapshot: the top summary (`persona`) and the activity, code and social paragraphs. Null when it has not been written yet, which is a normal state and never an error: it is generated off the hot path when the research job completes, a read that finds it missing or incomplete kicks the generation, and `narrativePending` is true until the complete prose is stored. Stored against the report row.

    • persona string required

      The pitch: three to five sentences on what this developer is like to hire, written from this report and the engine’s read of their public work. A reading of a body of work, not a score: it asserts no employer, no title, no seniority and no location.

      max 640 chars
    • sections object required

      The three supporting sections, each a paragraph. Each is nullable only while the narrative is still being completed: `narrativePending` says whether the missing ones are coming.

      • activity string | null required

        How they work: their rhythm, and what having them on a team looks like.

        max 640 chars
      • code string | null required

        The work itself: what recurs in it, and what they build with it.

        max 640 chars
      • social string | null required

        How they work with other people, as their public work evidences it.

        max 640 chars
  • narrativePending boolean required

    True while the narrative is missing, missing a section, or being rewritten (an older version is served meanwhile) AND is still being written: render the prose that is there, a placeholder for any missing piece, and read again shortly. False once all four current pieces are stored, and also false when they cannot be written (the retries for this report are spent), so a placeholder never waits forever.