← Back to list

I Built a Tech Scouting Agent That Spots Emerging Tech 18 Months Before McKinsey Does

A hands-on tutorial for AI engineers and data scientists at corporate R & D teams. Real code, real domain, real momentum scoring.

unicodeveloper · 2026-06-05 13:58 · 171 claps · 12.0 min read
#corporate-innovation #deep-research #mckinsey #valyu #ai-agent
Open on Medium ↗
Wiki topics: AGT · AI Agents AI · AI · General

I Built a Tech Scouting Agent That Spots Emerging Tech 18 Months Before McKinsey Does

A hands-on tutorial for AI engineers and data scientists at corporate R & D teams. Real code, real domain, real momentum scoring.

Scouting for Emerging Tech.

Scouting for Emerging Tech.

TL;DR

Press coverage is a lagging indicator. The three leading signals for emerging technology: patent filing velocity, paper citation acceleration, and government grant flow. This article walks through building a TypeScript agent that triangulates all three signals in a chosen technology domain using the Valyu API, scores momentum, and uses Valyu DeepResearch to write a fully cited research dossier.

Not a developer? You can use the same knowledge layer without writing any code. Drop the Slack agent into your workspace or the Teams agent, ask the same questions in plain English and set a cadence (daily/weekly) for reports in any domain.

By the time an emerging technology shows up in a McKinsey trend report, it has already been patented for 18 months, papered for 12, and the key labs have been funded for 6.

R&D teams that wait for the press cycle lose the strategic game. The signals that actually predict where a field is going; patent filing velocity, citation acceleration, and grant flow live in primary sources that generic web search APIs don’t surface early enough. By the time it’s in the news, it’s already a bit too late.

This article is a hands-on tutorial for AI engineers and data scientists building tech scouting into an internal R&D workflow. You will build a TypeScript agent that triangulates patent filings, academic publications, and government grants in a chosen technology domain, scores momentum, and writes a research dossier with primary citations.

We will use Valyu as the search layer. It bundles USPTO patents, arXiv, PubMed, web search, several specialised data sources and a DeepResearch endpoint behind a single SDK (the broadest single-SDK coverage of these sources I have found). By the end you will have a working agent you can point at any tech domain.

The Three-Signal Framework for Emerging Technology Detection

Tech scouting is the practice of identifying technologies, teams, and innovations that are about to become strategically relevant typically 12 to 24 months before they hit the mainstream. The signals that work are leading, not lagging.

Lead-time ranges are my own framework drawn from R&D-team work, not a published study, treat them as a useful approximation, not the gospel.

A single signal is noisy. A startup files patents to look defensible. A lab publishes papers to attract talent. A grant gets awarded for political reasons. But when all three accelerate simultaneously inside the same domain, you are almost certainly looking at a real shift.

That is the triangulation move. It is what this agent does.

Why Web Search Alone Fails Tech Scouting

Web search APIs were built for “what is X” questions. Tech scouting needs “which records in which database match these filters” a different problem.

What You Will Build

A TypeScript module with four functions:

  1. patentVelocity(domain, months) counts USPTO filings on a domain across recent quarters
  2. citationAcceleration(domain, months) measures arXiv/PubMed paper volume growth
  3. grantFlow(domain, months) pulls active NSF, NIH, DOE, and Horizon Europe awards
  4. momentumDossier(domain) combines the three signals and uses Valyu DeepResearch to write a research memo

We will run the finished agent on perovskite tandem solar cells, a domain in active commercialization, with measurable signal on all three axes.

Setup

npm install valyu-js
export VALYU_API_KEY="your_key_here"
import { Valyu } from "valyu-js";

const valyu = new Valyu(process.env.VALYU_API_KEY!);

A small date helper keeps the rest of the code clean:

const isoDate = (d: Date) => d.toISOString().slice(0, 10);

const daysAgo = (n: number) =>
  new Date(Date.now() - n * 24 * 60 * 60 * 1000);

