CSV files and records
Column profiles, field rule checks, merges of several sources and duplicate finders for CSV records. Corrections go to a new copy, never into the original file.
11 shown here, each at the exact version the library release of October 9, 2026 serves.
What to watch for
- An empty cell, an empty string and the text NULL are three different values.
- Duplicates rarely match exactly, so compare normalized keys within blocks.
- Correct a copy of the table and keep the original for comparison.
Test packs and checks
Column profile of a CSV table
column_profileSummarize each column of a CSV without declared rules: missing values, distinct values, inferred type, frequent values, value shapes, lengths, quartiles, mean, standard deviation, outliers, date ranges, duplicate rows and constant or mostly empty columns.
- Runs with
- Python 3.10 or later
- Command
python3 column_profile.py < input.json
Record entry validator with normalization rules
record_entry_validatorCheck rows of records (CSV or objects) against declared field rules for type, required, allowed values, pattern, bounds, length and unique keys, after normalizing case, spaces, digits and dates, and list each error by row.
- Runs with
- Python 3.10 or later
- Command
python3 record_entry_validator.py < input.json
Multi-source table merge with provenance and conflicts
multi_source_table_mergeCompile one table from several CSV sources by mapping columns to target fields, converting units, matching on key fields, taking values by source priority, recording which source gave each value and listing disagreements.
- Runs with
- Python 3.10 or later
- Command
python3 multi_source_table_merge.py < input.json
Duplicate record finder with blocking and weighted similarity
duplicate_record_finderFind likely duplicate records by comparing only pairs that share a blocking key, scoring weighted field similarities (exact, normalized, token overlap, edit distance, digits, date) and grouping duplicates into clusters.
- Runs with
- Python 3.10 or later
- Command
python3 duplicate_record_finder.py < input.json
Find duplicate customer, company or contact records with blocking keys
find_duplicate_records_with_blocking_keysFind duplicate customer, company or contact records (dedupe, deduplicate, deduplication, record linkage) without comparing every row with every other row: group rows by blocking keys from name, address, email and phone, compare inside groups, and report oversized groups that were skipped.
- Files
- SKILL.md
Score whether two records are the same entity
score_duplicate_pairs_by_weakest_signalScore whether two records are the same entity (fuzzy matching): build comparison keys for name, address, email and phone, measure token overlap and sequence similarity, and let the weakest field set the confidence.
- Files
- SKILL.md
Turn duplicate pairs into clusters and a merge proposal with one survivor for each cluster
propose_a_dedupe_without_deleting_rowsTurn duplicate pairs into clusters and a merge proposal with one survivor for each cluster, keep first or keep most complete, without deleting any row.
- Files
- SKILL.md
Copy a table with corrections and an approved dedupe, never in place
copy_a_table_with_corrections_never_in_placeApply data corrections and an approved dedupe while copying a delimited file or a SQLite table to a new target, without touching the original.
- Files
- SKILL.md
Find malformed values in a column that should follow one format
detect_malformed_values_by_dominant_patternFind malformed values in a column that should follow one format, such as dates, postal codes or identifiers, by comparing the character pattern of each value with the dominant pattern.
- Files
- SKILL.md
Profile a text column before cleaning it
profile_text_column_before_cleaningProfile a text column before cleaning it: count case, whitespace, Unicode, email, website, phone and legal suffix signals, find the common character patterns, and propose cleaning rules with the evidence for each.
- Files
- SKILL.md
Manage exception lists for data cleaning in layers with a fixed precedence
layer_exception_catalogs_with_precedenceManage exception lists for data cleaning in layers with a fixed precedence: packaged general list, task folder file, casings learned from the column, rule parameters and recorded answers.
- Files
- SKILL.md
Give your agent these components
Your harness downloads them through Baltor with Pro, $49 a month. Cancel any time from your account page.
More from Corner cases
- Dates, times and time zonesIANA time zone tables with aliases, abbreviations and offsets, RFC 3339 helpers, date formats by country, and checkers for out-of-order timestamps and missed deadlines.
- Text, Unicode and encodingsLook-alike Unicode characters, Unicode blocks and emoji tables, base64 and base58 validators, and normalizers for whitespace, Unicode and personal data in free text.
- Numbers, currencies and localesDecimal and group separators by locale, currency formats and their minor units, phone number formats, radix parsing and exact comparison of two proportions.
- Names, addresses and identifiersAddress line parsing, name capitalisation, company suffixes, email and website repair, postal code formats for 246 countries, and validators with check digits.
- JSON Schema and API requestsJSON Schema 2020-12 conformance test groups, and API request cases that each change one field of a valid request and expect exactly one validation error.
- Files, transfers and 3D exportsFile transfers in checked parts, glTF and Godot checkers that catch lost animation and joints, and conformance tools for TOML parsers, HTTP/2 servers and Matroska files.
- Deterministic skillsSkills that give the same answer every time.
- Harness toolsTools your coding agent can call.
- Data cleanup with and without BaltorWe measured library items against no item on a data cleanup task. They did not help on this test, and one item made results worse.
- Expertise for the whole teamFor a team lead who wants the same skills, tools and files available to every person and every agent on the team.
- What it is and what it costsWhat Baltor is, what stays in your environment and what it costs, for someone comparing tools before anything else.
- Harness FilesSkills, instruction files, tools, hooks and settings your harness picks up: what they are, how a harness gets them, and the setup for each harness.
- GalleryBrowse Baltor's original Godot shaders, procedural textures, meshes and Blender tools, each with the render its engine check recorded.