Operator sim

Run your studio before you run it.

Draw the room or type the station counts, choose which visits the block offers, and write the arrivals. Then type the membership tiers you are considering: price, starting members, retention, signups, costs, cash. Press run and the studio runs, month by month, on the numbers you entered and on nothing else.

Reviewed 2026-08-08Rules od-1Rules sl-1
Every money field starts emptyNo benchmark, no par, no aggregateNothing is stored by Praxium

Fictional demo studio

A studio nobody owns, running in front of you

The studio below was invented to show the shape of the output. Its floor is one of the reviewed reference plans in this repo; its arrivals, tiers, prices, members, retention, signups, costs and cash were typed by us for illustration. They describe no business, no day, and no month that happened. One button loads the whole thing, and the label travels with it.

Fictional demo studio — every number on it is invented and labelled as such. Replace them with yours.

The sheet we made up

Floor

Reference plan: boutique-1800

2 × Cold plunge · 2 × Compression therapy · 1 × Contrast therapy · 1 × Cryotherapy · 1 × Infrared sauna · 1 × PEMF · 1 × Percussion therapy · 2 × Red light therapy

Open block

240 min

A length the player chooses. The floor refuses to run without one.

On the menu

Morning routine, Contrast therapy

Arrivals

17 bookings

Invented for this example. This is the whole demand model: somebody typed these.

The money we made up

Tier A

$129 a month · 58 members at the start

87% kept each month · 17 signups a month · 5 visits per member

Tier B

$89 a month · 32 members at the start

92% kept each month · 9 signups a month · 3 visits per member

Tier C

$219 a month · 7 members at the start

94% kept each month · 4 signups a month · 8 visits per member

Cash at the start

$92,000

What the invented operator has in the bank in month one.

Fixed monthly cost

$26,900 a month

Rent, debt, software, insurance, everything that lands whether or not anybody visits.

Variable cost

$3.75 per visit served

Towels, water, power, consumables. One figure, because the model has one.

Open blocks

78 a month

How many times the representative block on the left runs. Capacity is that count times what the block clears.

Horizon

36 months

How far the projection runs before it stops.

What the two engines said

Cleared per block

14 of 17 bookings

Cleared means finished inside the window in both the short-day and long-day runs.

Held up by

Contrast therapy

Short-day run: 17 finished inside the block. Long-day run: 14.

Month 1

Bank $77,331 · 115 members

529 visits implied against 1092 the floor clears.

Month 13

Floor full: your assumptions imply 1111 visits this month; the block you wrote clears 1092.

From here the projection stops taking members it cannot seat, and the growth line goes flat until the room changes. Adding a station is the lever, and the operator owns it.

Month 36

Bank -$24,078 · 223 members

Nothing was changed along the way, because a recorded arc would be Praxium authoring the outcome as well as the input.

What an edit looks like

Month 9 — Tier B retention 88% → 92% (your change)

Every mid-run change is annotated at the month it was made, with the field, the old value and the new one.

Projected from assumptions you typed — not a forecast, not a valuation, and not a Praxium result. Change an entry and the projection changes, because the entries are the model.

Not a recommendation, not a typical studio, and not a target. Praxium publishes no par for any of these figures and no median to measure yours against. The results this page prints beside them were produced by running the shipped engines over this input while the page was built, so the example cannot disagree with the floor.

Output

What the run hands back

The block, played on the floor. Every figure on the canvas is a booking from your sheet, walking the stations that floor really has, queueing where your sheet contends. Click one and its event log opens: when it arrived, where it waited, when it left.
One count from the day layer, and only one: how many of your bookings finished inside the block in both the short-dose and long-dose runs. No percentage, no grade, no composite.
A month-by-month ledger of members, revenue, costs and bank balance, each line arithmetic over the entries you typed. Cash can go negative and renders negative; there is no bankruptcy screen, because what a negative month means for a business is a judgement this model has no standing to make.
The capacity ceiling your own sheet implies, and the month your projected members outgrow it. When they do, intake clamps and the clamp is reported with both numbers beside it rather than quietly absorbed.
An annotation at every month where you changed an assumption, carrying the field, the old value, the new value, and a chip saying whose change it was.
A link that carries the whole thing. It carries station counts, visit slugs, minutes, and range-checked integers, and it structurally cannot carry the name of a business.

Method

How the two layers work, and where each one stops

