Examples
See practical automations in action
Run each demo with sample data directly in your browser. Everything stays local—no upload required.
Clean messy duplicate contacts (25k+ rows)#
Merge contacts from multiple CSVs, normalize emails and names, and safely dedupe 25k–50k rows with a review report.
Runs as: Desktop buttonSaves 1–3 hrs/runBuilt in 3–4 days
Steps
- Load 2–3 CSV exports (CRM, newsletter, spreadsheets)
- Validate and normalize columns (emails, names, phones)
- Lowercase + trim emails, strip whitespace & weird characters
- Standardize name casing (e.g. "joHN" → "John")
- Detect exact duplicates by email + phone
- Generate a review table with "keep/merge/drop" decisions
- Write out a cleaned, deduped master file and an audit log
See code excerpt
// Normalize name + email then dedupe
const { emailCol, fullNameCol, firstNameCol, lastNameCol } = resolveColumns(rows);
const seen = new Set<string>();
const out: Row[] = [];
for (const r of rows) {
const email = (r[emailCol] || "").trim().toLowerCase();
const name = fullNameCol && r[fullNameCol]
? r[fullNameCol]
: `${firstNameCol ? r[firstNameCol] : ""} ${lastNameCol ? r[lastNameCol] : ""}`.trim();
const cleanName = name.replace(/\s+/g," ").replace(/\b\w/g,m=>m.toUpperCase());
const normalized = { ...r, email, name: cleanName };
if (!email || !seen.has(email)) {
if (email) seen.add(email);
out.push(normalized);
}
}Try it with sample data
Runs in your browser. No upload required.
Elapsed: 00:00.00
Rename, classify & sort 1,000+ receipts#
Rename mixed JPG/PDF receipts using dates, vendors, and amounts, then sort into job and month folders with an audit log.
Runs as: Desktop buttonSaves 45–90 min/runBuilt in 3–5 days
Steps
- Scan a folder with hundreds of receipts (JPG, PNG, PDF)
- Extract dates from filenames and text (multiple formats)
- Parse vendors & amounts where possible; flag ambiguous files
- Generate standardized filenames: YYYY-MM-DD_Vendor_Amount.ext
- Map receipts to client/job folders based on naming rules
- Move files into Year/Month/Client folders
- Output a summary CSV of all renamed and moved receipts
See code excerpt
// Extract date from messy filename
const date =
receipt.date ||
extractDateFromFilename(receipt.name) ||
"2024-01-01";
const newName = `${date}_receipt_${cleanBase}.${ext}`;Try it with sample data
Runs in your browser. No upload required.
Elapsed: 00:00.00
Smarter deduping with typos, nicknames & formats#
Catch near-duplicates across multiple exports using fuzzy matching on names, emails, and phone numbers — even with typos.
Runs as: Desktop buttonSaves 1–2 hrs/runBuilt in 3–4 days
Steps
- Parse multi-source contact CSVs (CRM, email tool, spreadsheets)
- Normalize phones (strip symbols, country codes, extensions)
- Normalize names (split first/last, handle nicknames)
- Compute similarity scores on name + email + phone
- Cluster likely duplicates with confidence scores
- Surface "canonical" record suggestions per cluster
- Export a cleaned master list and a review CSV of all clusters
See code excerpt
// Normalize columns then fuzzy match (capped to 2k contacts)
const contacts = parseCsv(text);
const result = findFuzzyDuplicates(contacts);Try it with sample data
Runs in your browser. No upload required.
Elapsed: 00:00.00