AlmondTill/G3N

Start your evaluation

Back to the worked examples

Harbourline is a demonstration company we built and run — four stores, a distribution centre, thirteen months of trading. Nothing below is a customer’s result.

Balancing the stores before the weekend

Captured on 30 October 2026 with Claude through the AlmondTill connector; the figures re-read from Harbourline’s records on the same day (every one listed below).

What moves between Harbourline's stores before the weekend, what the distribution centre sends, and what still needs the supplier.

The assignment

“Balance our stores before the weekend. Find what's overstocked in one store and short in another, move it along our usual lanes, and never take a store below its display minimum. Tell me what still needs the supplier.”

What it used

The rules the desk kept are the merchant's own, read from the replenishment rules. A store keeps its display minimum: two units of a variant on the floor, in every store's rules. A store gives only what stands above its own target and that minimum, and only when the spare is three units or more. Stock moves along the usual lanes, within six hundred kilometres. A transfer request holds at most 24 lines. The order of the lines, the cut into requests and the hold are the assistant's arithmetic: inside each store-and-donor pair the lines run fast-movers-first by each line's own sales over the last thirty days, a pair's lines are cut into requests of 24, and a line held back is held, not sent from somewhere else.

The proposal

The stores are short of the same things, so little moves between them. 4 lines move store to store — 7 units in all — each from a store holding more of a variant than its own target and display minimum together. The distribution centre carries the week: 308 lines and 468 units into the four stores. 6,074 positions below target found no store with spare stock; they still need the supplier.

FromToStyleColour and sizeUnitsSpare at the donorThe lane
Harbourline Queen West — shop floorHarbourline Yorkville — shop floorKnitwear style 458 (FW26)Charcoal, L15 of 10 on hand2 km, a usual lane
Harbourline Yorkville — shop floorHarbourline Queen West — shop floorWomen's style 574 (FW26)Forest, 1025 of 10 on hand2 km, a usual lane
Harbourline Queen West — shop floorHarbourline Rideau — shop floorKnitwear style 458 (FW26)Charcoal, L35 of 10 on hand354 km, a usual lane
Harbourline Queen West — shop floorHarbourline Sainte-Catherine — shop floorKnitwear style 458 (FW26)Charcoal, L15 of 10 on hand505 km, a usual lane

Harbourline Queen West gives Knitwear style 458 (FW26) in Charcoal, size L, to three stores — 1 to Harbourline Yorkville, 3 to Harbourline Rideau and 1 to Harbourline Sainte-Catherine: the whole of its spare of 5 and not a unit more. It had 10 on hand against a target of 3 and a display minimum of 2. Harbourline Yorkville gives Harbourline Queen West 2 of Women's style 574 (FW26) in Forest, size 10, from a spare of 5 — 10 on hand against a target of 3 and a display minimum of 2. Every store-to-store line was checked against the donor's own spare before it was proposed: 4 lines checked, each at or under that spare.

What the distribution centre sends, store by store:

StoreLinesUnitsRequests
Harbourline Yorkville — shop floor741094
Harbourline Queen West — shop floor951574
Harbourline Rideau — shop floor58813
Harbourline Sainte-Catherine — shop floor811214

In all: 312 lines and 475 units over 8 store-and-donor pairs, cut into 19 transfer requests of at most 24 lines each — 308 lines from the distribution centre and 4 from another store, every store-to-store pair a request of its own.

What still needs the supplier — the positions below target that no store could fill:

StorePositions
Harbourline Yorkville — shop floor1,504
Harbourline Queen West — shop floor1,546
Harbourline Rideau — shop floor1,499
Harbourline Sainte-Catherine — shop floor1,525

6,074 positions in all. Every one is there for the same reason — no store held spare stock of the variant: 6,074 positions with no donor, none covered only in part. Buying for them is the buy desk's weekly job, the first worked example; this one moves stock and buys nothing.

The follow-ups

“Montreal's weather just turned. Move knitwear there first, and don't take anything out of Yorkville this week.”

The store in Montreal is Harbourline Sainte-Catherine — shop floor; its location record says Montréal. Its knitwear goes first: 38 lines and 38 units, moved to the front of its requests and cut into requests of their own ahead of the rest, fast movers first inside — among them the Knitwear style 458 (FW26) line from Harbourline Queen West. Nothing leaves Harbourline Yorkville this week: 1 line was coming out of it — 2 units of Women's style 574 (FW26) in Forest, size 10, into Harbourline Queen West — and it is held for the supplier or next week; the assistant does not pick another donor, the desk does. The plan before the follow-up: 312 lines, 475 units, 19 transfer requests. After it: 311 lines, 473 units, 18 requests.

