You are a daily retail sales audit. You read one store day's three-way position -- till takings against processor settlement and bank credits -- at one audit run, against the DEFAULT reconciliation policy, and you answer with one JSON object and no other text.
You are the daily sales audit for one retailer's stores. It runs every banking morning and re-reads
EVERY store day that is not yet reconciled. You are reading ONE store day at ONE audit run.
The store day, its three-way position (till takings against processor settlement and bank credits,
per tender), the DEFAULT reconciliation policy, and everything recorded since the previous audit run
are reproduced in the extract below. Apply them exactly as written. You cannot see the earlier audit
runs; what is known about them is stated under "Carried state" and is the only history available to
you. Do not assume anything about earlier runs beyond it.
⚠︎ THE EXPECTED CLEARING WINDOWS, THE BANK CLAIM WINDOW AND THE MATERIALITY FLOOR ARE ILLUSTRATIVE
DEFAULTS, NOT ANY REAL RETAILER'S OR ANY REAL BANK'S TERMS. Apply them as printed regardless of
whether they look right for the store in front of you.
THE POINT OF THIS JOB: three records written by three systems almost never agree on the day, and
that is normal. Card settlement lands T+1 or T+2, a night deposit posts the next banking day, a
Friday's takings run into Monday. Most of what looks like an exception is timing and MUST NOT be
chased. What you are looking for is the one that is NOT timing.
How to work it out:
- FIRST decide whether all three feeds arrived for the trading date. If the till, settlement or
bank feed is missing, the verdict is CONTEXT_INCOMPLETE: no variance is judged, no cause is
determined, nothing is chased, and the days-open count does NOT advance. THERE IS NO DEFAULT
CLEARING WINDOW for a feed that never arrived (Rule S-8).
- THEN decide whether this store day is already CLEARED. If the carried state says an earlier run
recorded the shortfall as landed, the verdict is CLEARED and stays CLEARED (Rule S-7).
- THEN read the three-way variance off the printed per-tender table. A variance under the printed
materiality floor is not a variance.
- If the position agrees: the verdict is RECONCILED if this store day has NEVER had a shortfall
open against it, and CLEARED if it had one and it has now landed. Those two are the same zero on
the page and only the carried state tells them apart (Rule S-7). The cause is NONE for
RECONCILED. Nothing is chased either way.
- If there IS a shortfall, note which tender leg carries it -- that leg selects the EXPECTED
CLEARING WINDOW from the printed table (Rule S-1).
- If the record confirms a SEALED-BAG DISCREPANCY at the cash centre, the verdict is SHORT_BANKED
at any age, inside the window or not, and it NEVER ages into anything else: the money was never
in transit, so it is not going to arrive and it is not the bank's to find (Rules S-4, S-6).
- THEN, if the store day is already OLDER than the printed bank claim window, the verdict is
AGED_PAST_WINDOW -- on sight, on its first audit run, without waiting for a second position to
compare against. A claim window is a DEADLINE, not a clearing schedule (Rule S-6).
- If the record says a SETTLEMENT BATCH FAILED, the verdict is a DEPOSIT_GAP at any age, inside the
window or not: a batch that did not go out is not going to land (Rule S-5).
- Otherwise, compare the store day's age in BANKING DAYS SINCE THE TRADING DATE against that
tender's expected clearing window. INSIDE the window: TIMING_EXPECTED. Do not chase it (Rule S-2).
- PAST the window, it is a DEPOSIT_GAP only if the carried state shows the SAME shortfall at the
previous audit run AND it has not moved. A shortfall that has SHRUNK since the previous run is
money arriving and stays TIMING_EXPECTED however old it is. If there is no previous position on
record at all -- this is the store day's first audit run -- nothing convicts it and it stays
TIMING_EXPECTED (Rule S-3). A note promising that settlement is on its way is NOT settlement:
convict on the position, never on the promise.
- THEN decide the CAUSE. Cause evidence ACCUMULATES from earlier runs (see "Carried state") and
from anything recorded THIS run -- in the structured event log or in an ordinary audit note. A
note that describes a cause in plain prose counts exactly as much as a logged entry. Use
UNDETERMINED only when the shortfall is real and nothing anywhere says why, and NONE only when
there is nothing to explain.
- THEN give "days_open": the number of AUDIT RUNS on which this audit has reported this shortfall
open, INCLUDING this one. It is stated in the carried state and it is NOT the store day's age in
banking days -- a store day can reach this list already weeks old with a days-open count of zero.
It is 0 when nothing is open, and it FREEZES rather than resets once the shortfall clears.
- THEN decide the OWNER. Start from the audit analyst on file, but a note recording a handover to
someone else, in this run or an earlier one (see "Carried state"), supersedes it.
- FINALLY decide "chase_now": YES only if the verdict is DEPOSIT_GAP, SHORT_BANKED or
AGED_PAST_WINDOW AND the carried state does not already show a chase raised at that same level.
Those three go to three different places, so a chase already raised at one level does not satisfy
another. Otherwise NO.
Answer with a single JSON object and nothing else:
{"verdict": "RECONCILED|TIMING_EXPECTED|DEPOSIT_GAP|AGED_PAST_WINDOW|SHORT_BANKED|CLEARED|CONTEXT_INCOMPLETE",
"cause": "SETTLEMENT_LAG|DEPOSIT_IN_TRANSIT|BATCH_FAILURE|CASH_CENTRE_SHORT|UNDETERMINED|NONE",
"days_open": <integer>,
"owner": "<the current audit analyst's name>",
"chase_now": "YES|NO",
"rationale": "one sentence, naming the shortfall, the tender leg, the window you applied and the
evidence -- carried or recorded -- you relied on"}
Precedence, applied in this order: CONTEXT_INCOMPLETE if a feed is missing (Rule S-8); then CLEARED
if the carried state already says so (Rule S-7); then RECONCILED or CLEARED if the position agrees;
then SHORT_BANKED (Rule S-4); then AGED_PAST_WINDOW (Rule S-6); then DEPOSIT_GAP on a failed batch
(Rule S-5); then DEPOSIT_GAP on an unmoved shortfall past its window (Rule S-3); otherwise
TIMING_EXPECTED (Rule S-2). "cause" is UNDETERMINED whenever the verdict is CONTEXT_INCOMPLETE.
Carried state
----------------------------------------------------------------
No earlier audit run has been recorded for this store day. This is its first appearance on the audit: nothing is known about what its position was yesterday, no shortfall has been reported open, no cause has been established, no chase has been raised and no handover has been recorded. Under Rule S-3, with no previous position on record there is nothing that can convict a shortfall of having stopped moving.
Store-day audit extract
----------------------------------------------------------------
Synthetic Record
----------------------------------------------------------------
Every field below is invented. This is a generated retail sales-audit store-day extract for
an AI use-case kit; it reproduces no retailer, no acquirer, no bank, no cash centre, no
store and no real person. The expected clearing windows, the bank claim window and the
materiality floor are ILLUSTRATIVE DEFAULTS.
Store Day
----------------------------------------------------------------
Store-day reference : SD-0005
Store : 0390 Corran Vale (group NORTH)
Trading date : 2026-08-18 (Tuesday)
Acquirer : NORTHGATE-ACQ
Cash carrier : MERIDIAN CASH SERVICES
Audit analyst of record : Rosalind Chu
Three-Way Position
----------------------------------------------------------------
Till takings against processor settlement and bank credits, per tender, for this trading
date, in GBP. A negative variance means the tills took more than reached the bank.
Tender Till takings Settled / banked Variance Expected clearing
CARD 25,739.33 25,739.33 0.00 T+2 banking days
CASH 7,054.81 6,432.56 -622.25 T+1 banking day
WALLET 4,679.06 4,679.06 0.00 T+3 banking days
Till takings, all tenders 37,473.20
Settled and banked, all tenders 36,850.95
Three-way variance -622.25
Materiality floor (default) 1.00
Tender leg carrying it : CASH
Reconciliation Policy (Default)
----------------------------------------------------------------
The windows below are an OPERATOR-TUNABLE DEFAULT, not a real retailer's or a real bank's
terms -- no documented clearing windows, claim window or materiality floor exist for this
row. Applied exactly as printed. A shortfall's age is counted in BANKING DAYS FROM THE
TRADING DATE, never in calendar days.
Tender Expected clearing window
CARD 2 banking days from the trading date
CASH 1 banking day from the trading date
WALLET 3 banking days from the trading date
Bank claim window : 10 banking days from the trading date
Materiality floor : 1.00 GBP
Write-off authority : NOT DEFINED. Nothing in this kit posts an
adjustment, writes off a variance, raises a bank claim,
releases a deposit or amends a till declaration.
Rule S-1 The position is THREE-WAY: what the tills took, what the processor settled, and what the
bank actually credited -- read per tender off the printed table. The tender leg carrying
the shortfall selects which EXPECTED CLEARING WINDOW applies. The windows, the bank claim
window and the materiality floor below are operator-tunable DEFAULTS, not any real
retailer's or bank's terms, and are applied exactly as printed.
Rule S-2 A shortfall INSIDE its tender's expected clearing window -- counted in banking days from
the trading date -- is TIMING_EXPECTED. It MUST NOT be chased. Most exceptions on a sales
audit are this, and chasing them is the entire reason the exception list gets ignored.
Rule S-3 PAST that window, a shortfall is a DEPOSIT_GAP only if the PREVIOUS audit run's position
shows the SAME shortfall and it has not moved. A shortfall that is still shrinking is
money arriving, and it stays TIMING_EXPECTED however old it is. If there is no previous
position on record at all, nothing convicts it: it stays TIMING_EXPECTED. A note promising
settlement is not settlement -- this rule convicts on the POSITION, never on the promise.
Rule S-4 A sealed-bag discrepancy confirmed by the cash centre is SHORT_BANKED at ANY age, inside
the window or not. The money was never in transit, so it is not going to arrive, and it is
not the bank's to find.
Rule S-5 A settlement batch recorded as FAILED is a DEPOSIT_GAP at ANY age, inside the window or
not. A batch that did not go out is not going to land.
Rule S-6 A shortfall on a store day already OLDER than the bank's claim window is
AGED_PAST_WINDOW on sight -- Rule S-3 does not get to hold it back. A claim window is a
DEADLINE, not a clearing schedule: once it has passed, "it might still be arriving" no
longer makes the money recoverable, and the reading has to say so the first time it is
seen. SHORT_BANKED does NOT age into it: a counted shortfall is not a bank claim and the
claim window is not its clock.
Rule S-7 Once a shortfall clears, the store day is CLEARED and stays CLEARED on every later run.
CLEARED is not RECONCILED. A store day that never disagreed is RECONCILED; one that
disagreed and then landed is CLEARED, and on a day when both show a zero variance the only
thing that tells them apart is this audit's own history.
Rule S-8 If any of the three feeds is missing for the trading date, the reading is
CONTEXT_INCOMPLETE: no variance is judged, no cause is determined and nothing is chased.
THERE IS NO DEFAULT CLEARING WINDOW for a feed that did not arrive, and the days-open
count does not advance -- an audit that could not look cannot claim the item stayed open.
Rule S-9 "chase_now" is YES only where the verdict owes a chase AND this audit has not already
raised one at that level. The three chaseable verdicts go to three different places, so a
chase already raised at one level does not satisfy another.
Audit Position
----------------------------------------------------------------
Audit date : 2026-08-19 (audit run 1 of this store day)
Audit cadence : daily -- one sales audit run every banking morning
Banking days since trading date : 1
Previous audit run : -- none, this is the first
Next audit run : 2026-08-20
Bank claim window remaining : 9 banking days
Events In This Window
----------------------------------------------------------------
Everything recorded against this store day between the previous audit run and this one.
THIS RUN ONLY -- an event recorded on an earlier run is not repeated here.
09:10 Cash centre rang: the sealed bag was light against what the store declared on the
manifest, and they have logged it as a discrepancy on their side.
Audit Notes
----------------------------------------------------------------
Trading was heavy on the date in question -- a bank holiday weekend promotion -- so the
absolute figures look larger than this store's usual day.