All Posts
TutorialAI Economic Model APIAI Hallucination VerificationSEC Filing Citations

AI Economic Model API: Verified Business Thesis

Every claim in StockFit's AI economic model API cites a verbatim SEC filing quote, checked before it ships. See it verified live on Amazon's 10-K.

Published August 26, 202611 min readStockFit Engineering
AI Economic Model API: Verified Business Thesis

StockFit's economic model API turns a company's own 10-K and 10-Q into a structured business thesis: offerings, unit economics, flywheels, operating levers, and failure modes, each one tagged with a filing section and a verbatim quote. The part worth trusting is not that an AI read the filing, every AI vendor claims that, it is that a quote which cannot be found word for word in the cited document never reaches the response. This post shows the mechanism, then runs it live on Amazon.

That distinction matters because generic AI models are demonstrably bad at this exact task. FinanceBench, a 2023 benchmark built by researchers from Patronus AI, Contextual AI, and Stanford, found that GPT-4-Turbo paired with a retrieval system incorrectly answered or refused to answer 81% of questions asked against real SEC filings, and that every model tested showed hallucinations severe enough to limit enterprise use. An economic model built the same way would be a liability, not a research tool. /api/company/economic-model is built to fail closed instead: drop the claim rather than keep an unverifiable one.

Filings read
10-K + 10-Q
plus DEF 14A when governance is in scope
Citation check
verbatim match
quote must exist word for word in the fetched filing
AMZN confidence
high
provenance.confidence, this response
Segments reconciled
7 / 7
vs. revenue-segmentation, dollar for dollar

Why AI summaries of SEC filings get hallucinated

Ask a general-purpose model to summarize a 10-K and it will produce something fluent almost every time, which is exactly the problem. Fluency is not the same as fidelity to the source document. A model under no obligation to prove a claim will round a number, merge two fiscal years, or state a competitive advantage that sounds right but is not written anywhere in the filing. Nothing in a plain chat response stops that from happening, and nothing in it helps a reader catch it after the fact either.

The research backs this up: FinanceBench's 10,231 questions against real 10-Ks, 10-Qs, and earnings materials found that even with a retrieval system in place, a frontier model still missed or refused the majority of questions, and every model examined exhibited hallucinations. Long-context setups (feeding nearly the entire filing) did better, but at latency and token cost the paper itself called impractical for production use. Either way, the failure mode is the same: an answer that reads as confident and is not grounded in the text.

StockFit's economic model does not try to make the AI hallucinate less by asking nicely. It changes what happens after generation: every claim has to carry a citation, and every citation gets checked against the actual document before storage. A claim that fails the check does not get softened or flagged, it gets dropped.

How the economic model verifies every citation

Every section of the response (offerings, cost structure, flywheels, failure modes, operating levers) carries its own sources array, and every entry in it has the same four fields:

json
{
  "url": "https://www.sec.gov/Archives/edgar/data/1018724/000101872426000004/amzn-20251231.htm",
  "source": "10-K",
  "section": "Item 7 MD&A, Net Sales (AWS)",
  "quote": "AWS sales increased 20% in 2025, compared to the prior year."
}

The pipeline fetches the exact URL in that citation, strips it down to plain text, normalizes punctuation (curly quotes and em dashes collapse to their plain equivalents so formatting differences do not cause false negatives), and checks whether the quote appears in that text as a literal substring. It also enforces a length band, roughly 20 to 400 characters, so a citation cannot be a single word too generic to mean anything, or a whole paragraph vague enough to always match. Anything that fails (a quote that is not found, a URL outside the filing set the job fetched, a section left blank) gets surgically removed: that one source is dropped, and if an item is left with no valid source at all, the item itself is dropped rather than shipped uncited.

None of this guarantees the AI's interpretation is the best possible reading of the filing. What it guarantees is narrower and more useful: if the response says a sentence is in the 10-K, that sentence is in the 10-K, in that section, verbatim. You do not have to take StockFit's word for it either, the next section shows how to check one yourself in under a minute.

What the economic model API returns

One call to /api/company/economic-model returns the whole structure: primary and secondary offerings, monetization and pricing mechanisms, cost structure and margin drivers, reinvestment and capital allocation, cash conversion, top-line and margin sensitivities, operating levers mapped to the metrics they move, structural advantages (moats, in plainer language), flywheels, failure modes, unit economics, and management style, every section sourced. A trimmed real response for Apple looks like this:

json
GET /api/company/economic-model?symbol=AAPL

