DOCUMENTATION / MODEL 2026-09-23 / v413

Every number,
in the open.

This page separates verified mechanics from practical recommendations, so you can reproduce the calculation and spot changes after a game patch.

01 / WHERE TO FIND YOUR LOCATION ID

Open building-info, then read the Response.

The supplied Capital Rift Network capture gives us a more precise route than searching every map request. Selecting a building produces a request beginning building-info?ref=player%2F…; its Response JSON exposes chunkId near the top level.

  1. 01
    Open the restaurant

    Select the restaurant or shop you want to optimize in Capital Rift.

  2. 02
    Open DevTools → Network

    Use your browser developer tools, choose Network, then open the building again or refresh the view.

  3. 03
    Select building-info

    Look for a request beginning building-info?ref=player%2F… and open its Response tab.

  4. 04
    Copy only chunkId

    Copy the complete value in zoom/tileX/tileY format, including both slashes.

Sanity check: the same response should describe the building you selected. If you see another building or a neighboring map request, return to the game and reopen the restaurant.

COPY THIS

15/18179/10741

Do not copy the player reference, quotation marks, label, or the request URL. The generator needs only the three-number tile value.

If the request is missing

  • Keep the Network panel open, return to the game, and select the building again.
  • Clear the Network list or filter for building-info so older requests do not obscure the newest one.
  • Choose the request created at the moment you opened the intended restaurant, then verify its response describes that building.

The diagram above is a code-built transcription of the real player-supplied Network capture. Request names and response fields may change after a game update.

02 / LOCATION NORMALIZATION

Every location is reduced to zoom 12.

For z/x/y, the game calculates a power-of-two divisor from z − 12, floors both tile coordinates, and builds 12/x12/y12. Locations inside the same zoom-12 tile therefore share all three trends.

15/18295/10789
divisor = 2 ** (15 - 12) = 8
x12 = floor(18295 / 8) = 2286
y12 = floor(10789 / 8) = 1348
locationKey = 12/2286/1348

When only coordinates are available, the fallback converts longitude and latitude to a standard zoom-12 Web Mercator tile. The raw restaurant ID remains preferred because coordinates near a tile boundary can select the wrong side.

04 / RECIPE PROFILES

Eight weighted averages, rounded first.

A valid in-game recipe uses 2–8 known ingredients. Shares are whole numbers from 1 to 100 and total exactly 100. There is no 5% step rule. The game validator also requires one of six station values, but available station compatibility is not known.

profile[axis] = sum(ingredient[axis] * share) / sum(shares)
profile[axis] = Math.round(profile[axis] * 100) / 100

The rounded profile—not the unrounded intermediate value—is used for match calculation.

05 / MATCH & POPULARITY

All eight errors matter.

distance = sum(abs(recipeProfile[axis] - trendTarget[axis]))
match = clamp(1 - distance / 28, 0, 1)
uiMatchPercent = Math.round(match * 100)

popularityMultiplier = 1 + 0.25 * clamp(match, 0, 1) ** 1.6

The overall popularity bonus uses the best match across the three local trends. The exact score ranks recommendations even when two recipes round to the same integer in the game UI.

06 / WORKED EXAMPLE

Ketchup 50% + Vinegar 50%.

For 12/2286/1348, the first target is Sour & Sweet: (5.5, 1, 9, 0.5, 1.5, 5, 0, 1.5).

The recipe profile is (3.5, 2, 7.5, 0.5, 1.5, 0.5, 0, 1.5). Its per-axis absolute errors sum to 9, so:

match = 1 - 9 / 28
= 0.6785714286
= 67.85714286%
game display = 68%
popularity display = +13%

The same recipe displays 27% / +3% for Salty & Richness and 16% / +1% for Richness & Spice.

07 / LIMITATIONS & GAME UPDATES

Taste match is not business performance.

This tool does not model cost, inventory, supply, preparation time, station compatibility, pricing, profit, or availability. A field called recipe found in cart state represented the “Secret Recipe” upgrade, not a dish composition; restaurant menu data was empty in the inspected snapshot.

After a patch, re-check the ingredient table, recipe validation, seed version, hash and PRNG constants, eligibility threshold, formulas, and rounding. Reproducing the three known trend names should happen before any new optimization is trusted.

Source confidence: algorithms and vectors were recovered from client JavaScript; key outputs were partially confirmed in the game UI. Generated names and search recommendations are tool output, not game-provided content.

08 / FAQ

Practical answers.

Does the tool contact the game?

No. The generator, trend calculation, scoring, and search run locally in your browser.

Why do nearby restaurants show the same trends?

They can normalize to the same zoom-12 tile, and therefore the same seed.

Is the first recipe globally optimal?

No global claim is made. All two-ingredient recipes are checked exhaustively; larger mixes are refined deterministically and labeled best found.

Why does my in-game number differ after an update?

The developer may have changed an ingredient vector, seed version, generation constant, or scoring rule. Verify the model version and re-check the known fixture.