No matching model definition
Try a record name, code identifier, field, type or relationship.
Assembled corpus
Company-centred research, evidence and outputs
The atomic unit is a company or corporate group. Typed research records sit inside that aggregate; evidence and retained source material are global, reusable objects; Snapshots and Deep Dives select canonical records rather than duplicating facts.
- Companies
- 169
- Research records
- 5,285
- Source documents
- 1,452
- Citations
- 3,099
- Retained forms
- 1,032
- File blobs
- 990
- Snapshot plans
- 169
- Deep Dives
- 11
Company aggregateCompanyResearchRecord
→
Direct facts15 evidence-backed types
→
Evidence linksembedded field support
→
Citationsstored file or URL
→
Documents and filespublication → form → bytes
Derived recordsCalculation / conclusioncalculation → facts; conclusion → facts, calculations or gaps
Research gapsSearchAttemptchecked documents and URLs
Output plansSnapshot / Deep Diverecord selection / exact field selection
Schema authority
src/corpus/schemas/
Cross-record rules
src/corpus/validation/
01
Dataset root
The assembled boundary joins company aggregates, global evidence, retained files and authored output plans.
Company corpus datasetCompanyCorpusDatasetschema 2.3.6
| Field | Type | Required | Meaning | References |
schemaVersion |
literal "2.3.6" |
Yes |
Assembled dataset contract version. |
None |
companyResearchRecords[] |
CompanyResearchRecord[] |
Yes |
Company or corporate-group aggregates. |
None |
sourceDocuments[] |
SourceDocument[] |
Yes |
Logical publications shared across companies. |
None |
sourceFileRepresentations[] |
SourceFileRepresentation[] |
Yes |
Retained and derived file forms. |
None |
researchFileBlobs[] |
ResearchFileBlob[] |
Yes |
Immutable content-addressed bytes. |
None |
sourceCitations[] |
SourceCitation[] |
Yes |
Precise citable locations. |
None |
snapshotEditorialPlans[] |
SnapshotEditorialPlan[] |
Yes |
Zero or one Snapshot selection plan per company; the current corpus has one for every company. |
None |
deepDiveSpecs[] |
DeepDiveSpec[] |
Yes |
Authored Deep Dive publication recipes. |
None |
02
Company aggregate
One active company record owns its identity, scope, corporate structure, factual observations, analysis and open research questions.
Company research recordCompanyResearchRecordschema 2.2.0
| Field | Type | Required | Meaning | References |
schemaVersion |
literal "2.2.0" |
Yes |
Company aggregate contract version. |
None |
companyRecordId |
StableIdentifier |
Yes |
Stable aggregate identifier. |
None |
publicationVisibility |
internal_only | public |
Yes |
Company-level output eligibility. |
None |
companyIdentity |
CompanyIdentity |
Yes |
Canonical company or group identity. |
CompanyIdentity |
companyLookup |
CompanyLookup |
Yes |
Canonical route slug and controlled aliases for route, search, MCP and email matching. |
CompanyLookup |
researchScope |
CompanyResearchScope |
Yes |
Standalone/group subject type and subject legal-entity perimeter. |
CompanyResearchScope |
corporateStructure |
CorporateStructure |
Yes |
Legal entities and ownership relationships, including contextual counterparties. |
CorporateStructure |
businessActivities[] |
BusinessActivity[] |
Yes |
Business-line records. |
BusinessActivity |
operatingAssets[] |
OperatingAsset[] |
Yes |
Named operating assets. |
OperatingAsset |
operationalMetricObservations[] |
OperationalMetricObservation[] |
Yes |
Period-specific operating measures. |
OperationalMetricObservation |
financialMetricObservations[] |
FinancialMetricObservation[] |
Yes |
Period-specific financial measures. |
FinancialMetricObservation |
debtInstruments[] |
DebtInstrument[] |
Yes |
Funded instruments and facilities. |
DebtInstrument |
debtMarketObservations[] |
DebtMarketObservation[] |
Yes |
Dated price, yield, spread and rate observations. |
DebtMarketObservation |
covenantRecords[] |
CovenantRecord[] |
Yes |
Instrument-linked covenant terms. |
CovenantRecord |
guarantees[] |
Guarantee[] |
Yes |
Entity-to-instrument guarantee relationships. |
Guarantee |
securityInterests[] |
SecurityInterest[] |
Yes |
Entity-to-instrument collateral relationships. |
SecurityInterest |
companyEvents[] |
CompanyEvent[] |
Yes |
Dated company developments. |
CompanyEvent |
legalMatters[] |
LegalMatter[] |
Yes |
Legal and regulatory matters. |
LegalMatter |
researchFindings[] |
ResearchFinding[] |
Yes |
Flexible evidence-backed factual findings. |
ResearchFinding |
calculatedFindings[] |
CalculatedFinding[] |
Yes |
Deterministic derived results. |
CalculatedFinding |
analystConclusions[] |
AnalystConclusion[] |
Yes |
Analyst judgements and watchlist rationale. |
AnalystConclusion |
researchGaps[] |
ResearchGap[] |
Yes |
Documented unresolved questions and search attempts. |
ResearchGap |
latestResearchUpdate |
LatestResearchUpdate |
Yes |
Timestamp, actor and summary for the active revision. |
LatestResearchUpdate |
Research scope
standalone_company | corporate_group
Scope IDs point to exact LegalEntity records. Corporate structure may also include contextual owners or counterparties outside that subject perimeter. Borrower IDs may be omitted when unknown; any stated borrower, owner, guarantor, grantor or asset owner must be an exact entity.
Aggregate components
Operational lookup, subject scope, structure containers and revision metadata are explicit nested contracts.
Company lookup
CompanyLookup
companyLookup
exactly 1 per company
Operational routing and matching names, kept separate from evidence-backed factual name variants.
embedded type
exactly 1 per company
#
| Field | Type | Required | Meaning | References |
canonicalCompanySlug |
PublicCompanySlug |
Yes |
Lowercase canonical route slug. |
None |
lookupAliases[] |
CompanyLookupAlias[] |
Yes |
Operational aliases; each stores lookupText, lookupContexts, matchPolicy and an optional configurationNote. |
None |
lookupAliases[].lookupText |
string |
Yes |
Exact alias text used for matching. |
None |
lookupAliases[].lookupContexts[] |
route | search | mcp | email |
Yes |
Surfaces on which an alias is valid. |
None |
lookupAliases[].matchPolicy |
automatic | review_required |
Yes |
Whether a match can resolve without review. |
None |
lookupAliases[].configurationNote |
string |
No |
Reason or limitation for the configured alias. |
None |
Relationships
- Owned by CompanyResearchRecord
- Complements, but does not replace, CompanyIdentity name variants
Key invariants
- Route aliases are valid slugs and automatic.
- Routes and automatic MCP/email aliases are globally unambiguous; search aliases may overlap.
Company research scope
CompanyResearchScope
researchScope
exactly 1 per company
Defines whether the aggregate is a standalone company or group and names the entities inside its subject perimeter.
embedded type
exactly 1 per company
#
| Field | Type | Required | Meaning | References |
subjectType |
standalone_company | corporate_group |
Yes |
Aggregate subject classification. |
None |
primaryLegalEntityResearchRecordId |
StableIdentifier |
No |
Primary legal entity when established. |
LegalEntity |
consolidatedReportingLegalEntityResearchRecordId |
StableIdentifier |
No |
Entity whose accounts define the consolidated reporting perimeter. |
LegalEntity |
inScopeLegalEntityResearchRecordIds[] |
StableIdentifier[] |
Yes |
Legal entities included in the research perimeter. |
LegalEntity |
scopeDescription |
string |
Yes |
Plain-language perimeter description. |
None |
Relationships
- All entity IDs resolve inside corporateStructure.legalEntities
Key invariants
- Every scope reference resolves to a LegalEntity in corporateStructure.
- A declared primary entity is included among the in-scope entities.
Corporate structure
CorporateStructure
corporateStructure
exactly 1 per company
The legal-entity nodes and directed ownership edges used for structure diagrams and entity-level references.
embedded type
exactly 1 per company
#
| Field | Type | Required | Meaning | References |
legalEntities[] |
LegalEntity[] |
Yes |
Named and evidenced legal entities. |
LegalEntity |
ownershipRelationships[] |
OwnershipRelationship[] |
Yes |
Directed ownership edges. |
OwnershipRelationship |
Relationships
- Provides entity endpoints for scope and all entity-specific research records
Key invariants
- Ownership endpoints resolve to legal entities inside the same aggregate.
Latest research update
LatestResearchUpdate
latestResearchUpdate
exactly 1 per company revision
A compact marker for when, by whom and why the active company revision changed.
embedded type
exactly 1 per company revision
#
| Field | Type | Required | Meaning | References |
updatedAt |
ISO 8601 timestamp |
Yes |
Time of the update. |
None |
updatedBy |
string |
Yes |
Researcher, agent or process responsible. |
None |
updateSummary |
string |
Yes |
Concise description of the revision. |
None |
Relationships
- Stored on CompanyResearchRecord; revision history remains in immutable company folders
Key invariants
- Timestamp includes a timezone.
02.1
Identity and scope
Names the company aggregate and identifies its subject perimeter; corporate structure may also include contextual counterparties.
Company identity
company_identity
companyIdentity
169 records
Canonical group identity, name variants and official websites.
direct evidence
exactly 1
#
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
canonicalCompanyName |
string |
Yes |
Primary display and comparison name. |
None |
companyNameVariants[] |
CompanyNameVariant[] |
Yes |
Trading, former, brand, abbreviated and translated names. |
None |
companyWebsiteUrls[] |
URL[] |
Yes |
Official company or group websites. |
None |
Relationships
- Owned by CompanyResearchRecord
- EvidenceLink references SourceCitation
Key invariants
- Exactly one identity per company aggregate.
- Every identity has at least one supporting citation.
02.2
Corporate structure
Represents named legal entities and evidenced parent-child ownership edges.
Legal entity
legal_entity
corporateStructure.legalEntities[]
403 records
A specific company, fund, partnership, government body or natural person.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
legalName |
string |
Yes |
Canonical registered or otherwise evidenced legal name. |
None |
legalEntityNameVariants[] |
LegalEntityNameVariant[] |
Yes |
Former, trading, abbreviated, translated or source-reported names. |
None |
legalEntityIdentifiers[] |
LegalEntityIdentifier[] |
Yes |
Register numbers, LEIs, tax identifiers or other identifiers. |
LegalEntityIdentifier |
entityType |
company | partnership | fund | government_body | natural_person | other |
Yes |
Legal-entity classification. |
None |
jurisdictionCode |
string |
No |
Jurisdiction of organization. |
None |
legalEntityStatus |
active | inactive | dissolved | unknown |
Yes |
Current legal status. |
None |
Relationships
- Referenced by scope, ownership, debt, guarantees, security, events and metrics
Key invariants
- Names and identifiers are unique within an entity.
- Register and tax identifiers require a jurisdiction.
Ownership relationship
ownership_relationship
corporateStructure.ownershipRelationships[]
127 records
A directed, time-aware ownership edge between two exact legal entities.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
ownerLegalEntityResearchRecordId |
StableIdentifier |
Yes |
Parent or owner endpoint. |
LegalEntity |
ownedLegalEntityResearchRecordId |
StableIdentifier |
Yes |
Child or owned endpoint. |
LegalEntity |
ownershipPercentage |
number 0..100 |
No |
Reported ownership percentage. |
None |
relationshipDescription |
string |
No |
Qualifying ownership detail. |
None |
effectivePeriod |
DateRangeWithPrecision |
No |
Period for which the edge applies. |
None |
Relationships
- Owner and owned endpoints both resolve to LegalEntity records in the same company aggregate
Key invariants
- Both endpoints resolve to LegalEntity records in the same company aggregate.
- Any ownership percentage is constrained to 0 through 100.
02.3
Business and operations
Describes what the group does, the assets it owns and observed operating measures.
Business activity
business_activity
businessActivities[]
264 records
A current, historical, planned or discontinued business line.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
activityName |
string |
Yes |
Concise business-line name. |
None |
activityDescription |
string |
Yes |
Factual operating description. |
None |
subjectLegalEntityResearchRecordIds[] |
StableIdentifier[] |
Yes |
Exact entities when known; empty for group-level facts. |
LegalEntity |
geographyNames[] |
string[] |
Yes |
Relevant operating geographies. |
None |
activityStatus |
current | historical | planned | discontinued |
Yes |
Lifecycle status. |
None |
Relationships
- May reference one or more LegalEntity subjects
Key invariants
- Unnamed subsidiaries are not invented to populate subject entities.
Operating asset
operating_asset
operatingAssets[]
2 records
A named plant, project, property or other operating asset with evidenced title.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
assetName |
string |
Yes |
Evidenced asset name. |
None |
assetType |
string |
Yes |
Asset category. |
None |
assetDescription |
string |
No |
Additional factual description. |
None |
ownerLegalEntityResearchRecordIds[] |
StableIdentifier[1..n] |
Yes |
Exact legal owners. |
LegalEntity |
locationDescription |
string |
No |
Asset location. |
None |
assetStatus |
operating | under_construction | planned | idle | closed | unknown |
Yes |
Asset lifecycle status. |
None |
Relationships
- Every owner resolves to a LegalEntity in the same aggregate
Key invariants
- Group-level operate or own wording cannot establish exact asset title.
Operational metric observation
operational_metric_observation
operationalMetricObservations[]
358 records
A dated capacity, volume, employee, site or other operating measure.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
metricName |
string |
Yes |
Name of the observed measure. |
None |
metricValue |
MeasuredValue |
Yes |
Numeric value, unit, optional currency and qualifier. |
None |
subjectLegalEntityResearchRecordIds[] |
StableIdentifier[] |
Yes |
Exact subjects when known. |
LegalEntity |
applicablePeriod |
DateRangeWithPrecision |
Yes |
Period to which the value applies. |
None |
metricDefinition |
string |
No |
Source-specific definition or perimeter. |
None |
Relationships
- May reference LegalEntity subjects
Key invariants
- The observation period is explicit; current and historical values remain separate records.
02.4
Financials and debt
Separates reported financial observations, funded instruments, market marks and credit protections.
Financial metric observation
financial_metric_observation
financialMetricObservations[]
1,115 records
A period-specific revenue, earnings, cash flow, balance-sheet or leverage measure.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
metricName |
string |
Yes |
Name of the reported measure. |
None |
metricValue |
MeasuredValue |
Yes |
Numeric value, unit, optional currency and qualifier. |
None |
reportingLegalEntityResearchRecordId |
StableIdentifier |
No |
Exact reporting entity when identified. |
LegalEntity |
applicablePeriod |
DateRangeWithPrecision |
Yes |
Reporting period. |
None |
accountingBasis |
string |
No |
GAAP, IFRS, adjusted or source-reported basis. |
None |
metricDefinition |
string |
No |
Perimeter or source-specific definition. |
None |
Relationships
- May identify the reporting LegalEntity
Key invariants
- Values with different periods, bases or definitions remain separate observations.
Debt instrument
debt_instrument
debtInstruments[]
397 records
A bond, term loan, revolving facility, asset-backed facility, lease liability or other funded instrument.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
instrumentName |
string |
Yes |
Canonical instrument name. |
None |
instrumentIdentifiers[] |
DebtInstrumentIdentifier[] |
Yes |
LoanX, ISIN, CUSIP, common-code or other identifiers. |
DebtInstrumentIdentifier |
borrowerLegalEntityResearchRecordIds[] |
StableIdentifier[1..n] |
No |
Exact borrowers when evidenced. |
LegalEntity |
instrumentType |
bond | term_loan | revolving_credit_facility | asset_backed_facility | lease_liability | other |
Yes |
Instrument classification. |
None |
currency |
ISO 4217 code |
No |
Instrument currency. |
None |
principalAmount |
MeasuredValue |
No |
Outstanding or stated principal. |
None |
facilityCommitmentAmount |
MeasuredValue |
No |
Committed facility size. |
None |
drawnAmount |
MeasuredValue |
No |
Drawn amount when disclosed. |
None |
maturityDate |
DateWithPrecision |
No |
Contractual maturity. |
None |
interestRateDescription |
string |
No |
Margin, coupon, floor and benchmark wording. |
None |
seniority |
string |
No |
Reported ranking. |
None |
instrumentStatus |
current | repaid | cancelled | proposed | unknown |
Yes |
Lifecycle status. |
None |
Relationships
- Borrowers reference LegalEntity
- Market observations and covenants reference this record
Key invariants
- Borrowers are exact entities, not inferred parents.
- Amount currencies must agree with instrument currency.
Debt market observation
debt_market_observation
debtMarketObservations[]
59 records
A dated price, yield, spread or rate observation tied to one debt instrument.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
debtInstrumentResearchRecordId |
StableIdentifier |
Yes |
Observed instrument. |
DebtInstrument |
observationType |
price | yield | spread | interest_rate | other |
Yes |
Observed measure. |
None |
observedValue |
MeasuredValue |
Yes |
Reported market value. |
None |
valueAsOfDate |
DateWithPrecision |
Yes |
Observation date. |
None |
observationBasis |
public_clo_report_mark | exchange_close | dealer_indication | fund_fair_value | transaction_price | other |
Yes |
Source and method of the observation. |
None |
observationBasisDescription |
string |
No |
Required explanation for an other basis. |
None |
sourceReportedIssuerName |
string |
No |
Issuer wording used in the source. |
None |
sourceReportedInstrumentName |
string |
No |
Instrument wording used in the source. |
None |
Relationships
- References exactly one DebtInstrument
Key invariants
- Public CLO marks require day precision, price type, percent-of-par units and a source instrument name.
Covenant record
covenant_record
covenantRecords[]
68 records
A maintenance, incurrence, reporting or other covenant linked to covered instruments.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
covenantName |
string |
Yes |
Covenant label. |
None |
relatedDebtInstrumentResearchRecordIds[] |
StableIdentifier[1..n] |
Yes |
Covered instruments. |
DebtInstrument |
covenantType |
maintenance | incurrence | reporting | other |
Yes |
Covenant classification. |
None |
covenantDescription |
string |
Yes |
Factual term description. |
None |
thresholdValue |
MeasuredValue |
No |
Numeric threshold where disclosed. |
None |
testFrequencyDescription |
string |
No |
Testing cadence. |
None |
covenantStatus |
current | waived | amended | historical | unknown |
Yes |
Current status. |
None |
Relationships
- References one or more DebtInstrument records
Key invariants
- Every covered instrument belongs to the same company aggregate.
Guarantee
guarantee
guarantees[]
5 records
An evidenced guarantee from exact legal entities to exact debt instruments.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
guarantorLegalEntityResearchRecordIds[] |
StableIdentifier[1..n] |
Yes |
Guarantors. |
LegalEntity |
guaranteedDebtInstrumentResearchRecordIds[] |
StableIdentifier[1..n] |
Yes |
Guaranteed instruments. |
DebtInstrument |
guaranteeDescription |
string |
Yes |
Scope and nature of the guarantee. |
None |
guaranteeStatus |
current | released | proposed | unknown |
Yes |
Current status. |
None |
Relationships
- Joins LegalEntity guarantors to DebtInstrument obligations
Key invariants
- Accounting support undertakings are not treated as financing guarantees without evidence.
Security interest
security_interest
securityInterests[]
10 records
Collateral granted by exact legal entities for exact debt instruments.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
grantorLegalEntityResearchRecordIds[] |
StableIdentifier[1..n] |
Yes |
Security grantors. |
LegalEntity |
securedDebtInstrumentResearchRecordIds[] |
StableIdentifier[1..n] |
Yes |
Secured instruments. |
DebtInstrument |
collateralDescription |
string |
Yes |
Collateral package. |
None |
securityStatus |
current | released | proposed | unknown |
Yes |
Current status. |
None |
Relationships
- Joins LegalEntity grantors to DebtInstrument obligations
Key invariants
- Grantor and secured instrument endpoints must be explicit and valid.
02.5
Events and legal matters
Stores dated developments and longer-lived legal or regulatory matters separately.
Company event
company_event
companyEvents[]
562 records
A dated transaction, financing, operational, governance or other company development.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
eventType |
string |
Yes |
Event classification. |
None |
eventTitle |
string |
Yes |
Concise event label. |
None |
eventDescription |
string |
Yes |
Factual event description. |
None |
eventDate |
DateWithPrecision |
Yes |
Event date. |
None |
subjectLegalEntityResearchRecordIds[] |
StableIdentifier[] |
Yes |
Exact subjects when known. |
LegalEntity |
Relationships
- May reference LegalEntity subjects
Key invariants
- Events remain individually dated rather than being overwritten by later developments.
Legal matter
legal_matter
legalMatters[]
29 records
A litigation, antitrust, regulatory, restructuring or other legal matter.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
matterTitle |
string |
Yes |
Matter label. |
None |
matterType |
string |
Yes |
Matter classification. |
None |
matterDescription |
string |
Yes |
Factual description. |
None |
subjectLegalEntityResearchRecordIds[] |
StableIdentifier[] |
Yes |
Exact subjects when known. |
LegalEntity |
matterStatus |
open | closed | settled | appealed | unknown |
Yes |
Current status. |
None |
applicablePeriod |
DateRangeWithPrecision |
No |
Relevant period. |
None |
Relationships
- May reference LegalEntity subjects
Key invariants
- Status changes do not erase the evidenced matter history.
02.6
Findings, analysis and gaps
Separates flexible factual claims, deterministic calculations, analyst judgement and failed searches.
Research finding
research_finding
researchFindings[]
641 records
An evidence-backed company fact that does not fit a more specific typed record.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
evidenceLinks[] |
EvidenceLink[1..n] |
Yes |
Supporting, contradicting or contextual citations. |
SourceCitation |
findingTitle |
string |
Yes |
Concise fact label. |
None |
factualStatement |
string |
Yes |
Direct factual statement. |
None |
subjectLegalEntityResearchRecordIds[] |
StableIdentifier[] |
Yes |
Exact subjects when known. |
LegalEntity |
findingCategory |
string |
Yes |
Domain classification such as foreign exchange rate. |
None |
applicablePeriod |
DateRangeWithPrecision |
No |
Period for which the fact applies. |
None |
findingStatus |
current | historical | superseded | disputed | unknown |
Yes |
Current fact status. |
None |
supersededByResearchRecordId |
StableIdentifier |
No |
Replacement record. |
ResearchRecord |
Relationships
- May reference LegalEntity subjects and a superseding ResearchRecord
Key invariants
- Use a more specific record type where one exists.
- Supersession lineage must resolve.
Calculated finding
calculated_finding
calculatedFindings[]
27 records
A deterministic result whose exact inputs point back to canonical research fields.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
calculationDescription |
string |
Yes |
Method and purpose of the calculation. |
None |
calculationInputs[] |
ResearchRecordFieldReference[1..n] |
Yes |
Exact input records or fields. |
ResearchRecord |
calculatedResult |
MeasuredValue |
Yes |
Numeric output. |
None |
calculationDate |
ISO date |
Yes |
Date on which the calculation was made. |
None |
Relationships
- Lineage recursively resolves through input ResearchRecord fields to direct evidence
Key invariants
- Inputs must exist and belong to the company; direct factual input fields are evidence-covered.
- Lineage cycles are rejected.
Analyst conclusion
analyst_conclusion
analystConclusions[]
406 records
An analyst judgement, including the curated reasons a company is on the watchlist.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
conclusionTitle |
string |
Yes |
Concise analytical label. |
None |
conclusionText |
string |
Yes |
Analyst-authored conclusion. |
None |
supportingResearchRecords[] |
ResearchRecordFieldReference[1..n] |
Yes |
Exact supporting facts, calculations or documented gaps. Deep Dive publication applies a narrower rule to gaps. |
ResearchRecord |
Relationships
- May be selected by SnapshotEditorialPlan and DeepDiveSpec
Key invariants
- An analyst conclusion cannot cite another analyst conclusion as support.
- Public conclusions require public supporting records.
Research gap
research_gap
researchGaps[]
643 records
An unresolved question with an auditable log of sources, URLs and searches already checked.
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Corpus-wide immutable record identifier. |
None |
researchRecordType |
literal |
Yes |
Discriminator for the research-record union. |
None |
publicationVisibility |
internal_only | public |
Yes |
Eligibility for public output use. |
None |
researchQuestion |
string |
Yes |
Bounded missing-information question. |
None |
relatedResearchRecordIds[] |
StableIdentifier[] |
Yes |
Related facts or records. |
ResearchRecord |
searchAttempts[] |
SearchAttempt[1..n] |
Yes |
Dates, checked documents or URLs, result and next check date. |
SearchAttempt |
gapStatus |
open | partially_resolved | resolved |
Yes |
Current resolution state. |
None |
Relationships
- May reference related ResearchRecord records
- Contains one or more SearchAttempt records
- Dataset validation permits an AnalystConclusion to depend on a public ResearchGap; the public Deep Dive publisher rejects that dependency, including through conclusion lineage
Key invariants
- Every search attempt names at least one checked source document or URL.
- A gap records research process, not an evidence-backed fact.
- Snapshot manufacture may report a selected gap; public Deep Dive publication rejects any ResearchGap in the dependency closure.
02.7
Shared value and reference types
Dates, measured values and cross-record references retain precision and lineage consistently across domain records.
Stable identifier
StableIdentifier
shared scalar
reused throughout
A lowercase, durable identifier used for company, record, source and output references.
embedded type
reused throughout
#
| Field | Type | Required | Meaning | References |
value |
string 1..160 |
Yes |
Lowercase alphanumeric segments separated by dot, underscore or hyphen. |
None |
Relationships
- Forms all cross-object reference keys except content-addressed blob IDs
Key invariants
- Must match ^[a-z0-9]+(?:[._-][a-z0-9]+)*$.
Legal-entity identifier
LegalEntityIdentifier
legalEntity.legalEntityIdentifiers[]
0..n per LegalEntity
A register number, LEI, tax identifier or explicitly described alternative identifier.
embedded type
0..n per LegalEntity
#
| Field | Type | Required | Meaning | References |
identifierScheme |
company_register_number | lei | tax_identifier | other |
Yes |
Identifier namespace. |
None |
identifierValue |
non-empty string |
Yes |
Identifier as reported by the issuing system. |
None |
issuingJurisdictionCode |
uppercase jurisdiction code |
No |
Required for company-register and tax identifiers; forbidden for an LEI. |
None |
identifierSchemeDescription |
string |
No |
Required only when identifierScheme is other. |
None |
Relationships
- Embedded in LegalEntity; its parent record carries the evidence links
Key invariants
- An LEI is exactly 20 uppercase letters or digits and has no issuing jurisdiction.
- Company-register and tax identifiers require an issuing jurisdiction.
- The other scheme requires a description; named schemes forbid one.
- Canonicalized identifiers are unique within a LegalEntity.
Debt-instrument identifier
DebtInstrumentIdentifier
debtInstrument.instrumentIdentifiers[]
0..n per DebtInstrument
A LoanX, ISIN, CUSIP, common-code or explicitly described alternative instrument identifier.
embedded type
0..n per DebtInstrument
#
| Field | Type | Required | Meaning | References |
identifierScheme |
loanx | isin | cusip | common_code | other |
Yes |
Identifier namespace. |
None |
identifierValue |
non-empty string |
Yes |
Identifier value. |
None |
identifierSchemeDescription |
string |
No |
Required only when identifierScheme is other. |
None |
Relationships
- Embedded in DebtInstrument; its parent record carries the evidence links
Key invariants
- LoanX values use LX followed by digits.
- The other scheme requires a description; named schemes forbid one.
Measured value
MeasuredValue
shared value type
reused in metrics and finance
A finite numeric value with an explicit unit, optional currency and precision qualifier.
embedded type
reused in metrics and finance
#
| Field | Type | Required | Meaning | References |
value |
finite number |
Yes |
Numeric magnitude. |
None |
unit |
string |
Yes |
Unit such as EUR_millions, employees or percent_of_par. |
None |
currency |
ISO 4217 code |
No |
Three-letter currency when applicable. |
None |
valueQualifier |
exact | approximately | at_least | at_most |
Yes |
Precision qualifier; defaults to exact. |
None |
Relationships
- Embedded by metric, debt, market, covenant and calculated-finding records
Key invariants
- Currency is a three-letter uppercase code when present.
Date with precision
DateWithPrecision
shared value type
reused throughout
A date whose precision is explicitly day, month, year or unknown.
embedded type
reused throughout
#
| Field | Type | Required | Meaning | References |
precision |
day | month | year | unknown |
Yes |
Interpretation of the stored value. |
None |
value |
YYYY-MM-DD | YYYY-MM | YYYY | string |
Yes |
Value matching the declared precision. |
None |
Relationships
- Embedded by observations, events, matters, documents and debt maturities
Key invariants
- Day and month values must be valid calendar dates.
Date range with precision
DateRangeWithPrecision
shared value type
reused throughout
A bounded or described period whose endpoints retain their reported precision.
embedded type
reused throughout
#
| Field | Type | Required | Meaning | References |
startDate |
DateWithPrecision |
No |
Period start. |
DateWithPrecision |
endDate |
DateWithPrecision |
No |
Period end. |
DateWithPrecision |
periodDescription |
string |
No |
Source wording when dates alone are insufficient. |
None |
Relationships
- Embedded by metrics, ownership, legal matters and findings
Key invariants
- At least one endpoint or description is present.
- A comparable end date cannot precede the start date.
Research-record field reference
ResearchRecordFieldReference
shared reference type
reused in lineage and outputs
Points to a whole canonical research record or an explicit set of RFC 6901 JSON-pointer fields.
embedded type
reused in lineage and outputs
#
| Field | Type | Required | Meaning | References |
researchRecordId |
StableIdentifier |
Yes |
Referenced record. |
ResearchRecord |
fieldReferenceType |
whole_record | specific_fields |
Yes |
Reference breadth. |
None |
referencedFieldJsonPointers[] |
JSON Pointer[1..n] |
No |
Required for specific_fields references. |
None |
Relationships
- Used by calculations, conclusions, SnapshotContent and DeepDiveSpec
Key invariants
- Pointers resolve on the target record and cannot target provenance fields.
Search attempt
SearchAttempt
researchGap.searchAttempts[]
1..n per ResearchGap
An auditable bounded search for an unresolved question, recording what was checked and the result.
research process
1..n per ResearchGap
#
| Field | Type | Required | Meaning | References |
searchAttemptId |
StableIdentifier |
Yes |
Attempt identifier. |
None |
searchedOn |
ISO date |
Yes |
Date the search was performed. |
None |
checkedSourceDocumentIds[] |
StableIdentifier[] |
Yes |
Corpus source documents checked; may be empty only when checkedUrls is non-empty. |
SourceDocument |
checkedUrls[] |
URL[] |
No |
Additional live URLs checked. |
None |
searchQueries[] |
non-empty string[] |
No |
Queries used during the search. |
None |
searchResult |
not_found | partial | ambiguous | paywalled | blocked | unreachable |
Yes |
Bounded outcome. |
None |
resultDescription |
string |
Yes |
What was found or why the search did not resolve the question. |
None |
checkAgainAfter |
ISO date |
No |
Earliest sensible date for another attempt. |
None |
Relationships
- Embedded in ResearchGap
- checkedSourceDocumentIds resolve to global SourceDocument records
Key invariants
- At least one checked source document or checked URL is present.
- Search attempts describe research activity and do not themselves evidence a company fact.
03
Evidence and files
A citation is not a file, and a file is not a source publication. The layers preserve that distinction while keeping every supported fact traceable.
EvidenceLinkfact-to-citation binding
→
SourceCitationprecise location
→
SourceDocumentlogical publication
→
SourceFileRepresentationretained form
→
ResearchFileBlobimmutable bytes
938 repository-backed blobs
52 R2-backed blobs
Downloadability is controlled on the representation, not inferred from storage.
Evidence link
EvidenceLink
researchRecord.evidenceLinks[]
1..n on direct facts
Binds a research record, or named fields within it, to a citation with a defined role.
embedded binding
1..n on direct facts
#
| Field | Type | Required | Meaning | References |
sourceCitationId |
StableIdentifier |
Yes |
Referenced citation. |
SourceCitation |
evidenceRole |
supports | contradicts | context |
Yes |
How the citation relates to the fact. |
None |
supportScopeType |
whole_record | specific_fields |
Yes |
Breadth of support. |
None |
supportedFieldJsonPointers[] |
JSON Pointer[1..n] |
No |
Exact supported fields when field-scoped. |
None |
limitationDescription |
string |
No |
Material limitation on the evidence. |
None |
Relationships
- ResearchRecord -> EvidenceLink -> SourceCitation
Key invariants
- Every direct fact has at least one supports link.
- Specific-field pointers must resolve and cannot target provenance.
Source citation
SourceCitation
sourceCitations[]
3,099 records
A precise location in a retained file or live URL, with separately controlled excerpt visibility.
global evidence
3,099 current
#
| Field | Type | Required | Meaning | References |
sourceCitationId |
StableIdentifier |
Yes |
Global citation identifier. |
None |
sourceDocumentId |
StableIdentifier |
Yes |
Logical source publication. |
SourceDocument |
citationBasis |
quotation | paraphrase | table | registry_entry |
Yes |
Nature of the cited material. |
None |
sourceExcerpt |
string |
No |
Retained excerpt when permitted. |
None |
citationNote |
string |
No |
Citation-specific note. |
None |
citationLocationType |
stored_file | url_only |
Yes |
Storage-backed or live-web location. |
None |
sourceFileRepresentationId |
StableIdentifier |
No |
Retained representation when stored-file based. |
SourceFileRepresentation |
locator |
StoredFileLocator | LiveWebLocator |
Yes |
Page, section, table, lines, cells, selector or whole resource. |
None |
accessedOn |
ISO date |
No |
Required access date for a url_only citation. |
None |
urlOnlyReason |
not_downloaded | dynamic_page | download_prohibited | other |
No |
Required reason that a url_only citation has no retained file. |
None |
citationMetadataVisibility |
internal_only | public |
Yes |
Visibility of citation metadata. |
None |
sourceExcerptVisibility |
internal_only | public |
Yes |
Visibility of any excerpt. |
None |
Relationships
- References SourceDocument and optionally SourceFileRepresentation
Key invariants
- Stored-file citations reference a retained representation.
- Public excerpt visibility requires an excerpt.
Source document
SourceDocument
sourceDocuments[]
1,452 records
The logical publication: report, filing, contract, website, article, market data or other source.
global evidence
1,452 current
#
| Field | Type | Required | Meaning | References |
sourceDocumentId |
StableIdentifier |
Yes |
Global source identifier. |
None |
title |
string |
Yes |
Document title. |
None |
publisher |
string |
Yes |
Publisher or originator. |
None |
documentType |
annual_report | interim_report | investor_presentation | regulatory_filing | credit_opinion | press_release | company_website | news_article | market_data | registry_record | contract | court_record | email_attachment | other |
Yes |
Source-document classification. |
None |
contentAsOfDate |
DateWithPrecision |
No |
Date represented by the content. |
None |
publicationDate |
DateWithPrecision |
No |
Publication date. |
None |
originalUrl |
URL |
No |
Original web location. |
None |
languageCode |
string |
No |
Document language. |
None |
sourceAccessType |
public | licensed | confidential | company_provided |
Yes |
Access basis. |
None |
publicationPolicy |
object |
Yes |
Independent metadata and original-URL visibility controls. |
None |
Relationships
- One document may have many citations and retained file representations
Key invariants
- A public original URL policy requires an original URL.
Source file representation
SourceFileRepresentation
sourceFileRepresentations[]
1,032 records
An original, archive, OCR, extraction, table or translation of a source document.
global evidence
1,032 current
#
| Field | Type | Required | Meaning | References |
sourceFileRepresentationId |
StableIdentifier |
Yes |
Representation identifier. |
None |
sourceDocumentId |
StableIdentifier |
Yes |
Logical source represented. |
SourceDocument |
representationRole |
original | web_archive | ocr_text | extracted_text | extracted_table | translation |
Yes |
Relationship of this retained form to its source document. |
None |
researchFileBlobId |
sha256 identifier |
Yes |
Immutable file bytes. |
ResearchFileBlob |
displayFileName |
filename |
Yes |
Safe display and download name. |
None |
declaredMediaType |
string |
Yes |
Declared content type. |
None |
acquisitionEvents[] |
SourceFileAcquisitionEvent[] |
Yes |
Download, email, upload or repository acquisition trail. |
None |
derivedFromSourceFileRepresentationId |
StableIdentifier |
No |
Parent representation for derived files. |
SourceFileRepresentation |
transformation |
FileTransformation |
No |
OCR, extraction or translation metadata. |
None |
retainedFileAccess |
internal_only | public_download_allowed |
Yes |
Download eligibility. |
None |
publicDownloadAuthorization |
authorization record |
No |
Who authorized public download and why. |
None |
Relationships
- Joins SourceDocument metadata to immutable ResearchFileBlob bytes
Key invariants
- Derived representations require a parent and matching transformation.
- Public download requires explicit authorization.
Research file blob
ResearchFileBlob
researchFileBlobs[]
990 records
Content-addressed immutable bytes stored in the repository or R2.
global evidence
990 current
#
| Field | Type | Required | Meaning | References |
researchFileBlobId |
sha256:<64 hex> |
Yes |
Content-derived identifier. |
None |
byteLength |
non-negative integer |
Yes |
Expected file size. |
None |
detectedMediaType |
string |
No |
Sniffed media type. |
None |
ingestedAt |
ISO timestamp |
Yes |
Ingestion time. |
None |
storageLocation |
{ storageType: repository; repositoryPath } | { storageType: r2; objectKey } |
Yes |
Discriminated retrieval location. |
None |
Relationships
- Referenced by one or more SourceFileRepresentation records
Key invariants
- Identifier equals the SHA-256 of the stored bytes.
- Repository paths are relative and cannot traverse.
Source file acquisition event
SourceFileAcquisitionEvent
sourceFileRepresentation.acquisitionEvents[]
0..n per representation
Records how bytes entered Odin: URL download, email attachment, manual upload or repository import.
embedded type
0..n per representation
#
| Field | Type | Required | Meaning | References |
acquisitionEventId |
StableIdentifier |
Yes |
Acquisition event identifier. |
None |
acquiredAt |
ISO 8601 timestamp |
Yes |
Acquisition time. |
None |
acquisitionMethod |
url_download | email_attachment | manual_upload | repository_import |
Yes |
Acquisition route. |
None |
sourceUrl |
URL |
No |
Required for URL downloads. |
None |
emailMessageId |
string |
No |
Email message identifier when available. |
None |
receivedFileName |
filename |
No |
Required for email, upload and repository import. |
None |
acquisitionNote |
string |
No |
Manual-upload note. |
None |
repositoryRelativePath |
POSIX path |
No |
Required for repository imports. |
None |
Relationships
- Embedded in SourceFileRepresentation
Key invariants
- Original and web-archive representations have at least one acquisition event.
Stored file locator
StoredFileLocator
sourceCitation.locator when stored_file
exactly 1 per stored-file citation
Locates evidence within retained bytes by page, section, table, lines, spreadsheet cells, XML path or HTML selector.
embedded type
exactly 1 per stored-file citation
#
| Field | Type | Required | Meaning | References |
locatorType |
whole_file | pdf_page | section | table | text_lines | spreadsheet_cells | xml_path | html_selector |
Yes |
Locator discriminator. |
None |
pageNumber / printedPageLabel |
integer / string |
No |
PDF-page location. |
None |
sectionTitle / localAnchor |
string |
No |
Document section location. |
None |
tableName / rowDescription |
string |
No |
Table location; at least one is present. |
None |
startLine / endLine |
positive integer |
No |
Inclusive extracted-text line range. |
None |
sheetName / cellRange |
string |
No |
Spreadsheet range. |
None |
xmlPath / cssSelector |
string |
No |
Structured-document location. |
None |
Relationships
- Embedded in a stored-file SourceCitation
Key invariants
- Line ranges are ordered; table locators identify a table or row.
Live web locator
LiveWebLocator
sourceCitation.locator when url_only
exactly 1 per URL-only citation
Locates evidence on a live page by whole page, PDF page, URL fragment, section or HTML selector.
embedded type
exactly 1 per URL-only citation
#
| Field | Type | Required | Meaning | References |
locatorType |
whole_page | pdf_page | url_fragment | section | html_selector |
Yes |
Locator discriminator. |
None |
pageNumber / printedPageLabel |
integer / string |
No |
PDF-page location. |
None |
fragment |
string |
No |
URL fragment without inference. |
None |
sectionTitle |
string |
No |
Visible section title. |
None |
cssSelector |
string |
No |
HTML selector. |
None |
Relationships
- Embedded in a URL-only SourceCitation
Key invariants
- URL-only citations also store accessedOn and urlOnlyReason.
04
Output composition
Output models reference canonical records. Snapshot plans select ordered records and manufacture exact field lineage; Deep Dive specifications select fields directly within a company-specific, publication-aware composition.
DimensionSnapshotDeep Dive
PurposeStandard four-slide company snapshotTailored company research page
SelectionOrdered record IDs; manufactured content records exact field lineageExact field references, supported claims and structured views
LayoutDeterministic template; optional structure coordinatesFlexible sections; typed tables, timelines and diagrams
Fact storageNo duplicated canonical factsAuthored wording carries canonical field references with publication-time evidence closure
Snapshot editorial plan
SnapshotEditorialPlan
snapshotEditorialPlans[]
169 records
Ordered featured records and watchlist conclusions used by the deterministic four-slide Snapshot renderer. Every company in the current assembled corpus has one, but the dataset schema does not require full coverage.
output selection
0..1 per company (169 current; one for every current company)
#
| Field | Type | Required | Meaning | References |
snapshotEditorialPlanId |
StableIdentifier |
Yes |
Plan identifier. |
None |
companyRecordId |
StableIdentifier |
Yes |
Owning company aggregate. |
CompanyResearchRecord |
snapshotDisplayTitle |
string |
No |
Publication-specific title. |
None |
featuredResearchRecordIds[] |
StableIdentifier[] |
Yes |
Ordered featured records, including facts and documented research gaps. |
ResearchRecord |
curatedWatchListConclusionIds[] |
StableIdentifier[] |
Yes |
Ordered watchlist analysis. |
AnalystConclusion |
structureDiagramLayout |
entity position map |
No |
Layout hints only; never creates entities or ownership edges. |
None |
Relationships
- Stored beside the CompanyResearchRecord revision
- Manufactures SnapshotContent then PPTX
Key invariants
- At most one plan may reference a given company in an assembled dataset; zero is schema-valid.
- Selections belong to the company and contain no duplicates.
- Watchlist IDs resolve only to AnalystConclusion.
Deep Dive specification
DeepDiveSpec
deepDiveSpecs[]
11 records
A company-tailored publication recipe combining supported prose, analyst commentary and typed structured views.
output selection
11 current
#
| Field | Type | Required | Meaning | References |
deepDiveSpecId |
StableIdentifier |
Yes |
Specification identifier. |
None |
deepDiveSlug |
route slug |
Yes |
Published route. |
None |
deepDiveTitle |
string |
Yes |
Publication title. |
None |
primaryCompanyRecordId |
StableIdentifier |
Yes |
Primary aggregate. |
CompanyResearchRecord |
relatedCompanyRecordIds[] |
StableIdentifier[] |
Yes |
Additional company perimeters when needed. |
CompanyResearchRecord |
publicationVisibility |
internal_only | public |
Yes |
Output eligibility. |
None |
contentExpansionStatus |
not_in_progress | expansion_in_progress |
Yes |
Editorial expansion state. |
None |
sections[] |
DeepDiveSection[1..n] |
Yes |
Ordered custom sections with claims, commentary and structured views. |
None |
Relationships
- Selects exact ResearchRecord fields; public manufacture follows their publishable evidence closure
Key invariants
- Public specs can reference only public companies, records and evidence.
- Every section contains prose or a structured view.
Snapshot content
SnapshotContent
manufactured Snapshot artifact
one per manufactured Snapshot plan result
Format-neutral manufactured output that closes a Snapshot plan over exact company records before rendering.
output selection
one per manufactured Snapshot plan result
#
| Field | Type | Required | Meaning | References |
snapshotContentId |
StableIdentifier |
Yes |
Manufactured content identifier. |
None |
snapshotEditorialPlanId |
StableIdentifier |
Yes |
Source selection plan. |
SnapshotEditorialPlan |
companyRecordId |
StableIdentifier |
Yes |
Company aggregate selected by the plan. |
CompanyResearchRecord |
publicationVisibility |
internal_only | public |
Yes |
Output visibility. |
None |
contentItems[] |
SnapshotContentItem[] |
Yes |
Manufactured display values with exact field lineage. |
SnapshotContentItem |
Relationships
- Manufactured from SnapshotEditorialPlan and its owning CompanyResearchRecord
- Each item points back to one selected canonical ResearchRecord field reference
- Consumed by the Snapshot render-input and PPTX stages; not stored as a second canonical fact model
Key invariants
- The plan exists and belongs to companyRecordId.
- Public content requires a public company and public referenced records.
- Every plan-selected record, plus company identity, appears exactly once; unselected records cannot appear.
- Each item content type matches its source record discriminator.
Snapshot content item
SnapshotContentItem
snapshotContent.contentItems[]
0..n per SnapshotContent
One manufactured display label/value pair with a whole-record or field-specific pointer to its canonical source.
output selection
0..n per SnapshotContent
#
| Field | Type | Required | Meaning | References |
snapshotContentItemId |
StableIdentifier |
Yes |
Stable item identifier within the manufactured output. |
None |
contentItemType |
company_identity | legal_entity | ownership_relationship | business_activity | operating_asset | operational_metric_observation | financial_metric_observation | debt_instrument | debt_market_observation | covenant_record | guarantee | security_interest | company_event | legal_matter | research_finding | calculated_finding | analyst_conclusion | research_gap |
Yes |
Source research-record discriminator. |
None |
displayLabel |
string |
Yes |
Renderer-facing label manufactured from the selected record. |
None |
displayValue |
string |
Yes |
Renderer-facing value manufactured from the selected record. |
None |
sourceResearchRecord |
ResearchRecordFieldReference |
Yes |
Exact canonical record or fields from which the display value was manufactured. |
ResearchRecordFieldReference |
Relationships
- Embedded in SnapshotContent
- sourceResearchRecord resolves inside the Snapshot company and the owning editorial plan selection
Key invariants
- contentItemType equals the referenced record researchRecordType.
- The same source research record cannot appear in two content items.
- Field pointers resolve and preserve publication-aware evidence lineage where applicable.
Structure diagram layout
StructureDiagramLayout
snapshotEditorialPlan.structureDiagramLayout
optional per Snapshot plan
Editorial coordinates for already-evidenced legal entities; never a source of structure facts.
embedded type
optional per Snapshot plan
#
| Field | Type | Required | Meaning | References |
positionsByLegalEntityResearchRecordId |
record of { xPosition; yPosition } |
Yes |
Finite layout coordinates keyed by legal-entity record ID. |
LegalEntity |
Relationships
- Embedded in SnapshotEditorialPlan
Key invariants
- Every key resolves to a LegalEntity in the owning company.
Deep Dive section
DeepDiveSection
deepDiveSpec.sections[]
1..n per Deep Dive
An ordered company-specific section containing typed structured views, supported prose and/or analyst commentary.
embedded type
1..n per Deep Dive
#
| Field | Type | Required | Meaning | References |
deepDiveSectionId |
StableIdentifier |
Yes |
Section identifier. |
None |
sectionTitle |
string |
Yes |
Displayed section title. |
None |
structuredViewResearchRecords[] |
ResearchRecordFieldReference[] |
Yes |
Rows, charts, timelines or structure nodes. |
ResearchRecordFieldReference |
usdEquivalentBindings[] |
DeepDiveUsdEquivalentBinding[] |
Yes |
Explicit non-USD/EUR/GBP conversion pairings. |
DeepDiveUsdEquivalentBinding |
contentNodes[] |
DeepDiveContentNode[] |
Yes |
Supported prose and analyst commentary. |
DeepDiveContentNode |
Key invariants
- A section has at least one content node or structured-view record.
Deep Dive content node
DeepDiveContentNode
deepDiveSection.contentNodes[]
0..n per section
Either authored supported wording with exact field references or a pointer to canonical analyst commentary.
embedded type
0..n per section
#
| Field | Type | Required | Meaning | References |
nodeType |
supported_claim | analyst_commentary |
Yes |
Node discriminator. |
None |
deepDiveClaimId |
StableIdentifier |
No |
Required for supported_claim. |
None |
authoredText |
string |
No |
Required publication wording for supported_claim. |
None |
supportingResearchRecords[] |
ResearchRecordFieldReference[1..n] |
No |
Exact supporting fields for supported_claim. |
ResearchRecordFieldReference |
analystConclusionResearchRecordId |
StableIdentifier |
No |
Required for analyst_commentary. |
AnalystConclusion |
Relationships
- Embedded in DeepDiveSection
Key invariants
- Supported claims have at least one exact reference; commentary points to AnalystConclusion.
Deep Dive USD-equivalent binding
DeepDiveUsdEquivalentBinding
deepDiveSection.usdEquivalentBindings[]
0..n per section
Pairs one non-USD/EUR/GBP measured field with the exact calculated USD result displayed beside it.
embedded type
0..n per section
#
| Field | Type | Required | Meaning | References |
sourceValueReference |
single-field ResearchRecordFieldReference |
Yes |
Original measured-value field. |
ResearchRecordFieldReference |
calculatedFindingResearchRecordId |
StableIdentifier |
Yes |
USD conversion result. |
CalculatedFinding |
Relationships
- Embedded in DeepDiveSection; calculation inputs include the source value and an FX-rate ResearchFinding
Key invariants
- Source field is not USD, EUR or GBP; result is USD.
- Each source value and calculation is bound only once per section.
05
Revisions and storage
Current active company pointers resolve to immutable revision folders that pair research with a Snapshot plan. At the assembled dataset boundary, validation permits a company without a plan but rejects more than one. Global evidence objects are shared outside company folders; file blobs alone are content-addressed by their bytes.
corpus/
|-- company-active/<slug>.json
|-- company-revisions/<slug>/<revision>/
| |-- company-research.json
| +-- snapshot-editorial-plan.json
|-- deep-dive-specs/
|-- source-documents/
|-- source-citations/
|-- source-file-representations/
+-- research-file-blobs/
research/source-materials/sha256/<prefix>/<hash>.raw
- 1
StageFetch, hash and extract source candidates inside an isolated research run.
- 2
ValidateCheck structural schemas, references, evidence coverage and file integrity.
- 3
ReviewA separate semantic review approves the exact candidate fingerprint.
- 4
PromoteInstall blobs, global evidence and an immutable company revision under a lock.
- 5
ActivateMove the company pointer atomically; earlier revisions remain intact.
06
Cross-record validation
Zod enforces local shapes; the dataset validator enforces identity, perimeter, lineage, evidence, output and publication rules across objects.
IdentityCompany and research-record IDs are globally unique; routes and automatic MCP/email aliases resolve unambiguously, while search aliases may intentionally overlap.
EvidenceEvery direct fact has at least one supporting citation, and field-scoped support covers every output-selected field.
Entity endpointsOwnership, borrower, guarantee, security and asset-owner references resolve to exact legal entities in the company aggregate; corporateStructure may include contextual entities outside researchScope.
LineageCalculated findings resolve exact inputs without cycles; analyst conclusions cite facts, calculations and/or documented gaps, but never another conclusion.
Research-gap publicationDataset validation permits a public AnalystConclusion to depend on a public ResearchGap. Snapshot manufacture can report selected gaps, while public Deep Dive publication rejects any gap dependency; this is a publication-boundary inconsistency, not a corpus-wide prohibition.
VisibilityPublic outputs cannot traverse internal-only companies, records, citations, excerpts or unauthorized files.
FilesBlob identifiers match SHA-256 bytes; retained representations have valid acquisition and transformation lineage.
OutputsAn assembled dataset permits zero or one Snapshot plan per company; current corpus coverage is one per company. Plans select company-owned records, and manufactured Snapshot content and Deep Dive field references must resolve valid, evidence-covered fields where applicable.
Host pathsCanonical data cannot contain absolute machine paths; storage paths remain repository-relative or R2 keys.