Refolk
PlaybookInvesting and deal sourcing

The Public-Repo Technical Diligence Read for Early-Stage Deals

You can produce a go/flag/stop technical read of a startup from public repositories alone in under a day, with named red flags and the evidence behind each.

14 min readLast reviewed August 6, 2026Read as Markdown

A technical deal just landed and there is no data room yet. This guide is the ordered process an associate keeps open to read a startup's public code as a pre-term-sheet risk signal, and to turn that read into a go/flag/stop verdict with named red flags and the evidence behind each. It is for early-stage investors, platform and talent partners at funds, and angels who need a defensible technical read before they commit partner time or a term sheet.

The existing "review the GitHub" line on every checklist is not a method. This is: concrete thresholds, a legal boundary, and base rates so you know when a red flag is common noise versus a genuine outlier.

Why a same-day public-repo read is the right scope

The technical read is time-boxed to under two weeks, so a repeatable checklist beats depth. Full VC diligence runs roughly 2 to 6 weeks by stage, with seed rounds averaging 2 to 3 weeks and Series A and beyond 4 to 6 weeks. But the technical workstream is only a slice of that window, which means you rarely get more than two weeks of an auditor's attention, and often far less at seed.

That compression is why a public-repo pass matters. It is the one read you can finish in a day, before you have data-room access, that flags risk early enough to change how you spend partner time. The advice that technical review only matters at later rounds is outdated: rounds got more competitive so funds diligence harder, and AI-assisted development made codebases faster to produce and harder to trust. When the code itself stops being evidence of engineering discipline, you need a process that reads the signals around the code, not just the code.

2 weeks
The most auditor attention you typically get
The technical read is a slice of a 2 to 6 week window, so a same-day pass is the only read that reliably fits a pre-term-sheet decision.

The scope of this guide is deliberately narrow. It grades what public repositories, contributor graphs, dependency manifests, and public hiring signals can tell you. It does not replace a full code audit under NDA, and it does not read private IP. It tells you whether to spend partner time getting to that deeper read at all.

The five signals that carry the verdict

Five signals do most of the work: authorship concentration, license risk, dependency health, secret exposure, and whether AI claims survive contact with the repo. Everything else is context.

Each of these has a documented base rate, which is what stops you from over-reacting. A red flag that appears in most codebases is a cost of doing business, not an outlier. A red flag that is rare is a genuine signal. Table A is your denominator: the "how common is this" number behind each flag, from an audit of 965 commercial codebases.

SignalPrevalence
License conflict present56%
No or custom license33%
Any OSS vulnerability86%
High or critical vulnerability81%
Components over four years out of date90%

Read that table before you panic at any single finding. If 86% of audited codebases contain an open-source vulnerability and 90% carry components more than four years out of date, then finding one in your target is baseline, not a stop. What moves the verdict is the combination: an out-of-date, vulnerable dependency that also carries a copyleft license and sits on the core value path.

Here is how each signal proves something, and what it looks like when it lies:

  • Authorship concentration. Proves whether knowledge is distributed or trapped in one person. It lies when a large headcount hides concentrated per-file ownership.
  • License class. Proves whether the company can legally ship and be acquired. It lies when the manifest looks clean but vendored or AI-generated code carries no license.
  • Dependency health. Proves whether the stack is maintained. It lies when the top-level manifest is tidy but transitive dependencies are stale.
  • Secret exposure. Proves operational discipline, and it is binary. It lies when HEAD is clean but a live key sits in history.
  • AI claim fidelity. Proves whether the product is what the deck says. It lies when a wrapper reads as a proprietary model.

Reading public repositories by hand for diligence is permitted; the boundary is spam and resale, not research. GitHub's Acceptable Use Policy explicitly allows research use of public, non-personal information. A single investor reading a handful of repos and profiles by hand is far under any rate limit.

