← diligence

How it works

Diligence is a multi-agent pipeline that turns three primary sources (filings, fundamentals, earnings-call audio) into a materiality-ranked set of disputed facts. Every claim cites a primary-source ID. Every source has a tier band the dashboard renders inline.

Data flow

Pipeline

  1. 1. EDGAR

    Primary filings

    Latest 10-K + 10-Q resolved via SEC's ticker→CIK index. Plain-text extraction via lxml. Filed dates and accession numbers carried through to the dashboard's Audit tab.

  2. 2. Financial Modeling Prep (free tier)

    Fundamentals

    /stable/* endpoints: profile, ratios-TTM, key-metrics-TTM, income statement, balance sheet, cash flow. Last 4 reporting periods.

  3. 3. yt-dlp + autonomous selector

    Earnings-call audio

    Probes up to 16 YouTube candidates across two queries ({ticker} + {issuer name}), scores each on duration / title positives / title negatives / uploader tier / recency-vs-target-date. Picks the highest above MIN_CANDIDATE_SCORE=50 or skips audio gracefully. Every candidate's score breakdown is captured in the manifest.

  4. 4. Speechmatics (batch + diarization)

    Transcript with speaker labels

    json-v2 output: word-level start/end + per-word speaker tag. Diarization quality is audited — coverage <20% or 0 speakers hard-fails the transcript; <80% or single-speaker surfaces a manifest warning the dashboard shows.

Reasoning layer

Five adversarial agents

  • Filing Analyst

    Gemini 2.5 Pro

    Extracts claim_ids F-001+ from 10-K + 10-Q. Structured output via Pydantic schema enforcement on Vertex.

  • Call Analyst

    Gemini 2.5 Pro

    Extracts claim_ids C-001+ from the diarized transcript. Each claim links to a transcript timestamp via the speaker turn.

  • Bull

    Qwen3-32B (Featherless)

    Builds the strongest possible bull case using ONLY claim_ids from Filing + Call. Uncited assertions are surfaced in the audit panel.

  • Bear

    Qwen3-32B (Featherless)

    Same constraint, opposite direction. Bull + Bear run in parallel against the same evidence pool.

  • Reconciler

    Gemini 2.5 Pro

    Diffs bull vs bear, materializes disputed facts ranked 1–10 by materiality, flags uncited claims, captures shared-ground items both sides agree on.

Orchestrated by LangGraph. Filing + Call run in parallel; their output feeds Bull + Bear in parallel; Reconciler waits for both. Each agent short-circuits on a cache file so re-runs cost zero credits when the upstream output is unchanged.

Provenance

Audio-source tiers

  • T1

    Issuer-named

    Uploader/channel name contains a salient token from the issuer's legal name or the ticker symbol. Indicative, not cryptographically verified — the system does not check YouTube's verified-channel checkmark or any identity proof. Strongest available signal in this rubric.

  • T2

    Trusted aggregator

    Bloomberg, Reuters, WSJ, Morningstar, S&P Global. Provenance is one degree removed but the publisher class is audit-grade.

  • T3

    Editorial aggregator

    Yahoo Finance, CNBC, Benzinga, Seeking Alpha, MarketWatch. May include host commentary mixed with raw call audio. Dashboard renders the call audio with a confidence-downgrade banner.

  • T4

    Unverified

    Channel can't be matched to the issuer or to any trusted-aggregator allowlist. Dashboard surfaces a confidence-downgrade banner explicitly stating the call claims are sourced from unverified audio.

What you see

Confidence bands

Every dashboard renders the active tier inline with the transcript player. When the picked audio is T3 or T4, the reconciler appends a confidence_downgrade_reason banner stating that call-derived claims are sourced from an aggregator or unverified channel. When no audio cleared the threshold, the pipeline runs filing-only and the banner explicitly says so.

The Audit tab lists every yt-dlp candidate the selector saw, with the winner highlighted. Open it once if the tier ever surprises you.

Known constraints

Limits + honesty

  • FMP free tier covers ~5 years of historical financials. Long-horizon multi-decade trends are not in scope.
  • yt-dlp is a hackathon-grade audio source. Production would swap to Quartr / Otter / direct IR-page scraping.
  • Some companies don't have an official YouTube channel for earnings calls (e.g. Alphabet uses Google's channel, AMD posts on the IR page). The selector falls back through editorial aggregators or skips audio cleanly with a transparent banner.
  • Research-grade output — Diligence flags disagreements. It does not issue buy / sell / hold recommendations.

Source code: github.com/leonardtudor11/diligence