# Berrynomics — game rules and accounting, version 1.0

## What this release is

Berrynomics is an original seven-group strategy-learning game from Qubicbox Simulations’ The Harvest Exchange. Its first case is the Jos–Vom strawberry aggregation and cold-chain corridor. The engine resolves groups together, is deterministic, and records the rule version with results. “Harvest League” remains a legacy internal name in storage and code; it is not the public game title.

This release is a playable teaching model. It is not a calibrated forecast for a real strawberry company, a copy of the BSG engine, or a claim that the numerical response factors below match actual buyer behavior. Public/plan evidence and game-design coefficients remain separately labeled.

## Round sequence

Each 16-week season has four sequential four-week operating rounds: weeks 1–4 (early season), weeks 5–8 (build), weeks 9–12 (peak), and weeks 13–16 (close). Each round includes operating activity and a quarter of annual fixed costs, interest, and depreciation. The facilitator workflow is:

1. Enter decisions for Groups A–G and set shared market/economic assumptions.
2. Run a preview; correct validation errors and review warnings.
3. Lock decisions. The inputs and assumptions become an immutable round snapshot.
4. Resolve the round once. The engine calculates all seven groups together.
5. Review league rank, financial results, score dimensions, and the archived snapshot.
6. Advance. Cash, receivables, payables, inventory, debt, fixed assets, equity, and cumulative score carry forward. New debt, repayment, equity, capital spending, and dividends reset to zero.

The standalone release stores data in the current browser; export a backup before changing devices or clearing site data. The shared-room mode stores the game in a local server JSON file, separates groups with access codes, and enforces lock/resolve/advance on the server. Neither is a hosted internet game. See the [shared-room operations guide](shared-room-operations.md) for setup, backups, and network limitations.

## Operating calculations

All volume is kilograms; money fields ending in M are millions of Nigerian naira.

### Capacity, shrink, and inventory

- Validation requires planned inbound volume to be no greater than handling capacity.
- Current-period saleable yield is processed kg × (1 − effective shrink rate).
- The plan's 10% figure is treated as the post-control shrink target at full cold readiness. Effective shrink rate is base pre-cooling loss × (1 + 0.50 × (100 − cold readiness) / 100). At 100 readiness the configured loss basis applies; at 0 readiness it is 50% higher. This slope is a visible teaching assumption, not a measured causal effect.
- Opening inventory loses the configured inventory-aging percentage before it is available for sale. The lost opening-stock value is expensed as an aging write-off.
- Saleable volume is allocated to Premium, Standard, and Processing using the group’s product mix. Standard is the remainder after Premium and Processing.

### Lane demand and competitive allocation

Total market demand is divided between Premium, Standard, and Processing by the shared demand-share inputs, which must total 100%.

Each group enters a separate selling price for Premium, Standard, and Processing. Older saved games that only have a shared price-posture input are migrated to lane prices by applying that posture to the plan's reference price. Relative attraction is:

1. (average lane price / group lane price) to the price-elasticity power.
2. Multiplied by (group quality / average quality) to the quality-elasticity power.
3. Multiplied by (group on-time rate / average on-time rate) to the service-elasticity power.
4. Multiplied by ((group buyer spend + 0.2) / (average buyer spend + 0.2)) to the buyer-spend-elasticity power.
5. Multiplied by (1 + contract premium × contract coverage).

The elasticity and contract-purchase coefficients are visible shared assumptions in the engine. The engine first allocates lane demand in proportion to attraction, caps allocations at each group’s available lane supply, then re-allocates unmet demand to groups with remaining supply. This repeats until demand or supply is exhausted. Results are simultaneous and independent of input-row order.

This is a transparent game rule. It is not a proven real buyer-choice equation.

### Buyer acceptance and sales

The starting rejection basis is an editable shared assumption. The group rejection rate is:

base rejection × (1.25 − 0.50 × quality / 100) × (1.15 − 0.25 × cold readiness / 100) × (1.15 − 0.15 × on-time rate / 100)

The result is bounded from 0% to 50%. Accepted sales equal allocated shipments less rejected shipments. Rejected shipments earn no revenue; their product cost is expensed with shipped volume. This is a simplification; there is no resale or processing recovery for a rejected shipment.

## Cost and financial accounting

