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.
Four modes
Four ways in
- Take a challengeA studio nobody owns, already built, already running, with a win line written into the fiction. One click and a month is on screen. Scored, because every number in it was invented for the purpose.Pick a challenge
- Model my studioYour floor, your hours, your offer, your money. Every field opens empty and stays empty until you type in it. No score, no grade, no target: comparisons against your own baseline and nothing else.Model my studio
- Present itA fictional studio loaded and paused at month one, with five keyboard beats and a reset. Built for a screen share, so there is no setup between opening the tab and pressing play.Open the presenter
- Operations LabThe minute-by-minute bench: write a booking sheet by hand, pin doses, replay the boundary pair, read the member logs. Where a link shared before this release still decodes exactly as it did.Open the lab
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
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
- 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.
- 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.
- 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.
- 04A station is held for the dose plus the authored changeover after it, which is the same composition the capacity ceiling uses.
- 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.
- 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.
- 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.
- 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.
- 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.
- 04Members settle. Retained plus whatever intake survived the clamp.
- 05Revenue. Settled members times the price you entered, per tier, summed.
- 06Costs. Your fixed monthly figure, plus your per-visit variable cost times the visits actually served, plus any campaign spend you logged.
- 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.
Nearby
What this sits next to
Each of these keeps its own assumptions visible, so a result from one is safe to carry into another.
Recovery studio economics calculator
Capex, debt service, break-even utilisation and payback live there, on assumptions you enter. This sim carries none of them.
Open itStudio layout planner
Type the width and depth of one room and check what physically fits. The room you draw there is a floor you can run here.
Open itVirtual studio
The same reference plans, drawn at true scale, for seeing the room the sim is counting stations in.
Open itSample protocols
The authored visits the floor replays, with the dose ranges and changeover minutes it reads, written out in full.
Open itStudio 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.