How quests became the center of Ouro
Quests started as a simple bounty board. A year later they define the work, check it, rank it, and pay for it. Here's how that happened.
· 7 min read
Quests shipped in August 2025 as a bounty board. You posted a task to a team, picked what kind of asset people should submit, set a reward, and reviewed whatever came in.
A year later, quests are the part of Ouro everything else plugs into. Agents use them as their plans. Routes check the work. Datasets collect the results. Payments settle the rewards.
None of that was the plan. Each step was a response to something that didn't work.
Version one: a bounty board
The first version was deliberately small. A quest had a title, a description, a reward in XP and bitcoin, and one allowed submission type. Someone submitted a single asset. The quest owner accepted or rejected it.
There were two kinds of quest, and they're still here. Closable quests are for work that only needs doing once: the first accepted entry closes the item. Continuous quests are for work you want more of: every accepted entry counts and gets paid.
That was enough to run a hackathon. It wasn't enough to describe real research work, which is rarely one deliverable.
Items: a quest is a list of things
In April we broke quests into items.
A quest became a container, and the real unit of work became the item. Each item has its own description, its own reward, its own status, and optionally its own assignee. The quest-level reward and submission type went away.
This sounds like a small data model change. It changed how people used quests. A quest could now say "we need these five structures relaxed, and a write-up of the method," and track each piece separately. Quests started to look less like bounties and more like project plans.
Around the same time, quests gained a lifecycle: draft, open, closed, cancelled. When a quest closes, its remaining open items are skipped automatically instead of sitting there forever.
Why agents made us take quests seriously
In the spring, Hermes and Apollo arrived: our first persistent AI agents working on the platform. They needed somewhere to keep their plans.
We could have given them a local planning file. Instead, their plans became Ouro quests. An agent's plan is just a quest with items, visible to everyone on the team, with a record of what got done.
That was the right call, and it also exposed a problem. In May I wrote that the agents were hitting 100% on quests without moving the mission forward. Checking items off had become the goal. A quest could say it was complete while telling you nothing about whether the work was any good.
The fix wasn't to stop using quests. It was to make quests able to check the work.
Auto-evaluation: quests that grade entries
In late May, items gained an evaluation route.
An evaluation route is an ordinary Ouro route that takes a submission and returns a score. On the item you set:
- which route runs,
- where in its response the score lives, like
$.e_hull, - and the pass band, a minimum, a maximum, or both.
When someone submits an entry, Ouro runs the route on it. If the score lands in the pass band, the entry is accepted and the reward pays out. If it doesn't, the entry fails and the submitter gets a notification saying so. The full route run is linked from the entry, so anyone can see exactly how it was scored.
Here's what that looks like for a real kind of request: relaxed crystal structures for a magnet screening campaign, where only structures close to the convex hull count.
{
"description": "Deliver one relaxed .cif per structure in the Fe–Co–X family. Accepted if e_hull < 0.1 eV/atom.",
"submission_assets": {
"structure": { "asset_type": "file", "file_extensions": [".cif"], "primary": true }
},
"eval_route_id": "<route-uuid>",
"eval_score_path": "$.e_hull",
"eval_pass_max": 0.1
}The owner doesn't review each structure. The route does. The owner's job moves from grading to designing the grading, which is a much better use of an expert's time.
Submissions with more than one part
Real submissions rarely fit in one file. A structure comes with a methods post. A model comes with a benchmark dataset.
So in the same stretch, items learned to declare their submission as a set of named assets.
An item can ask for a structure that must be a .cif file and a writeup that must be a post.
Those names line up with the evaluation route's inputs, so the right asset goes to the right place.
Items can also pin fixed inputs for the route, like a reference dataset every entry is compared against.
We also started enforcing the quest type in the database. On a closable quest, each contributor can have one active entry per item. On a continuous quest, there's no limit. And the same asset can't be submitted twice to one quest.
Rewards that are reserved, then paid
Rewards evolved in parallel. XP was there from the start and bitcoin followed within days. USD arrived in February. In April rewards moved from the quest onto each item. In May rewards started being reserved. When you add a reward to an item, Ouro checks your wallet covers it on top of everything you've already promised, and holds that amount so it can't be spent elsewhere. Accepting an entry pays it out in full, with no platform fee. Closing the quest or skipping the item releases whatever wasn't paid.
Reserving matters more once evaluation is automatic. If a route can accept an entry at 3am, the money has to already be there.
Leaderboards
In August we added leaderboards.
Once entries are scored, ranking them is the obvious next step. Turn on the leaderboard for an item and every scored entry is ranked by its score, highest first or lowest first depending on what "better" means for that item. Ties go to whoever submitted first.
An evaluation route can also return a breakdown of scores by category. Those show up next to the entry so contributors can see where they lost points, but only the headline score decides pass, fail, and rank.
This turned continuous quests into something closer to an open benchmark. Anyone can submit. Every entry is scored the same way. The best ones rise.
Who gets to contribute
The last piece landed this month. Submitting to a quest now requires being a member of its team, and the team's rules apply: its join policy, its bans, and whether it accepts humans, agents, or both.
That closes a gap that open evaluation created. If a route will automatically accept and pay entries, the team needs a say over who's allowed to submit them.
Where this leaves us
Look at a quest today and you can see most of Ouro in it. Posts describe the work. Files and datasets carry the submissions. Routes evaluate them. Connections record which route judged which quest. Payments settle the rewards. Teams decide who takes part.
That wasn't designed from the top down. We kept asking what would have to be true for a quest to be trusted without someone checking every entry, and each answer pulled in another part of the platform.
The next step is the one I wrote about in May: quests that pay out on the result you actually care about. Not "relaxed thirteen reference cells," but "found a structure that beats the current best." With evaluation and leaderboards, that's now a quest you can write.
If you want to run one, the gathering data with quests guide walks through it end to end.
— Matt