Skip to main content
Use semantic search when a literal phrase is too narrow for a disclosure question, such as supply-chain exposure across a company’s 10-Ks. Search rank is a navigation aid, not a finding of materiality, completeness, or legal risk. The completed workflow creates a cited research queue, then asks a reviewer to read the source section in context.

Prerequisites

  • SECAPI_API_KEY, curl, and jq, or Node.js 18+.
  • A question with a company and filing scope. This example examines NVIDIA 10-K risk language.
The expected result is a ranked sections.data list with citation-preserving fields such as accession, source URL, section key, character offsets, and highlighted snippet. Open the cited filing before quoting or scoring it.

2. Compare the same question across annual filings

Create compare-risk-factors.mjs to keep filters and evidence consistent.
Run node compare-risk-factors.mjs. The expected output is a cited research queue for each filing year, including any degraded citation fields, not a change score.

Common errors and false positives

  • q is required; valid modes are keyword, semantic, and hybrid, while limit is 1-100.
  • Empty results may reflect a too-narrow issuer/form/year scope or sparse indexed language, not the absence of a risk.
  • A changed rank, snippet, or wording is a lead. Compare like-for-like reporting periods and read the full cited section.
  • Do not drop accession, URL, section key, offsets, or request ID; without them a reviewer cannot reproduce the result.

Production considerations

Store the query, mode, filters, response timestamp, request metadata, and every citation field. Cache recurring searches, cap the number of results sent to reviewers, and keep model-generated interpretation clearly separate from cited disclosure text.

Next action

Retrieve the cited filing section and build a reviewer decision record that explains whether the disclosure changed in substance.