Work / Runut
An AI agent writes stock-reading drills from Sectors data; other models test each question before a person plays it.
Five minutes of practice: check the stock talk against its official document.
At a glance
Why this stamp 150 people opened the alpha · 48 finished all three questions · Agent runs replay from recorded traces, offline
- Role
- Solo
- Period
- September – October 2026
- Stack
- TypeScript · React · Vite · AI SDK · Sectors API · Vitest · Caddy
- Limits
- 6 stated below
- Proof
- Play italpha.zaa.my.id
- Repositorygithub.com
- Demo video (3 min)youtu.be
- Teaser (1 min)youtube.com
Problem
People who are new to the stock market get most of what they hear from group chats and social media. The document that would settle a claim is public, but few beginners open it.
Runut is a five-minute drill for that one habit. A player sees fact cards for one stock on one trading day that is frozen in the past, and three things a friend said about it. For each one the player opens the cards, decides whether the friend is right or wrong, and then sees what happened afterwards. There is no account and it runs on a phone.
Writing such a drill by hand is slow, so the second problem is the real one: an AI agent has to write the drills, and a question written by a model can be guessable without reading anything.
Runut was built for the Sectors Hackathon 2026, Track 01 (AI Agents & Assistants), and submitted on 7 October 2026.
Decisions
Code decides what is true, the agent decides what to ask
Every number on a card comes from the Sectors Financial API. Before a number becomes a card it passes 33 verification rules that run as code, without a model. A fact that fails is dropped and the reason is kept.
Not chosen: letting the model read raw data and state the facts itself.
One agent, 12 tools, no fixed order
From a stock code and a budget, the agent picks which trading day to freeze, the topic of each claim, and the wording of the question and its choices. It decides which tool to call and when, whether to repair a draft or change topic, and when to stop. A budget guardrail and a step limit are enforced by code.
Not chosen: a fixed pipeline where code calls the model at set steps.
Every question is tested by other models
A draft goes through four testers. A blind guesser answers without the cards, many times, with the order of the choices rotated. A card reader answers with the cards. A stronger model also guesses without the cards and can only warn. A critic checks the finished drill. A question that can be guessed without reading is sent back.
Not chosen: accepting a question because the model that wrote it says it is fair.
Every number opens its source
Each card carries its official sentence, where it came from and the date it became public. The player can open it before answering.
Not chosen: a quiz that shows only the question and the right answer.
Measure with real players, on my own collector
The alpha records which device, how long the page took to appear, errors, and where a player stopped, on a collector I host next to the site. My own visits and test runs are excluded from the data.
Not chosen: judging the product by how it looks to me.
Results
- The agent wrote three passing questions for each of six stocks, at a model cost of US$0.60 to US$1.37 per drill plus 5 to 8 Sectors API credits per stock.
- One of the six is live. The AMAG drill (frozen at 15 June 2026) was written by the agent from the stock code alone, reviewed by a person, and the file on the site is byte for byte the file the agent produced.
- The agent made one question harder on purpose. Without the cards, the blind guesser picked the right answer 7 of 12 times on the first version and 0 of 12 on the harder one. The harder one is the version players get.
- Alpha, 21 September to 5 October 2026: 150 people opened it, 48 finished all three questions, and 44 gave a rating, 4.0 out of 5 on average.
- Across the six questions played during the alpha, the share of players who answered correctly tracked how often the blind guesser could guess the answer (rank correlation 0.84).
- A reasoning model went quiet without an error: through one provider the critic used a median of 84 reasoning tokens and raised no objection in 9 verdicts. Through another, the same model used a median of 17,678. Each call is now refused when its reasoning tokens fall under a threshold.
Evidence
The code is public under the MIT license in the Runut repository, and the drill can be played at alpha.zaa.my.id. The three-minute demo and the one-minute teaser are published.
Each agent run is kept as a trace of tool calls, tool results and cost per step, and can be replayed from the repository without an API key or a network connection. The unit tests cover the verification rules, the agent tools, the budget guardrail, the replay and the player app.
The screenshots below are from the build that was submitted. The interface is in Indonesian.
Limits
- Only one of the six agent-written drills is live. The other five are in the repository as agent output and have not been reviewed and installed.
- The first two drills on the site were written together with a person before the agent existed.
- Six questions is too few to call the link between the blind guesser and player difficulty proof. It is the basis for the difficulty label, and it should be tested on more questions.
- The alpha recorded which cards players opened, but whether practice changes that habit has not been analysed.
- The interface and the drills are in Indonesian, and the data covers Indonesian stocks.
- Runut is reading practice, not investment advice. It never suggests buying or selling.



