First result / Premier résultat
Installation goal: about 10 minutes; no external participant timing has been measured yet. / Objectif d’installation : environ 10 minutes, non encore mesuré auprès d’utilisateurs externes.
Pack 1.0.0 · **exact version tested: n8n 2.42.4**, self-hosted Docker. No n8n subscription, AI/API key, community node or credential is included or required for the five manual runs. You need your own existing n8n installation and permission to import/edit workflows. Cloud import is prepared but not verified on a paid Cloud account.
FR · Première utilisation
1. Dans n8n, créez un workflow vide. Menu du workflow → **Import from File** → sélectionnez UN fichier `workflows/<nom>.json`. Le fichier `pack.json` est réservé à l'import CLI du pack entier. 2. Ouvrez **Configuration** : remplacez `asOf` par la date du jour, au format YYYY-MM-DD (exemple figé au 7 octobre 2026), `locale` par `fr` ou `en`. `minimumBudgetCents` sert à la qualification ; `reminderDays` à la cadence des brouillons de relance. Les montants sont toujours en centimes entiers, en EUR. 3. Cliquez **Execute workflow**. Le workflow est manuel et inactif ; il ne peut pas envoyer d'email ni écrire dans un compte tiers. Un registre exemple vide est fourni. 4. Ouvrez **Review and export** → JSON pour lire `summary`, `rows`, `errors` et `skipped`. Onglet Binary → `report` → téléchargez le CSV. Les champs monétaires ont le suffixe Cents : divisez par 100 pour un affichage en euros. Si `ready: 0`, vérifiez les raisons dans skipped ; c'est un résultat valide. 5. Remplacez l'objet JSON dans **Input records** avec vos données, selon `samples/`. Conservez la forme `return [{json: {...}}];`. Travaillez d'abord sur un export réduit, sans données sensibles. Maximum 1 000 lignes. Ne placez jamais de credential ici. 6. Relisez les résultats. Les brouillons sont à copier et adapter : rien n'est envoyé. Les rapprochements sont indicatifs ; ne comptabilisez rien automatiquement sur leur seule base.
EN · First use
1. Create a blank workflow in your n8n. Workflow menu → **Import from File** → choose one `workflows/<name>.json`. `pack.json` is for the CLI bulk importer. 2. Edit **Configuration**: set `asOf` to today's YYYY-MM-DD, choose `locale: "en"` or `"fr"`. Sample date is fixed at 2026-10-07 for repeatability. Budget and reminder cadence live here. All amounts use integer EUR cents. 3. **Execute workflow**, then inspect **Review and export** JSON and download the `report` CSV from Binary. `ready: 0` is legitimate: check skipped reasons and errors. 4. Replace **Input records**' sample object with your snapshot. Keep `return [{json: {...}}];`, the schema from `samples/`, and the 1,000-row limit. Never put credentials in exported Code nodes. 5. Review results before any business action. No email, CRM mutation or bookkeeping write is built in.
Replay, retries and durable state
`nextProcessedKeys` is a **proposed** registry, not saved automatically. Keep its keys only after reviewing/accepting the matching actions, then pass them as `processedKeys` on the next run. Invalid rows are never marked processed. Keys use workflow + stable record ID; invoice/quote reminders also use the highest reached day bucket (3/7/14 by default), so a later bucket permits a new follow-up. Lead IDs must represent a stable request; changing a record with the same ID does not automatically reprocess it. For expense corrections, omit the specific old key deliberately only after checking previous actions. Expense runs also produce `nextConsumedReceiptIds`: persist it and pass it back as `consumedReceiptIds` to prevent reusing one receipt across runs.
For pipeline totals, use a complete snapshot with `processedKeys: []` each time. Its dated keys can prevent identical same-day rows if desired, but totals then cover only newly ready rows, not the whole business. Do not sum repeated snapshots.
In this v1 the registry is operator-managed JSON. It is NOT a database, an atomic lock, or an exactly-once delivery guarantee. For unattended schedules, use an authenticated source plus durable transactional ledger with a unique action key and single-writer/concurrency controls; do not just activate this manual workflow. External actions must be idempotent at their destination and keys committed after success.
The processing Code node retries an unexpected failure up to three total attempts with a one-second wait. Validation errors per record are isolated into `errors`; malformed root datasets fail the execution. Retrying invalid input will not repair it. Test-only fault injection exists only in generated validation clones, not shipped workflows. Since this pack has no network adapter, no HTTP timeout, rate-limit or provider-delivery test is claimed.
External integration, optional custom work
To feed data from Sheets/CRM/accounting, add the official read-only source node, create credentials **in your n8n credential store**, and map its output to one object `{records, processedKeys, receipts?, consumedReceiptIds?}`. If replacing Input records, preserve the upstream Configuration node name used by the processor. Do not copy credential IDs/secrets into these distribution files. A webhook must have authentication, request/body limits and schema validation before use; none is activated here.
For email delivery use a separate, reviewed adapter with a dedicated send credential and approval, least privilege, delivery logs, durable action keys and provider-specific retries. External credentials and sending/CRM writes are **not included or tested** in v1. No exported node has a `credentials` field.
Troubleshooting
- `input.records must be an array`: supply the one JSON object from the sample, not separate unwrapped records. - `calendar date`: use a real YYYY-MM-DD; no locale-dependent date parsing. - Invalid amount/currency: use non-negative integer cents and EUR; split currencies into separate mapped datasets. No FX conversion. - Zero ready rows: inspect statuses, dates, skipped reasons and previously processed keys. - Expense `missing`/`ambiguous`/`receipt_already_used`: review original receipt/reference; exact date, amount, EUR and reference must agree. No fuzzy vendor matching. - Import/name issue: import an individual JSON into a blank workflow. CLI import overwrites matching IDs; never import the bulk pack over an existing edited pack without backup. - Before an upgrade: export your adapted workflows securely, test the new version in an isolated instance, then import there first.