Studio Sim is two models stacked, versioned separately, with one number crossing between them. The lower one replays a block minute by minute against real geometry. The upper one turns your own assumptions into months. The only thing the lower one hands upward is how many bookings your sheet clears.

Day rules od-1. Ledger rules sl-1. Published 2026-08-08. Next review 2026-11-08.

The block, minute by minute

  1. 01Your floor resolves to a list of stations. A reference plan and a room you draw in the planner both go through the same geometry bridge the 3D visualiser uses, so the sim never counts placements for itself. Typed counts are your own claim about your own room.
  2. 02Each booking resolves to an ordered walk through stations, from the authored steps of the visit you booked. The sim never reorders a visit and never substitutes a nearby station for a missing one.
  3. 03The clock advances one minute at a time. A member arrives at the minute you wrote, joins one pooled queue per modality, and is seated when a station frees.
  4. 04A station is held for the dose plus the authored changeover after it, which is the same composition the capacity ceiling uses.
  5. 05The whole sheet is replayed twice: once with every unpinned dose at its authored minimum, once at its authored maximum. Nothing between the endpoints is simulated, so nothing between them is claimed.
  6. 06A booking counts as cleared only if it finished inside the block in both runs. That count, and only that count, crosses into the money layer.

The month, line by line

Seven declared steps, in this order, every month, for every tier. Each step is a rule with a version on it, and none of them holds a number you did not type.

  1. 01Retention. Members standing at the end of last month are multiplied by the retention rate you entered, rounded down. Rounding down is a declared rule and describes nothing about people.
  2. 02Intake. Your baseline signups for the tier, plus the signups you assumed for any campaign you logged in that month. Both figures are yours; the model never converts spend into signups for you.
  3. 03Capacity clamp. What the block clears, times the blocks per month you entered, is the visits the floor can serve. If the members you have projected imply more visits than that, intake is reduced, largest tier first, until the implied visits fit. The reduction is reported in the month it happens.
  4. 04Members settle. Retained plus whatever intake survived the clamp.
  5. 05Revenue. Settled members times the price you entered, per tier, summed.
  6. 06Costs. Your fixed monthly figure, plus your per-visit variable cost times the visits actually served, plus any campaign spend you logged.
  7. 07Cash. Last month's balance plus revenue minus costs. It may go negative, and then it is a negative number on a chart and nothing more.

The model refuses to enroll members whose visits the floor cannot clear. Real studios may oversell; this model will not.

Growth can also stop without the floor being full: when a tier's signups only replace the members it lost, its count settles there, and no floor-full notice appears because the room is not what stopped it.

Money is integer cents and rates are integer basis points end to end, so a projection cannot drift on a rounding path. Money never reaches the minute-resolution engine at all: the day layer has no monetary field, cannot be given one, and a test greps its source to keep it that way.

Coefficient ledger

Where each number in this comes from

Neither layer holds a bare number. Each value either names a coefficient with its source attached, or it does not exist. The list below is generated from those ledgers rather than retyped, and a type error is what happens if a coefficient is ever added without a bucket.

The day engine: minutes, stations, queues

Read out of repo content, or computed from your own sheet

dose.minMinutes

Authored dose minimum for a visit step (short-day boundary run)

authored per visit step in src/content/visits/visit-a.ts…visit-g.ts, folded into VISITS by src/content/visits/index.ts:26

src/content/types.ts · ProtocolDose.minMinutes

dose.maxMinutes

Authored dose maximum for a visit step (long-day boundary run)

authored per visit step in src/content/visits/visit-a.ts…visit-g.ts, folded into VISITS by src/content/visits/index.ts:26

src/content/types.ts · ProtocolDose.maxMinutes

dose.rangeRule

The authored rule that moves a member within a dose range

rendered verbatim beside a dose pin; never parsed into a number

src/content/types.ts · ProtocolDose.rangeRule

step.transitionMinutes

Authored changeover minutes after a visit step

half of the station hold, mirroring the cycle time in src/lib/studio-3d/capacity.ts:197

src/content/types.ts · VisitStep.transitionMinutes

step.optional

Whether a visit step can be skipped

decides which steps the menu setting can exclude

src/content/types.ts · VisitStep.optional

step.order

Authored order of station stops within a visit

the sim walks steps in authored order; it never reorders a visit

src/content/types.ts · VisitShape.steps

step.modalitySlug

Which modality a visit step needs

matched to stations only through placement.spec.modalityName

