# Krummholz BANKING77 curated sample, v2

A readable, traceable edition of public online-banking intent queries. This release retains 13,071 of 13,083 source queries across all 77 original intents: 9,992 train and 3,079 test. It restores account access, identity, card delivery, transfers and other adjacent support topics omitted from the previous ten-intent edition.

## Start here

1. Open preview.csv for one short training query per intent. This is an illustration, not a representative evaluation sample.
2. Read intent-glossary.csv for proposed plain-English names, descriptions and broader groupings.
3. Use train.csv and test.csv, or their equivalent JSONL files. CSV and JSONL are alternative encodings of the same records: do not concatenate them.
4. Review DATA-DICTIONARY.md and quality-report.json before modeling. ATTRIBUTION.md and the complete license explain reuse terms.

## What this can support

Intent classification, ticket routing prototypes, label-boundary review, and controlled paraphrase generation. Security, identity and account-access examples provide realistic adjacent banking coverage. All 77 categories remain banking intents: no genuine out-of-domain rejection set was added.

This is not a multi-turn conversation corpus, transaction ledger, refund eligibility dataset, policy manual, or a set of validated banking answers. No refund-policy answers, amounts due, customer outcomes or recommended actions were invented. No training-performance improvement has been measured. The original data is publicly available; this release adds curation and documentation, not proprietary customer observations.

## Annotation status

Original intent labels come from BANKING77 and are preserved exactly. intent_name, broad_category and the glossary descriptions are AI-proposed editorial metadata, not reviewed banking expertise. annotation_status refers to those new fields; it does not imply that the upstream labels were AI-generated. All new annotations await human review. The review worksheets contain blank decision fields. Potentially overlapping source intents, such as receiving_money/transfer_into_account, have not been merged or relabeled. The source label get_physical_card is misleading: 105 of its 106 retained training queries explicitly mention PIN. Its proposed readable name is Find the card PIN. The original source label remains unchanged; this interpretation still needs human review. See ANNOTATION-NOTES.md.

## Integrity and filtering

The build verified all 9 recorded local source checksums. Duplicate comparison applies Unicode NFKC, case folding and whitespace collapse, leaving punctuation in place. It does not change published text. Conflicting labels for the same normalized query are excluded as a group. Contact or long-number pattern matches are held out for review. Matching queries retain a single source record, preferring test over train, then lowest source row. This prevents normalized exact-query overlap across splits, not semantic overlap. See exclusions.csv for IDs and reasons, without reproducing quarantined query text. All originals remain available separately.

The package excludes 12 rows. See quality-report.json and intent-counts.csv for exact accounting. Because rows were removed, evaluation results are not directly comparable with scores on the untouched BANKING77 benchmark. This screen is not a privacy certification and cannot establish that every identifier has been removed.

## Using the files correctly

Train classifiers using text as input and intent as target. intent_name and broad_category describe the target and must not be passed as query features. Keep test out of model fitting, synthetic-data generation and iterative prompt tuning. Hold out an internal validation subset of train for tuning, with near-duplicate families kept together if identified. The preserved public test set may already be known to pretrained models. Synthetic paraphrases need their own provenance and human checks; do not label them as observed customer queries.

## Rebuilding

Python 3 standard library only. Download the original snapshot files named in UPSTREAM-PROVENANCE.json, including the locally generated normalized.jsonl whose hash is recorded there, or use the unchanged Krummholz source collection. Run:

    python build_banking.py PATH_TO_ORIGINAL_BANKING77 OUTPUT_DIRECTORY

The script verifies the full source collection, produces this folder and a sibling ZIP, and asserts count accounting, unchanged source values, unique normalized queries, intent coverage and CSV round trips. SHA256SUMS.txt covers package files; it excludes itself. ZIP bytes may differ because ZIP timestamps are not fixed, while data contents are deterministic.

## Licensing

CC BY 4.0, including commercial reuse with its conditions. Preserve attribution, the license link and notice of modifications. See ATTRIBUTION.md and LICENSE-CC-BY-4.0.txt. This is a Krummholz curation of PolyAI's dataset, not endorsed by PolyAI and not an MIT-licensed release.