The hard line is unambiguous: you may not use information from the Service for spamming purposes, including sending unsolicited emails or selling personal information, such as to recruiters, headhunters, and job boards. Diligence is a read, not a send, so you stay inside the line as long as you do not turn contributor lists into an outbound list.

On throughput: the primary rate limit for unauthenticated requests is 60 requests per hour, while authenticated requests count toward a personal limit of 5,000 requests per hour. Generating a personal access token before you start is the difference between a read that stalls and one that finishes in an afternoon. This is why authentication is its own step in the procedure below rather than an afterthought.

The seven-step public read

  1. Scope
    Map the org, founder accounts, repos, stars, and last-push dates
  2. Authenticate
    Token for 5,000 requests/hour instead of 60
  3. Authorship
    Compute bus factor from per-file ownership
  4. Deps and license
    Map SPDX classes, flag copyleft and no-license
  5. Secrets
    Scan full history, confirm push protection
  6. AI claims
    Supported, wrapper, or unsupported, claim by claim
  7. Grade
    Go, flag, or stop with evidence per flag
Each stage produces a named artifact, and the last one is a memo a partner reads in five minutes.

Run the read: the ordered procedure

Work the steps in order; each produces a named artifact, and the final memo is just the assembly of the six that precede it. At seed, steps 3 through 6 often collapse into a single technical-advisor session, because the read is a conversation rather than a structured multi-area review. At Series A and beyond, run them as separate passes.

The public-repo technical read

  1. Scope and inventory the footprint
    Find the company's GitHub org and the founders' personal accounts, then list public repos, stars, languages, and last-push dates. Done means a one-page repo map with owners identified, produced before any data-room access.
  2. Authenticate your tooling
    Generate a personal access token so calls count toward the 5,000 requests/hour limit rather than the 60/hour unauthenticated cap. Done means calls return without a 403.
  3. Read activity and authorship
    Pull commit history, the contributor list, and commit cadence, then compute bus factor from per-file authorship share. Done means you know the truck-factor developers and whether commits are steady or a single pre-raise dump.
  4. Scan dependencies and licenses
    Read the manifests, map each license to its SPDX class, and flag GPL/AGPL copyleft, no-license, and custom-license components. Done means a license risk list that names the transitive and vendored layers.
  5. Check secret and security hygiene
    Scan the full git history for exposed keys, and confirm secret-scanning push protection and Dependabot are on. Done means zero live secrets confirmed, or a documented exposure with commit and rotation status.
  6. Verify the AI claims
    Cross-check every AI claim in the deck against repo evidence, job postings, and docs. Done means a claim-by-claim table marking each supported, wrapper, or unsupported.
  7. Grade and write the memo
    Convert the findings into a go/flag/stop verdict with the evidence attached to each flag. Done means a one-page memo a partner can read in five minutes.

On thresholds, stated as this guide's convention

No single published standard fixes numeric thresholds for investors, so the thresholds below are this guide's own convention. State them that way in your memo so a second reviewer knows where judgment enters.

  • Bus factor of 1 alone: not a stop. It is a flag only when combined with no documentation and no tests.
  • Any live secret in git history: hard stop. Binary and objective.
  • Copyleft (GPL/AGPL) on the core value path: flag, escalate to counsel. Permissive (MIT/Apache) is a note, not a flag.
  • No-license or custom-license core code: flag. The company cannot cleanly grant rights it does not hold.
  • Single pre-raise commit dump: flag. It undermines every claim about steady engineering.

Checking AI claims: separating real work from wrappers

Cross-channel evidence, not code aesthetics, is what separates genuine AI engineering from AI-washing. Real AI adoption leaves consistent evidence across company messaging, job postings, technology footprint, announced partnerships, and governance disclosures. A wrapper leaves a thin, inconsistent trail.

Be honest about the limits here: no source gives a validated repo-only checklist that cleanly separates real from AI-washed code. The reliable signals are cross-channel. The clearest hiring tell is simple. Companies building real AI recruit ML engineers, data scientists, MLOps engineers, and AI researchers; if the careers page shows no AI-related hiring, the AI claims may be more marketing than engineering.

