What you will actually do
Trainers teach AI models to code by showing them, task by task, what good code and good explanations look like. These are the kinds of tasks you will work on.
Review a response for correctness
A developer asked the model for help and it answered. You decide whether the code does what was asked, in every case, and flag each problem with the line and the input that breaks it.
- Run the code, do not just read it
- Check boundaries: empty input, one item, very large input
- Rate the response against the project rubric
def second_largest(nums): ordered = sorted(nums, reverse=True) return ordered[1] # Reviewer: fails the "distinct" requirement. # second_largest([5, 5, 3]) returns 5, not 3. # Also raises IndexError on a one-item list.
function debounce(fn, ms) { let t; return (...args) => { clearTimeout(t); t = setTimeout(() => fn(...args), ms); }; }
function debounce(fn, ms) { return (...args) => setTimeout(() => fn(...args), ms); }
Compare and rank responses
The model gives two or more answers to the same request. You rank them and explain the ranking precisely enough that the model can learn from it.
Here, Response B never cancels the earlier timer, so every keystroke still fires an API call, just later. It looks like a debounce and behaves like a delay. A good rationale says exactly that.
Write the ideal response
When no response is good enough, you write the one the model should have produced: correct, idiomatic code and an explanation pitched at the person who asked.
- Follow the project's style and length guidelines
- Explain the reasoning, not only the code
- Include the tests you used to check it
SELECT DISTINCT o.customer_id FROM orders o WHERE o.ordered_at >= '2026-01-01' AND o.ordered_at < '2026-02-01' AND NOT EXISTS ( SELECT 1 FROM orders f WHERE f.customer_id = o.customer_id AND f.ordered_at >= '2026-02-01' AND f.ordered_at < '2026-03-01' ); -- Half-open ranges avoid missing orders late on the 31st.
def save_upload(file): path = "uploads/" + file.filename file.save(path) # Reviewer: the filename is user-controlled. # Sanitise it (e.g. secure_filename) and confirm # the final path stays inside uploads/.
Catch security and safety issues
Models write code that works on the happy path and is unsafe everywhere else. Trainers spot injection, unsafe file handling, leaked secrets and weak defaults, and explain the fix.
Projects also ask you to judge when a model should decline a request, and whether its answer stays helpful while doing so.
How the work is organised
Projects
You are assigned to projects that match your languages and experience. Each has its own guidelines, examples of good work and an hourly rate of at least $45.
Hours
Work whenever tasks are available and it suits you. Your approved hours appear in your earnings with the project, date and rate.
Quality
Work is spot-checked against the project guidelines. Consistent, careful work leads to more projects and higher-rate projects.
Setup
A laptop or desktop, a modern browser, a reliable connection and a local environment for the languages you work in.
Confidentiality
Project material and model outputs are confidential. You agree not to share them outside the platform.
Support
Questions about a task or your account go to our support team through messages in your dashboard, and the whole conversation stays in one place.
Sound like work you would be good at?
The assessment uses the same kinds of tasks. Apply now and try them for yourself.