{
  "structuralAdvantages": [
    {
      "advantage": "Integrated hardware + operating systems + services experience",
      "type": "switching-cost",
      "persistence": "strong",
      "sources": [{
        "source": "10-K",
        "section": "Item 1, Business (Competition)",
        "quote": "The Company designs and develops nearly the entire solution for its products, including the hardware, operating system, numerous software applications and related services."
      }]
    }
  ],
  "provenance": { "confidence": "medium" }
}

That last field is worth pausing on. Confidence is not a fixed badge, it moves with how much the filing actually discloses. Apple's response above came back medium; Amazon's, captured the same day and walked through in the next section, came back high. Neither number describes how good the underlying business is, only how much verified evidence the model had to work with.

A worked example: Amazon's flywheels and failure modes

Amazon is a useful test case precisely because its business model already has a famous shorthand, the flywheel sketch Jeff Bezos is said to have drawn on a napkin: growth funds a lower cost structure, which funds lower prices, which improves the customer experience, which drives traffic and sellers, which grows selection, which improves the experience again. StockFit's model was not shown that sketch. It read the text of Amazon's FY2025 10-K and independently split the same idea into two distinct, separately-sourced loops.

The first compounds margin:

  1. 1Higher sales volume
  2. 2Lower variable cost per unit and leveraged fixed costs
  3. 3Ability to lower prices and improve offers (e.g., shipping)
  4. 4Better customer value proposition
  5. back to step 1

Cost per unit and price flywheel·compounds margin

The second compounds growth, cited to a different section of the same filing:

json
{
  "name": "Marketplace selection flywheel",
  "loop": [
    "More third-party sellers",
    "Broader selection and availability",
    "Better customer experience (price/selection/convenience)",
    "Higher unit sales and traffic",
    "More sellers join and use seller programs"
  ],
  "impact": "growth"
}

The same response lists four failure modes, each with a mechanism and the metrics to watch, not just a risk label copied from the filing's Item 1A headings:

Fulfillment network and data center capacity mis-optimization

Inability to predict demand or operate networks effectively can cause service interruptions, increased costs, and impairment charges.

watchfulfillment expensetechnology and infrastructure expenseimpairment charges

result in excess or insufficient fulfillment or data center capacity, service interruptions, increased costs, and impairment charges

10-K · Item 1A, Risk Factors (Fulfillment/data centers)

Data loss or other security incidents

Security incidents involving large amounts of confidential/personal data could lead to liability, regulatory action, and customer/seller churn.

watchsecurity incident frequency/severityregulatory actionscustomer/seller retention

failure to prevent, detect, or mitigate data loss, theft, misuse, unauthorized access, or other security incidents

10-K · Item 1A, Risk Factors

Inventory risk under demand variability

Demand shifts and lead times can cause markdowns/write-offs or lost sales; commitment costs possible for non-cancellable components.

watchinventories balanceinventory valuation allowancecost of sales impacts

When we overstock products, we may be required to take significant inventory markdowns or write-offs

10-K · Item 1A, Risk Factors

The model also cites Amazon's segment revenue directly from Note 10 of the same 10-K. Because segment figures are exact numbers rather than qualitative claims, they make a clean integrity check: every one of the seven segments below, independently pulled from /api/footnotes/revenue-segmentation, matches the model's citation to the dollar.

SegmentFY2023FY2024FY2025
Online stores$231.9B$247.0B$269.3B
Third-party seller services$140.1B$156.1B$172.2B
AWS$90.8B$107.6B$128.7B
Advertising services$46.9B$56.2B$68.6B
Subscription services$40.2B$44.4B$49.6B
Physical stores$20.0B$21.2B$22.6B
Other$5.0B$5.4B$5.9B

AWS is the one line the model also glossed narratively ("AWS sales increased 20% in 2025") rather than just tabulating: $107.6B to $128.7B is a 19.7% increase, close enough to round to the "20%" the filing itself states in its MD&A.

The most current claim in the whole response is a strategic initiative sourced not to the 10-K but to Amazon's Q1 FY2026 10-Q, filed months after the annual report: "In Q1 2026, we invested $15.0 billion in Series C Preferred Stock of OpenAI", cited to Note 2, Non-Marketable Investments (OpenAI). That sentence is real, it is sitting in Amazon's own quarterly filing right now, and the next section walks through confirming that yourself.

How to check a citation yourself

Every claim in this post that came from the economic model is checkable the same way, and it takes under a minute:

  1. Open the cited filing. For the OpenAI investment above, that is Amazon's Q1 FY2026 10-Q on SEC EDGAR.
  2. Use your browser's find-in-page (Ctrl+F or Cmd+F).
  3. Paste a distinctive fragment of the quote, for example Series C Preferred Stock of OpenAI.
  4. Confirm it lands in the section the citation names, here Note 2, Non-Marketable Investments.