The wrapper pattern is well documented: adding "AI-powered" to a product that uses no AI, or wrapping a ChatGPT API call and calling it proprietary technology. In one diligence case, a portfolio company's "AI-driven risk engine" turned out to be manually maintained rules tables with a GPT chatbot bolted on that represented roughly 2% of functionality. The market has harder examples too: a company raised $42M claiming AI automation while secretly using human workers, and an "AI drive-thru" needed human intervention for 70% of orders.

Talent-supply ratios turn this into a checkable claim. Refolk's index gives you a hard denominator for how many people with a given skill exist in a market, so a headcount claim stops being unfalsifiable.

MarketML EngineersShare vs US
United States10,699100%
United Kingdom1,45513.6% (derived)
US:UK ratio-7.35x (derived)

A UK seed startup claiming a large in-house ML team is drawing from a pool of 1,455, so its headcount claim is checkable against a hard denominator. If the deck says fifteen ML engineers in London, ask who they are and where they came from.

The second table separates deep model-building skills from wrapper skills in a single market, which is exactly the distinction the wrapper question turns on.

SkillUS profilesShare of PyTorch pool
PyTorch (model-building)65,975100%
LangChain (LLM-wrapper)17,43726.4% (derived)
PyTorch:LangChain ratio-3.78x (derived)

Use this as a market baseline. When a startup claims deep proprietary AI but its own footprint skews to LangChain-type wrapper skills with no model-building depth, the claim maps to the documented wrapper pattern. That is the moment to ask whether AI touches the core value path or a support corner.

The wrapper economy has a measurable footprint, and Refolk lets you check a team's real skill mix against these baselines in plain English rather than scraping profiles by hand. When the deck names a team, you can verify its ML pedigree in minutes and put the check in your memo as evidence, not impression.

A clean manifest is exactly where AI-washed teams look safest and are not.

How this read goes wrong: failure modes and false positives

The most valuable part of a diligence standard is knowing how it lies to you. Each failure mode below has a false positive to guard against and a concrete check that defeats it.

Star-count halo. High stars read as traction but can be bought or campaign-driven. Check star acquisition timing and whether stargazers are real, active accounts, not the code quality. A spike that lines up with a launch post is marketing, not adoption.

Single pre-raise commit dump. A repo that looks active may be one bulk commit before fundraising. The false positive is reading "steady cadence" from a recent last-push date. Check the distribution of commit timestamps, not just the most recent one.

Bus factor misread. A large team does not mean distributed knowledge. As the number of developers grows the relative bus factor decreases, and core knowledge stays concentrated in relatively few individuals. Compute per-file authorship share, not headcount. And remember the base rate: 46% of 133 popular projects had a truck factor of 1, so TF=1 is normal, not exceptional.

License scan blind spot. Manifest-only scans miss vendored code and AI-generated snippets. Only 77% of dependencies are identifiable via package manager scanning, so a "clean" manifest is a false negative waiting to happen. Check for copied source and the transitive layer, where 64% of components live and nearly half of high or critical vulnerabilities originate.

Secrets in history, not HEAD. A clean current tree can hide live keys in history. The false positive is "no secrets in the latest commit." Scan the full history. A deleted-then-rotated key is fine; a deleted-but-not-rotated key is a live breach.

AI-wrapper masquerade. A GPT chatbot bolted onto rules tables reads as an "AI product." Recall the 2% functionality case. Check whether AI touches the core value path or a support corner.

Empty public footprint over-penalized. Serious startups keep core IP private, so absence of public repos is not itself a stop. Do not grade the empty org. Check founders' personal accounts and prior work instead, and request read access under NDA.

Recency without a threshold. "Last commit" alone is ambiguous. Project death has no fixed time threshold, and a 26k-star repo can sit idle for years while its author stays active elsewhere. Cross-check author activity before flagging abandonment.