src/content/types.ts · VisitStep.modalitySlug

visit.totalMinutes

Authored visit envelope, used as the uncontended benchmark

authored when every step is included; otherwise Praxium-computed as the same per-step sum restricted to included steps

src/content/types.ts · VisitShape.totalMinutes

visit.concurrentStations

Peak concurrent stations a visit uses

The engine seats one station per member at a time and never reads this field, so station pressure is understated for any visit authored above 1.

src/content/types.ts · VisitShape.concurrentStations

layout.stationCountsByModality

How many stations a reference plan places for a modality

the same call capacityCeiling makes; the sim never counts placements itself

src/lib/studio-3d/protocol-bridge.ts · placementsForModality.spec.modalityName

layout.placementIds

Station identity and order on a reference plan

placement order is the deterministic seating order; furniture placements carry no modalityName and are invisible to the sim

src/content/studio-layouts.ts · STUDIO_LAYOUTS.placements

capacity.ceilingPerHour

Per-visit geometric ceiling, shown as context beside a menu

consumed verbatim, per visit only; never combined across visits and never converted into a target count for the window

src/lib/studio-3d/capacity.ts · capacityCeiling.perHour

capacity.bottleneckStations

The station a visit's ceiling is bounded by

cross-checked against the queue the run actually produced

src/lib/studio-3d/capacity.ts · capacityCeiling.bottlenecks

capacity.incompleteKind

Whether a floor can run a visit at all

a floor that cannot run a visit says so; the sim never substitutes a nearest station

src/lib/studio-3d/capacity.ts · CapacityCeiling.incomplete

Typed by you

player.windowMin

Length of the open block the sheet must fit

integer, 60-240, on the 5-minute grid; no default is supplied

player.floorChoice

Which floor is being modelled

reference slugs are validated against layoutBySlug; there is no default floor

player.stationCounts

Stations per modality on the operator's own floor

known modality slug, integer >= 1; the field starts empty

player.bookingArrivalMin

When a booking walks in — THIS IS THE DEMAND MODEL

on the 5-minute grid, inside the open block; the sheet starts empty

player.dosePinMinutes

An exact dose the player pinned for one step

integer inside the step's authored [minMinutes, maxMinutes]; unpinned steps use the boundary policy instead

player.customStepMinutes

Minutes for a stop in an à-la-carte booking

positive integer; authored ranges are offered as cited references, never prefilled

player.customChangeoverMinutes

Changeover minutes after a custom stop

integer >= 0; no default

player.offeringVisits

Which authored visits the block offers

slugs validated against VISITS; a description of the service, not a scored lever

player.optionalStepsIncluded

Whether an offering includes its optional steps

boolean; changes which steps run and what the per-visit ceiling is computed over

An engine rule, describing nothing real

rule.dosePolicyEndpoints

Twin boundary runs: short day at authored minimums, long day at authored maximums

no distribution over member behaviour is asserted, and nothing between the endpoints is simulated or claimed; ranges stay ranges

rule.queueDisciplinePooledFifo

One pooled FIFO queue per modality; a freeing station serves the queue head

it is not a claim about how any front desk sequences people

rule.holdEqualsDosePlusTransition

A station is held for dose + transition; the member reaches the next queue at hold end

the minutes themselves are authored or player-entered; only the composition rule is declared here

rule.noAbandonment

Simulated members never leave a queue

modelling abandonment would need a patience coefficient nobody here can source; simulated members wait forever, real ones do not

rule.eventTieBreakOrder

Time ascending, releases before arrivals, member index ascending, station order ascending

an ordering convention inside one minute, not a behaviour

rule.closeSemantics

Bookings exist only inside the window; the engine drains past close and reports the tail

a scoring boundary over the player's own sheet

rule.clearedRequiresBothBoundaryRuns

A booking counts as cleared only if it clears in both boundary runs

a rule about the two runs, not about members

rule.clockStepMinutes

The sim clock advances one integer minute per tick

a unit of simulation time, not a measured interval

rule.bookingGridMinutes

Bookings sit on a 5-minute grid

it is not a claim about how studios schedule

rule.windowMinMinutes

Shortest open block the sheet may describe

not a typical, recommended, or observed opening block

rule.windowMaxMinutes

Longest open block the sheet may describe

not a typical, recommended, or observed opening block

rule.minStationCount

A counts-mode modality row places at least one station

an input rule, not a minimum any studio should own

