ID
Scenario
Input
Expected output
Pass criteria
T17
Handoff: Chase Agent completes and triggers Reconciliation Agent
Chase window closes; all contacts have either replied or timed out; chase agent marks run as complete
Reconciliation agent begins automatically within 2 minutes of chase agent completion flag; Xero transaction pull initiated; no manual trigger required
Reconciliation agent run log shows start time within 2 minutes of chase agent end time; no manual intervention recorded
T18
Handoff: Reconciliation Agent completes and bookkeeper review step is triggered
Reconciliation agent finishes; 15 exceptions written to Google Sheets
Bookkeeper receives Slack notification with direct link to exceptions sheet; notification includes exception count and a timestamp; Reconciliation Agent status set to awaiting_review
Slack message delivered within 60 seconds; message contains exception count (15) and hyperlink to the correct sheet tab; agent status log updated to awaiting_review
T19
Handoff: Bookkeeper approves exceptions and triggers Accruals and Reporting Agent
Bookkeeper marks exceptions as reviewed in Google Sheets approval cell; all exceptions resolved or accepted
Accruals and Reporting Agent triggered automatically; reads accruals schedule; posts journals to Xero; proceeds to build management accounts pack
Agent run log shows trigger source as bookkeeper_approval; journals posted within the same run; pack generation begins after journal posting confirmation from Xero API
T20
Handoff: report pack generated and Finance Manager notified for approval
Management accounts pack completed by Accruals and Reporting Agent; saved to Google Drive
Finance Manager receives Gmail notification with link to the draft pack; Slack message posted to finance channel; pack status set to pending_approval
Gmail notification delivered to Finance Manager test address; Slack message contains pack link; Google Sheets pack status cell reads pending_approval
T21
Handoff: Finance Manager approves and distribution triggered
Finance Manager clicks approve in the designated Google Sheets approval cell or via the approval link in the notification email
Automation exports pack as PDF; sends PDF to all stakeholder email addresses in the distribution list; Slack confirmation posted; run status set to complete
PDF present in Google Drive export folder; Gmail sent folder shows outbound emails to all distribution list addresses; Slack confirmation message posted; run log status is complete
T22
Integration: Xero API rate limit encountered during transaction pull
300 transactions require multiple paginated API calls; rate limit of 60 calls per minute is reached during fetch
Agent detects 429 response; applies exponential backoff starting at 2 seconds; completes full transaction pull without data loss; total pull time logged
All 300 transactions present in reconciliation dataset after completion; no transactions missing; log shows retry events with timestamps; no unhandled exceptions
T23
Integration: Google Sheets concurrent edit conflict during exceptions write
Reconciliation agent attempts to write exceptions while a test user has the sheet open with an active edit
Agent detects conflict; waits 10 seconds and retries; completes write successfully or logs failure after 3 retry attempts
Exceptions data fully written after retry; no partial rows; or Slack alert fired after 3 failed retries with conflict detail in log
T24
Integration: Finance Manager rejects pack and correction loop triggers
Finance Manager selects reject in the approval step and enters a correction note
Pack status set to returned_for_correction; correction note written to Google Sheets log; Slack alert sent to Controller with note content; Accruals and Reporting Agent flagged for re-run after correction
Pack status cell reads returned_for_correction; correction note visible in log sheet; Slack alert delivered to Controller; re-run trigger is available without requiring a full workflow restart
ID
Scenario
Input
Expected output
Pass criteria
E01
Duplicate transaction entries in Xero
Xero demo contains 10 transactions that appear twice with identical amounts, dates, and references
Reconciliation agent flags all 10 duplicates in the exceptions sheet with a duplicate_detected reason code; does not auto-reconcile either entry; bookkeeper review required for each pair
Exactly 10 duplicate-flagged rows in exceptions sheet; no duplicate pair auto-reconciled; reason code is duplicate_detected on each row
E02
Missing supplier document for a transaction requiring one
Xero transaction exists for a supplier; corresponding document is absent from both Hubdoc and Dext sandboxes
Transaction flagged in exceptions sheet with reason code no_document_found; not auto-coded; bookkeeper notified via Slack
Exception row present with no_document_found reason; transaction not reconciled; Slack message references the specific transaction ID and amount
E03
Accruals schedule contains a row with a missing amount field
Accruals Google Sheet has 8 rows; one row has an empty amount cell
Agent validates schedule before posting; flags the incomplete row; posts the remaining 7 valid journals; Slack alert lists the row reference and missing field
7 journals in Xero; 1 row in validation error log with row reference; Slack alert received; no journal posted for the incomplete row
E04
Bookkeeper does not action the exceptions sheet within 48 hours
Exceptions sheet written with 12 items; approval cell left blank for 48 hours after notification
Escalation Slack message sent to Finance Manager and Controller after 48-hour timeout; run status set to stalled_awaiting_review; no downstream agents triggered
Escalation message delivered at 48-hour mark; message names the stalled step and links to the exceptions sheet; run status is stalled_awaiting_review in the log
E05
Finance Manager does not approve or reject the pack within 24 hours
Management accounts pack delivered; approval cell blank for 24 hours
Reminder notification sent to Finance Manager via Gmail and Slack; if no response within a further 24 hours, escalation sent to the process owner contact defined in configuration
Reminder delivered at 24-hour mark; second escalation delivered at 48-hour mark if still no response; run status is awaiting_fm_approval throughout
E06
Slack is unavailable for the entire chase window
Slack API returns 503 for the full duration of the chase and notification period
Gmail chase emails sent successfully; Slack notifications attempted and retried 3 times with exponential backoff; failure logged after third attempt; workflow continues using Gmail only
All Gmail emails in sent folder; Slack error recorded in log with retry count; overall workflow not blocked; ops alert delivered via Gmail fallback to the ops email address
E07
Xero demo company has no transactions for the period
Xero API returns empty transaction list for the current period
Reconciliation agent logs zero transactions found; Slack ops alert sent; workflow paused; no exceptions sheet written; no journals posted
Log entry shows zero_transactions status; Slack alert received; exceptions sheet not modified; accruals agent not triggered
E08
Report template in Google Sheets is missing expected named ranges
Management accounts template has been edited and named ranges for P&L, balance sheet, and cash flow no longer exist
Accruals and Reporting Agent detects missing named ranges during validation; halts before writing any figures; Slack ops alert lists the missing range names
No figures written to template; Slack alert received with specific list of missing named range identifiers; log status is template_validation_error