Our internal prediction market.
A play-money, publicly-visible internal market we built in Rust, and what we have learned running it.
We run an internal prediction market. Anyone in the company can open a market on a falsifiable claim about our work, anyone can take either side, the currency is play money, and the leaderboard is visible to everyone inside the company. The point is to invert the usual workplace incentive on disagreement. The default move in a meeting is to stay agreeable and not commit to anything checkable — saying nothing falsifiable feels like the safe play, because a falsifiable claim is one you might later be visibly wrong about. A market flips the trade. Hedging contributes nothing to your leaderboard rank; taking a position contributes signal whether you turn out right or wrong on any individual question. Being occasionally wrong is the cost of contributing at all, not the failure mode.
The mechanic.
A market is a question with a resolution rule and a date. "We will ship feature A by month-end." "Our next bench run moves the headline metric by at least N." "Provider P releases its next model before date D." You write the question, define how it resolves, and seed the price by taking the first position. Others trade against you, prices move, and the question eventually resolves against a fact in the world. Balances update, the leaderboard updates, and the market page archives the full history.
Trades are attributed by default. The order book on every market is visible inside the company — current price, full trade history, who is on each side, and the rule that will resolve it.
Why the order book is public.
The most consequential decision in the design was making trades attributed and the order book company-visible, rather than running a private market where each trader only sees their own positions. The private version is easier to sell internally — nobody has to put their name on a No — but it loses what makes a market useful in a company setting. A private trade is a guess; a public trade is a forecast on the record, the same shape as a forecast in a meeting except that the resolution rule and the date were agreed on up front.
The visibility is not there to discipline people for being wrong. Most of our active traders have been wrong on plenty of markets — that is how a real prediction market is supposed to feel, and the leaderboard reflects long-run calibration rather than any individual miss. The reason visibility matters is the inverse: without a public record, taking a contrarian view in a meeting and saying nothing at all are indistinguishable a quarter later. With a public record, the position you took is in your history regardless of how it resolved, and the fact that you committed to it at all is the signal the market is built to surface.
What it gets used for.
Three shapes of question show up most.
Project deadlines. "Feature A by month-end?" "Customer Z signs by end of next quarter?" These markets do two useful things at once. The first is genuinely predictive: the price five days out is a better estimator of "are we actually going to ship" than what anyone said at the last standup, because the traders are people who have been watching the work and have skin in the game. The second is upstream of the prediction — translating a meeting claim into a yes/no with a specific date forces the speaker to commit to what they actually meant, and the version that survives that translation is often meaningfully more conservative than the version that was said out loud.
Quantitative metrics. "Headline bench score above X on next iteration?" These work well when the metric is well-defined and the resolution date is close. Markets on far-out metric movements thin out fast.
External events that move us. "Provider P releases its next model before date D?" "The next round of pricing changes in the API tier we use lands before the end of the quarter?" These are usually the most heavily traded markets, because the information edge is genuinely distributed across the company and the resolution is unambiguous.
A fair fraction of opened markets attract zero counterparties. That outcome is also informative — it usually means the question is too inside-baseball for anyone outside one team to have an edge on it. Useful to know before the next planning meeting takes a position on the same question with no skin in the game.
What works and what doesn't.
Markets fail in a few predictable ways.
Subjective resolutions are the most common failure. If a market's resolution depends on one person's reading of an ambiguous situation, that person becomes the most consequential trader without taking a position. Good markets resolve on something pointable: a shipped commit, a signed contract, a value on a dashboard, a public announcement. We have a small set of resolution adapters — short Akribes workflows that read from a system of record — for the common cases.
Calibration takes practice. In their first month, most people are overconfident on markets adjacent to their own work and underconfident on everyone else's. That sorts itself out on the leaderboard, which is part of why the leaderboard exists in the first place.
The build.
A modest Rust service. The crates are auth, core, db, market, metrics, social, trading, and web. Authentication via OIDC in production with a mock-OIDC service for local development. Resolution adapters plug in as Akribes workflows, so a market can resolve automatically against a system of record — a deployed commit, a value from a dashboard, a public announcement — instead of depending on a human to remember to press the button. We will open-source it once a few of the rough edges are filed off; other companies that want to invert the same workplace incentive should not have to build this themselves.
What surprised us.
Three things we did not predict going in.
The leaderboard rewards passing. The traders at the top are not the ones who take a position on every market; they are the ones who skip the markets where they have no edge. That is not how the room reads in a meeting, where the people who talk most are usually the ones whose opinions are remembered.
Markets are still valuable when nobody trades them. The act of writing a market — picking the question, the resolution rule, the date — is where a lot of the value sits. A vague meeting claim either survives that translation as a real question or it doesn't, and both outcomes are more information than the meeting on its own produced.
Betting against a senior person turned out to be uneventful. We were braced for friction the first time someone publicly took the No side on a director-level pitch. Nothing happened. The market resolved, the leaderboard updated, the director kept being a director. After a few more like that, taking the No side on a director's pitch stopped being something the company noticed at all. Each public, uneventful resolution against a senior person's market is a small demonstration of what disagreement looks like here, and the cumulative effect of those demonstrations is the actual point. We were trying to build a place where criticising someone senior is part of the work — not an act that requires unusual bravery — and the only way to build that is to repeatedly, publicly, make the act unremarkable until it stops being brave and starts being a normal part of company culture.