Verdict grid for a single flag

Core value pathSupport corner
Common and on core path
Flag and price it; expect remediation cost
Rare and on core path
Stop or escalate; this is a genuine outlier
Common and in a corner
Note it and move on
Rare and in a corner
Note with a watch item, no action now
Common (high base rate)Rare (low base rate)
A flag's weight depends on how common it is and whether it sits on the core value path.

Secret exposure: the one objective stop

Secret exposure is the one binary, high-consequence flag two reviewers will always score identically. A single live key in git history is an objective stop, no judgment required.

The scale explains why this is non-negotiable. GitHub detected more than 39 million leaked secrets in 2024, and credential-involved breaches cost an average of $4.88M per incident. Against those numbers, a startup that ships live keys in a public repo has demonstrated an operational failure that will recur under your money.

The mechanics matter. GitHub launched push protection in April 2022 and enabled it by default for all public repos by February 2024, so a team shipping secrets is now actively working around a default guardrail. Confirm push protection is on, then scan the full history yourself. The distinction that decides the verdict: a key that was committed, then rotated, is a hygiene note; a key still live in history is a breach you are being asked to fund.

number: 39M
label: Secrets GitHub detected as leaked in a single year
note: One live key in a target's git history is an objective stop, set against a $4.88M average credential-breach cost.

Questions practitioners ask

How long should the technical read take before a term sheet?

Plan for one working day of associate time on the public read. Full VC diligence runs 2 to 6 weeks by stage, but the technical workstream is only a slice of that, and you rarely get more than two weeks of an auditor's attention. Because the window is short, a repeatable same-day public-repo pass beats a deep review you cannot finish, and it fits the pre-term-sheet decision cleanly.

Is it legal to read a company's public repos this way?

Yes, for a hand read. GitHub's Acceptable Use Policy permits research use of public, non-personal data, and a single investor reading a handful of repos and profiles by hand is far under any rate limit. The hard line is spam and resale: you may not use the data to send unsolicited mail or sell personal information to recruiters, headhunters, or job boards. Authenticate to get 5,000 requests/hour instead of 60.

Should an empty public GitHub org stop the deal?

No. Serious startups keep core IP private, so an absent public footprint is not itself a stop. Do not grade the empty org. Instead, pivot to the founders' personal accounts and prior work, and use the diligence window to request read access to a private repo under NDA. Over-penalizing an empty org is a documented false positive.

How do I tell real AI from an AI wrapper using only public signals?

Real AI adoption leaves consistent cross-channel evidence: model-building dependencies, ML hiring, and docs that describe training and evaluation. A wrapper shows a bolted-on API call and no model-building depth. One documented case was an 'AI-driven risk engine' that was manually maintained rules tables with a GPT chatbot representing about 2% of functionality. Ask whether AI touches the core value path or a support corner, and check the team's skill footprint against market baselines.

Is a bus factor of one a hard stop?

No, not on its own. A truck factor of 1 is normal at early stage: 46% of 133 popular GitHub projects had a truck factor of 1 (Avelino et al., 2016). Price it, do not fear it. The real flag is TF=1 combined with no documentation and no tests, which means the knowledge is concentrated and undocumented. Compute per-file authorship share rather than headcount, because core knowledge stays concentrated even on large teams.

Try it on your own search

Stop building boolean strings. Just describe the person.

Type one sentence and I plan the search, read GitHub, public LinkedIn and Crunchbase records, and the open web live, then hand back a ranked shortlist with the reasoning behind every name. No filters to learn, no export to clean up, no sales call to sit through.

  • One sentence in, a ranked shortlist out. No boolean, no filters, no seat to buy.
  • Read live at search time, not from a database that went stale last quarter.
  • Watch every step as it runs, and see why each name made the list.

500 free credits on sign-up. No card, no demo call. See real searches.

Read next