- Current production cost is processed volume times procurement, variable, and logistics cost per kilogram.
- Average inventory cost combines aged opening inventory value and current production cost, divided by saleable available kilograms. It therefore absorbs current production shrink into the cost of the surviving output.
- Cost of sales is shipped kilograms (including rejected shipments) times average product cost. Ending unsold inventory is valued at the same average cost.
- EBITDA is revenue less cost of sales, opening-stock aging write-offs, one quarter of annual fixed cost, and buyer spend.
- Depreciation is the lower of opening net fixed assets plus capex, or (opening net fixed assets + half of capex) × annual depreciation rate / 4.
- Interest is average opening and closing term debt times the annual interest rate divided by four.
- Tax is the greater of zero or earnings before tax times the tax rate. Loss carry-forwards and tax credits are not modeled.
- Net income is EBITDA less depreciation, interest, and tax.
- Current sales are collected at the shared collection rate; opening receivables are collected at the old-receivables collection rate.
- Opening payables are settled at the shared rate. Current procurement cash paid is controlled by each group’s supplier-payment percentage; the unpaid balance becomes ending payables. Current variable/logistics costs are paid in-period.
- Cash also reflects fixed costs, buyer spend, capex, debt proceeds and principal repayment, equity issuance, dividends, interest, and tax. Negative ending cash is shown as a funding shortfall; automatic overdraft funding is not provided.
- Ending equity is opening equity plus new equity plus net income less dividends. Ending net fixed assets are opening assets plus capex less depreciation. The engine reports an assets-minus-liabilities-and-equity check for every group.

The financial statements are designed to reconcile under the stated assumptions. This is a simplified operating model: no FX, inflation, import tariffs, shareholder valuation, or detailed tax-loss schedules are included.

## Score and ranking

Each dimension is scored 0–100, then combined with editable weights that must sum to 100:

- Financial viability: 50% profitability proxy, 25% cash-liquidity proxy, 25% debt-to-assets proxy.
- Buyer performance: 40% demand fill, 30% shipment acceptance, 30% on-time delivery.
- Supply and settlement: 50% contract coverage, 50% supplier-payment percentage.
- Resource efficiency: 100 less processed-volume loss and opening-stock aging loss, bounded 0–100.
- Strategic position: 70% relative accepted-sales share and 30% relative positive EBITDA margin.

The default dimension weights are Financial 35%, Buyer 25%, Supply 20%, Resource 10%, Strategic 10%. They are instructional priorities, not an independently validated scorecard. Rank is by weighted round score; cumulative score is the sum of round scores.

## Scenario switches

- As entered: no extra changes.
- Price-led rivals: Groups B–G reduce all three lane prices by 8%.
- Premium rivals: Groups B–G add eight points of quality and cold readiness, raise each lane price by 5%, and increase buyer spend by 15%.
- Processor-linked rival: Group E shifts up to ten points of mix toward processing.
- Route disruption: total demand falls 10%, pre-cooling loss basis rises four percentage points, and logistics cost rises 20%.

These are user-selected what-if cases, not predictions or probabilities. Stress bands are separate scenario widths.

## Known limits and next calibration gates

1. Replace the total market and lane-demand placeholders with dated buyer/order evidence.
2. Replace Group B–G demo profiles with anonymous observed rival data or facilitator scenarios.
3. Measure production shrink, buyer rejection, accepted quantities, and the effects of cooling and service.
4. Reconcile plan costs to invoices and contracts; validate settlement terms and borrowing access.
5. Compare held-out operating rounds with model outputs before labeling coefficients calibrated.
6. Calibrate assumptions against measured rounds. Before public internet hosting, add HTTPS, managed accounts, a durable database, tested backups, recovery, monitoring, and a security review.

## Plan V7 arithmetic replay

The Evidence & calibration area replays the Strawberry Plan V7 annual operating case through the game engine: 200,000 kg inbound, 10% shrink, 55/35/10 lane mix, stated lane prices, ₦3,500 procurement and ₦2,200 other variable cost per inbound kg, and ₦398m fixed cost. It assumes no buyer rejection and no financing, tax, depreciation, or logistics cost for this isolated arithmetic check. Exact weighted price is ₦9,495/kg, revenue is ₦1,709.1m, cost of sales ₦1,140m, and EBITDA ₦171.1m. The rounded plan headlines are ₦1,710m revenue and ₦172m EBITDA. This verifies arithmetic consistency only; it does not calibrate market demand or buyer behavior. See [`plan-reconciliation.md`](plan-reconciliation.md) for source-page distinctions and funding/cashflow differences.

