Procurement¶
Deep dive on how the company acquires the physical means to operate: locomotives, rolling stock, track materials, signaling equipment, technology licenses, and skilled labor. Architecturally, procurement is a specialized application of the contract subsystem — a procurement transaction is a contract between the company (buyer) and a supplier (seller) — but the player interacts with it through a dedicated Procurement panel because the mental model of "buying a locomotive" is distinct from "shipping coal."
→ Parent: GDD.md
What Procurement Covers¶
- Locomotives — steam, diesel, electric (era-dependent).
- Rolling stock — freight cars (boxcar, hopper, tanker, flat, refrigerator), passenger cars, mail cars, specialty cars.
- Track materials — rail, ties, fasteners, switches, signaling, bridges, electrification.
- Technology licenses — air brakes, automatic couplers, signaling systems (see Signaling Tech Licenses below), advanced safety equipment.
- Skilled labor — locomotive engineers, dispatchers, project foremen, and similar trades. Modeled as a regional aggregate labor pool with its own goodwill standing per region — see Skilled Labor as a Procurement Category below.
Era-Gated vs. Goodwill-Gated Availability¶
Two independent axes:
- Era-gated — what exists to buy in this era. Westinghouse air brakes don't exist before 1869 regardless of player goodwill. Era progression introduces new product categories and obsoletes old ones.
- Goodwill-gated — among products that exist, which are offered to you and on what terms.
Suppliers: Named and Generic¶
Suppliers are business entities in the game with their own reputations (per the per-entity reputation model). Each scenario's available roster mixes:
- Historical named suppliers — real firms active in the scenario's era and region (e.g., Pullman Palace Car Company, Baldwin Locomotive Works, Lima Locomotive Works, Robert Stephenson and Company, Beyer Peacock, depending on date and setting). The scenario script defines which named suppliers exist and when they become available — some appear at scenario start, others surface through scripted events.
- Generic suppliers — procedurally generated firms with reasonable names and reputations, used where scenarios lack well-known historical names or to fill regional gaps.
This parallels the historical-vs-procedural pattern used for named individuals and for underwriters.
Acquisition Strategies¶
The player has multiple paths to fleet and materials:
- Procurement contracts — ongoing relationships with manufacturers. Standard rates, scheduled delivery, often improving over time as the relationship deepens.
- Large-order purchases — one-time bulk orders, paid in cash or through bond financing. Typically used at network-expansion milestones.
- Vertical integration via equity — owning (in whole or in significant stake) a manufacturer turns it into a captive supplier. Eliminates the procurement market for that category, exposes the company to the manufacturer's profits and losses, and is a strategic alternative to repeated negotiation.
Provider Tiers¶
Manufacturers differentiate into three discrete tiers: budget, standard, and premium. Each tier has its own modifier set, capital cost profile, and goodwill cost.
- Budget — commodity-grade equipment at low prices. Reliable enough but no special advantages. Most suppliers will sell to most operators.
- Standard — mid-market equipment representing the era's competent default. Decent reliability and performance; the workhorse purchases of the industry.
- Premium — high-end equipment from prestige suppliers (the Pullman Palace Car Company is the canonical example) that grants downstream modifiers to the operations that use it. Premium suppliers are more selective about who they sell to and which brands they want associated with their product, so premium tier carries a goodwill cost in addition to the higher capital outlay.
Premium Modifier Categories¶
Premium-tier products grant operational modifiers in a small set of canonical categories. Examples by domain:
- Speed — premium locomotives reach higher top speeds.
- Reliability — premium equipment has fewer mechanical breakdowns; premium track has fewer maintenance events.
- Efficiency — premium locomotives consume less fuel; premium freight cars handle perishables with less spoilage.
- Capacity — premium track and signaling support higher line capacity; premium passenger cars carry more comfortably.
- Reputation — premium passenger cars (Pullman) command higher ticket prices on the brand association alone; premium track and signaling improve safety records, which feed back into goodwill.
Specific premium modifier values per product per tier are scenario-tunable.
Market Structure¶
The number of viable suppliers in a category drives pricing dynamics:
- Competitive market (multiple manufacturers) — the player can solicit competing offers and choose the best deal. Suppliers compete on price, delivery, and terms.
- Monopoly or near-monopoly (one or two dominant suppliers) — the captured market commands higher prices, longer delivery, and fewer concessions. Players in this position face the question of whether to accept the premium, build vertical integration (acquire equity in the supplier), or wait for new entrants.
Market structure can shift over a scenario: a monopoly supplier may be challenged by a new entrant, or a competitive market may consolidate into an oligopoly.
Goodwill, Volume, and Procurement Terms¶
Procurement terms are shaped by the same two-factor model used for sweetheart customer contracts: goodwill and counterparty leverage are substitutes.
- Goodwill with a supplier moves terms along the gradation (per Goodwill):
- Pricing premium at low goodwill — pay more for the same product.
- Delivery delay — go to the back of the queue.
- Tier restriction — premium products become unavailable; only standard or budget product is offered.
- Outright refusal — rare, for extreme cases (hostile takeover attempts, public feuds, very low standing).
- Preferred-customer status at high goodwill — first call on new releases, prototype access, favorable financing terms.
- Volume and market presence — a company placing substantial volume across multiple urban regions has leverage with suppliers regardless of personal reputation. A reviled-but-dominant operator can still extract sweetheart procurement deals because the supplier wants the volume more than they dislike the player.
Each major supplier is tracked as its own stakeholder. Player goodwill dominates negotiated terms; company goodwill dominates the supplier's willingness to be associated with the brand. Goodwill simply lowers the volume threshold needed for preferred terms; volume can compensate for being reviled, and vice versa.
The formal substitutability — how goodwill and volume combine into an effective-standing score, with gradation thresholds reading off the combined score — is described in Business Dealings — The Leverage Model. The same model applies to procurement terms here.
Signaling Tech Licenses¶
Signaling is a formal procurement category that interacts directly with network throughput (see MapAndRegions — Per-Segment Composition). A signaling license is not rolling stock — it's permission to install a specific signaling system on the player's lines, plus the supplier relationship that comes with it.
Three eras of signaling tech, each with a capacity multiplier and an era gate:
| License | Era available | Capacity multiplier | Notes |
|---|---|---|---|
| Block Signaling | scenario start | +25% | The 19th-century baseline — block-section signaling with telegraph dispatch. Available from the earliest scenarios. |
| CTC (Centralized Traffic Control) | 1927+ | +50% | Inter-war breakthrough — centralized dispatch eliminates wait-on-meet at sidings, dramatically improves single-track Standard-tier capacity. |
| Cab Signals | 1950s+ | +75% | Modern era — in-cab signal display + automatic train control. Suitable for high-speed double-track Trunk corridors. |
Stacking rule. Multipliers do not compound. The single highest-tier license applied to a line is the active one — applying CTC over Block Signaling produces +50%, not +25% × +50%. Late-era tech supersedes earlier tech rather than stacking on top of it. This keeps parallel-line construction and tech licensing as separate gameplay levers.
Per-line application. Acquired licenses go into a player-wide inventory; the player then explicitly applies a license to specific lines. One active license per line. This mirrors the real-world reality that installing CTC on the Pennsylvania Mainline did not automatically install it on every branch — the equipment investment was a corridor-by-corridor decision driven by traffic demand.
License carryover through line upgrades. When a line is upgraded in place (e.g. Branch → Standard), any applied signaling license stays installed. The wayside equipment isn't torn up during a tier conversion — only the trackwork is — so the player's per-line install investment is preserved across upgrades.
Two-stage cost. Acquisition (one-time, supplier negotiation) plus per-line application (the equipment install). Both cost tiers scenario-tunable; default Michigan tunables live in economy.json. Acquisition also includes a small Industrialist goodwill nudge with the relevant supplier (Westinghouse / GE / etc.), per the standard supplier-relationship pattern.
Rivals can acquire and apply licenses too. The system is symmetric; rival AI heuristics drive when they invest, tunable via scenario parameters and exposed in playtest diaries.
Implementation state. TechLicense POCO + TechLicenseService shipped in M13 Phase 11. Acquire, apply, remove, multiplier-per-line all work, with the era gate enforced via MinDay. The capacity wiring runs through SegmentCapacityService.lineSignalingMultiplier, so an applied license is in effect on the next daily tick. What's deferred is catalog content — the Michigan scenario's economy.json doesn't yet author the Block / CTC / Cab Signals licenses themselves, so during play the inventory is empty and the multiplier defaults to 1.0 for every line. A scenario-authoring pass populates the catalog and the system exercises immediately.
Skilled Labor as a Procurement Category¶
Skilled labor — locomotive engineers, dispatchers, project foremen, and similar trades — is treated as a procurement category, but at a regional aggregate level rather than per-individual. Each region has its own pool of skilled trades available to operators in that region; the size of that pool effectively available to the player's company is governed by the company's regional reputation:
- A respected operator pulls from a large pool of willing skilled workers.
- A reviled operator finds the pool effectively shrunk — workers refusing offers, demanding premium wages, or quitting after a short stint.
This parallels the construction labor pool — same regional-aggregate model, applied to operating skilled trades rather than to construction labor. It avoids inventing a parallel goodwill system; the regional Public and regional Labor stakeholders already capture the relevant standings.
Skilled labor is not modeled at per-individual goodwill granularity. The named-individual track is reserved for the key staff roles (Chief Engineer and similar); skilled trades in bulk are an aggregate.
Fleet Capacity and Contract Fulfillment¶
The active rail network and the company's contract portfolio together imply a minimum fleet requirement — locomotives, rolling stock, and crews adequate to actually run the contracted service. The model has three layers:
- The player defines routes through the network graph.
- The simulation derives target timetables from contracts assigned to each route.
- The player allocates specific equipment to each route, which determines the achievable timetable.
Achievable capacity is a function of all three.
Routes¶
A route is a player-defined path through the settlement graph — a sequence of settlements a train visits on its run. Each settlement on the path must have a station of at least the route's required tier. Routes are first-class objects the player creates and edits. Each route has:
- A path — the ordered sequence of regions, with the corresponding rail lines traversed between them.
- A target frequency (round trips per period), derived from the contracts assigned to it.
- An allocated equipment list (locomotives, plus the regional rolling-stock pools the route draws from).
- A list of contracts assigned to the route.
Three common shapes:
- Point-to-point — one origin, one destination, no intermediate stops.
- Multi-stop / composite — one or more pickup stops and one or more drop-off stops in sequence, useful for consolidating contracts that share part of the path.
- Hub-and-spoke — short feeder routes converging on a major hub, with separate longer routes radiating out from it.
Contract-to-Route Assignment¶
When a new contract becomes available, the simulation suggests one or more candidate routes that could fulfill it. The player decides:
- Assign to an existing route — the route already serves the contract's origin-destination pair; the contract joins onto its timetable, sharing slots and equipment.
- Modify an existing route — extend a route to add a new stop (e.g., adding a pickup at a connected rural region to a route that already runs to the relevant urban hub).
- Create a new route — when the existing network can't reach the contract's endpoints, or when consolidation would cost more than running an independent train.
Most contracts join existing routes — adding cargo to existing trains is cheaper than running new ones. New routes get commissioned when consolidation isn't viable or when capacity has run out and another route makes more strategic sense than further allocating to the existing one.
Example: Rural-to-Urban Cattle¶
Initial state. Contract A ships cattle from Rural Region 1 to Urban Region 2. The player creates Route Alpha (Rural 1 → Urban 2, point-to-point) and assigns Contract A to it.
A second contract appears. Contract B ships cattle from the same Rural 1 to the same Urban 2. The simulation suggests assigning to Route Alpha — same path, same equipment, the trains just carry more cargo per run (or run more frequently if needed). Player approves.
A third contract appears. Contract C ships cattle from Rural 3 to Urban 2. Rural 3 is connected directly to Rural 1. The player's options:
- New separate route. Create Route Beta (Rural 3 → Urban 2, point-to-point). Independent equipment, independent timetable. Higher fleet demand; clean separation.
- Modify Route Alpha into a composite. New path: Rural 3 → Rural 1 → Urban 2, with pickups at both rural stops on each outbound run. One set of equipment serves both contracts. Lower fleet demand, but each round trip is longer — which lowers Alpha's achievable frequency on the original Rural 1 → Urban 2 leg.
The composite is more efficient (fewer locomotives, less yard overhead) but produces longer round-trip times that bite into achievable frequency. The simulation lays out the trade-off side-by-side so the player decides.
Per-Route Timetables¶
For each defined route, the simulation derives an implicit timetable from two inputs: the contracts assigned to it, and the equipment allocated.
The target schedule comes from the contracts:
- The route's target frequency is the maximum round trips per period needed to satisfy all assigned contracts' service-levels.
- Each scheduled train run consumes one locomotive plus N cars sized to per-shipment volume, plus a crew.
- Multiple contracts on the same route stack onto shared timetable slots where compatible (same cargo type, same stops, etc.).
The achievable schedule depends on what's allocated:
- The route's length, terrain, and the speed and tonnage capability of the allocated locomotive(s) determine how many round trips can actually be completed per period.
- A fast express locomotive completes the round trip more often than a slow freight locomotive — so the same route under different allocations produces different achievable frequencies.
- If achievable ≥ target, the route is fully served (any extra capacity is idle or available for future contract growth). If achievable < target, the route runs at a shortfall — shipments delayed or skipped, with contract penalties cascading per Contracts.
The result is a per-route schedule the player reads at a glance: "The Pittsburgh–Cleveland trunk targets 14 trains per week; current allocation supports 12 — shortfall."
Fleet Allocation¶
Per-route timetables tell the simulation how many train slots need to be filled. The player allocates specific equipment to those slots — deciding which locomotives run which routes. This is the tactile, hands-on layer of fleet management and the place equipment differentiation matters most:
- Fastest express locomotives belong on the most lucrative passenger lines, where speed pays off in ticket prices and on-time premiums.
- Premium freight locomotives belong on high-volume mainline freight where reliability and tonnage compound.
- Older or slower locomotives can finish their service lives on shorter rural trunk lines, where the demands are lower and the marginal upgrade is not worth a new purchase.
- Specialty equipment (Pullman passenger cars, refrigerator cars, etc.) belongs on the routes where its downstream modifiers actually pay off.
Locomotives are tracked individually. Each carries its own stats — age, condition, top speed, max tonnage, fuel economy, tier, premium modifiers — and the player allocates by named unit. The locomotive's speed and tonnage feed directly into the achievable timetable on the route it's assigned to: a slow locomotive on a busy long-haul route produces a shortfall; a fast locomotive on a short branch produces idle capacity.
Rolling stock (freight and passenger cars) is abstracted into regional pools by type rather than tracked unit-by-unit; a route's per-train car requirement draws from the relevant regional pool as the train runs.
The allocation UI defaults to auto-allocation — the simulation picks reasonable assignments based on route demand and available equipment — and the player overrides specific allocations they care about. Like the maintenance lever, default is hands-off; intervention is for strategic moments. Players who want full hands-on control can opt to allocate everything; players who want to focus on the big picture can let auto-allocation handle the routine and only intervene on high-stakes routes. This is the fleet-allocation expression of the delegation dial, and it is per company: each company the player holds keeps its own fleet, allocated on its own surface (or by its own staff when delegated).
This is intended as one of the design's primary tactile hooks — the moment-to-moment decision-making that gets a player into the game and earns them their way into the rest of the deep-management layer.
Fleet Capacity Computation¶
Fleet capacity is per-route, not just a global count. Each route's status is the comparison of target frequency (from contracts) to achievable frequency (from allocated equipment's speed and tonnage):
- Surplus — allocated equipment over-delivers on the route's target. The locomotive sits idle for part of the period or could absorb additional contract growth.
- Sufficient — achievable matches or slightly exceeds target. The route runs cleanly.
- Shortfall — achievable falls below target. The route can't keep up; contracts using it begin missing service-level, with penalties cascading.
Total fleet demand is the sum of route-level targets across the network, plus a buffer for yard pulls and maintenance reserve. Total fleet supply is the sum of allocated equipment's effective capacity. Surplus and shortfall can coexist — equipment idle on one route while another route runs short — which makes reallocation a meaningful lever before resorting to procurement or triage.
Triage When Fleet Falls Short¶
When procurement is constrained or contracted demand outruns equipment, the company runs short of fleet to cover its routes. Triage is the layer that handles the shortfall.
Triage operates at three levels, in increasing severity:
- Equipment — reallocate locomotives between routes, moving capability from slack routes to tight ones.
- Service — reduce per-contract service level on a tight route (some shipments delayed; goodwill cost) instead of formally breaching.
- Contract — drop or breach specific contracts entirely; defaults cascade through the contract penalty tiers per Contracts.
Defaults cascade through the contract penalty tiers:
- Defaulting on standard rural contracts — lost income and goodwill, but no legal exposure.
- Defaulting on sweetheart industrial contracts — contractual financial penalties on top of income and goodwill loss.
- Defaulting on government contracts — fines, court costs, possible regulatory action.
The Hybrid Model¶
Triage follows the design's standard "auto by default, manual when the player cares, events when it matters" pattern:
- Policies (default). The player sets priority policies per route or contract type in advance — e.g., "government contracts always full; sweetheart contracts full unless a government route would otherwise breach; standard rural contracts may underdeliver up to 30% before formal breach." When fleet runs short, the simulation auto-resolves per the policy stack without surfacing a decision, in the same shape as the maintenance lever's auto-default.
- Manual override. At any time the player can open the fleet allocation panel and reallocate equipment route-by-route. The same UI used for routine allocation doubles as the triage surface during shortfall.
- Event escalation. Major shortfalls — a government contract about to breach, a sweetheart customer about to walk, a route's achievable frequency dropping by half overnight — fire an event into the inbox with explicit options (reallocate now, breach, rush procurement, renegotiate), stopping the sim if the player has flagged that category. Routine, policy-resolvable shortfalls log silently.
The Triage Panel¶
A dedicated shortfall surface available alongside the fleet allocation panel. The triage panel shows:
- All routes currently in shortfall, sorted by total projected penalty (government tier first, then sweetheart, then standard).
- Per-route detail: target frequency, achievable frequency, contracts at risk, projected breach penalties if nothing changes, available equipment that could be reallocated from slack routes.
- Per-route actions:
- Reallocate equipment from elsewhere — drag a slack locomotive in, see the impact on both routes.
- Reduce service on specific contracts (goodwill cost without formal breach).
- Breach a contract (incurs penalties per the contract tier).
- Reroute contracts to other routes that have spare capacity.
- Rush procurement — open the procurement UI with an expedited flag (premium pricing, faster delivery; uses the existing supplier relationships).
- A "Suggest Reallocation" affordance proposes a configuration aimed at minimizing total projected penalty. The player accepts, modifies, or ignores.
Triage is not a punishment for failure — it is a routine planning question whenever fleet capacity is tight. The player decides whether to absorb the goodwill hit on a long-tail rural contract, pay a financial penalty on a mid-tier industrial deal, or stretch the fleet to keep the government contract intact at the cost of everything else.
Procurement, then, is not just about acquiring equipment; it is about avoiding the triage situation in the first place — and allocation is the tool that ensures the equipment you do have is on the routes where it earns most.
Open Questions¶
All major Procurement design questions are currently resolved. Specific tunable values — locomotive stat ranges, regional rolling-stock pool sizes, premium modifier magnitudes, breach-penalty curves, allocation-policy templates — are scenario-tunable and will need playtesting.