Skip to content
← Back to work
Case Study / Valuate

Valuate

Explore company valuations from SEC 10-K filings. Review extracted figures and source details, correct flagged values, and compare estimates under different assumptions.

18 sample tickers · 5 model categoriesSEC XBRL + AI fallback42/43 evaluated fields · May 2026Source details + flagged-value corrections
RoleProduct framing, financial requirements, and validation; AI-assisted implementation
Year2026
DomainFinancial analysis
StackNext.js · FastAPI · LangGraph · Claude · SEC EDGAR
ScopePortfolio prototype

The problem

A valuation can calculate correctly while relying on the wrong input. SEC filers use different XBRL concepts for similar figures, and some required values are available only in filing text. The product needs to expose those extraction choices so a reviewer can examine the inputs before relying on the estimate.

Company selection

Live company selector with filing-qualification disclosure, captured October 27, 2026.

1. Keep partial extraction results

The first extraction stage queries SEC XBRL company facts using a concept map. Berkshire also needs dimensioned facts from the filing itself: a deterministic inline-XBRL reader selects annual equivalent shares for the requested class, insurance premiums, and cash across its two reported business groups. It returns the values it finds and leaves missing fields for Claude to extract from the filing's financial-statements section. Required fields still missing after the fallback and supported calculations produce an explicit error.

This matters because failing on the first missing XBRL field would prevent the fallback from running. In the original ten-company sample, three needed AI extraction or a calculated fallback. Those figures describe the ten-company sample only.

2. Qualify the inputs before publishing a valuation

A sequence of fresh-ticker checks exposed a common weakness: matching a real filing number did not establish that it belonged in the model. Debt totals could include current maturities or use face value, while a D&A field could cover depreciation alone. A high extraction score and a balanced balance sheet did not catch these scope errors.

Extraction now produces a candidate. Public valuation requires matching source evidence for every input that drives the model, including historical ratios. Existing reviewed filing contracts retain precedence; other filings can qualify through reusable statement rules without adding the company to an allowlist. The report records dates, units, source accession, accounting scope, basis and calculation operands. Missing or ambiguous coverage produces a review-required state. Financials remain available to inspect while estimates, assumption controls and simulations are withheld. Both the API and the workspace enforce that boundary; supplying assumptions directly cannot bypass it.

The generic mappings no longer treat total and noncurrent debt, depreciation and full D&A, or differently scoped cash and lease balances as interchangeable. Existing company-specific calculations remain explicit: MSFT sums its separate depreciation and intangible-amortization disclosures; INTU includes its full cash-flow amortization adjustment; GOOGL retains a PPE-depreciation proxy and withholds DCF-implied EV/EBITDA. Berkshire's class-specific equivalent shares and IBM's labeled EBIT proxy retain their separate filing checks and limitations.

The first qualification pass withheld ADBE, CRM, EOG, PEP and TXN until their debt and cash-flow scopes were established. Their filing contracts now distinguish current and noncurrent carrying debt, including filed current borrowings and finance leases where applicable. Adobe retains its cash-flow depreciation, amortization and accretion as an explicitly labeled combined proxy, with DCF-implied EV/EBITDA unavailable. PepsiCo retains the cash-flow D&A totals rather than substituting an older note subtotal. TXN adds software amortization and the separately filed acquisition amortization in its older history: FY2025 becomes $1.999B, while its capex assumption remains unchanged. Missing or conflicting components still prevent qualification. Source-backed repairs preserve the saved reviews and require the complete existing annual history before publishing.

SBUX exposed a related history problem: rejecting a broad cash tag removed otherwise usable years. The balance-sheet rows establish cash and cash equivalents; a cash-flow row with the same tag would not be enough. Statement-role checks now cross-check the filed row, annual context and tagged amount, distinguish $1.7715B cash-flow D&A from the $1.6847B operating-expense line, and require current and noncurrent notes to reconcile to $16.0748B. Historical current debt also includes separate short-term borrowings: $175M of commercial paper in FY2022 and $33.5M from Japanese facilities in FY2023. Reconciling the notes alone would miss both. Latest-period zero borrowings require explicit dated filing disclosures. Its reviewed five-year window is restored rather than shortened around missing inputs. GAAP operating income retains restructuring and impairment costs; the model does not normalize them.

Oracle and Amazon extend that review to lease and financing scope. Oracle adds its two cash-flow D&A components and selects the consolidated custom pre-tax total. Its notes/borrowings already include commercial paper; separately recognized finance leases are added once. Amazon reconciles face notes to carrying notes before splitting current/noncurrent debt, then includes separate short-term borrowings, finance leases and recognized financing obligations. Its rounded $7.8B noncurrent financing obligation retains that precision in the source evidence. Operating leases remain separate in both net-debt bridges. Exact statement rows, approved dimensions and pinned annual accessions are required; neither onboarding path calls AI.