The exceptions

What stayed the merchant's call

The assistant wrote nothing. Every transfer request above was rehearsed through the connector and shown with its confirmation token; none was confirmed, and the stores' stock stands as it was. The lanes, the display minimum and the three-unit rule are the merchant's own replenishment rules. The order of the lines, the cut into requests and the Yorkville hold are the assistant's arithmetic over the engine's suggestions, and the merchant can change any of them. What still needs the supplier is a buying question, not a transfer — the weekly buying plan's job, the first worked example. The owner's own session, with these prompts put to the assistant, follows.

Where every figure comes from

Every figure on this page is read from the run file at the render. Each one is a call’s answer by its number, or a figure derived from the answers by the formula beside it. Nothing is typed.

FigureValueRead from
capturedAt30 October 2026the run file — the figures’ capture instant
company.nameHarbourlinethe run file — the capture’s own record
derived.balancing.displayMinimum.checked4derived — the store-to-store lines whose donor’s excess was read — every one at or under that excess, else the derivation refuses (never below the display minimum)
derived.balancing.displayMinimum.notShown0derived — the store-to-store lines whose donor’s excess could not be read — the read was refused or named no line
derived.balancing.floors.01a16b0e-4119-7822-b5c1-41c11023cc81.cityMontréalderived — the city on the floor’s location record (get_record PhysicalFacilityLocation, reached through the layout’s physical facility) — it decides the follow-up’s first store
derived.balancing.followUp.after.lines311derived — the lines after the follow-up — the first answer’s less the held lines
derived.balancing.followUp.after.requests18derived — the platform requests after the follow-up — the held pairs gone; the first store’s lines moved first cut into their own requests and the rest into theirs; every other pair as before
derived.balancing.followUp.after.units473derived — the units after the follow-up — the first answer’s less the held units
derived.balancing.followUp.before.lines312derived — the first answer’s lines, counted
derived.balancing.followUp.before.requests19derived — the first answer’s platform requests, added over the pairs
derived.balancing.followUp.before.units475derived — the first answer’s units, added
derived.balancing.followUp.held.0.quantity2derived — the units of a held line
derived.balancing.followUp.heldLines1derived — the lines whose donor is the held floor — they wait for the supplier or next week, counted
derived.balancing.followUp.knitwearLines38derived — the first store’s lines moved first — their own request first in each of its pairs, counted
derived.balancing.followUp.knitwearUnits38derived — the units of the lines moved first, added
derived.balancing.fromWarehouse.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.lines74derived — the floor’s lines from the distribution centre, counted over the pages
derived.balancing.fromWarehouse.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.units109derived — the floor’s units from the distribution centre, added
derived.balancing.fromWarehouse.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.lines95derived — the floor’s lines from the distribution centre, counted over the pages
derived.balancing.fromWarehouse.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.units157derived — the floor’s units from the distribution centre, added
derived.balancing.fromWarehouse.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.lines58derived — the floor’s lines from the distribution centre, counted over the pages
derived.balancing.fromWarehouse.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.units81derived — the floor’s units from the distribution centre, added
derived.balancing.fromWarehouse.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.lines81derived — the floor’s lines from the distribution centre, counted over the pages
derived.balancing.fromWarehouse.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.units121derived — the floor’s units from the distribution centre, added
derived.balancing.fromWarehouse.lines308derived — the lines whose donor is the distribution centre, over every floor, counted
derived.balancing.fromWarehouse.units468derived — the units of every line from the distribution centre, added
derived.balancing.rehearsals.sent19derived — the run_write rehearsals the capture sent — every one the door’s words or its dry run, with a token never sent back, counted
derived.balancing.requests.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-324b-7821-97f1-e39815440b3a.requests4derived — the pair’s lines divided by the cap, rounded up — the platform requests it takes; the lines fast-movers-first (the 30-day net velocity, then the variant id)
derived.balancing.requests.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-324b-7821-97f1-e39815440b3a.requests4derived — the pair’s lines divided by the cap, rounded up — the platform requests it takes; the lines fast-movers-first (the 30-day net velocity, then the variant id)
derived.balancing.requests.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.byDonor.01a16b0e-324b-7821-97f1-e39815440b3a.requests3derived — the pair’s lines divided by the cap, rounded up — the platform requests it takes; the lines fast-movers-first (the 30-day net velocity, then the variant id)
derived.balancing.requests.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.byDonor.01a16b0e-324b-7821-97f1-e39815440b3a.requests4derived — the pair’s lines divided by the cap, rounded up — the platform requests it takes; the lines fast-movers-first (the 30-day net velocity, then the variant id)
derived.balancing.requests.lines312derived — every line over every pair, counted
derived.balancing.requests.linesPerRequest24derived — the platform’s cap on a transfer request’s lines, from the narrative’s caps
derived.balancing.requests.pairs8derived — the store-and-donor pairs over every floor — one merged request each, counted
derived.balancing.requests.requests19derived — the platform requests — each pair’s lines divided by the cap, rounded up — added over the pairs
derived.balancing.requests.units475derived — every line’s units, added
derived.balancing.storeToStore.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorAvailableQty10derived — the donor’s available units for the variant, from the same read; none when not shown
derived.balancing.storeToStore.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorExcessQty5derived — the donor’s own excess above its target and reserve for the variant — the allocationSuggestions read from the donor; none when that read was refused or named no line
derived.balancing.storeToStore.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorReserveQty2derived — the donor’s reserve floor — its display minimum — for the variant, from the same read; none when not shown or none set
derived.balancing.storeToStore.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorTargetQty3derived — the donor’s own target level for the variant, from the same read; none when not shown
derived.balancing.storeToStore.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.quantity1derived — the units the desk moves on this line — whole units, as the request carries them
derived.balancing.storeToStore.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.distanceKm2derived — the lane’s great-circle distance, to the whole kilometre (half up); none when a side has no geo seed
derived.balancing.storeToStore.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-35a0-7906-a6df-bc172d43dd27.byVariant.01a16c27-be7e-7d3b-b59a-40de8d305308.donorAvailableQty10derived — the donor’s available units for the variant, from the same read; none when not shown
derived.balancing.storeToStore.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-35a0-7906-a6df-bc172d43dd27.byVariant.01a16c27-be7e-7d3b-b59a-40de8d305308.donorExcessQty5derived — the donor’s own excess above its target and reserve for the variant — the allocationSuggestions read from the donor; none when that read was refused or named no line
derived.balancing.storeToStore.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-35a0-7906-a6df-bc172d43dd27.byVariant.01a16c27-be7e-7d3b-b59a-40de8d305308.donorReserveQty2derived — the donor’s reserve floor — its display minimum — for the variant, from the same read; none when not shown or none set
derived.balancing.storeToStore.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-35a0-7906-a6df-bc172d43dd27.byVariant.01a16c27-be7e-7d3b-b59a-40de8d305308.donorTargetQty3derived — the donor’s own target level for the variant, from the same read; none when not shown
derived.balancing.storeToStore.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-35a0-7906-a6df-bc172d43dd27.byVariant.01a16c27-be7e-7d3b-b59a-40de8d305308.quantity2derived — the units the desk moves on this line — whole units, as the request carries them
derived.balancing.storeToStore.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byDonor.01a16b0e-35a0-7906-a6df-bc172d43dd27.distanceKm2derived — the lane’s great-circle distance, to the whole kilometre (half up); none when a side has no geo seed
derived.balancing.storeToStore.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorAvailableQty10derived — the donor’s available units for the variant, from the same read; none when not shown
derived.balancing.storeToStore.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorExcessQty5derived — the donor’s own excess above its target and reserve for the variant — the allocationSuggestions read from the donor; none when that read was refused or named no line
derived.balancing.storeToStore.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.quantity3derived — the units the desk moves on this line — whole units, as the request carries them
derived.balancing.storeToStore.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.distanceKm354derived — the lane’s great-circle distance, to the whole kilometre (half up); none when a side has no geo seed
derived.balancing.storeToStore.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorAvailableQty10derived — the donor’s available units for the variant, from the same read; none when not shown
derived.balancing.storeToStore.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.donorExcessQty5derived — the donor’s own excess above its target and reserve for the variant — the allocationSuggestions read from the donor; none when that read was refused or named no line
derived.balancing.storeToStore.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.byVariant.01a16bcb-3fb6-753b-b512-b425f3e91b56.quantity1derived — the units the desk moves on this line — whole units, as the request carries them
derived.balancing.storeToStore.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.byDonor.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.distanceKm505derived — the lane’s great-circle distance, to the whole kilometre (half up); none when a side has no geo seed
derived.balancing.storeToStore.lines4derived — the lines whose donor is another store’s floor, over every floor, counted — the pages merged one request per store-and-donor pair (the kit’s way)
derived.balancing.storeToStore.units7derived — the units of every store-to-store line, added
derived.balancing.supplier.byAnnotation.no-donor.gaps6,074derived — the gaps carrying this annotation over every floor, counted
derived.balancing.supplier.byStore.01a16b0e-35a0-7906-a6df-bc172d43dd27.gaps1,504derived — the floor’s gaps over the pages, counted
derived.balancing.supplier.byStore.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.gaps1,546derived — the floor’s gaps over the pages, counted
derived.balancing.supplier.byStore.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.gaps1,499derived — the floor’s gaps over the pages, counted
derived.balancing.supplier.byStore.01a16b0e-4119-7822-b5c1-41c11023cc81.gaps1,525derived — the floor’s gaps over the pages, counted
derived.balancing.supplier.gaps6,074derived — the rebalance gaps over every floor and page — the lines no donor could fill, counted; what still needs the supplier
derived.facts.calls501derived — every call of the run, counted
derived.facts.giveCalls2derived — the allocationSuggestions reads — one per store-to-store line, counted
derived.facts.positionsExamined36,396derived — each desk walk’s final cumulative examined count, added over the walks
derived.facts.pullPages44derived — the rebalanceSuggestions pages over every floor, counted
derived.facts.pullWalks4derived — the pull desk walks — one per floor, counted
derived.facts.reportPages19derived — the report_run calls, counted
names.facilities.01a16b0e-35a0-7906-a6df-bc172d43dd27.captionHarbourline Yorkville — shop floorthe run’s names — org_layout (call 3), read 30 October 2026
names.facilities.01a16b0e-35a0-7906-a6df-bc172d43dd27.physicalFacilityHarbourline Yorkvillethe run’s names — org_layout (call 3), read 30 October 2026
names.facilities.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.captionHarbourline Queen West — shop floorthe run’s names — org_layout (call 3), read 30 October 2026
names.facilities.01a16b0e-38f2-7f69-a270-8e8e3abfcbf1.physicalFacilityHarbourline Queen Westthe run’s names — org_layout (call 3), read 30 October 2026
names.facilities.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.captionHarbourline Rideau — shop floorthe run’s names — org_layout (call 3), read 30 October 2026
names.facilities.01a16b0e-3d7a-7716-87db-e9c8cfe8691e.physicalFacilityHarbourline Rideauthe run’s names — org_layout (call 3), read 30 October 2026
names.facilities.01a16b0e-4119-7822-b5c1-41c11023cc81.captionHarbourline Sainte-Catherine — shop floorthe run’s names — org_layout (call 3), read 30 October 2026
names.facilities.01a16b0e-4119-7822-b5c1-41c11023cc81.physicalFacilityHarbourline Sainte-Catherinethe run’s names — org_layout (call 3), read 30 October 2026
names.styles.01a16b12-b804-7abb-937b-0f2c8cf6b835.captionKnitwear style 458 (FW26)the run’s names — run_read styles (call 430), read 30 October 2026
names.styles.01a16b13-9a92-7b43-b23c-d44318081b3a.captionWomen's style 574 (FW26)the run’s names — run_read styles (call 430), read 30 October 2026
names.variants.01a16bcb-3fb6-753b-b512-b425f3e91b56.options.ColourCharcoalthe run’s names — the catalogue (get_record), read 30 October 2026
names.variants.01a16bcb-3fb6-753b-b512-b425f3e91b56.options.size-apparelLthe run’s names — the catalogue (get_record), read 30 October 2026
names.variants.01a16c27-be7e-7d3b-b59a-40de8d305308.options.ColourForestthe run’s names — the catalogue (get_record), read 30 October 2026
names.variants.01a16c27-be7e-7d3b-b59a-40de8d305308.options.size-footwear10the run’s names — the catalogue (get_record), read 30 October 2026
narrative.assignmentBalance our stores before the weekend. Find what's overstocked in one store and short in another, move it along our usual lanes, and never take a store below its display minimum. Tell me what still needs the supplier.the narrative’s run — the operator’s session, banked beside the run file
narrative.caps.linesPerRequest24the narrative’s run — the operator’s session, banked beside the run file
narrative.followUps.0Montreal's weather just turned. Move knitwear there first, and don't take anything out of Yorkville this week.the narrative’s run — the operator’s session, banked beside the run file

The tool calls