rule.drainSafetyLimitMinutes

The drain loop stops here and reports drained: false rather than hanging

it fails loudly instead of reporting a day it did not finish simulating

rule.minutesPerHour

Minutes per hour

arithmetic on units

The money layer: months, members, cash

One line is worth reading twice: in the money layer there are no coefficients read out of data at all. Every price, member count, retention rate, signup, spend and cost is typed by the operator. The single derived input is the count of bookings your own sheet clears.

Read out of repo content, or computed from your own sheet

capacity.clearedPerBlock

Bookings that cleared in both boundary runs of the operator's own sheet

The function returns an array of booking indices; this coefficient is that array's .length. It is arithmetic over the operator's own sheet, not a fact about anyone else's studio.

src/lib/studio-sim/score.ts · clearedInBothRuns.clearedInWindow

Typed by you

player.tierPriceCentsPerMonth

Monthly tier price entered by the operator

non-negative integer cents

player.tierStartingMembers

Starting members entered for a tier position

non-negative integer

player.tierRetentionBps

Monthly retention entered for a tier position

integer from 0 through DECLARED_LEDGER_CONSTANTS.bpsPerWhole

player.tierSignupsPerMonth

Monthly signups entered for a tier position

non-negative integer

player.tierVisitsPerMemberPerMonth

Monthly visits per member entered for a tier position

non-negative integer

player.startingCashCents

Starting cash entered by the operator

non-negative integer cents

player.fixedMonthlyCents

Fixed monthly amount entered by the operator

non-negative integer cents

player.variableCostPerVisitCents

Variable cost per served visit entered by the operator

non-negative integer cents

player.blocksPerMonth

Monthly open blocks entered by the operator

non-negative integer

player.horizonMonths

Projection horizon entered by the operator

integer from DECLARED_LEDGER_CONSTANTS.horizonMinMonths through DECLARED_LEDGER_CONSTANTS.horizonMaxMonths

player.campaignSpendCents

Campaign spend entered by the operator

non-negative integer cents

player.campaignAssumedSignups

Campaign signups entered by the operator

non-negative integer

An engine rule, describing nothing real

rule.stepOrderRetentionIntakeCapacityClampMembersSettleRevenueCostsCash

The fixed order of each monthly step

It is an evaluation sequence, not a claim about the order in which a studio operates.

rule.retentionFloorRounding

Retained members use floor rounding

It is an integer arithmetic rule, not a measurement of how any member behaves.

rule.capacityClearedPerBlockTimesBlocksPerMonth

Monthly visit capacity is block capacity times monthly blocks

The multiplication rule adds no observed utilization or operating schedule.

rule.capacityClampLargestTierFirst

Capacity intake reductions start with the largest tier

It is a deterministic allocation rule, not an account of which people would be refused.

rule.capacityClampReported

The capacity clamp is reported every month

This is a reporting rule and does not assert that capacity constrained a studio.

rule.eventsApplyFromPausedMonthForward

Set events apply from their own month forward

It is replay behavior for an operator edit, not a claim about when a studio changed course.

rule.cashMayBeNegativeWithoutBankruptcyOrRunwayInterpretation

Negative cash remains an uninterpreted number

It does not declare what a negative balance means for any business.

rule.integerCentsEncoding

Money uses integer cents

It is an encoding rule, not a price or monetary observation.

rule.integerBasisPointsEncoding

Rates use integer basis points

It is an encoding rule, not an observed rate.

rule.tierSlotsArePositionsNotNames

Tier slots are positions rather than names

The slot letters identify form positions and do not describe any studio's membership products.

rule.monthsNumberedFromOne

Projected months are numbered from one

Month numbering is a series convention, not a date or operating milestone.

rule.eventsWithinOneMonthApplyInArrayOrder

Same-month events apply in array order

It is a deterministic tie break, not an observed sequence.

rule.seriesPureFunctionOfConfigAndEvents

The ledger series is deterministic

Deterministic evaluation adds no likelihood or prediction about a studio.

rule.retentionAppliesInEveryMonthIncludingTheFirst

Retention applies in every month, including the first

It is a step rule, not a statement that any starting member leaves or stays.

rule.initialConditionsAreNotEventEditable

Initial conditions cannot be changed by a set event

It is a state-boundary rule and does not say those quantities remain fixed in a business.

rule.campaignAppliesOnlyInItsOwnMonth