That is the same check verifyQuoteInDocument runs automatically before a citation is ever allowed into a stored response, just done by hand. It is worth noting what this check does and does not cover: it confirms the words exist in that filing section. It does not grade whether pulling that particular sentence was the single best possible summary of Amazon's AI strategy, that judgment call is still an AI decision. The number and location of the quote are verified mechanically; the framing around it is not, which is exactly why every claim ships with its receipt attached instead of asking you to trust it blind.

The dollar figures in the segment table above go through a different, older pipeline: they are tagged directly on Amazon's XBRL segment axis and parsed with Arelle, the open-source XBRL processor, the same extraction behind the Revenue Segmentation API. Structured numbers get verified by exact XBRL tag; qualitative claims like flywheels and failure modes get verified by literal quote match. Two different problems, two different checks, both leaving a citation you can click.

Getting started with the economic model API

The call itself takes one required parameter:

bash
curl "https://api.stockfit.io/v1/api/company/economic-model?symbol=AMZN" \
  -H "Authorization: Bearer YOUR_API_KEY"

Two response shapes are possible. If the model already exists for that company, you get a 200 with the full structure back immediately, as in every example on this page. If nobody has requested that company before, you get a 202 with a status: "generating" body: a background job fetches the company's latest 10-K, 10-Q, and DEF 14A, builds the model, verifies every citation, and stores the result, typically within a few minutes. Poll the same URL every 30 seconds or so until it flips to 200.

/api/company/economic-model and its section-level siblings (/api/company/flywheels, /api/company/failure-modes) require the Stock or Professional plan. The free-tier /api/company/details endpoint is the on-ramp: pull a company's profile there while evaluating, then and every account also carries a one-time allowance of 50 requests against endpoints outside its plan, enough to pull a handful of full economic models before deciding whether to upgrade.

For the fund-side counterpart to this pipeline, the same verified-citation approach applied to ETF strategy instead of company strategy, see the exposure model walkthrough, or for how this fits alongside StockFit's other extracted signals, see the alternative data overview.

FAQ

Q.What is an AI economic model and how is it different from an AI summary of a 10-K?
A summary is prose you have to trust. StockFit's economic model is typed JSON: offerings, cost structure, flywheels, operating levers, structural advantages, and failure modes, each field structured so code can walk it, and each claim carrying the exact filing section and verbatim quote it came from rather than an unsourced paragraph.
Q.How does the economic model API verify that a citation isn't hallucinated?
The generation pipeline fetches the URL named in each citation, strips it to plain text, normalizes punctuation, and checks whether the quoted text appears as a literal substring in that document. Citations also have to fall in a 20 to 400 character band and cannot be reused past a small cap. Anything that fails is removed before the response is ever stored.
Q.What happens when the AI can't find a real quote to support a claim?
The claim is dropped, not kept with a weakened or approximate citation. If an entire item ends up with no valid source left, the item itself is dropped. The pipeline also retries generation with feedback about what failed before falling back to a smaller, fully-verified response, so what ships is verified rather than complete for its own sake.
Q.Does StockFit's AI economic model ever get things wrong?
The verification step guarantees a cited quote is real and sits in the section named, it does not guarantee the AI picked the single best possible reading of a company's strategy. Treat flywheels, failure modes, and operating levers as a structured, sourced starting point for research, with every claim checkable in under a minute, not as a final verdict that replaces reading the filing yourself.
Q.Which SEC filings does the economic model read?
10-K and 10-Q filings for the financial and strategic detail, plus DEF 14A proxy statements when governance-relevant claims are in scope. No earnings-call transcripts, press releases, or analyst notes feed the model, only filings with a legal filing date on SEC EDGAR.
Q.Which StockFit plan includes the economic model API?
/api/company/economic-model requires the Stock plan ($59/mo, $39/mo billed annually) or the Professional plan ($99/mo, $69/mo billed annually). Every account, including Free, also gets a one-time allowance of 50 requests against endpoints outside its plan, enough to pull several full economic models before upgrading.
Q.Can an AI agent or MCP client consume the economic model directly?
Yes. The response is typed JSON rather than prose, so an agent can walk flywheels, levers, and failure modes as structured data and cite a specific filing section instead of asserting a claim. StockFit speaks the Model Context Protocol, so Claude, Cursor, and VS Code can call the same endpoint as a tool using the same API key.

Ready to build?

Free API key, no credit card.