je-validation-console / docs /spec /sources.json
ParthKulshreshtha's picture
Upload folder using huggingface_hub
59db361 verified
Raw
History Blame Contribute Delete
17.5 kB
{
"DS-A": {
"name": "CT Open Expenditures β€” Ledger (Current)",
"org": "State of Connecticut",
"url": "https://data.ct.gov/api/views/ajdm-rvz7",
"access": "CSV / JSON / XML + Socrata API. Updated nightly. Dataset id ajdm-rvz7.",
"fields": "fiscal_year, fiscal_year_period, service, department, program, account, expense_category, fund_code, fund, fund_type, vendor, vendor_id, payment_id, payment_count, payment_method, payment_status, payment_date, invoice_id, invoice_line_number, invoice_line_distribution_number, invoice_date, amount, description, contract_number, purchase_order_number, purchase_order_line_number, vendor_type, payment_description, load_dttm",
"why": "The richest public source for this work. Has invoice date AND payment date AND fiscal period (cut-off tasks), PO and contract numbers (three-way match), vendor id and type (vendor anomalies), account/fund/department strings (coding validity), and a load timestamp (posting-behaviour anomalies).",
"role": "PRIMARY BASE LEDGER",
"ingest": {
"id": "DS-A",
"status": "VERIFIED LIVE 2026-08-03",
"vol": "6,128,020 rows Β· FY2020–FY2027 Β· ~860k–900k rows and $29–40B per fiscal year",
"how": "Socrata REST. Base: https://data.ct.gov/resource/ajdm-rvz7.json β€” supports $select, $where, $group, $order, $limit, $offset. Bulk CSV also available from the dataset page.",
"snippet": "# count\ncurl 'https://data.ct.gov/resource/ajdm-rvz7.json?$select=count(*)'\n# one fiscal period, paged\ncurl 'https://data.ct.gov/resource/ajdm-rvz7.json?$where=fiscal_year=2026 AND fiscal_year_period=7&$limit=50000&$offset=0'\n# group-by works; count(distinct x) and $query do NOT on this endpoint",
"gotchas": [
"EVERY value returns as a JSON string, including amount and all dates β€” cast on ingest or every numeric comparison silently fails.",
"Two datetime formats in one row: payment_date / invoice_date are ISO with .000 suffix; load_dttm is 'YYYY-MM-DD HH:MM:SS.ffffff' with a space. Parse separately.",
"contract_number is sparse β€” present on some rows, absent entirely on others. Filter to non-null for JE-06 contract variants.",
"vendor_type is null on 322,154 rows (~5%). Real missing-data noise: keep it, do not impute β€” it is a free distractor.",
"payment_status has 124,780 rows valued '-' plus 3,019 Void-Reconciled and 5,223 Stopped-*. The voids are the natural void/reissue population for JE-04.",
"FY2027 is partial (52,605 rows at time of check) β€” exclude or the volume profile skews.",
"Updated nightly, so row counts drift. Snapshot to Parquet once and version it, or task instances are not reproducible."
],
"licence": "State of Connecticut open data. No stated restriction; attribute the source."
}
},
"DS-B": {
"name": "City of Houston Checkbook",
"org": "City of Houston Enterprise Data Office",
"url": "https://data.houstontx.gov/dataset/checkbook",
"access": "CSV, one file per year, 2018–present. ODC-BY licence.",
"fields": "18 columns, Title Case with spaces: Payment Document Number, Fund ID/Name, Department ID/Name, WBS ID/Description, GL Account Number/Description, Vendor Name, Vendor Invoice, Fiscal Year, Clearing Date, Amount, Type of procurement, Purchase Order Number/Item, Contract Number. Pinned verbatim in app/src/je_validation/ingest/ds_b/schema.py.",
"why": "Second independent real ledger. Use it as a held-out distribution so tasks tuned on CT do not overfit one entity's coding conventions.",
"role": "HELD-OUT BASE LEDGER",
"ingest": {
"id": "DS-B",
"status": "VERIFIED LIVE 2026-08-05 Β· snapshot frozen (manifest ds_b_2026-08-05)",
"vol": "2,293,699 rows Β· FY2018–2026 Β· 9 per-year CSVs",
"how": "CKAN dataset page: https://data.houstontx.gov/dataset/checkbook β€” download per-year CSVs.",
"snippet": "# headers pinned in app/src/je_validation/ingest/ds_b/schema.py\nhead -1 checkbook-2026.csv",
"gotchas": [
"18 Title Case columns; the rename layer in app/src/je_validation/ingest/translate.py maps 14 of DS-A's 29 typed columns β€” payment_status, vendor_id, invoice_date and 12 others have no counterpart.",
"Amounts may carry thousands separators; the cast strips them under an exact-cents guard.",
"A Power BI report is published alongside; ignore it, take the CSVs."
],
"licence": "Open Data Commons Attribution Licence (ODC-BY) β€” attribution required on any derived data you distribute."
}
},
"DS-C": {
"name": "Open Checkbook BR (Baton Rouge)",
"org": "City of Baton Rouge / East Baton Rouge Parish, Finance",
"url": "https://data.brla.gov/resource/7qhq-wwsg",
"access": "Socrata CSV / JSON export. 787,690 rows, 2018–2026, 29 columns. Verified live 2026-08-05.",
"fields": "jrnl_entry_year/per, fund + seg ids, department/function/division, invoice_status, check_number/date, invoice_number/date, line_number, line_item_amount/desc, source_document + type/desc, object (expense category id) + desc, commodity, vendor_name/zip, payment_type, payment_status.",
"why": "Held-out second real ledger, chosen for carrying what Houston and Boston lack: payment status (zero blanks), invoice date/number/line (near-zero blanks), a flagged void population (2,509 'V' invoices), accounting periods, and a populated description field. 15 of DS-A's 29 typed columns map by rename; its year/period fields are calendar-basis and deliberately stay source-named.",
"role": "HELD-OUT BASE LEDGER",
"ingest": {
"id": "DS-C",
"status": "VERIFIED LIVE 2026-08-05",
"vol": "787,690 rows Β· 2018–2026 Β· 2026 partial (41,856 rows)",
"how": "Socrata REST. Base: https://data.brla.gov/resource/7qhq-wwsg.json β€” same query surface as DS-A. CSV export: https://data.brla.gov/resource/7qhq-wwsg.csv",
"snippet": "# count\ncurl 'https://data.brla.gov/resource/7qhq-wwsg.json?$select=count(*)'\n# one journal-entry year\ncurl \"https://data.brla.gov/resource/7qhq-wwsg.csv?\\$where=jrnl_entry_year=2024&\\$order=:id&\\$limit=1000000\"",
"gotchas": [
"Every value returns as a string β€” cast on ingest, exactly like DS-A.",
"check_date / invoice_date are ISO midnight timestamps with .000 β€” DS-A's date cast and midnight guard port directly.",
"object and seg1 are typed 'number' in portal metadata but are account/fund identifiers β€” keep them String.",
"Years are journal-entry (calendar) years, NOT July–June fiscal years like DS-A and Houston β€” never compare periods across datasets without a calendar mapping.",
"2026 is partial β€” the detect-partial logic must flag it.",
"This portal's SoQL rejects round(); do decimal checks at ingest, not in the API."
],
"licence": "Public Domain (portal metadata; attribution field 'Finance')."
}
},
"DS-D": {
"name": "Delphi General Ledger (USDOT)",
"org": "US DOT / Office of the Secretary, via Virginia Open Data",
"url": "https://data.virginia.gov/dataset/delphi-general-ledger",
"access": "HTML resource redirecting to the USDOT data inventory; request the extract.",
"fields": "USSGL chart of accounts with actual, budget and encumbrance balances, event timestamps, journal entry source information, ledger relationships.",
"why": "The only listed public source that carries budget and encumbrance balances alongside actuals plus JE source info β€” the substrate for obligation/encumbrance liquidation tasks.",
"role": "BUDGET + ENCUMBRANCE LAYER",
"ingest": {
"id": "DS-D",
"status": "NOT DIRECTLY DOWNLOADABLE β€” action required",
"vol": "Unknown",
"how": "Listed on data.virginia.gov but the resource redirects to the USDOT data inventory. Budget/encumbrance balances are what JE-10 needs and no other public source carries them.",
"snippet": "# fallback if the extract cannot be obtained:\n# synthesise the encumbrance layer on top of DS-A payments\n# (obligating doc register + encumbrance balances), keeping DS-A amounts real",
"gotchas": [
"Treat as a request-and-wait item. Do not block JE-10 on it β€” the fallback synthesis path is viable and keeps the payment distribution real.",
"Confirm whether the extract carries entry-level JE source info or only balances; JE-10 needs the former for wrong-document liquidation."
],
"licence": "US federal public domain, subject to the publishing agency's terms."
}
},
"DS-E": {
"name": "US Standard General Ledger β€” Accounts and Definitions",
"org": "Hugging Face (leeroy-jankins)",
"url": "https://huggingface.co/datasets/leeroy-jankins/US-Standard-General-Ledger-Accounts-And-Definitions",
"access": "Direct file download from the HF repo (Q&A CSV, chunked-text CSV, corpus TXT, PDF).",
"fields": "Q&A pairs about USSGL (ID, User, Questions, Agent, Answers) plus the chunked and plain-text corpus of USSGL Bulletin No. 2025-02 and its PDF. NOT a tabular chart of accounts.",
"why": "Citable USSGL authority text for the judge and for JE-17 classification rationale. A machine-readable account table is not included β€” if one is needed, extract it from the bulletin text/PDF or from Treasury's TFM USSGL supplement in the phase that needs it (JE-02's validity matrix comes from DS-A's own observed codes regardless).",
"role": "REFERENCE / MASTER DATA",
"ingest": {
"id": "DS-E",
"status": "FROZEN 2026-08-05 at pinned HF revision (manifest ds_e_2026-08-05)",
"vol": "Q&A pairs (100 rows) + chunked (1,068 rows) and plain-text corpus of USSGL Bulletin 2025-02 + PDF",
"how": "Hugging Face datasets: leeroy-jankins/US-Standard-General-Ledger-Accounts-And-Definitions",
"snippet": "# direct file download pinned to a commit sha β€” see app/scripts/fetch_ds_e.py",
"gotchas": [
"USSGL account numbers will NOT match DS-A's Connecticut account codes (e.g. 51250, 51730). Either build a crosswalk or use USSGL only as the definition authority for JE-17 and generate the validity matrix for JE-02 from DS-A's own observed code set."
],
"licence": "Check the dataset card before redistribution; underlying USSGL content is US federal."
}
},
"DS-F": {
"name": "SEC Financial Statement Data Sets",
"org": "US SEC (DERA)",
"url": "https://www.sec.gov/data-research/sec-markets-data/financial-statement-data-sets",
"access": "Quarterly ZIPs, 2009Q1–2026Q1. Four tab-delimited UTF-8 files: SUB (submissions, key adsh), NUM (numeric facts, key adsh+tag+version+ddate+qtrs+uom+coreg+segments), PRE (presentation, key adsh+report+line), TAG (taxonomy tags, key tag+version).",
"fields": "Numeric facts from the face of the financial statements, flattened from XBRL.",
"why": "Statement-level ground truth for roll-forward and restatement tie-out tasks. Lets a task ask 'does the entry population foot to the reported statement' with a real, checkable answer.",
"role": "STATEMENT TIE-OUT",
"ingest": {
"id": "DS-F",
"status": "URL confirmed 2026-08-03",
"vol": "Quarterly ZIPs, 2009Q1–2026Q1, 13KB–121MB each",
"how": "Index page: https://www.sec.gov/data-research/sec-markets-data/financial-statement-data-sets β€” quarterly ZIPs each containing four tab-delimited UTF-8 files: SUB (key adsh), NUM (key adsh+tag+version+ddate+qtrs+uom+coreg+segments), PRE (key adsh+report+line), TAG (key tag+version).",
"snippet": "# SEC REQUIRES a descriptive User-Agent or requests are blocked\ncurl -A 'Centific research contact@centific.com' -O <quarterly-zip-url-from-index-page>",
"gotchas": [
"Take the ZIP URLs from the index page rather than assuming a filename pattern β€” confirm before scripting.",
"A 'segments' field was added to NUM in December 2024, and SEC has since republished archive quarters with the current schema β€” every current download shares one 10-column NUM header. Pin snapshots by hash, not by quarter label; 2024q3 + 2026q1 are frozen (manifest ds_f_2026-08-05).",
"SEC publishes an accuracy disclaimer β€” these are analysis aids, not a substitute for the filings. Fine for our purposes, worth noting in any external write-up."
],
"licence": "US government public domain; accuracy disclaimer applies."
}
},
"DS-G": {
"name": "SEC Accounting and Auditing Enforcement Releases (AAERs)",
"org": "US SEC",
"url": "https://www.sec.gov/divisions/enforce/friactions.htm",
"access": "Public releases; AuditFraudBench (arXiv 2606.08345) documents a construction over 84 cases / 295 instances if you want a template.",
"fields": "Narrative enforcement findings: scheme mechanics, accounts affected, periods, restatement outcome.",
"why": "Outcome-labelled fraud patterns. Use to source realistic L4 fact patterns with a defensible 'correct answer' anchored in an enforcement finding rather than in an author's opinion.",
"role": "JUDGMENT FACT PATTERNS",
"ingest": {
"id": "DS-G",
"status": "Public, manual curation required",
"vol": "AuditFraudBench documents 84 cases / 295 instances as a construction template",
"how": "SEC AAER releases are public. Select cases whose mechanics map onto a JE population.",
"snippet": "# no API β€” curate case narratives, then map each to:\n# {mechanism, accounts, periods, restatement_delta}\n# cross-check restatement_delta against DS-F NUM pre/post values",
"gotchas": [
"Case selection needs SME review β€” not every enforcement narrative reconstructs into a JE population.",
"Anchor the quantified answer to DS-F values so the ground truth is checkable rather than authored."
],
"licence": "US government public domain."
}
},
"DS-H": {
"name": "deepAI β€” accounting anomaly lab data",
"org": "Schreyer et al. / HSG-AIML",
"url": "https://github.com/GitiHubi/deepAI",
"access": "GitHub repo with notebooks and downloadable lab dataset.",
"fields": "Categorical + numeric JE attributes with injected global and local anomalies.",
"why": "Reference implementation for how global vs local anomalies are injected and labelled. Borrow the injection taxonomy rather than the data itself.",
"role": "ANOMALY INJECTION REFERENCE",
"ingest": {
"id": "DS-H",
"status": "URL confirmed",
"vol": "Lab dataset + notebooks",
"how": "github.com/GitiHubi/deepAI β€” borrow the global/local anomaly injection taxonomy, not the data.",
"snippet": "git clone https://github.com/GitiHubi/deepAI",
"gotchas": [
"Use as a reference implementation for injection design. Building scored tasks directly on its data forfeits the real-distribution advantage of DS-A."
],
"licence": "Per repository licence."
}
},
"DS-I": {
"name": "Kaggle β€” General Ledger",
"org": "Kaggle (irfansharif)",
"url": "https://www.kaggle.com/datasets/irfansharif/generalledger",
"access": "Kaggle download.",
"fields": "Small GL extract.",
"why": "Was reserved as a pre-snapshot smoke-test fixture. The DS-A snapshot exists, so nothing needs it; kept listed only so source ids stay stable.",
"role": "UNUSED",
"ingest": {
"id": "DS-I",
"status": "Unused β€” DS-A snapshot exists",
"vol": "Small",
"how": "kaggle.com/datasets/irfansharif/generalledger",
"snippet": "kaggle datasets download -d irfansharif/generalledger",
"gotchas": [
"Nothing may depend on this dataset."
],
"licence": "Per Kaggle dataset terms."
}
},
"DS-J": {
"name": "Synthesised support-document pack",
"org": "Generated by us",
"url": "",
"access": "Generator to be written; one pack per task instance.",
"fields": "Invoice PDFs/text, contracts and SOW clauses, approval emails, calculation schedules, bank statements, policy manual, vendor master, period-close calendar, prior-period accrual history.",
"why": "No public source carries preparer support documents β€” this is the layer that makes L4 possible and is the only place the SME's tacit knowledge gets encoded. Generated deterministically from a seed alongside the defect ledger.",
"role": "SYNTHESISED EVIDENCE LAYER",
"ingest": {
"id": "DS-J",
"status": "TO BE BUILT β€” largest engineering item",
"vol": "One pack per task instance",
"how": "Deterministic generator seeded from (task_id, seed), emitting the support pack, master data and the defect ledger in a single pass.",
"snippet": "generate(task_id, seed) -> {\n ledger_slice, # sampled from the DS-A snapshot\n journal_entries, # postingised, balanced\n documents[], # invoices, POs, contracts, emails, schedules\n master_data{}, # accounts, vendors, periods, approval limits, users\n policy_manual{},\n defect_ledger[] # HELD OUT: entry_id, defect_type, revealing_evidence_id, correct_verdict\n}",
"gotchas": [
"The defect ledger must record which evidence reveals each defect β€” process scoring has no target without it.",
"Same seed must reproduce byte-identical packs, or cross-model comparisons are not comparable.",
"L4 packs consume an SME-authored disposition table as input; the generator cannot invent it."
],
"licence": "Ours."
}
}
}