Campaign entries apply for one month only

It is event scope, not a claim about the duration or effect of any campaign.

rule.resheetAppliesFromItsMonthForward

A resheet value applies from its month forward

It is a replay rule over operator-authored input, not measured capacity for another studio.

rule.clampReducesIntakeNeverInventsChurn

The capacity clamp reduces intake only

It is a limit on model output, not a claim that retained members cannot leave.

rule.costsChargeVisitsServedNotVisitsDemanded

Variable costs charge visits served

It is the arithmetic base for an operator-entered cost, not a statement of any studio's expenses.

rule.projectionRefusedAboveExactIntegerRange

Projection arithmetic must remain exactly representable

It is a language precision boundary, not a financial limit on any studio.

rule.codecCarriesIntegersOnlyAndNoFreeText

The shared payload is closed to integers and fixed tokens

The payload grammar describes an encoding and says nothing about a studio.

rule.decodeFailureReportsAndLoadsNothing

A refused payload loads no partial state

It is failure behavior for the codec, not a statement about a studio or its entries.

rule.monthStepMonths

Whole-month ledger step

It is the series resolution, not a measured interval.

rule.horizonMinMonths

Shortest projection bound

It is a form bound, not a recommendation or observed business duration.

rule.horizonMaxMonths

Longest projection bound

It is a form bound, not a prediction of how long a business operates.

rule.minTierSlots

Fewest tier slots in a runnable config

It is a form-shape bound, not a minimum product count for a studio.

rule.maxTierSlots

Most tier slots the form carries

It is a form-shape bound, not a maximum product count for a studio.

rule.centsPerCurrencyUnit

Integer cents per currency unit

It is a unit encoding, not a monetary observation.

rule.bpsPerWhole

Integer basis points per whole

It is a unit encoding, not an observed rate.

rule.maxEncodedIntegerDigits

Widest integer token the payload grammar carries

It is an encoding guard and does not cap a real business quantity.

rule.maxEncodedEvents

Most events the payload grammar carries

It is an encoding guard and does not describe how often a studio changes an entry.

Your model, your numbers. Every line below is arithmetic over the entries on the left. Praxium supplies none of them.

The numbers this refuses to supply

A studio simulator would normally ship a default for each of these, and a default is a published figure whatever it is called in the code. Praxium has no neutral, current source for any of them, so no default, preset, benchmark or par exists anywhere in this feature. Each refusal is pinned to a commitment already published elsewhere on this site, and a test asserts the quoted commitment still says what it is cited for.

Any price, fee, or revenue figure

the shipped calculator refuses default pricing in Praxium's own voice; a game surface is where a dollar figure is most likely to detach from its caveat

No. Praxium does not currently have a neutral, current source for those defaults. The tool uses only the assumptions you enter, with fictional samples clearly labeled.
Published on Studio Economics Calculator

Utilization or a fill-rate target

there is no neutral, current source for a utilization default, and a single percentage screenshotted from a game reads as one

No. Praxium does not currently have a neutral, current source for those defaults. The tool uses only the assumptions you enter, with fictional samples clearly labeled.
Published on Studio Economics Calculator

Foot traffic, walk-in rate, conversion, or any generated demand

the player writes every arrival; Praxium has no data on how many people would actually come

The model does not estimate demand, valuation, taxes, depreciation, working-capital timing, or the probability of reaching an utilization target.
Published on Studio Economics Calculator

Any probability distribution over member behaviour

member behaviour is named in the dataset's own limitations as unsupported; a sampled dose or a patience curve is that coefficient wearing a game chip

It does not support typical pricing, utilization, revenue, margin, payback, staffing, member behavior, demand, or top/best rankings.
Published on State of Recovery Studios

Wages, staffing cost, marketing spend, capital expenditure

staffing and margin are explicitly outside what the dataset supports; a staffing rule may only ever ship with both its coefficients player-entered

It does not support typical pricing, utilization, revenue, margin, payback, staffing, member behavior, demand, or top/best rankings.
Published on State of Recovery Studios

Any industry average, benchmark, or published par

a par is a benchmark; Praxium publishes no target, no median, and no example sheet for anyone to score against

No. Praxium does not currently have a neutral, current source for those defaults. The tool uses only the assumptions you enter, with fictional samples clearly labeled.
Published on Studio Economics Calculator

Any coupling between a price entry and a behaviour entry

