agentCLAWHUBUnverified

Rapprochement Bancaire

Moteur comptable quotidien du cabinet. Analyse les dossiers clients déjà classés par organisation-documents, rapproche les paiements avec les factures, valid... Skill: Rapprochement Bancaire Owner: trendex Summary: Moteur comptable quotidien du cabinet. Analyse les dossiers clients déjà classés par organisation-documents, rapproche les paiements avec les factures, valid... Tags: latest:1.0.2 Version history: v1.0.2 | 2026-06-03T16:16:30.543Z | user Version 1.0.2 - Nettoyage majeur : suppression de fichiers inutilisés (scripts annexes, fichier méta, skill-card). - Ajout d’un

OpenClaw

Rank

62

Safety

84

Downloads

2.0k

Updated

Oct 9, 2026

Version

1.0.2

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 2K downloads reported by the source. Last updated 10/9/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 9, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 9, 2026
Adoption signal
2K downloadsadoption · observed Oct 9, 2026
Latest release
1.0.2release · observed Jun 3, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s171rnymrzgb46f7qxnxd5034586ma2f:rapprochement-bancaire
  1. Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-trendex-rapprochement-bancaire/snapshot"

Documentation

CLAWHUB

144,134 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: rapprochement-bancaire
description: Moteur comptable quotidien du cabinet. Analyse les dossiers clients déjà classés par organisation-documents, rapproche les paiements avec les factures, valide la TVA, maintient followup.json / relances.json / anomalies.json. Le travail réel est fait par scripts/main.py (qui appelle scripts/extract.py). Ne traite jamais les e-mails, ne classe jamais de documents.
license: Interne — usage privé OpenClaw
---

# Skill `rapprochement-bancaire`

> Moteur d'état. Travaille uniquement sur l'arborescence `clients/<slug>/...` produite par `organisation-documents`.
> **Le travail réel est fait par `scripts/main.py`** (qui appelle `scripts/extract.py` pour toute l'extraction de texte). Ce skill = quand le lancer + comment rendre compte.

---

## ⚠️ Règle absolue — EXÉCUTION DU SCRIPT (non négociable)

**Pour chaque invocation, la SEULE action correcte est d'exécuter la commande :**

```bash
python3 scripts/main.py <racine_clients>
```

puis de lire les `followup.json` / `relances.json` / `anomalies.json` par client + le `compta_batch_report_<date>.json` consolidé, et de relayer au comptable.

### ❌ INTERDIT

- **Réimplémenter le rapprochement en Python inline / pseudo-code.** La logique (Pass 1 par référence, Pass 2 fuzzy, validation TVA, détection des anomalies, statuts overdue/partial, génération des relances) est dans `scripts/main.py`. La refaire à la main est garanti de diverger.
- **Écrire `followup.json` / `relances.json` / `anomalies.json` à la main.** C'est le script qui le fait, dans son format exact (liste d'objets avec les champs `invoice_id`, `type`, `amount`, `status`, `bank_matched`, `matched_tx`, …). Toute autre forme (dict keyé, champs `payments` / `amount_paid` ad hoc) casse les lectures ultérieures.
- **Modifier le format des fichiers de sortie.** Le format est contractuel entre ce skill et d'éventuels skills aval (`relances`, dashboards).

### ✅ OBLIGATOIRE

1. Exécuter la commande shell ci-dessus.
2. Lire les fichiers produits.
3. Relayer au comptable un tableau lisible par client (factures payées / en attente / partielles / overdue, anomalies — en mettant en avant les **bloquantes**).

### Si le script échoue

Signale l'erreur exacte (stderr). Ne rejoue PAS le batch à la main.

> Pourquoi : on a déjà eu un run où l'agent a produit un `followup.json` au mauvais format (dict avec clés `"in/N"`, champs `payments`/`amount_paid`/`amount_remaining` au lieu de `bank_matched`/`status`). Conséquence : aucun outil ni skill aval ne pouvait l'exploiter. Le script génère le bon format à tous les coups.

---

## Exécution

```bash
python3 scripts/main.py [<racine_clients>]
# racine_clients par défaut : ~/.openclaw/workspace/clients
```

À lancer :
- une fois par jour (idéalement la nuit), sur tous les clients ;
- ou immédiatement après un trigger `rapprochement-bancaire` émis par `organisation-documents`.

Le script :