Amazon's add-back includes capitalized content, operating-lease assets and other adjustments, so the workspace labels it as a combined proxy and withholds DCF-implied EV/EBITDA. Neither company's cash-flow aggregate is presented as an income-expense line. Both retain five years of model-driving inputs; older debt cells stay unknown when components are incomplete. These are historical-input models using gross cash PP&E capex, with noncash additions and future commitments not separately projected. Oracle's starting result is a negative equity residual after debt, labeled as an unfloored model residual rather than a negative stock-price estimate; DCF-implied trading multiples are withheld. Qualification does not promise a positive or predictive result.

Repeated ticker-specific fixes also exposed the cost of an allowlist: a usable filing could remain blocked until someone wrote a policy for it. The broader source-only path now reads each filing’s primary-statement presentation and calculation relationships, annual entity contexts and units. It cross-checks standard undimensioned values against SEC company facts, discovers older annuals through bounded archive lookup, resolves compatible rounded repetitions, and requires complete nonoverlapping D&A and carrying-debt coverage. Explicit business-group amounts can be summed only when their consolidated rollup reconciles. Missing or conflicting scope still withholds the valuation; AI is not used to fill those gaps.

Independent qualification reconstructs those source inputs before publication. The workspace identifies automatic statement checks separately from manual review, carries combined add-back labels into assumptions and projections, and withholds model-implied EV/EBITDA for combined historical coverage. Existing reviewed contracts and saved corrections retain precedence. Broader ticker entry is restored for filings that satisfy the rules; amendments, missing history, unsupported model choices and unresolved accounting scope can still require review.

NVDA and BAC exposed two more scope distinctions. NVDA’s accumulated-amortization tag describes a historical asset adjustment, not a lease liability. Its $0.999B current and $7.469B noncurrent carrying notes must reconcile to $8.468B in the debt note and to the balance sheet before that asset-only signal can stop blocking extraction. No lease liability is inferred as zero; an actual liability or new lease-activity signal still requires complete coverage.

BAC reports cash dividends paid per common share directly: $1.08 for FY2025, with the preceding four annual values retained. The DDM now accepts that source-backed per-share input without fabricating an aggregate cash outflow or substituting declared/all-shareholder dividends. The workspace identifies this as a supplemental dividend-note input, separate from the cash-flow statement. Existing verified aggregate-payment models retain their prior values. Missing or conflicting evidence still blocks qualification, and same-filing publication preserves saved corrections and full notes.

Individually sourced annual share counts can still mix pre-split and post-split bases. Reusable extraction now reconciles overlapping annual share contexts and requires an explicit, dated SEC split ratio before converting older values. NVDA's FY2023 and FY2022 counts become 25.070B and 25.350B on the same ten-for-one adjusted basis as its newer history. The row and calculated source details identify the basis, original values and conversion evidence. The latest denominator and valuation are unchanged. The rule also covers future reusable-rule tickers; missing or conflicting bridges require review, and a large year-to-year change alone never establishes a split. Unsupported cumulative conversions remain unresolved rather than guessed.

Source labels still identify SEC XBRL, AI extraction, calculation or user correction. On small screens, statement-cell source details open in a viewport-sized panel, keeping long filing concepts and saved review notes readable without widening the table cell. Extraction scores remain heuristics, separate from input qualification. A reviewer can replace a flagged amount and retain a supporting note, but a correction or a cleared flag does not grant publication approval. A changed record or financial-pipeline policy requires fresh checks.

PostgreSQL retains the active record, immutable earlier revisions, staged candidates and source snapshots. Cold extraction cannot replace a saved review or published record. Same-filing publication preserves reviewer corrections; a new filing keeps old reviews in their original revision rather than silently carrying them forward. The shared prototype credential does not identify individual reviewers.

3. Make the model choice explicit

The filer's industry classification selects one of five simplified approaches:

Five valuation models
CategoryModel
Industrials and technologyFive-year free-cash-flow DCF with terminal growth
BanksDividend discount model
InsurersJustified price-to-book
REITsGordon growth using approximate FFO
EnergyTen-year free-cash-flow projection without terminal value

The REIT model approximates FFO as net income plus D&A. Its supplementary AFFO estimate subtracts positive reported capital expenditures, or uses 80% of approximate FFO when those expenditures are unavailable. Both calculations are labeled as estimates in the workspace.

Berkshire's Class A and B workspaces use the simplified justified-price-to-book formula with consolidated GAAP earnings and Berkshire shareholders' equity. This is not a sum-of-the-parts valuation. Investment gains can distort ROE, and per-share amounts use reported annual average equivalent shares rather than year-end shares. The workspace names the share basis and labels investment and policy-liability components according to their source concepts. Its cash calculation retains Treasury bills already classified as cash equivalents and excludes separately reported short-term investments. This targeted filing regression is separate from the historical extraction baseline below.