Step 1: Patent Velocity (Signal #1)

The first signal counts how many USPTO patents have been filed on a domain across recent quarters. Acceleration matters more than absolute volume.

A steady 50 filings per quarter is a mature field; 10 → 25 → 60 across three quarters is a wave.

async function patentVelocity(domain: string, months: number = 18) {
  const end = new Date();
  const start = daysAgo(months * 30);

  const response = await valyu.search(domain, {
    searchType: "proprietary",
    includedSources: ["valyu/valyu-patents"],
    startDate: isoDate(start),
    endDate: isoDate(end),
    maxNumResults: 20, // standard-tier cap; request higher from Valyu for production
    relevanceThreshold: 0.5,
  });

  if (!response.success) throw new Error(response.error ?? "search failed");

  const byQuarter: Record<string, number> = {};
  const assignees: Record<string, number> = {};

  for (const r of response.results) {
    if (r.publication_date) {
      const month = parseInt(r.publication_date.slice(5, 7), 10);
      const quarter = `${r.publication_date.slice(0, 4)}-Q${Math.floor((month - 1) / 3) + 1}`;
      byQuarter[quarter] = (byQuarter[quarter] ?? 0) + 1;
    }
    if (r.org_name) {
      assignees[r.org_name] = (assignees[r.org_name] ?? 0) + 1;
    }
  }

  return {
    quarterlyCounts: Object.fromEntries(
      Object.entries(byQuarter).sort(([a], [b]) => a.localeCompare(b)),
    ),
    topAssignees: Object.entries(assignees)
      .sort(([, a], [, b]) => b - a)
      .slice(0, 10),
    raw: response.results,
  };
}

The critical move is “includedSources: [“valyu/valyu-patents”]”. That single argument is the difference between “search the web and hope a patent shows up” and “search the USPTO corpus directly.” It is the same shape of API call as a web search, but the data it returns is structured patent records: assignee, filing date, claim text not blog posts about patents.

Step 2: Citation Acceleration (Signal #2)

Patents tell you what companies are protecting. Papers tell you what researchers are building. A 2× year-over-year jump in arXiv preprints on a topic is one of the most reliable leading indicators in technical R&D.

async function citationAcceleration(domain: string, months: number = 18) {
  const end = new Date();
  const mid = daysAgo(Math.floor(months / 2) * 30);
  const start = daysAgo(months * 30);

  const countWindow = async (s: Date, e: Date) => {
    const resp = await valyu.search(domain, {
      searchType: "proprietary",
      includedSources: ["valyu/valyu-arxiv", "valyu/valyu-pubmed"],
      startDate: isoDate(s),
      endDate: isoDate(e),
      maxNumResults: 20,
      relevanceThreshold: 0.5,
    });
    if (!resp.success) throw new Error(resp.error ?? "search failed");
    return resp.results;
  };

  const [recent, prior] = await Promise.all([
    countWindow(mid, end),
    countWindow(start, mid),
  ]);

  const growth = (recent.length - prior.length) / Math.max(prior.length, 1);

  return {
    recentPapers: recent.length,
    priorPapers: prior.length,
    growthRate: Math.round(growth * 100) / 100,
    topRecent: recent.slice(0, 10).map((r) => [r.title, r.url] as const),
  };
}

A growthRate above 0.5 (50% increase half-over-half) is the threshold I use for this is heating up.

Step 3: Grant Flow (Signal #3)

Grant data is the trickiest signal because the databases are fragmented across agencies. The pragmatic move is a domain-filtered web search against the canonical award sites. Valyu lets you bias results to specific domains in a single call.

async function grantFlow(domain: string, months: number = 12) {
  const end = new Date();
  const start = daysAgo(months * 30);

  const response = await valyu.search(`${domain} grant award funding`, {
    searchType: "web",
    sourceBiases: {
      "nsf.gov": 5,
      "grants.gov": 5,
      "energy.gov": 5,
      "ec.europa.eu": 5,
      "nih.gov": 4,
      "darpa.mil": 4,
    },
    startDate: isoDate(start),
    endDate: isoDate(end),
    maxNumResults: 20,
    relevanceThreshold: 0.6,
  });

  if (!response.success) throw new Error(response.error ?? "search failed");

  return {
    awards: response.results.map((r) => ({
      title: r.title,
      url: r.url,
      snippet: r.content.slice(0, 300),
    })),
    count: response.results.length,
  };
}

sourceBiases” is doing real work here. Values run from “-5” (strong demotion) to “+5” (strong boost), so a “5” on nsf.gov and grants.gov turns a generic web search into a targeted grant-database scan without needing per-agency credentials.

Step 4: Triangulation. The Momentum Score

A single function combines the three signals into one score:

function momentumScore(
  patents: Awaited<ReturnType<typeof patentVelocity>>,
  citations: Awaited<ReturnType<typeof citationAcceleration>>,
  grants: Awaited<ReturnType<typeof grantFlow>>,
) {
  // Patent acceleration: compare last quarter to first quarter in window
  const quarters = Object.values(patents.quarterlyCounts);
  const patentGrowth =
    quarters.length >= 2
      ? (quarters[quarters.length - 1] - quarters[0]) / Math.max(quarters[0], 1)
      : 0;

  const citationGrowth = citations.growthRate;
  const grantDensity = Math.min(grants.count / 10, 1.0); // normalize 0-1

  const score =
    ((0.35 * Math.min(patentGrowth, 2.0)) / 2.0 +
      (0.40 * Math.min(citationGrowth, 2.0)) / 2.0 +
      0.25 * grantDensity) *
    100;

  return {
    score: Math.round(score * 10) / 10,
    components: {
      patentGrowth: Math.round(patentGrowth * 100) / 100,
      citationGrowth: Math.round(citationGrowth * 100) / 100,
      grantDensity: Math.round(grantDensity * 100) / 100,
    },
  };
}

The weights are mine. Citation acceleration gets the highest weight because it is the noisiest indicator in the short term but the most accurate over 18 months. Tune them to your domain.

Step 5: DeepResearch as the Synthesizer

The three signals give you the numbers to turn them into a research dossier. Leading labs, key papers, defensive moats, you want an LLM that can do multi-step reasoning across all of the underlying sources.

That is what Valyu’s deepresearch endpoint is for.

async function momentumDossier(domain: string) {
  const [patents, citations, grants] = await Promise.all([
    patentVelocity(domain),
    citationAcceleration(domain),
    grantFlow(domain),
  ]);
  const momentum = momentumScore(patents, citations, grants);

  const prompt = `
You are a corporate R&D analyst. Write a 600-word tech scouting dossier
on "${domain}" with the following structure:

1. Executive summary: is this domain accelerating, and why
2. Top three companies or labs to watch, with their patent or paper evidence
3. Two specific technical bets that look underexplored (whitespace)
4. Risks and counter-signals

Use only primary sources (patents, peer-reviewed papers, official grant
records). Cite every claim with a URL.

Pre-computed signal summary:
- Momentum score: ${momentum.score}/100
- Patent growth: ${momentum.components.patentGrowth}
- Citation growth: ${momentum.components.citationGrowth}
- Top assignees: ${JSON.stringify(patents.topAssignees.slice(0, 5))}
`.trim();

  const task = await valyu.deepresearch.create({
    query: prompt,
    model: "heavy",
    outputFormats: ["markdown"],
  });

  const result = await valyu.deepresearch.wait(task.deepresearch_id, {
    onProgress: (status) =>
      console.log(
        `Step ${status.progress.current_step}/${status.progress.total_steps}`,
      ),
  });

  return {
    momentum,
    patents,
    citations,
    grants,
    dossier: result.output,
  };
}

model: “heavy” is the right tier for a synthesis task that touches dozens of underlying sources. At $2.50 per task, one dossier costs less than the third sip of an analyst’s morning coffee.

Running the Agent on Perovskite Tandem Solar

const result = await momentumDossier("perovskite tandem solar cells");

console.log(`Momentum score: ${result.momentum.score}/100`);
console.log(`Patent growth: ${result.momentum.components.patentGrowth}`);
console.log(`Citation growth: ${result.momentum.components.citationGrowth}`);
console.log("\n--- DOSSIER ---\n");
console.log(result.dossier);

Here is a real (lightly trimmed) run on perovskite tandem solar cells in mid-2026:

Signal summary:
  Momentum score:     25.0 / 100  *
  Patent growth:      0      *
  Citation growth:    0      *
  Grant density:      1.0 (17 active programs, saturated)

  * Patent and citation acceleration are zero in this run because the
    standard-tier 20-result cap saturates both paper windows at 20 and
    leaves the patent stream too sparse to bucket by quarter. Request
    higher per-call limits and these signals start moving.
# Perovskite Tandem Solar Cells: Tech Scouting Dossier

## Executive Summary
The field has crossed a fundamental physics threshold. LONGi's NREL-certified
**34.85% power conversion efficiency** (April 2025) is the first dual-junction
flat-plate device to exceed the Shockley-Queisser single-junction silicon
limit of 33.7%. Combined with four record cycles in 18 months
(33.5% → 33.9% → 34.6% → 34.85%), this marks a transition from incremental
progress to systematic outperformance.

## Top Organizations to Watch

**Oxford Photovoltaics (UK/Germany)** — 400+ granted global patents,
including US 12300446 B2 (titanium oxynitride interlayer, May 2025),
US 12230455 B2 (conformal vapor deposition on textured silicon),
US 12349530 B2 (Al₂O₃/SnOx trilayer protection, July 2025). Active IP
monetization: exclusive China license to Trina Solar (April 2025),
non-exclusive US license to First Solar (February 2026). Commercial
module efficiency: 26.9% Fraunhofer-certified.

**LONGi Green Energy (China)** — Holds the NREL-certified 34.85% world
record. Two landmark publications: Nature (Sept 2024, bilayer interface
passivation) and Science (July 2025, asymmetric SAM HTL). Patent
US 12133398 B2 on BPPT ordered induction layers. 100+ dedicated tandem
researchers with collaborators at Soochow University and CAS Changchun.

**KAUST Photovoltaics Laboratory (Prof. Stefaan De Wolf)** — 33.1%
certified PCE on industrial pyramid-textured silicon (Sept 2025,
Science DOI 10.1126/science.adx1745). Also holds the perovskite/
perovskite/silicon triple-junction record at 28.7% PCE (Sept 2025,
Nature Materials).

## Whitespace Bets

- **Tin-germanium alloy top cells (CsSn₁₋ₓGeₓI₃) for lead-free all-
  perovskite tandems.** Simulated PCE of 31.58% versus experimental
  7.11% — a 24-point fabrication-to-simulation gap with near-zero
  patent density on this composition space. Regulatory tailwind from
  anticipated EU RoHS pressure.

- **Bifacial all-perovskite tandems with rear-irradiance bandgap
  co-optimization.** Demonstrated in Science Advances by Nanjing
  University, but bandgaps (1.78 eV / 1.23 eV) are still optimized
  for front illumination only. Co-optimization for combined front +
  diffuse rear yield is essentially unpublished.

## Risks

- No perovskite tandem module has demonstrated 25-year field durability;
  IEC 61215 TC150 testing is insufficient (TC200–TC600 required per
  PMC11989536). Best public stability is LONGi's T80 = 1,200 hours.
- 7.9-point cell-to-module efficiency gap between LONGi's 34.85% cell
  and Oxford PV's 26.9% module reflects scribing losses, edge
  recombination, and current mismatch.
- All high-efficiency tandems use lead absorbers; EU RoHS exposure
  undefined; lead-free penalty currently 14–15 PCE points.
- IP fragmentation across Oxford PV, HZB, UNC, NREL, EPFL, KAUST,
  and LONGi creates freedom-to-operate exposure, sharpened by the
  Oxford PV / Trina exclusive China license.

That excerpt is from a real heavy-tier run; the full dossier the agent returned cited 76 primary sources spanning Nature, Science, USPTO patent numbers, DOE / Horizon Europe / NEDO grant records, and certification press releases, every claim a clickable URL.

The run took ~75 minutes end-to-end and cost $2.50 for the DeepResearch call plus a handful of cents in search fees. A consulting engagement that produces the same artifact is two weeks of human work and five figures of fees.

Scouting to Conviction: DeepResearch Reports

Not every R&D lead, product manager, or innovation analyst wants to ship TypeScript to spot emerging tech. The same scout → drill → act funnel runs without a single line of code on the Valyu platform or directly from the Slack agent and Teams agent your team already lives in.

The pattern: Make or Chain DeepResearch reports. One to find the trend, one (or several) to drill into the specific bets it surfaces.

Step 1: Scout. Open DeepResearch from the Valyu Dashboard and ask:

“*Map the emerging-tech landscape in [your domain] over the last 18 months. Cover patent filing velocity, paper citation acceleration, and active government and foundation grant flow. Identify the top three companies or labs to watch and the two most underexplored technical bets, with primary-source citations for every claim.”*

You get back the same kind of fully cited dossier the code agent produces. Patents, papers, grants, whitespace bets, risks, every claim a clickable link to a USPTO record, a Nature DOI, or a DOE grant page.

Step 2: Drill. Pick the whitespace bet, the competitor, or the regulatory question that matters most to your thesis and start a second DeepResearch report:

“*Deep dive on [specific whitespace bet] inside [your domain]. Who are the three best-published groups working on this? What is the current state of the art with a primary source? What is the most likely commercial path in the next 18 months? What single counter-signal would kill this thesis?”*

That second report is your IC memo or sprint-plan input. You can chain a third, fourth, fifth. One per bet, one per competitor, one per regulatory angle until conviction is grounded in citations, not vibes.

Step 3: Act. Bring the chain of reports into your review meeting. Every claim is a primary-source link. The team argues about strategy, not about whether the facts are real.

Same funnel as the code path. find the trend → get a report → drill until you have conviction running entirely in your browser, your Slack workspace, or your Teams channel. The code path is for teams wiring this into recurring pipelines and dashboards. The platform path is for everyone who just wants the answer fast.

Extending the Agent

Once the core loop works, the obvious extensions are:

  • Talent signal: add a fourth function that pulls technical hires via LinkedIn-allowed sources or arXiv first-author affiliation changes.
  • Time-series tracking: persist momentum scores per domain weekly and alert on threshold crossings.
  • Slack delivery: wrap the dossier in a Block Kit message and post to an #rd-foresight channel every Monday.
  • Cross-domain whitespace: run the agent on a portfolio of 30 domains and rank by momentum to choose where to invest research budget next quarter.

FAQ

What is tech scouting?

Tech scouting is the systematic identification of emerging technologies, research teams, and innovations that are likely to become strategically relevant to a company within 12 to 24 months. It is a core function inside corporate R&D, innovation, and corporate venture teams.

Why triangulate patents, papers, and grants instead of just reading news?

Press coverage is a lagging indicator. By the time a technology has news coverage, it has typically been patented 12 to 18 months earlier, published in academic literature 6 to 12 months earlier, and funded 6 months earlier. Triangulating the three primary sources gives you 6 to 18 months of lead time on news.

Does this work for any technology domain?

Yes, with one caveat. The momentum framework works best for technical domains where patents and academic publications are the dominant artifacts: hardware, biotech, chemistry, materials, semiconductors, defense tech. For software-only domains it is weaker because patents are rarer and the leading signal moves to open-source repositories.

Can I use a different LLM with this?

Yes. The signal-gathering functions (patentVelocity, citationAcceleration, grantFlow) return typed JSON. You can feed that to any model; GPT-5.5, Claude Opus 4.8, Gemini to write the dossier. The Valyu deepresearch call is a convenience that handles the multi-source synthesis for you, but it is not required.

How much does running this cost?

The three signal calls are standard search requests. A full heavy-tier DeepResearch dossier runs $2.50 per domain. Running the agent across a 30-domain portfolio costs roughly $75 orders of magnitude cheaper than the consulting engagement it replaces.

Conclusion

The leading-indicator advantage in R&D has always belonged to the teams with the right primary sources and the patience to read them. AI agents collapse the patience part. The remaining question is whether your stack can actually reach the primary sources.

Valyu can, and you just built the agent that proves it.

The full code is on GitHub. Sign up for a Valyu API key at valyu.ai. If you build something on top of this particularly for materials, biotech, or semis, I would love to see it. Feel free to comment under this post or tag me on X


메타데이터
post_id
6d7834ad52c8
slug
i-built-a-tech-scouting-agent-that-spots-emerging-tech-18-months-before-mckinsey-does-6d7834ad52c8
url
https://medium.com/@unicodeveloper/i-built-a-tech-scouting-agent-that-spots-emerging-tech-18-months-before-mckinsey-does-6d7834ad52c8
canonical_url
https://medium.com/@unicodeveloper/i-built-a-tech-scouting-agent-that-spots-emerging-tech-18-months-before-mckinsey-does-6d7834ad52c8
author_url
https://medium.com/@unicodeveloper
status
ok
fetched_at
2026-06-15 20:49:13