the model has no source for how members respond to a price move, and inventing one is the sharpest number a business simulation fakes

It does not support typical pricing, utilization, revenue, margin, payback, staffing, member behavior, demand, or top/best rankings.
Published on State of Recovery Studios

Any average, benchmark, or published par

Praxium has no neutral, current source for a shared comparison value

No. Praxium does not currently have a neutral, current source for those defaults. The tool uses only the assumptions you enter, with fictional samples clearly labeled.
Published on Studio Economics Calculator

Any per-field starting value for a world coefficient

an unset field is null, and a value the operator did not type would be Praxium asserting it

No. Praxium does not currently have a neutral, current source for those defaults. The tool uses only the assumptions you enter, with fictional samples clearly labeled.
Published on Studio Economics Calculator

Any unentered shape imposed on a quantity over time

a time shape must come from operator entries made for the months it changes

It does not support typical pricing, utilization, revenue, margin, payback, staffing, member behavior, demand, or top/best rankings.
Published on State of Recovery Studios

Acquisition cost or generated demand

the ledger has no source for what acquisition costs or how many people arrive

The model does not estimate demand, valuation, taxes, depreciation, working-capital timing, or the probability of reaching an utilization target.
Published on Studio Economics Calculator

Any verdict attached to a negative balance

naming the month a balance crosses zero is an editorial claim about a business; this layer reports the number and stops

The model does not estimate demand, valuation, taxes, depreciation, working-capital timing, or the probability of reaching an utilization target.
Published on Studio Economics Calculator

Valuation and its inputs

the ledger has no source for a valuation or for the inputs needed to produce one

The model does not estimate demand, valuation, taxes, depreciation, working-capital timing, or the probability of reaching an utilization target.
Published on Studio Economics Calculator

Privacy

What leaves your browser

  • Nothing, unless you copy a link. The scenario lives in the tab and in the address bar; there is no account, no save button, and no server that sees a model.
  • A copied link carries enums and range-checked integers only. There is no free-text field anywhere in either codec, so a link cannot carry a studio name, an address, or a person.
  • A personal best stays in your own browser's storage, scoped to that browser. It is never sent anywhere and never compared to anybody else's.
  • Compete by sending someone your link. They load the same starting position, play it, and you compare over whatever channel you already use. Praxium sees no result, ranks nothing, and aggregates nothing.

Studio Sim

Frequently asked questions

Is the projection a forecast?

No. It is arithmetic over the entries in the form. Change an entry and the projection changes, which is the whole point: the value is in running the experiment in ten seconds, not in the number that comes out the other end. Praxium supplies no price, no retention rate, no signup count and no demand, so there is nothing in the output that Praxium is asserting about your business.

Where do the money numbers come from?

From you. Every economic field starts empty and stays empty until you type in it, and the run button stays disabled until the fields it needs are set. There is no default, no suggested value, no placeholder carrying a figure, and no preset apart from one fictional demo studio that is labelled as fictional in three separate places.

If I raise a price, do members leave?

Not in this model. Price is multiplied by members and nothing else, because a price-response curve is exactly the coefficient Praxium has no source for. If you believe a price move costs you members, edit the retention and signup entries as well, and the chart will show your belief rather than ours.

What is the fictional demo studio for?

For opening the tool with something already in it during a demo or a first look. Its tiers, prices, members, retention, signups, costs and cash were invented for that purpose alone. The label rides the load button, the panel header and any payload you copy, so a screenshot of it carries the label with it. Replace the numbers with yours before you read anything into the chart.

What happens when my member entries outgrow the room?

The projection stops taking new members rather than inventing churn. Capacity is what your sheet clears, times the blocks per month you entered; when the projected visits exceed it, intake is clamped and both numbers render side by side. The fix is the reason this tool has a floor in it: add a station, change the menu, or rewrite the block, and watch the ceiling move.

Can I load my own studio's listing into it?

No. No code path reads a listing, a claim record or any stored entity into a scenario, and neither shareable codec has a field that could carry a business name. To model your own room, draw it in the planner or type the station counts.

Why is the floor itself not in search results?

It is deliberately kept out of the index. Everything of value there is drawn from state you type, so there is nothing on it for a crawler to read; this page is the part with the substance. Links out of the floor still carry.

Take a month to the floor

Write one block, type the tiers you are arguing about, and watch your own assumptions play out over the horizon you choose. Nothing is saved to Praxium, and nothing is scored against anybody else.