Qualified workspaces pair the estimate with its assumptions. Slider ranges include starting values above their usual ranges; TXN's qualified filing retains its full-precision capex starting value and restore behavior after the debt and add-back repairs. A restore action returns all assumptions to the full-precision values loaded when the workspace opened, so reviewers can return to the starting scenario after making changes.

Cash-flow controls distinguish model assumptions from filed ratios. Standard DCF averages eligible tax/pre-tax ratios after limiting each to 0–50%, then limits the average to 15–30%; missing tax data uses 21%. IBM's 15% starting tax assumption therefore differs from its filed FY2025 effective rate of −2.3%. Energy omits the additional 15–30% normalization. Working capital starts at a fixed 5% of the change in revenue, rather than a ratio inferred from the company's balances. Capex and cash-flow add-back ratios average available annual inputs, with disclosed fallbacks. Read-only tax context for banks, insurers and REITs is labeled separately and does not drive those models. These disclosures explain the existing calculations without changing model values or saved reviews.

Monte Carlo output shows the distribution produced by sampled inputs; its middle 80% is a simulation range, not a calibrated forecast of the stock price. Standard and energy models also show a sensitivity grid.

The peer table provides Yahoo Finance market context separately from the selected model. Its median uses only positive values from returned peers, excluding missing, zero and negative multiples, along with the target and DCF-implied rows. Each metric shows how many peers contributed. Individual negative values remain visible. Market data is requested when the workspace loads, but the panel does not expose provider as-of timestamps, so a new request does not establish that every input is current.

Evaluation and limits

The backend's recorded extraction baseline was last refreshed on May 30, 2026. Values were compared with pinned reference figures using a ±0.5% tolerance.

Recorded extraction baseline · May 30, 2026
Extraction pathFields within toleranceSample
SEC XBRL39 of 3911 filers
Claude fallback3 of 43 filers
Combined42 of 4311 filers across five categories

The Claude miss was an omitted pre-tax-income value. The small AI sample is a material limitation; the combined result should not be interpreted as general AI extraction accuracy. This is a historical baseline, not a new evaluation run.

The reusable-rule cold set starts without saved Company records, per-issuer policies or AI responses. META, NVDA, COST, WMT, CAT, BAC and O qualify; MET is withheld for unresolved source/model coverage. MET: Historical parent/consolidated equity coverage is unresolved. These are selected-source regressions, not a market-wide coverage rate or extraction-accuracy score. Complete-source checks are separate from the historical May extraction baseline.

Publication checks the meaning and basis of model inputs, not just whether a number occurs in a filing. Carrying debt must have complete nonoverlapping components; cash and cash-flow add-backs retain their source scope. Historical shares and direct paid-common dividends per share require consistent split bases and independent same-period bridges before conversion. Model-driving history cannot silently change units, annual dates, parent/consolidated coverage or pure/combined add-back scope. Same-concept comparative revisions retain the newer inspected figures and are disclosed; they never authorize rescaling a different year. Older periods may not all be restated on a uniform accounting basis. Missing or ambiguous coverage requires review, and saved corrections do not bypass qualification.

A weekday SEC-only cold canary checks current filings without saved records, AI calls or publication writes. Its report distinguishes qualified, review-required and source-failed results; a failure requires maintainer review. Browser regressions exercise qualification withholding, exact assumption restoration, source-note readability, per-share units and proxy/residual labels against recorded responses with all external APIs blocked. These checks catch defined failure classes; they do not establish model suitability, investment accuracy or universal ticker coverage.

CI includes 19 cold graph replays using selected SEC facts, inline-XBRL fixtures and recorded AI backfill responses where needed. These run without saved records; all 19 reviewed ticker/share-class cases, covering 18 annual filings, qualify. ORCL and AMZN are source-only cases with tests that prohibit AI fallback. Separate missing, conflicting or incorrectly scoped evidence tests assert withholding. They exercise normalization and publication gating, not fresh AI accuracy. The original live cold run covered all 18 sample tickers, nine additional regression tickers and two held-out filings, staging results without replacing active data. SBUX and ORCL are now reviewed regression cases; the current 30-ticker runner uses eleven regression tickers and MCD as the held-out case. These changes were verified with SEC-only checks, offline cold replay and live valuation requests; they do not claim a new paid AI run of that cohort. The report distinguishes qualification, withholding and composition failure. PostgreSQL tests cover saved reviews and revisions across application restarts and reject stale writes.

Qualification remains bounded by established source scope and the supported simplified models. It does not certify every displayed figure or establish investment accuracy. New filings need fresh source checks and qualification; a weekday metadata check flags annual filings that supersede existing policies without publishing them automatically. Older periods can have incomplete non-model fields. The energy model retains a fixed ten-year horizon. Broader independent evaluation, reviewer identity and model suitability still limit use as a research workflow.

Implementation note: storage

Production requires PostgreSQL. Active records, immutable prior revisions, cold candidates and raw filing evidence are stored separately. The application refuses deployed startup without persistent storage. Local development may use an ephemeral cache; the shared demo credential does not provide individual reviewer identity.