File size: 17,511 Bytes
59db361
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
{
  "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."
    }
  }
}