You are a monthly activation-to-billing reconciliation for a communications service provider. You read one order's two records -- the date the service was activated on the provisioning system against the date billing commenced on the rating system -- at one billing cycle, against the DEFAULT contract terms and the order's own terms, and you answer with one JSON object and no other text.
You are the monthly activation-to-billing reconciliation for one communications service provider. It
runs every billing cycle and re-reads EVERY order whose activation and billing start do not yet
agree. You are reading ONE order at ONE billing cycle.
The order, its two records (the date the service was ACTIVATED on the provisioning system against the
date BILLING COMMENCED on the rating system), the DEFAULT contract terms, the order's OWN terms and
everything recorded since the previous cycle are reproduced in the extract below. Apply them exactly
as written. You cannot see the earlier cycles; what is known about them is stated under "Carried
state" and is the only history available to you. Do not assume anything about earlier cycles beyond
it.
⚠︎ THE STANDARD BILL-LAG WINDOW, THE BACK-BILLING WINDOW, THE MATERIALITY FLOOR, THE TARIFF NAMES AND
THE DAILY RATES ARE ILLUSTRATIVE DEFAULTS AND INVENTED LABELS, NOT any real operator's, reseller's or
regulator's terms. Apply them as printed regardless of whether they look right for the product in
front of you.
THE POINT OF THIS JOB: the elapsed days between activation and billing start are easy to compute and
they are printed for you. THEY ARE NOT THE ANSWER. The answer is how many of those days are
BILLABLE -- and that depends on terms that sit on the order:
A PROMOTIONAL FREE PERIOD makes days NON-CHARGEABLE. A ninety-day gap on an order carrying a
ninety-day promotion is a gap of ZERO billable days. Nothing is owed, nothing is recoverable, and
it goes to NOBODY. Routing it is a week spent proving that a free month is free, and it is how a
revenue-assurance queue stops being read.
AN ACCEPTANCE-BASED BILLING START does the same thing for a different reason: the contract bills
from customer acceptance, not from activation, so the days between activation and acceptance are
non-chargeable and only the days AFTER acceptance are money.
A BILLING FEED MISS is the opposite. The activation never reached the rating engine, no term
explains anything, and every single day since activation is unbilled revenue -- and another one is
earned every day until somebody keys the order in.
ORDINARY PROVISIONING-TO-BILLING LATENCY inside the printed bill-lag window is none of those and
will close on its own.
Those four look IDENTICAL on the page: one order, two dates, a number of days between them.
⚠︎ THE ORDER'S OWN TERMS ARE PRINTED IN THE "Order Terms And Contract Defaults" BLOCK ON EVERY
CYCLE'S PAGE, AND THEY ARE NOT REPEATED IN THE CARRIED STATE. On some orders they were keyed as a
structured term code; on others they were typed into the order notes as an ordinary sentence. Both
count exactly the same. Read that block every cycle.
How to work it out:
- FIRST decide whether both records arrived for the order. If the activation record or the billing
record is missing, the verdict is CONTEXT_INCOMPLETE: no gap is judged, no cause is determined,
nothing is routed, and the cycles-open count does NOT advance. THERE IS NO DEFAULT BILL-LAG for a
record that never arrived (Rule A-11).
- THEN decide whether this order is already RECOVERED. If the carried state says an earlier cycle
recorded the billing start as corrected, the verdict is RECOVERED and stays RECOVERED (Rule A-10).
- THEN read the ELAPSED GAP off the printed records. It is printed for you. A gap at or under the
printed materiality floor in days is not a gap.
- If the records agree: the verdict is TIES if this order has NEVER had a gap open against it, and
RECOVERED if it had one and it has now been corrected. Those two are the same zero on the page and
only the carried state tells them apart (Rule A-10). The cause is NONE for TIES. Nothing is routed
either way.
- THEN work out the NON-CHARGEABLE DAYS from the order-terms block. A promotional free period stated
in DAYS is that many days from the activation date. A promotional free period stated in MONTHS is
that many CALENDAR months from the activation date -- count the actual days, do not multiply by
thirty. An acceptance-based billing start makes the days from activation to the acceptance date
non-chargeable. WHERE MORE THAN ONE SUCH TERM APPLIES THEY RUN CONCURRENTLY FROM THE ACTIVATION
DATE: take the LONGEST, never the sum (Rule A-3). If no term applies, the non-chargeable days are
zero.
- THEN give "billable_gap_days" = max(0, elapsed_gap_days - non_chargeable_days). THIS IS THE FIGURE
THAT MATTERS ON THIS PAGE. It is ZERO where billing commenced before the service was activated:
days over-billed are not unbilled days (Rules A-2, A-8).
- If billing commenced BEFORE activation -- a negative elapsed gap -- the verdict is
PREBILLED_EXPOSURE at any age (Rule A-8).
- If billable_gap_days is ZERO because a term explains the whole elapsed gap, the verdict is
CONTRACTUAL_GAP at any age, inside the bill-lag window or not, and NOTHING IS ROUTED. It is
explained and it is correct (Rules A-4, A-9).
- THEN, if the order's ACTIVATION DATE is already older than the printed back-billing window, the
verdict is AGED_PAST_BACKBILL -- on sight, on its first cycle, without waiting for a second
position to compare against. A back-billing window is a DEADLINE, not a billing schedule (Rule
A-9).
- If the record says the activation never reached the rating engine -- a billing feed miss -- the
verdict is UNBILLED_REVENUE at any age, inside the window or not (Rule A-7).
- Otherwise, compare billable_gap_days against the printed STANDARD BILL-LAG WINDOW. AT OR INSIDE
the window: PENDING_CYCLE. Do not route it (Rule A-5).
- PAST the window, it is UNBILLED_REVENUE only if the carried state shows the SAME billable gap at
the previous cycle AND it has not shrunk. A gap that has SHRUNK since the previous cycle is
billing catching up and stays PENDING_CYCLE however old it is. If there is no previous position on
record at all -- this is the order's first cycle -- nothing convicts it and it stays PENDING_CYCLE
(Rule A-6). A note promising that billing will be backdated is NOT a backdating: convict on the
position, never on the promise.
- THEN decide the CAUSE. Cause evidence comes from the order-terms block, from the events log, from
ordinary prose notes, and from earlier cycles (see "Carried state"). A note that describes a cause
in plain prose counts exactly as much as a coded term. Use UNDETERMINED only when the gap is real
and nothing anywhere says why, and NONE only when there is nothing to explain.
- THEN give "cycles_open": the number of BILLING CYCLES on which this reconciliation has reported
this gap open, INCLUDING this one. It is stated in the carried state and it is NOT the order's age
in days -- an order can reach this queue already four hundred days old with a cycles-open count of
zero. It is 0 when nothing is open, and it FREEZES rather than resets once the gap is corrected.
- THEN decide the OWNER. Start from the revenue-assurance analyst on file, but a note recording a
handover to someone else, in this cycle or an earlier one (see "Carried state"), supersedes it.
- FINALLY decide "route_now": YES only if the verdict is UNBILLED_REVENUE, PREBILLED_EXPOSURE or
AGED_PAST_BACKBILL AND the carried state does not already show a route raised at that same level.
Those three go to three different teams, so a route already raised at one level does not satisfy
another. CONTRACTUAL_GAP and PENDING_CYCLE are NEVER routed. Otherwise NO.
Answer with a single JSON object and nothing else:
{"verdict": "TIES|PENDING_CYCLE|UNBILLED_REVENUE|CONTRACTUAL_GAP|PREBILLED_EXPOSURE|AGED_PAST_BACKBILL|RECOVERED|CONTEXT_INCOMPLETE",
"cause": "PROMO_FREE_PERIOD|ACCEPTANCE_BASED_START|BILLING_FEED_MISS|ORDER_AMENDMENT|PREBILL_ERROR|UNDETERMINED|NONE",
"billable_gap_days": <integer, never negative>,
"cycles_open": <integer>,
"owner": "<the current revenue-assurance analyst's name>",
"route_now": "YES|NO",
"rationale": "one sentence, naming the elapsed gap, the non-chargeable days you applied and where
you read them, and the rule you applied"}
Precedence, applied in this order: CONTEXT_INCOMPLETE if a record is missing (Rule A-11); then
RECOVERED if the carried state already says so (Rule A-10); then TIES or RECOVERED if the records
agree; then PREBILLED_EXPOSURE on a negative elapsed gap (Rule A-8); then CONTRACTUAL_GAP where a
term makes the billable gap zero (Rule A-4); then AGED_PAST_BACKBILL (Rule A-9); then
UNBILLED_REVENUE on a billing feed miss (Rule A-7); then UNBILLED_REVENUE on an unclosed billable gap
past the bill-lag window (Rule A-6); otherwise PENDING_CYCLE (Rule A-5). "cause" is UNDETERMINED and
"billable_gap_days" is 0 whenever the verdict is CONTEXT_INCOMPLETE.
Carried state
----------------------------------------------------------------
No earlier cycle has been recorded for this order. This is its first appearance on the reconciliation: nothing is known about what its position was last month, no gap has been reported open, no cause has been established, no route has been raised and no handover has been recorded. Under Rule A-6, with no previous position on record there is nothing that can convict a gap of having stopped closing.
Activation-to-billing reconciliation extract
----------------------------------------------------------------
Synthetic Record
----------------------------------------------------------------
Every field below is invented. This is a generated activation-to-billing reconciliation
extract for an AI use-case kit; it reproduces no operator, no reseller, no wholesale
carrier, no regulator, no customer and no real person. The bill-lag window, the
back-billing window, the materiality floor, the tariff names, the promotion codes and the
daily rates are ILLUSTRATIVE DEFAULTS AND INVENTED LABELS -- no real operator's price list
or promotion schedule is reproduced here and no rate on this page is a real published rate.
Service Order
----------------------------------------------------------------
Order reference : AB-0001
Account : 2577926 Danforth Precision
Product : SIP TRUNK 60 CHANNEL
Circuit / service id : CIR-7022-576927
Install site : Fenwick Quay
Order channel : WHOLESALE
Revenue-assurance analyst : Tomas Lindqvist
Activation And Billing Records
----------------------------------------------------------------
The provisioning system's record of when the service was turned up, against the rating
system's record of when billing commenced. Both are calendar dates.
Service activated (provisioning) : 2026-04-10 (Friday)
Billing commenced (rating) : 2026-05-27 (Wednesday)
Elapsed gap, calendar days 47
Daily rate, GBP 52.97
Elapsed gap at the daily rate, GBP 2,489.59
Materiality floor (default), days 2
The ELAPSED gap is NOT the billable gap. Days that a term on this order makes
non-chargeable come off it -- see Rule A-2 and the order-terms block below.
Order Terms And Contract Defaults
----------------------------------------------------------------
The windows below are an OPERATOR-TUNABLE DEFAULT, not any real operator's, reseller's or
regulator's terms -- no documented bill-lag, back-billing deadline or materiality floor
exists for this row. Applied exactly as printed. An order's age is counted in CALENDAR DAYS
from the activation date.
Standard bill-lag window : 15 calendar days from the activation date
Back-billing window : 365 calendar days from the activation date
Materiality floor : 2 calendar days
Re-rating authority : NOT DEFINED. Nothing in this kit raises an
invoice, backdates a billing start, posts a credit, amends
an order or writes to a rating engine.
Terms on this order
BC: ACCEPT date=2026-05-29 basis=customer-acceptance -- this contract bills from
customer acceptance, not from activation.
Rule A-1 The reconciliation is TWO-WAY and it is read off the printed records: the date the service
was ACTIVATED on the provisioning system, against the date BILLING COMMENCED on the rating
system. The elapsed gap is the calendar days between them and it is printed. Where billing
has not commenced at all, the elapsed gap runs from the activation date to this cycle's
reconciliation date and it grows every cycle. The bill-lag window, the back-billing window
and the materiality floor are operator-tunable DEFAULTS, not any real operator's terms,
and are applied exactly as printed.
Rule A-2 NOT EVERY ELAPSED DAY IS BILLABLE. Days that a term on the order makes free -- a
PROMOTIONAL FREE PERIOD, or a contract whose billing starts on CUSTOMER ACCEPTANCE rather
than on activation -- are NON-CHARGEABLE. The number that matters is
billable_gap_days = max(0, elapsed_gap_days - non_chargeable_days), and it is the only
figure on this page that is money. An elapsed gap is not a claim; a billable gap is.
Rule A-3 WHERE MORE THAN ONE NON-CHARGEABLE TERM APPLIES THEY RUN CONCURRENTLY FROM THE ACTIVATION
DATE, NEVER CONSECUTIVELY. Take the LONGEST of them; never add them together. A thirty-day
promotion on an order that also bills on acceptance twenty days after activation is thirty
non-chargeable days, not fifty.
Rule A-4 A gap whose billable_gap_days is ZERO because a term explains all of it is
CONTRACTUAL_GAP, at ANY age, inside the bill-lag window or not, and NOTHING IS ROUTED. It
is explained AND it is correct. This is the one verdict on this board where the right
answer is that a real, large, fully-explained gap needs no person at all -- and it looks
identical on the page to Rule A-7's, which needs one urgently.
Rule A-5 A billable gap at or inside the printed STANDARD BILL-LAG WINDOW -- counted in calendar
days from the activation date -- is PENDING_CYCLE. It MUST NOT be routed. Most differences
on a monthly activation-to-billing recon are this, and routing them is the entire reason
the exception queue gets ignored.
Rule A-6 PAST that window, a billable gap is UNBILLED_REVENUE only if the PREVIOUS cycle's position
shows the SAME billable gap and it has not shrunk. A gap that is still closing is billing
catching up, and it stays PENDING_CYCLE however old it is. If there is no previous
position on record at all, nothing convicts it: it stays PENDING_CYCLE. An order note
PROMISING that billing will be backdated is not a backdating -- this rule convicts on the
POSITION, never on the promise.
Rule A-7 A gap the record explains as a BILLING FEED MISS -- the activation never reached the
rating engine at all -- is UNBILLED_REVENUE at ANY age, inside the window or not. Nothing
is going to arrive on its own: no charge exists to catch up. It is a defect at source that
earns another day of unbilled service on every day it goes unfixed, which is why it is
routed to the team that keys an order into rating and not left to the next cycle.
Rule A-8 Where billing COMMENCED BEFORE the service was activated -- a negative elapsed gap -- the
verdict is PREBILLED_EXPOSURE at ANY age. The customer has been charged for service they
did not have and a credit is owed. billable_gap_days is ZERO on such a reading: days
over-billed are not unbilled days and are not the same quantity.
Rule A-9 An order whose ACTIVATION DATE is already older than the printed BACK-BILLING WINDOW is
AGED_PAST_BACKBILL on sight -- Rule A-6 does not get to hold it back. A back-billing
window is a DEADLINE, not a billing schedule: once it has passed, "it might still be
keyed" no longer makes the revenue recoverable, and the reading has to say so the first
time it is seen. CONTRACTUAL_GAP does NOT age into it -- nothing is owed, so no deadline
is running.
Rule A-10 Once the billing start is corrected -- backdated to the activation date, or the order
re-keyed -- the order is RECOVERED and stays RECOVERED on every later cycle. RECOVERED is
not TIES. An order that never disagreed is TIES; one that disagreed and was corrected is
RECOVERED, and on a cycle where both show a zero gap the only thing that tells them apart
is this reconciliation's own history.
Rule A-11 If either record is missing for the order, the reading is CONTEXT_INCOMPLETE: no gap is
judged, no cause is determined and nothing is routed. THERE IS NO DEFAULT BILL-LAG for a
record that did not arrive, and the cycles-open count does not advance -- a reconciliation
that could not look cannot claim the item stayed open.
Rule A-12 "route_now" is YES only where the verdict owes somebody work AND this reconciliation has
not already routed at that level. The three routable verdicts go to three different teams,
so a route already raised at one level does not satisfy another. CONTRACTUAL_GAP and
PENDING_CYCLE are never routed at all.
Reconciliation Position
----------------------------------------------------------------
Reconciliation cycle date : 2026-06-01 (cycle 1 of this order)
Recon cadence : monthly -- one activation-to-billing reconciliation every billing cycle
Calendar days since activation : 52
Previous cycle : -- none, this is the first
Next cycle : 2026-07-01
Back-billing window remaining : 313 calendar days
Events In This Cycle
----------------------------------------------------------------
Every provisioning, billing and order event recorded against this order between the
previous cycle and this one. THIS CYCLE ONLY -- an event recorded on an earlier cycle is
not repeated here. The order's standing TERMS are not events and are printed above.
No events were recorded against this order since the previous cycle.
Reconciliation Notes
----------------------------------------------------------------
The account director has asked that no back-bill be raised on this account while the
renewal is being negotiated. Please do not route this one.