Skip to main content
You have a hypothesis — about a company’s moat, a market shift, or a technology bet. Before you put it in a memo, pitch deck, or board presentation, you need to know: does the expert consensus support it, contradict it, or is it an untested assumption? This recipe embeds your thesis into Gildea’s vector space, finds verified claims that agree or disagree, then produces a structured thesis validation brief you can attach to any decision document.

Who this is for

  • Investors validating a deal thesis before committing capital
  • Product leaders pressure-testing a strategic bet before resource allocation
  • Consultants backing a recommendation with independent expert evidence

The pattern

  1. Write your thesis as plain text
  2. Embed it via POST /v1/embed
  3. Search for semantically related verified claims
  4. Compute similarity to find support and contradiction
  5. Synthesize into a structured validation brief via LLM

Step 1: Gather evidence

import numpy as np
from gildea_sdk import Gildea

client = Gildea()

# 1. Your thesis
thesis = "Anthropic's moat is research depth, not distribution."

# 2. Embed it
thesis_vec = np.array(client.embed(thesis)["embedding"])

# 3. Search for related verified claims
results = client.search(thesis, limit=10)

# 4. Score each result against your thesis
print(f"Thesis: {thesis}\n")
for hit in results["data"]:
    claim_text = hit["unit"]["text"]
    # If the search result has an embedding, use it for similarity
    # Otherwise use the embed endpoint
    claim_vec = np.array(client.embed(claim_text)["embedding"])
    sim = float(np.dot(thesis_vec, claim_vec))
    
    label = "SUPPORTS" if sim > 0.75 else "RELATED" if sim > 0.6 else "TANGENTIAL"
    print(f"[{sim:.3f}] [{label}] {claim_text}")
    print(f"  Source: {hit['citation']['signal_title']} ({hit['citation']['registrable_domain']})")
    print()

Scoping to specific entities or themes

# Only check against reasoning about a specific company
results = client.search(thesis, entity="org:/anthropic", limit=10)

# Only check against a specific market dynamic
results = client.search(thesis, theme="Competitive Dynamics", limit=10)

Step 2: Classify support vs. contradiction

High semantic similarity means the claim is about the same topic — not necessarily that it agrees. To find contradictions, look for high-similarity claims that make opposing assertions:
# Search broadly, then let an LLM classify support vs. contradiction
related_claims = []
results = client.search("Anthropic competitive moat defensibility", limit=15)

for hit in results["data"]:
    claim_vec = np.array(client.embed(hit["unit"]["text"])["embedding"])
    sim = float(np.dot(thesis_vec, claim_vec))
    if sim > 0.5:
        related_claims.append({
            "text": hit["unit"]["text"],
            "source": hit["citation"]["signal_title"],
            "domain": hit["citation"]["registrable_domain"],
            "similarity": sim,
        })

Step 3: Synthesize into a validation brief

Pass the gathered evidence to an LLM with a structured synthesis prompt. This produces the actual deliverable — not just data, but a decision-ready assessment.
import json

# Build the LLM prompt
evidence_block = json.dumps(related_claims, indent=2)

SYSTEM_PROMPT = """You are a senior analyst producing a thesis validation brief.
You will receive a hypothesis and a set of verified expert claims with source
attribution. Your job is to assess whether the evidence supports, contradicts,
or is insufficient to evaluate the thesis.

Rules:
- Only cite claims actually provided. Never fabricate sources.
- Distinguish between SUPPORTING evidence (directionally agrees with the thesis),
  CONTRADICTING evidence (directionally disagrees), and CONTEXTUAL evidence
  (relevant but neither supports nor contradicts).
- Be direct about the strength of evidence. "3 sources agree" is stronger than
  "1 source agrees." Say so.
- End with a clear VERDICT: Supported, Challenged, Mixed, or Insufficient Evidence.
- Keep the brief under 400 words.

Output format (markdown):

## Thesis Validation Brief

**Thesis:** <the hypothesis being tested>

**Verdict:** <Supported | Challenged | Mixed | Insufficient Evidence>

**Confidence:** <High | Medium | Low> (based on volume and diversity of evidence)

### Supporting Evidence
<bulleted list of claims with source attribution, or "None found">

### Contradicting Evidence
<bulleted list of claims with source attribution, or "None found">

### Contextual Evidence
<bulleted list of relevant-but-neutral claims, or "None found">

### Assessment
<2-3 sentence synthesis: what does this mean for the decision at hand?>

### Recommended Next Steps
<1-2 specific actions based on the evidence gaps>
"""

USER_PROMPT = f"""Thesis to validate:
"{thesis}"

Verified expert claims (from Gildea intelligence database):
{evidence_block}
"""

# Pass SYSTEM_PROMPT and USER_PROMPT to your LLM of choice.
# Example with Anthropic SDK:
#
# import anthropic
# llm = anthropic.Anthropic()
# response = llm.messages.create(
#     model="claude-sonnet-4-20250514",
#     max_tokens=1024,
#     system=SYSTEM_PROMPT,
#     messages=[{"role": "user", "content": USER_PROMPT}],
# )
# brief = response.content[0].text

# Or print the prompts to use in any LLM interface:
print("=== SYSTEM PROMPT ===")
print(SYSTEM_PROMPT)
print("=== USER PROMPT ===")
print(USER_PROMPT)

Example output artifact

The LLM produces something like this — ready to paste into a memo or attach to a deal document:
## Thesis Validation Brief

**Thesis:** Anthropic's moat is research depth, not distribution.

**Verdict:** Mixed

**Confidence:** Medium (6 relevant claims from 4 distinct sources)

### Supporting Evidence
- "Anthropic's constitutional AI research represents a differentiated technical
  approach that competitors have not replicated" (The Information, theinformation.com)
- "Research-first culture attracts top ML talent, creating a self-reinforcing
  advantage" (Stratechery, stratechery.com)

### Contradicting Evidence
- "Amazon's $4B investment gives Anthropic distribution through AWS Bedrock that
  rivals OpenAI's Microsoft channel" (Bloomberg, bloomberg.com)
- "Claude's API adoption in enterprise is growing faster than its research
  publications" (Semianalysis, semianalysis.com)

### Assessment
The evidence suggests research depth IS a real advantage, but the thesis
understates Anthropic's emerging distribution moat through Amazon/AWS.
The binary framing ("research, not distribution") is too narrow — both
are building simultaneously.

### Recommended Next Steps
- Pull entity co-occurrence between Anthropic and Amazon to quantify how
  tightly the distribution narrative is growing
- Search for "Anthropic enterprise adoption" claims to size the distribution
  counter-evidence

Interpreting results

SignalWhat it meansAction
Verdict: Supported with 5+ sourcesYour thesis has strong expert backing. Lead with it.Use in the memo. Cite the sources for credibility.
Verdict: MixedThe thesis is partially right. Refine it.Narrow the claim or add caveats before presenting.
Verdict: ChallengedExperts disagree with you. That’s valuable.Investigate the contradictions. Either update your view or build the counter-argument.
Verdict: Insufficient EvidenceExperts aren’t discussing this topic.Your thesis may be novel (good) or irrelevant (bad). Do primary research.
0 claims above 0.5 similarityYour thesis is outside Gildea’s coverageRephrase or search for adjacent topics.

API calls

  • 1 call to embed your thesis
  • 1 call to search
  • N calls to embed individual claims (if not using include=embeddings on signal detail)
  • Total: ~12-15 calls per validation
For fewer API calls, pull signals with include=embeddings and do the similarity math locally without re-embedding each claim.