Document Data Cleaner
Under maintenancePricing
Pay per usage
Document Data Cleaner
Under maintenanceCleans, normalizes, validates and deduplicates commercial CSV files before import into ERPs and e-commerce. Deterministic, no LLM, no external network.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Stefano Musarra
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Microsoftware deterministico per pulire, normalizzare, validare e deduplicare file CSV commerciali prima dell'import in gestionali ed e-commerce. Nessun LLM, nessuna rete, nessuna dipendenza: solo Node.js stdlib. Primo artefatto dell'esperimento "Strada C" del Money Engine (budget 0).
Cosa fa
- Parser CSV robusto (campi quotati, virgole e newline dentro le virgolette, quote escapate).
- Normalizzazione automatica per colonna:
- tutte le colonne: trim + collapse degli spazi multipli;
- colonne email (header contenente "email"/"e-mail"/"mail"): lowercase + validazione formato;
- colonne telefono (header contenente phone/tel/cellulare/telefono/mobile): solo cifre con eventuale "+" iniziale;
- colonne importo (header contenente importo/prezzo/amount/price/total/totale/value/valore/costo/cost): decimale canonico con punto (accetta
1.234,56,1234,56,1,234.56,€ 1.234,56, spazi).
- Deduplica per colonne chiave (default: intera riga normalizzata, confronto case-insensitive), tenendo la prima occorrenza.
- Validazione: campi obbligatori mancanti, email non valide, importi non numerici, righe con numero di campi diverso dall'header.
- Report JSON versionato con conteggi e dettaglio per riga.
Uso
node main.js --in input.csv --out cleaned.csvnode main.js --in input.csv --out cleaned.csv --report report.jsonnode main.js --in input.csv --out cleaned.csv --key email --required email,namenode main.js --in input.csv --out cleaned.csv --on-invalid dropnode main.js --in - --out cleaned.csv # legge da stdin
Opzioni: --in, --out, --report, --key col1,col2, --required col1,..., --on-invalid keep|drop, --delimiter ,, --bom, --help.
Exit code: 0 elaborazione riuscita (anche con problemi segnalati), 1 errore d'uso, 2 errore di input/output.
Esempio end-to-end
node main.js --in demo/input.csv --out demo/output.csv --report demo/report.json --key email --required email,name
Limiti onesti
- Non fa scraping, non recupera dati da fonti esterne: lavora solo su file forniti dal cliente o sintetici.
- Non pubblica nulla e non crea account: la pubblicazione su Apify Store richiede account e approvazione esplicita di Stefano.
- Non è ancora venduto: è un artefatto pronto e testato in locale, non un prodotto con clienti.
- Le righe con problemi restano nell'output di default (
--on-invalid keep): scelta prudente, non si buttano righe di lavoro senza ordine esplicito.
Calcolo del margine (numeri Apify verificati)
Fonti: docs.apify.com (monetizzazione Actor, pricing e costi), lette il 2026-10-19.
- Formula verificata: utile = 0,8 × ricavi − costi piattaforma.
- Compute unit (FREE tier): 0,20 USD / CU.
- Modello: pay-per-event (prezzo per evento/run).
- Gli utenti del piano free di Apify sono esclusi dal profitto (non generano ricavi per l'Actor).
Scenari IPOTETICI (i prezzi sono esempi, non previsioni né promesse; il volume reale di run a pagamento è sconosciuto):
| Prezzo evento (USD) | Eventi | Ricavi lordi (USD) | Quota piattaforma 20% (USD) | Utile prima compute (USD) |
|---|---|---|---|---|
| 0,01 | 100 | 1,00 | 0,20 | 0,80 |
| 0,01 | 1.000 | 10,00 | 2,00 | 8,00 |
| 0,05 | 100 | 5,00 | 1,00 | 4,00 |
| 0,05 | 1.000 | 50,00 | 10,00 | 40,00 |
| 0,10 | 100 | 10,00 | 2,00 | 8,00 |
| 0,10 | 1.000 | 100,00 | 20,00 | 80,00 |
Il costo compute si sottrae dall'utile prima compute: con il FREE tier il costo è 0 fino al limite gratuito, poi 0,20 USD/CU. Se il costo per run supera l'80% del prezzo evento, il prodotto va fermato (stop condition del Money Engine).
Test
node test/run-tests.js
Tutti i test devono passare (exit 0). I dataset in test/datasets/ e demo/ sono sintetici: nessun dato reale di persone o clienti.