kodwai has a new look, with score gauges, session moments and weekly leagues
kodwai now feels like a tool you play. Scores land on gauges, sessions get chess-style moments, and weekly leagues move you up or down.

kodwai has a new look. When a run is scored, three gauges now sweep to your Direction, Outcome and Lift, your session gets chess-style annotations, and each week you play in a league of up to 30 developers. The scoring underneath did not change.
If you are new here: kodwai is a platform where developers solve real coding challenges on their own machine with their own AI coding agent (Claude Code, Cursor, or Codex) and get scored on how well they direct the agent, across three axes: Direction, Outcome, and Lift.
Why did we redesign kodwai?
The old site read like a magazine. Big serif headlines, calm editorial spacing, a lot of reading before you did anything. It looked fine. It just felt wrong for what kodwai is.
kodwai is a place to practice agentic coding. You start a challenge, direct your agent, submit, and get a number back. That loop is closer to a game or a piece of gear than to an article, and I wanted the product to feel like a tool you play.
So the new design is built like an instrument panel. Buttons are tactile keycaps. The score sits on analog gauges above a dark readout. Each axis has one color everywhere it appears: orange for Direction, cobalt for Outcome, lime for Lift. You learn the colors once and they mean the same thing on every screen.
The logo and the favicon stayed the same. The copy changed a little too: it now leads with agentic coding and AI-native coding, because that is what people actually do here.
I pushed for this redesign because kodwai looked careful but not fun. The score, the one moment you actually wait for after a run, showed up as a row of numbers on cream paper. So I asked for it to feel like a game you want to win. Then I spent the rest of the day taking things back out: made-up hardware serial numbers, labels nobody could parse on first read, a headline effect that pushed words onto a new line. What is left is the version I would want to open after a run.
What happens after a run is scored?
The score now has a short reveal. Each axis gauge sweeps from zero to your real value on that axis. The maximum on each gauge depends on the challenge. In the default profile Direction is worth 50 points, Outcome 35 and Lift 15, and other challenges use other splits, so the gauges are drawn against that challenge's own maximums. While the needles move, your total counts up to your score out of 100.

Then, sometimes, a stamp lands. It only shows up when you earned one: a personal best, your first run, or a tier up. An ordinary run gets no stamp. I wanted a stamp to mean something when you see it.
What are session moments?
If you play chess online you know the annotations: "!!" for a brilliant move, "??" for a blunder. Your scored session now gets the same treatment, with four marks:
!!brilliant✓good?!dubious??miss
Each moment comes from a signal the scorer already records, and its detail line is that signal's own evidence, such as a line from your transcript or your test count. There is no extra AI call and nothing is made up.

A few you might see:
- Brilliant redirect: the agent went the wrong way and you pulled it back.
- Caught the traps: you handled the edge cases the challenge hides on purpose.
- All N tests green: every test passed at submit, with N as your real count.
- Shipped it unread: you submitted without checking what the agent wrote.
The misses show up next to the good moments. A score page that only praises you is not much use for getting better.
How do weekly leagues work?
Leagues are a weekly race that sits next to the global leaderboard. There are six divisions: Bronze, Silver, Gold, Platinum, Diamond and Master. You play in a group of up to 30 developers from your division, and the week resets every Monday at 00:00 UTC.
Your league points are your best score on each challenge that week, weighted by difficulty. An easy challenge counts 1x, a medium one 1.5x, a hard one 2x. Running the same challenge five times only counts your best run, so trying a new challenge is usually worth more than grinding an old one.

When the week ends, groups with 10 or more players reshuffle. The top 5 move up a division and the bottom 5 move down. Smaller groups stay where they are. Nobody drops below Bronze, and nobody climbs past Master.
Leagues are separate from your tier. Your tier and XP work exactly as before.
What else is new?
The GitHub README rank card has a new design, in dark, light and orange themes. If you already embed the old card, your embed keeps working. Scored runs also get new share images, so a run you share carries the new look.

Signing in and signing up are simpler too.
What did not change?
The scoring is the same: three axes, 11 signals, the same weights, and Direction still carries the most weight. Every past run keeps its score. Tiers, XP, badges and streaks work as before.
The free tier is the same too. Every account gets 3 free submissions scored on our key, and after that you connect your own Anthropic API key in Settings.
Try it
Pick a challenge and start it with your own agent. The starter challenge has a 60 minute time limit:
npx @kodwai/cli challenge bookshelf-rest-api
Submit with npx @kodwai/cli submit and watch the gauges. If something looks off in the new design, email me at hakan@kodwai.com. I read every message myself.
Hakan
How this was made
Claude drafted this post from the redesign branch and the kodwai fact sheet, and checked the league rules and moment labels against the code (api/app/services/leagues.py and api/app/services/moments.py). No user data or statistics were used. The illustrations were generated with Gemini in the blog's house style. Hakan Karaagac reviewed the draft and wrote the first-hand parts.
try it yourself
Reading about it is the easy part.