2026-03-28 23:44:37 -04:00

26 lines
852 B
TypeScript

import { z } from "zod";
/** Metadata about the source filing. */
export const FilingMeta = z.object({
companyName: z.string(),
cik: z.string(),
ticker: z.string(),
filingType: z.enum(["10-K", "8-K"]),
filingDate: z.iso.date(),
fiscalYear: z.number().int(),
accessionNumber: z.string(),
secItem: z.string(), // "Item 1C", "Item 1.05", "Item 8.01", etc.
});
export type FilingMeta = z.infer<typeof FilingMeta>;
/** A single paragraph extracted from an SEC filing, ready for labeling. */
export const Paragraph = z.object({
id: z.uuid(),
text: z.string(),
textHash: z.string(), // SHA-256 of normalized text — for dedup and cross-filing tracking
wordCount: z.number().int(),
paragraphIndex: z.number().int(), // position within the filing section
filing: FilingMeta,
});
export type Paragraph = z.infer<typeof Paragraph>;