1. **Parcourt** `clients/*` en ignorant les dossiers techniques `_*` (`_a-identifier`, 

README.md

# rapprochement-bancaire

> Claude skill for **French accounting firms** (`cabinets comptables`). Reads the `clients/<slug>/...` tree produced by [`organisation-documents`](https://github.com/developers-trendex/organisation-documents), reconciles each invoice with its bank-statement transaction, validates VAT, and writes one `followup.json` / `relances.json` / `anomalies.json` per client plus a consolidated report. Deterministic script-driven.

## What it does

For each invocation, the skill runs **one command** :

```bash
python3 scripts/main.py <clients_root>
```

That script:

1. Walks every client folder under `<clients_root>` (skipping `_a-identifier/`, `_incomplet/`, `_non-attribue/`, `_cabinet/`).
2. For each active period (current + previous month, plus any older month without `batch.lock.json`) :
   - Reads invoices from `invoices/in/` and `invoices/out/`.
   - Reads transactions from `bank-statements/` via `scripts/extract.py` (one line per transaction, with the `REF`/`FACT <id>` reference captured when present).
3. Reconciles in two passes (amount compared in absolute value — an `out` invoice is settled by a credit, an `in` by a debit) :
   - **Pass 1** — direct match by invoice reference (`REF` / `FACT` in the bank label). Exact amount (±1 €) → `paid` ; lower amount → `partial` with `amount_paid` and `amount_remaining` ; higher → `paid` with `overpaid_by`.
   - **Pass 2** — fuzzy : `|amount| ±1 €` **and** counterparty-name similarity ≥ 0.6.
   - No match + due date passed → `overdue`.
4. Validates VAT on each invoice : if `|VAT declared − TOTAL HT × rate| / expected > 5 %`, flags a blocking `tva_incorrecte` anomaly (exempted-VAT invoices are silently ignored).
5. Detects other anomalies (see below).
6. Generates relances based on lateness (`overdue`, `partial`, `unpaid` past due).
7. Writes per-client JSON files + `compta_batch_report_<date>.json` consolidated.

The agent only **reads the JSON files and relays the summary to the accountant** — payments, late invoices, anomalies (highlighting blocking ones), no technical paths.

## Statuses (`followup.json`)

| Status     | Meaning                                                                   |
| ---------- | ------------------------------------------------------------------------- |
| `unpaid`   | Not yet due, no payment                                                   |
| `paid`     | Payment confirmed                                                         |
| `partial`  | Partial payment — `amount_paid` + `amount_remaining` kept                 |
| `overdue`  | Due date passed, no payment                                               |

## Anomalies (`anomalies.json`)

**Blocking** (period cannot be locked) :

| Type                          | Condition                                                                                       |
| ----------------------------- | ----------------------------------------------------------------------------------------------- |
| `doub

_meta.json

{
  "ownerId": "kn7ethsmh4zep86d7ew9wsns2x86jwhr",
  "slug": "rapprochement-bancaire",
  "version": "1.0.2",
  "publishedAt": 1780503390543
}

references/csv-schema.md

# Référence — Schéma CSV de rapprochement & état persisté

> Référence chargée à la demande par `rapprochement-bancaire`. Format du CSV, enum `anomalie`, schéma de `rapprochement-state.json`.

---

## Localisation du CSV

```
clients/<slug>/<AAAA>/<MM>/rapprochement.csv
```

Un fichier par (client, mois). Réécrit en entier à chaque run du mois concerné (idempotent). Pas d'append.

---

## Encodage et locale

- **Encoding** : UTF-8 avec BOM (`` en tête) — pour Excel français qui sinon mojibake.
- **Séparateur** : `;` (semicolon) — convention française, évite la confusion avec décimales `,`.
- **Décimal** : `,` (virgule).
- **Date** : `AAAA-MM-JJ` (ISO 8601, lisible par tout tableur).
- **Saut de ligne** : `\r\n` (CRLF) — compatibilité Windows / Excel.
- **Quotes** : `"` autour des champs qui contiennent `;`, `"`, ou `\r\n`. Doubler les `"` internes (`""`).

---

## Colonnes du CSV

| #  | Colonne                | Type          | Description                                                                                  |
| -- | ---------------------- | ------------- | -------------------------------------------------------------------------------------------- |
| 1  | `ligne`                | int           | Numéro de ligne séquentiel (1, 2, 3, …) — facilite la référence dans les conversations       |
| 2  | `source`               | enum          | `transaction` (ligne de relevé), `facture_non_payee` (facture sans transaction)              |
| 3  | `compte`               | string        | Banque ou compte (ex : `BNP-courant`, `Qonto-pro`) — vide si `source=facture_non_payee`      |
| 4  | `date`                 | date          | Date transaction OU date d'émission de la facture                                            |
| 5  | `libelle`              | string        | Libellé brut du relevé ou raison sociale + n° facture                                       |
| 6  | `montant`              | decimal       | Signé (`+` crédit, `-` débit)                                                                |
| 7  | `categorie_auto`       | enum          | `match` / `frais_bancaires` / `rh_charges` / `transfert_interne` / `non_categorise`         |
| 8  | `match_facture`        | string        | Numéro de facture matchée — vide si non-match                                                |
| 9  | `match_emetteur`       | string        | Raison sociale de la facture matchée                                                         |
| 10 | `match_mois_origine`   | string        | `AAAA-MM` du mois d'origine de la facture si différent du mois courant — vide sinon          |
| 11 | `confidence`           | enum          | `fort` / `moyen` / `faible` / `aucun`                                                        |
| 12 | `anomalie`             | enum          | cf. table ci-dessous — vide si aucune                                                        |
| 13 | `montant_attendu`      | decimal       | Montant TTC de la facture matchée — vide si non-match    

references/matching-rules.md

# Référence — Règles de matching transactions ↔ factures

> Référence chargée à la demande par `rapprochement-bancaire`. Détaille la cascade, la fenêtre de date, le scoring de confiance et les cas limites.

---

## Normalisation préalable

### Côté transaction (extraite du relevé)

| Champ                | Normalisation                                                                                                |
| -------------------- | ------------------------------------------------------------------------------------------------------------ |
| `montant`            | Décimal, signé (`+` crédit, `-` débit), arrondi 0,01 €                                                       |
| `date`               | ISO 8601 (`YYYY-MM-DD`)                                                                                       |
| `libelle`            | Trim, espaces multiples → simple espace, lowercase                                                            |
| `libelle_tokens`     | `libelle` splitté par espaces / ponctuation, tokens ≥ 3 caractères, sans stop-words bancaires (`vir`, `prlv`, `cb`, `chq`, `faveur`, `de`, `du`, `de la`) |

### Côté facture (extraite de l'index)

| Champ                | Normalisation                                                                              |
| -------------------- | ------------------------------------------------------------------------------------------ |
| `montantTTC`         | Décimal positif (le sens vient du `categorie`: `achat` = débit, `vente` = crédit)         |
| `dateEmission`       | ISO 8601                                                                                   |
| `emetteur_normalise` | lowercase, accents retirés, suffixes juridiques retirés (`SA`, `SAS`, `SARL`, `EURL`, `Ltd`) |
| `numeroFacture`      | Conservé tel quel + variante numérique pure (`F-2026-04-1287` → aussi `20260412 87`)      |

---

## Cascade de matching (par transaction)

Pour chaque transaction, parcourir les factures du mois (et du mois précédent + suivant — cf. fenêtre date) et calculer un **score** :

```
score = match_montant × poids_montant
      + match_label × poids_label
      + match_date × poids_date
```

Poids par défaut :

- `poids_montant` : 0.5
- `poids_label` : 0.3
- `poids_date` : 0.2

### Score `match_montant`

| Condition                                                           | Score |
| ------------------------------------------------------------------- | ----- |
| `abs(montant - montantTTC) ≤ 0.01`                                  | 1.0   |
| `abs(montant - montantTTC) / montantTTC < 0.02` (escompte typique)  | 0.6   |
| Autre                                                               | 0.0   |

**Sens** : `montant > 0` → ne peut matcher qu'une facture `vente`. `montant < 0` → ne peut matcher qu'une facture `achat`. Pas de cross-match.

### Score `match_label`

Cascade — première règle qui matche :

| Condition                                                                    | Sco
Github ReposUpdated 9h agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/trendex/skills/rapprochement-bancaire",
      "sourceUrl": "https://clawhub.ai/trendex/skills/rapprochement-bancaire",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T21:02:54.938Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-trendex-rapprochement-bancaire/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-trendex-rapprochement-bancaire/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-09T21:02:54.938Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "2K downloads",
      "href": "https://clawhub.ai/trendex/rapprochement-bancaire",
      "sourceUrl": "https://clawhub.ai/trendex/rapprochement-bancaire",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T21:02:54.938Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "1.0.2",
      "href": "https://clawhub.ai/trendex/rapprochement-bancaire",
      "sourceUrl": "https://clawhub.ai/trendex/rapprochement-bancaire",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-06-03T16:16:30.543Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-trendex-rapprochement-bancaire/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-trendex-rapprochement-bancaire/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 1.0.2",
      "description": "Version 1.0.2 - Nettoyage majeur : suppression de fichiers inutilisés (scripts annexes, fichier méta, skill-card). - Ajout d’un fichier .gitignore. - La documentation est allégée et recentrée : précisions sur l’exécution du script, les statuts, anomalies et relances. - La section extraction/vision détaillée et mode supervisé sont retirés du SKILL.md.",
      "href": "https://clawhub.ai/trendex/rapprochement-bancaire",
      "sourceUrl": "https://clawhub.ai/trendex/rapprochement-bancaire",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-06-03T16:16:30.543Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 10, 2026.

Sponsored

Ads related to Rapprochement Bancaire and adjacent AI workflows.