<!-- orbyt:chrome:begin -->
---
title: "The game I named three times, and the two wrong names that still answer"
description: "An arcade climber about the hiring pile got three names before it shipped. The two retired ones are still live URLs, on purpose. Here is why."
author: "Justin Bartak"
published: 2026-11-04
modified: 2026-11-04
canonical: https://www.orbytlabs.ai/blog/building-the-stack
---
<!-- orbyt:chrome:end -->

# The game I named three times, and the two wrong names that still answer

You are one resume, and you are falling.

A wall of blue keyword blocks crosses the shaft with exactly one gap in it. You lined up on the gap. You clipped the edge. The screen prints AUTO-REJECTED over your head in red, the camera shakes, and you drop back down the pile you just finished climbing.

That is the first thirty seconds of an arcade game about the hiring funnel. The wall is an applicant tracking system. It costs you 11 composure and it does not explain itself, which is the joke.

The game is [The Offer](https://www.orbytlabs.ai/orbyt-jobs/arcade/the-offer). It has been called two other things.

This article lives at a URL that renders no game at all. Ask a browser for the arcade's the-stack route and a fourteen line file answers: two imports, a metadata block setting robots to noindex and nofollow, a canonical pointing at the new address, and one call to permanentRedirect. No canvas. No ship.

**A retired URL is a promise you already made, and breaking it costs a reader more than keeping it costs me.**

## Why does one game have three names?

It started as Escape Velocity. Then it was The Stack. It ships as The Offer.

[Escape Velocity](https://www.orbytlabs.ai/orbyt-jobs/arcade/escape-velocity) still answers too. Both retired routes are permanent redirects onto the current one.

Escape Velocity described a feeling. The Stack described where you start, which is the pile. The Offer describes the thing you actually want.

It is what the last thirty seconds of a winning run are about. A name should point at the end of the arc, not the beginning of it. I moved it twice to get there, and I would rather say that than pretend the third name was the first one.

## What does the climb actually feel like?

Gravity is 0.13 a frame. Thrust is 0.34. So the ship starts falling the moment you stop asking for altitude, and that is the one piece of physics here I will defend as a metaphor.

Three gatekeeper walls sit in the lower shaft. Two are the ATS. One is the phone screen. Each has one open slot, and the second slot drifts side to side while you line up on it.

The two wall types do not cost the same. An ATS wall takes 11 composure and drops you part of the way down. The phone screen takes 19 and the whole distance.

They do not say the same thing either. The ATS prints FILTERED OUT, KEYWORD MISS, AUTO-REJECTED. The phone screen prints RECRUITER PASSED, NOT A FIT, WENT WITH ANOTHER.

That gap is a tuning decision made from experience rather than from balance math. A machine ignoring you stings less than a person choosing someone else. The filter gets a game of its own in [Resume Invaders](https://www.orbytlabs.ai/orbyt-jobs/arcade/resume-invaders).

Then the rooms. Round one is The Panel, one turret. Round two is The Technical, two turrets, subtitled EVERY ANSWER GETS A FOLLOW UP. Round three is The Onsite Loop, three turrets, called in the source the room you cannot prep for. Then the Hiring Committee: four turrets, the fastest bolts in the game.

The turrets fire questions at you. WHY GAPS. WEAKNESS. SALARY. OTHER OFFERS.

You answer them with your pitch. The rule is written into the file. You shoot the question, never the person. Land enough pitches on a turret and it is convinced rather than destroyed.

The unsimulated version of those four rooms is the free question generator at [interview prep](https://www.orbytlabs.ai/orbyt-jobs/interview-prep), which has no turrets in it whatsoever.

## What happens in the quiet band?

Between altitude 1,860 and 2,040 there are no enemies at all. That band is called THE WAIT.

Composure recovers three times faster in there. And once per climb, exactly once, the game flips a coin. Half the time a callback lands, worth 20 composure and a green flash. The other half the screen says STILL GHOSTING YOU and takes 12 away.

I built that flip so it cannot be played. You cannot dodge it, aim at it, or get better at it, and nothing you did earlier moves the odds.

It fires in the stretch of a search where nothing is happening. The line the screen reader announces on the bad result says it plainly: only silence in the wait, it wears on you, not your fault.

[Ghosted](https://www.orbytlabs.ai/orbyt-jobs/arcade/ghosted) is a whole game about that band.

## Why does signing one offer not win it?

Signing one offer does not win the game. The constant is WINS_NEEDED and it is 3.

Sign, and the whole stack rebuilds harder. Gate slots narrow. Turrets fire faster and their bolts move quicker. Three drifting red flags on the first climb become five on the second.

What carries over is your loadout. The bare resume that scraped through the first ATS wall is carrying dual shot, thick skin and referral missiles by the third climb. Composure comes back 45 points between roles, never to full.

The money moves too. Every role shifts the whole negotiation window up by 28,000 dollars, so the number that felt greedy on role one is ordinary by role three. Your score is the career total across all three.

At the top the verb flips. Everything below is dodging and answering. The offer phase is the only part of the game where you are the one pushing, and your number sags the second you stop. Push past 182,000 and the tip line warns you. Lock it up there and the offer resolves at the lowball instead, 135,000, with PUSHED TOO HARD across the screen.

That is a caricature, not a claim about how often a real counter blows up a real offer. The straight version is the [salary negotiation guide](https://www.orbytlabs.ai/orbyt-jobs/career-guides/salary-negotiation).

## What did I get wrong about what it keeps?

I had been calling this a game with no server. That is not quite true, and I had not counted the analytics event.

The game writes one thing to your browser, a key named orbyt-the-offer-best, and only on a win. A loss saves no score anywhere.

But every run that ends fires an anonymous arcade_run_ended event, win or lose, with the cause attached. And the page is rendered by a server that builds a scorecard image whenever a shared link carries a run in it.

So: no account, no leaderboard, no record of who you are. Not no server.

Sharing is a URL parameter. Your career total rides in the link, the card renders from it, and the next player reads that number as something to beat.

Verifying it would have meant an account, a run log on the server, and enough replay data to tell a real climb from a typed one. I built none of that. So a person can put whatever they like in the parameter and the game will believe them, and I took that over asking someone to register before they can play a free game about being rejected.

Failure is silent, on purpose. When composure reaches zero there is no buzzer. The result screen names the band you reached and then says the market went cold. Not you.

## Why keep a dead route alive?

Back to the fourteen line file.

Keeping it costs one component that renders nothing and answers with a 308. What it buys is that no link saved during the preview ever goes dead.

The metadata is a request and not an outcome. Noindex and nofollow ask a crawler to drop the old address, and the canonical points at the real page. Whether an engine honours either is not mine to decide, and I have not gone and checked.

One loose end. Our own site search still carries a card titled The Stack, plus one for Escape Velocity and one for Application Frogger. A comment at the top of that same file says all three retired arcade routes must not be indexed. The comment is about search engines. The cards are in the box in our own header, and I kept the cards.

Each one lands you on the right game through the redirect, so the cost is a stale title rather than a broken link. I have no way of knowing whether anyone has ever typed the old name, and deleting the card would only make that unknowable more quietly.

The rest of the lineup is at [the arcade](https://www.orbytlabs.ai/orbyt-jobs/arcade). More build notes are on [the blog](https://www.orbytlabs.ai/blog).

Related reading:

- [The Offer](https://www.orbytlabs.ai/orbyt-jobs/arcade/the-offer) the game behind all three names, free in a browser with no account
- [Ghosted](https://www.orbytlabs.ai/orbyt-jobs/arcade/ghosted) a whole maze built out of the silence that THE WAIT models in one coin flip
- [Resume Invaders](https://www.orbytlabs.ai/orbyt-jobs/arcade/resume-invaders) the keyword filter that costs 11 composure here, given a game of its own
- [Salary negotiation guide](https://www.orbytlabs.ai/orbyt-jobs/career-guides/salary-negotiation) the straight version of the number at the top, with no meter attached
- [The arcade](https://www.orbytlabs.ai/orbyt-jobs/arcade) five more games about the hiring process, all free and all in a browser

<!-- orbyt:chrome:begin -->
This is the markdown version of https://www.orbytlabs.ai/blog/building-the-stack. The page there is the canonical copy.
<!-- orbyt:chrome:end -->
