> 🌐 **Language:** English Β· [EspaΓ±ol](README.es.md) # DataTools Local CSV / Excel cleaning. CLI + browser GUI, no cloud, no install ceremony. GUI ships with English and Spanish language packs. ## Tools | # | Tool | Status | |---|------|--------| | 01 | **Find Duplicates** β€” exact + fuzzy match, 5 normalizers, survivor rules, audit | Ready | | 02 | **Clean Text** β€” whitespace, smart chars, BOM, line endings, case ops | Ready | | 03 | **Standardize Formats** β€” dates, phones, emails, addresses, names, currencies, booleans | Ready | | 04 | **Fix Missing Values** β€” disguised-null detection, profile, mean/median/mode/ffill/bfill/interpolate, drop strategies | Ready | | 05 | **Map Columns** β€” fuzzy auto-rename, target schema with type coercion, required fields with defaults, drop/reorder | Ready | | 06 | Find Unusual Values | Coming Soon | | 07 | Combine Files | Coming Soon | | 08 | Quality Check | Coming Soon | | 09 | **Automated Workflows** β€” chain tools with recommended (not forced) order, save/load JSON, automate weekly cleanups | Ready | Every tool page has an in-tool **Help** popover (right of the title) with a compact When-to-use / Steps / Examples / Tip card. Copy lives in the language packs (`tools..help_md`). ## Download (non-technical users) Pre-built bundles β€” no Python install, no admin rights, no internet at runtime. Each release ships an **installer** per OS that wires up Desktop + Start Menu / Launchpad shortcuts. | Platform | Installer | |---|---| | **macOS** | `DataTools-X.Y.Z-mac.dmg` β€” open, drag DataTools.app into /Applications, launch from Launchpad. | | **Windows** | `DataTools-X.Y.Z-win-setup.exe` β€” run installer (per-user, no admin). Desktop shortcut + Start Menu entry created. | | **Linux** | `DataTools-X.Y.Z-linux-x86_64.AppImage` β€” `chmod +x`, double-click. The AppImage is already portable. | Latest release: see [GitHub Releases](https://git.invixiom.com/giteadmin/datatools-dev/releases) (or the Gumroad listing). Each bundle is ~300 MB unpacked; on first launch the app starts a local server at http://127.0.0.1:8501 and opens your default browser. Nothing leaves your machine. **Tesseract OCR is bundled.** Scanned-PDF support in the PDF Extractor works out of the box on all three platforms β€” no separate Tesseract install required. License attribution: see [`LICENSE_TESSERACT.txt`](LICENSE_TESSERACT.txt). **First-launch warnings (one-time):** - **macOS** unsigned builds: right-click β†’ **Open** β†’ confirm. (Signed builds skip this.) - **Windows** SmartScreen: click **More info** β†’ **Run anyway**. Detailed install + troubleshooting walkthrough: [User Guide Β§1](docs/USER-GUIDE.md#1-install). ## Install from source (developers) ```bash pip install -r requirements.txt ``` Python 3.10+ required. ## Run **GUI** (recommended): ```bash streamlit run src/gui/app.py ``` **CLI** β€” seven entry points: ```bash python -m src.cli customers.csv [--apply] # dedup python -m src.cli_text_clean messy.csv [--apply] # text clean python -m src.cli_format intl.csv [--apply] # format standardize (auto-streams >100 MB) python -m src.cli_missing holes.csv [--apply] # missing values python -m src.cli_column_map vendor.csv [--apply] # column mapper python -m src.cli_pipeline any_file.csv [--apply] # chain tools end-to-end python -m src.cli_analyze any_file.csv [--json] # scan only ``` Every CLI runs preview-only by default; add `--apply` to write output. ## Language The GUI sidebar has a language picker. Packs ship for **English** and **EspaΓ±ol** (`src/i18n/packs/`); the choice persists for the session. Adding a language: drop a `.json` next to `en.json` mirroring its key tree, then list it in `LANGUAGES`. See [Developer Guide Β§i18n](docs/DEVELOPER.md#i18n--language-packs). ## Review & Normalize gate Every uploaded file passes through a CSV-normalization gate before any tool sees it. The analyzer flags ~15 issue types (whitespace, NBSP / zero-width chars, BOM, encoding, smart punct, dirty headers, null sentinels, mojibake, …) tagged by **confidence** (high / medium / low) and **fix action**. The GUI shows each finding with Auto-fix / Skip / Customize, a live before/after preview, and an encoding-override picker. Tool pages refuse to load until the gate passes. ## Output Every run writes: - `{input}_.csv` β€” the cleaned data - `{input}_changes.csv` (text cleaner) or `{input}_match_groups.csv` (dedup) β€” audit trail - `logs/_YYYYMMDD_HHMMSS.log` β€” debug-level run log Original input file is never modified. ## Docs - [User Guide](docs/USER-GUIDE.md) β€” install, GUI workflow, gate - [CLI Reference](docs/CLI-REFERENCE.md) β€” every flag with recipes - [Requirements](docs/REQUIREMENTS.md) β€” file sizes, encodings, detectors, perf targets - [Technical](docs/TECHNICAL.md) β€” architecture, gate internals, fix registry - [Developer Guide](docs/DEVELOPER.md) β€” adding fixes / detectors / standardizers ## Dependencies `pandas`, `openpyxl`, `rapidfuzz`, `phonenumbers`, `typer`, `loguru`, `charset-normalizer`, `streamlit`. Optional: `ftfy` for mojibake repair. ## License Proprietary.