Skip to content

Repository files navigation

SF Expense Assistant — POC Agentforce Expense Manager

Gestionnaire intelligent de notes de frais : upload de justificatif → OCR navigateur → extraction Einstein → complément (catégorie / bénéficiaire) → soumission → validation/refus Approver avec contrôle de quota.

Prérequis org

  • Salesforce avec Agentforce / Einstein Generative AI
  • Files activés
  • Optionnel : webhook Slack (Custom Metadata) ou Salesforce for Slack
  • CLI : Salesforce CLI (sf)
  • CSP Trusted Site https://cdn.jsdelivr.net (Tesseract.js + pdf.js)

Auth & déploiement

cd SF_ExpenseAssistant
sf org login web --alias expense-poc
sf project deploy start --target-org expense-poc
sf apex run --file scripts/apex/demoData.apex --target-org expense-poc
sf org assign permset --name Expense_Employee --target-org expense-poc
sf org assign permset --name Expense_Approver --target-org expense-poc

Architecture

Couche Contenu
Données Expense_Claim__c, Expense_Quota__c, Expense_Category__c, CMDT Expense_AI_Settings
Extraction OCR client (Tesseract + pdf.js) → Prompt Template Einstein → Apex
Agent Bundle Agent Script Expense_Agent + actions Apex invocables
UI employé LWC expenseClaimUploader dans l’app Expense Manager
Approbation Quick Actions + Flows, contrôle quota
Notif Flow + webhook Slack / Task fallback

Scénario de démo (recommandé)

  1. Ouvrir l’app Expense Manager.
  2. Uploader un justificatif PDF, PNG ou JPG (ex. billet SNCF).
  3. OCR + extraction Einstein → commerçant, date, montant (± catégorie).
  4. Compléter si besoin : catégorie et/ou bénéficiaire.
  5. Soumettre → statut Pending_Approval ; le formulaire se réinitialise.
  6. Ouvrir la note (bandeau succès ou liste) en tant qu’approver (Expense_Approver) → Valider / Refuser.
  7. Validation : quota Used_Amount__c recalculé ; refus si montant > reste.

Config extraction réelle

  1. Prompt Builder : template Expense_Receipt_Extraction — voir docs/agentforce-setup.md et docs/prompt-expense-receipt-extraction.txt.
  2. CMDT Default : Use_Demo_Extraction__c = false.

Configuration Slack

  1. Incoming Webhook sur le canal dépenses / approbation.
  2. Renseigner Slack_Webhook_URL__c sur Expense_AI_Settings.Default.

Agentforce (Agent Script)

sf agent validate authoring-bundle --api-name Expense_Agent --target-org expense-poc
sf agent publish authoring-bundle --api-name Expense_Agent --target-org expense-poc

Structure

force-app/main/default/
  objects/              # Claim, Quota, Category, CMDT
  classes/              # Services + invocables Agentforce
  lwc/expenseClaimUploader
  pages/ExpenseTesseractOcr
  staticresources/TesseractJs
  aiAuthoringBundles/   # Agent Script Expense_Agent
  flows/ applications/ permissionsets/
scripts/apex/demoData.apex
docs/                   # Setup Agentforce + prompt

Notes POC

  • Permission sets : Expense_Employee, Expense_Approver
  • App : Expense Manager (Expense_Manager)
  • Agent : Expense_Agent
  • Champs techniques (Extraction_JSON__c, Ocr_Text__c) hors layout employé
  • OCR PDF : texte embarqué si possible, sinon rasterisation 1ʳᵉ page
  • OrgFarm : pas d’IDR / Document AI ; OCR client volontaire pour le POC

About

Salesforce POC to demonstrate AI Expense Manager

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages