Everything from Cass Scott's ICB breakout in one place: the prompts she used on stage, the AI governance checklist, and how to connect your own AI to XBert.
Save this page, share it with your team, and run the prompts on your own practice this week.
Your practice is already using AI. The question is what you're pointing it at. In the session Cass showed what changes when your AI sits on top of a trusted data layer: books already checked by 150+ continuous data quality checks, alerts already triaged, and time and capacity data already live. Everything she used is below, ready to copy and run.
BAS Readiness BoardDemo with sample data
Example output of the prompt. Change the period, sort a column, or click a client.
Cadence
Left out (no GST basis set): Mangrove Holdings Trust
How this is calculated
Open XBert alerts count if dated on or before the period end. Balance checks count in every period. Receipt capture items are left out.
Not ready means any High or Medium item, or unreconciled lines. Minor flag means Low or Information items only.
Where each check comes from
Alerts and risk levels from each client's XBert work list, cross-checked against XBert's outstanding summary. Net GST from XBert's Activity Statement data. GST account from the trial balance. Bookkeeper from Connect portal roles.
Limits of this snapshot
A snapshot pulled from XBert, not live. Figures depend on XBert having synced each ledger and on each client's XBert setup. Net GST is calculated from the ledger, not the lodged BAS.
What's in the Pack.
IAS Payroll Validation prompt
The tool Cass built on stage: checks payroll against the ledger, confirms W1 and W2, and produces a PDF working paper for the file.
Before you point AI at client data: three rules and a one-page checklist to pin up. Know where the data goes, the AI sees what the person sees, and proposed, not posted.
These are the four questions Cass asked on stage. They don't need a prompt file. Once XBert is connected to Claude or ChatGPT, open a new chat and type the question as it's written. Your assistant answers from your own XBert data: your clients, your team, your alerts and the time actually logged. Start with one, check the answer against what you already know, then make it part of your week.
"Which files are actually BAS ready, and what's still outstanding?"
Ask it before BAS season starts. You get a ready or not-ready answer for each client and what's in the way, straight from XBert's checks. For the full sortable board, use the BAS Readiness prompt above.
"Who on the team is over capacity next week, and what's driving it?"
Ask it on a Monday. It reads estimates and the time actually logged, so you see who's really full, by how much and why, and can move work before it slips.
"What's due in the next ten days that nobody has started yet?"
Not what's already late, but what's about to be: work that's due soon with no time logged against it. The list you want at the start of every week.
"Which clients are more complex than we're billing for?"
Ask it at fee review time. It weighs time logged and open data quality issues against each client's fee, so the conversation about price starts with evidence, not a gut feeling.
Keep Going.
1. Connect XBert to your AI
Add the XBert MCP to Claude, ChatGPT or another MCP-aware assistant and sign in with your XBert login. No code, no API keys.
I want you to build a live web page (a Claude Artifact) called "IAS Payroll Validation". It is a working paper tool for Australian bookkeepers and BAS agents to validate a client's payroll against the general ledger before lodging an IAS or BAS, and to produce a PDF working paper.
Before you build, read this whole brief, check which XBert tools are available to you, test the key calls on one of my clients, and ask me any questions where something is unclear. Do not guess or invent figures, rules or tool names. If something in this brief can't be done with the tools available, tell me.
GENERAL
- Australian context and Australian/UK spelling throughout.
- Use a clean, neutral, professional style. The page must work in light and dark mode and at phone width.
- All amounts in AUD, to the cent. Tolerance for every reconciliation is exactly $0.00.
- Every figure shown must come from the data; nothing hard-coded or estimated.
- The page makes read-only calls, with one exception: the optional "Book time in XBert" panel (see TIME BOOKING), which writes a timesheet entry only after the user confirms. It must never create, update or delete anything else in XBert or Xero.
DATA SOURCE: XBert
- Use the page's connector ("mcp") capability to call the XBert connector as the person viewing the page, using the single tool "tools_invoke" with {name, argumentsJson}. Declare only that tool.
- XBert responses come back either as JSON or as YAML-like text. Some YAML responses contain compact tables in the form "name[N]{col1,col2,...}:" followed by comma-separated rows (for example the chart of accounts, organisation settings and work items). Parse these yourself. Load js-yaml from cdnjs and parse YAML with the FAILSAFE schema so account codes like 65130.10 and 804 keep their exact text; convert numbers and true/false values explicitly.
- XBert applies a per-user rate limit ("Rate limit exceeded. Retry after 60 seconds"). It can also reach the page only as a generic "Connector call failed" with no rate-limit wording, so when a call fails that way, suggest waiting a couple of minutes before retrying. Route every call through a throttled queue: no more than 2 calls at once, spaced about 350 ms apart. On a rate-limit response, wait the time given and retry, up to 3 times, showing "Waiting N seconds, then continuing" to the user. Retry once on a transient connection error. If a call finally fails, show which XBert call failed and its error code.
- Tools to use (confirm each exists and inspect a real response before relying on its shape):
- Data_GetAllAccessibleClients (paged, pageSize 100) and Data_GetClientConnections: list only clients where hasPayroll, hasPayrollAccess and isConnectedToAccountingSoftware are true, and isDisconnected and isLocked are false. If connections can't be read (Data_GetClientConnections has been seen to return an intermittent internal error), list all connected clients and say so; don't fail the client list.
- Data_PayrollSettings (includePayItems true): payroll account mapping (WAGESEXPENSE, PAYGLIABILITY, SUPERANNUATIONEXPENSE, SUPERANNUATIONLIABILITY, WAGESPAYABLELIABILITY), pay calendars, earnings rates (with isReportableAsW1) and deduction types (with reducesTax and isExemptFromW1).
- Data_OrganisationSettings: surface "chartOfAccounts" (account class and names) and surface "organisation" (financial year end day and month).
- Data_FinancialStatements statement "trialBalance" with asOfDate: once at the last day of the period and once at the day before the period starts. Use context.actualAsOfDate to confirm the date returned.
- Data_PayRuns_Search (it has no default status filter, so drafts are included), Data_PayRuns_Get (payslip ids), Data_Payslips_Get (detail lines and super lines).
- Data_BankTransactions_Search and Data_BankTransactions_Get (line items with account codes) to identify payments.
- Data_XBertConfigurations (includeItems true, scope client) and Features_GetWork for XBert alerts.
- Data_XPMStaff for the reviewer list.
- Features_LogActualTime for the time booking panel (the only write call).
SELECTION
- Controls: client (payroll-connected only), financial year (1 July to 30 June), frequency (Monthly or Quarterly, chosen manually by the user to match the client's lodgement cycle), period, and a Run button. Default to the most recent completed month.
- Do not try to detect the PAYG withholding cycle automatically. XBert's paygWithholdingCycle field has been found to reflect the BAS cycle rather than the IAS cycle.
GENERAL LEDGER RULES
- GL figures come from trial balance closing balances: balance = closingDebit less closingCredit. Earlier XBert responses used ytdDebit and ytdCredit for the same figures, so accept either. If neither pair is present, flag it red ("format not recognised") and withhold all GL comparisons rather than treating balances as nil. XBert omits accounts with a nil balance, so a missing account means nil.
- If XBert reports the trial balance as out of balance (totals.balanced false), show that as a grey note with the difference.
- Balance sheet accounts: movement = balance at period end less balance at the day before the period starts.
- Profit and loss accounts: year-to-date resets at the financial year start, so if the period starts on 1 July the opening is nil; otherwise use the day-before-period balance.
- If the trial balance date returned differs from the date requested, flag it red and withhold all GL comparisons.
- Read the Xero financial year end. Payroll always runs 1 July to 30 June. If the Xero year end is not 30 June (for example a substituted accounting period), raise a red, confirmable alert explaining that trial balance year-to-date figures reset at the Xero year end, so GL movements may be wrong.
- The GL checks use trial balance positions only and don't read individual transactions. Say so in the notes: a variance can come from a manual journal, bill or spend money coded to a payroll account, so the user should check account transactions in Xero.
PAYROLL RULES
- Include pay runs by payment date, posted status only. (This basis is confirmed.)
- Draft or unposted pay runs with a payment date in the period: flag red, exclude from W1 and W2, status Not ready.
- Round every payslip line (earnings, tax, deductions, super lines) to the cent before adding. XBert returns some line amounts to four decimal places, and summing unrounded lines produces 1 cent differences.
- Earnings lines have lineType containing "EARN" (EARNINGS and LEAVE_EARNINGS). Match the line description to the earnings rate name to get the W1 flag. Leave earnings with no match are treated as W1 (state this as an assumption). Anything else unmatched is flagged red as unknown and left out of W1.
- Tax lines: lineType containing "TAX". W2 = sum of tax lines.
- Deduction lines: lineType containing "DEDUCT". Match to deduction types.
- Super lines: contributionType SGC, SALARYSACRIFICE, EMPLOYERADDITIONAL, EMPLOYEE.
- Xero includes salary sacrifice in gross wages and credits it to the super liability, not super expense.
W1 AND W2
- W1 = earnings flagged reportable at W1, less pre-tax salary sacrifice (SALARYSACRIFICE super lines and deductions that reduce tax). Pre-tax salary sacrifice is excluded from W1.
- Flag amber any earnings excluded from W1 by Xero's flag, and any pre-tax deduction not flagged exempt from W1 in Xero.
- W2 = tax withheld per payslip tax lines; cross-check against pay run tax totals.
PAGE LAYOUT (in this order)
Header: client, period, basis, GL dates returned, run time.
1. XBert review gate (top of page, required before the IAS can progress)
- Open XBert alerts only (To do or In progress), created by XBert (creationSource XBertFabric), not scheduled tasks.
- Payroll related: the XBert's analytics group is Payroll or its risk type is Payroll Risk, or the title or process tag mentions super, PAYG, payroll, wages, leave, STP or employee.
- Transaction date on or before the period end.
- Each alert needs a choice: "Needs resolution" or "Informational only", plus an optional comment.
- A required "Reviewed by" field: a dropdown built from XBert work item assignees and creators plus the XPM staff roster, de-duplicated, with an "Other (type a name)" option.
- Until every alert is marked and a reviewer chosen: status "XBert review outstanding", W1 and W2 greyed as "Pending XBert review", PDF save disabled. Everything else stays visible.
- Any alert marked Needs resolution: status "Not ready: resolve in XBert and rerun" (PDF can still be saved, stamped Not ready).
- If XBert alerts can't be loaded: Not ready.
- Review choices reset on every run.
- Work items are capped at about 200 source rows per request. If the cap is hit, split the date range and requery; if still capped, warn.
2. Summary tiles: W1, W2, validation status (with red, amber and confirmed counts).
- Put a "Save working paper (PDF)" button inside the validation status tile, with a second one at the bottom of the page. Both are always visible after a run. They are disabled, with a message underneath, until the XBert review and reviewer are complete. Never hide them: if the view can't save files (for example an unsigned public link), clicking explains that instead.
A. Pay run register (checked first: if it fails, every reconciliation below is working from incomplete data)
- A status badge: "Check first" (red) for any unconfirmed missing, draft or unposted pay run; "Items to confirm" (amber) for timing items; "Complete with confirmations" once its red and amber items are confirmed; otherwise "Complete".
- While any red register item is unconfirmed, show a red banner at the top of this section saying sections B to F are calculated from posted pay runs only and may be incomplete. Keep all sections visible.
- Only pay runs with a payment date in the period: paid date, pay period, status, whether included, staff, gross, tax, super.
- Expected pay runs from pay calendars: project each calendar's payment dates (weekly, fortnightly, four-weekly, monthly, quarterly) from its next payment date. A posted pay run paid on the expected date or within 1 day counts as processed. Further out but within half a pay cycle: amber, needs confirming. Nothing found: red "Missing", status Not ready unless confirmed. Only check dates up to today. Posted pay runs that don't match a calendar date are listed as off-cycle notes. Pay runs aren't linked to calendars in XBert, so matching is by date and count.
- Each missing or off-calendar row has a Review column with a "Confirmed OK to be missing" (or "Timing confirmed") tick box and a required reason. There are legitimate reasons a pay run can be missing, so this must be confirmable, but it stays visible: a confirmed row turns green as "Missing (confirmed)" with the reason, reviewer and time, and still appears in G and the PDF. Confirming here and in G is the same confirmation.
- Also note (grey) pay runs paid in the period whose pay period started before it, pay runs for this period paid after it, and super-only pay runs.
B. Gross wages: payroll to GL
- Each pay run's gross, total payroll gross earnings, GL wages for the period (the sum of included wages accounts; do not list the individual accounts in this table), variance.
- Wages accounts: the mapped wages expense account plus accounts on earnings rates and lines, ticked by default in a collapsible "Wages accounts included" list. Other expense accounts named wage, salary or payroll are listed unticked; flag if they have movement.
C. PAYG withheld: W2 to this period's liability
- Closing PAYG liability per GL, less W2 for the period, equals the balance relating to earlier periods, which should be nil.
- If positive, flag red: an unresolved prior balance may mean a prior activity statement hasn't been lodged or its lodgement or clearing transaction hasn't been processed.
- If negative, flag red: more paid or cleared than withheld, or withholding posted elsewhere.
- Supporting movement underneath: opening, W2, bank payments coded to the account, other debits (derived, for example ATO clearing account), closing.
D. Wages clearing account (the mapped wages payable account)
- Opening, plus net pay from pay runs (one summary line with the count), less net wage payments from bank transactions coded to the account (one summary line with the count), calculated closing, GL closing (should be nil), unexplained movement.
- Detail of each pay run and payment in a collapsible panel.
- Red if the GL closing balance isn't nil; amber for unexplained movement (for example a batch payment, bill or journal).
E. W1 build-up and salary sacrifice
- Each earnings item with type, W1 treatment and basis; total gross; W1 earnings; less salary sacrifice; less pre-tax deductions; W1.
- A collapsible by-employee table.
F. Superannuation
1. Super expense: payroll employer super (SG plus employer additional, excluding salary sacrifice and employee contributions) against the GL super expense total. Show only the total GL figure; the individual accounts appear in a collapsible "Super expense accounts included" list (mapped account plus expense accounts named super, excluding admin, interest or fee accounts, which are listed unticked).
2. Super liability roll-forward: opening, plus super liability for the period (super expense per GL plus salary sacrifice per payroll, plus any employee post-tax contributions), less payments to funds (bank transactions coded to the super liability), calculated closing, GL closing, variance.
3. Payday Super timing (for pay runs paid from 1 July 2026): each pay run's total super (SG, salary sacrifice and other contributions) is due 7 business days after its payment date. Read bank payments to the super liability from the period start to 45 days after period end, and match them to pay runs oldest first, applying any opening balance first. Use the bank payment date as the paid date. Status per pay run: On time, Late (with business days late), Paid before payday (amber: possible duplicate or misdated payment), Unpaid overdue, or Unpaid not yet due. Flag unmatched payments. Public holidays and the 20 business day allowance for new employees or funds are not modelled; say so.
G. Exceptions
- Every red (Resolve), amber (Confirm) and grey (Note) item.
- Each red and amber item has a "Confirmed as correct" tick box and a comment box. Confirming requires a reviewer and a comment. A confirmed item turns green, shows "Confirmed by [reviewer]" with date and time, stops counting towards red and amber, and changes its section's status to "Confirmed". Clearing the comment un-confirms it.
- Grey notes can take an optional comment.
- Trial balance date mismatches, unrecognised trial balance formats and XBert load failures cannot be confirmed.
- Confirmations reset on every run.
H. Notes and items to verify
- Plain statements of every assumption and limitation above.
TIME BOOKING (below the save button)
- A "Book time in XBert" panel appears after a run. It lists the client's open XBert tasks (classType task, not alerts) whose process tag mentions BAS, IAS, PAYG or Payroll, showing status, due date, estimate and time logged so far. Pre-select the task whose title matches the period's month; if none clearly matches, ask the user to choose.
- A timer starts when Run validation is clicked (pause and resume available) and fills the minutes field; the user can overwrite the minutes. Re-running the same client and period keeps the timer; a different client or period resets it.
- Fields: minutes (whole, 1 to 1440), date worked (defaults to today, not in the future), billable (ticked by default), note (pre-filled "IAS payroll validation, [period]: [status]." and kept in step with the status until edited; it becomes an internal comment on the task and the XPM timesheet note).
- "Book time" shows a confirm step naming the minutes, billable choice, date and task. Only then call Features_LogActualTime with notificationId, durationMinutes, isBillable and note (plus startTime at 9:00 am local, sent as UTC, when the date isn't today). Never retry this call automatically, even on a rate limit, because a retry can create a duplicate entry.
- Show XBert's reply as given, including xpmPush outcome ("pushed" or "skipped") and reason. Never say the time reached XPM unless the outcome is "pushed". On an error, say no time should have been logged and ask the user to check the task in XBert before trying again.
- Lock the button after a successful booking, with a "Book more time" option for another entry. List bookings made before saving in a "Time booked in XBert" section of the PDF.
STATUS LOGIC (first match wins)
1. XBert alerts couldn't be loaded: Not ready.
2. XBert alerts unreviewed or no reviewer: XBert review outstanding.
3. Any alert marked Needs resolution: Not ready.
4. Any unconfirmed red item about drafts, missing pay runs, unmatched earnings, or a GL date mismatch: Not ready.
5. Any other unconfirmed red item: Variances to review.
6. Any unconfirmed amber item: Validated with items to confirm.
7. Some items confirmed by the reviewer: Validated with confirmations.
8. Otherwise: Validated.
PDF WORKING PAPER
- Generated in the page with jsPDF and jspdf-autotable (from cdnjs), saved through the page's downloads capability. The page can't open the print dialog.
- A4 portrait with real, searchable text (not a screenshot), in a neutral professional style. Embed a clean sans-serif font if available, otherwise Helvetica.
- Contents: header ("IAS Payroll Validation · Working paper"), client, period, run time, GL dates returned, "XBert review by [reviewer]", W1/W2/status summary, then every section above including tables, collapsible detail, account lists (marked Included or Excluded), review decisions with dates and comments, exceptions with confirmations and comments, notes, and any time booked in XBert. Page numbers and a footer on every page.
- Replace any characters the PDF font can't render (for example the Unicode minus sign).
- File name: "yyyymmdd - IAS Validation - [client].pdf", where yyyymmdd is the last day of the reporting period. Replace characters Windows doesn't allow in file names with a space.
TESTING BEFORE YOU HAND IT OVER
- Run the key XBert calls yourself on one of my payroll clients for one month and show me: payroll gross, W2, GL wages movement, PAYG closing balance, super expense and super liability figures, so I can check them against Xero before you build.
- After building, tell me what you tested and what you couldn't test with real data (for example, whether a real draft pay run appears in XBert, or salary sacrifice deductions).
Needs an XBert account and a Xero payroll connection. Download the full guide (PDF): what you need, how to use it and its known limits.
BAS Readiness Prompt
Build me a BAS Readiness Board for my practice using the XBert MCP Gateway.
Use read-only tools only. Do not change, complete or create anything in XBert.
Before pulling any data, list the XBert portals I can access and ask me which one to use. Don't pick one yourself.
WHAT I WANT
One interactive HTML page showing every connected client, answering: is the
accounting file ready for BAS preparation, and if not, what is outstanding?
Controls at the top:
- Cadence: Monthly or Quarterly
- Period ending: the last 6 month-ends (monthly) or BAS quarter-ends (quarterly)
Table sorted by client name by default. Clicking a column heading sorts by it;
clicking again reverses.
COLUMNS (one row per client)
Client | Bookkeeper | Status | Unreconciled | GST coding | Missing source docs |
Wrong place | Other alerts | Net GST | GST account | Completed, unresolved
DATA AND RULES
1. Clients: include only clients connected to their accounting file in XBert.
Leave out any file with no GST basis set, and list those under the table.
2. Bookkeeper: the person assigned to the "Bookkeeper" role for each client in
the Connect portal role assignments. Show "Unassigned" if blank.
3. Alerts in the period: an outstanding XBert alert counts if its transaction
date is on or before the selected period end. Exclude anything dated after.
Balance checks stamped with the date XBert ran them (e.g. fixed asset
reconciliation) have no real transaction date: count them in every period.
Exclude Bill Agent (receipt capture) items, which are processing steps,
not checks.
4. Map alerts to columns:
- Unreconciled: the monthly "unreconciled transactions" alert. Show the
number of lines it reports, not the alert count.
- GST coding: alerts with risk type Tax Risk, excluding the "Bills over $75
have no attachments" alert.
- Missing source docs: the "Bills over $75 have no attachments" alert.
- Wrong place: alerts with risk type Bookkeeping Risk or Unusual Risk,
excluding unreconciled. This includes the suspense/uncoded aged balance check.
- Other alerts: every other outstanding XBert (Overdue, Payroll, Duplicate,
Fraud, Other).
5. Status:
- Not ready: any High or Medium risk item, or any unreconciled alert.
- Minor flag: only Low or Information items.
- Ready: nothing outstanding.
Colour-code the status.
6. Net GST: 1A less 1B for the BAS quarter, from XBert's Activity Statement
data, using the file's own GST basis (cash or accruals). In monthly view,
show the whole quarter's figure and label it as such. Under the figure,
note "Cash" or "Accruals".
7. GST account: the balance of the GST account in the trial balance at period
end (year-to-date). Positive is payable; show refundable in brackets.
8. Completed, unresolved: alerts marked Completed or Completed - No Action
where XBert still reports the underlying issue as not fixed, with a
transaction date inside the period. Show for review only; they don't change
the status. If the Gateway can't return this, show "Not available" and say
why in the notes.
BEFORE BUILDING
- Pull data for the most recent period first and show me a quick summary
(client count, how many Ready / Minor flag / Not ready) so I can sanity-check.
- Cross-check each client's counts against XBert's outstanding summary for that
client (risk level, risk type, process). Tell me about any mismatch.
- If a client has hundreds of alerts or a call fails, carry on with the rest
and list the gaps.
ON THE PAGE
Below the table, include three short sections:
"How this is calculated", "Where each check comes from" and
"Limits of this snapshot". The limits section must state that this is a
snapshot pulled from XBert, not live, and that figures depend on XBert having
synced and on each client's XBert setup.
Keep the design clean and printable. Use Australian spelling.
Needs an XBert account. The prompt reads your clients through your own XBert login, so it only sees what your XBert role allows.
One Prompt Today. Your Whole Practice Tomorrow.
Everything Cass ran on stage works through the XBert MCP. It gives your AI assistant live access to ledgers, alerts and workflow across every client, with your permissions and nothing more.
MCP (the Model Context Protocol) is a secure, standard way for an AI assistant like Claude or ChatGPT to connect to XBert and work with it on your behalf. You ask in plain English; the assistant uses XBert's tools to answer, and to draft work for your review.
Do I need to be technical to use it?
No. Setup is paste-one-address-and-sign-in, and from there you type questions the way you'd ask a colleague. There's no code, no API keys and no syntax to learn.
Which AI assistants work with it?
Claude on the web and Claude Desktop, Claude Code, and any other assistant that supports MCP connectors. ChatGPT works too, with a bit more setup. See the setup guide for what your plan and workspace admin need to allow.
Is my client data safe?
You sign in with your XBert account using OAuth, so your credentials stay with XBert. The assistant inherits your XBert role, so it can only see what you can see. Write actions are marked for your assistant to confirm, and every action is written to the XBert audit log.
Can the assistant change my clients' books without me?
Not without it being put to you first. Write actions (creating a bill, recording a payment, updating a contact) are validated, checked for duplicates and marked as changes to confirm, which is what makes Claude and other MCP clients stop and ask you before submitting.
Which clients can my assistant work with?
Two things decide what your assistant can reach: your XBert role, and the client's plan. If you can't see a client in XBert, your assistant can't either, and the data and reporting tools only run for clients on an AI-enabled plan.
Do I need a new account or login?
No. You connect with your existing XBert login, and your existing XBert role and permissions carry over — there's nothing new to create. Not on XBert yet? Start at xbert.io.
How do I remove or manage access?
Remove or disable the XBert connector in your assistant's settings and the connection is gone. Reconnect any time by signing in again — access always follows your current XBert role, and every action leaves an audit trail.
Where do I go to connect?
Head to the XBert MCP connect page. It walks you through adding the connector and your first five prompts in about five minutes.
What can my assistant actually do with XBert?
Eleven areas covering both halves of the week: your clients' books (receivables, payables, bank, payroll, reporting) and your own practice (jobs, WIP, capacity, worklists) if you run Xero Practice Manager. See the full breakdown on the features page.