← All case studies
Case study · Research tooling

Build

Build is a Scratch-style, block-based builder for reinforcement-learning environments. Snap blocks together, describe each in plain language, and ship a real environment you can run and train on. No code, JSON, or CLI.

1st place: HUD × Y Combinator Frontier/RL RSI Environments Hackathon
Try Build →build.transpiralabs.com
build.transpiralabs.com
An environment open on the Build canvas: here, SupChain-Bench. The block tray sits on the left; on the right, an Environment block, a Taskset of Tasks (each with a Question and a Scoring group of Good and Bad answers), and a column of Tool blocks, every one describing its goal, what goes in, and what comes out in plain language.
An environment open on the Build canvas: here, SupChain-Bench. The block tray sits on the left; on the right, an Environment block, a Taskset of Tasks (each with a Question and a Scoring group of Good and Bad answers), and a column of Tool blocks, every one describing its goal, what goes in, and what comes out in plain language.

A good RL environment is hard to write and easy to get subtly wrong. Build turns authoring into something you can see and reason about: every part of the environment is a labelled block, and the whole thing reads like a description rather than a config file. Under the hood, those blocks compile to real HUD environment code, but no one has to touch it.

Build took first place at the HUD × Y Combinator Frontier/RL RSI Environments Hackathon, where it was built and demoed end to end.

The building blocks

Four blocks, nested to any depth

Environment

The world the agent works in: the setting, the data it can touch, and the rules of the game.

Tool

A function the agent can call. Give it a goal, its inputs, and what it returns, all in plain language.

Task

A prompt plus a rubric: Good and Bad answers nested in a Scoring block that becomes the reward signal.

Train

How the policy learns. Left on auto, a model picks a fitting RL framework for the environment you built.

How it works

From blank canvas to a trained policy

01

Start from a template or a blank canvas

Open Build and either start a new environment or fork one of the ready-made templates: SupChain-Bench, Wordle Solver, Math Word Problems, or Support Ticket Triage. Templates are complete, runnable environments, so you can see how a finished one is wired before changing anything.

02

Snap blocks together and describe each in plain language

Drag blocks out of the tray and snap detail blocks into them. Build enforces what can nest where, so a Good answer only ever lands inside a Scoring block and a Tool's inputs land on the Tool. Dragging a block out pre-includes the parts it always needs, so a Task arrives with a Question and a Scoring block already in place.

Everything is described in words, not code: a tool's goal, its inputs and returns, a task's prompt, the answers that should score well or poorly. That plain-language description is the entire specification.

03

Check it

Before building anything, run Check it. It reads the live environment and returns a friendly checklist of what still needs fixing (missing pieces, empty rubrics, tools nothing references), separated into errors that block a build and warnings worth a look. Nothing is generated yet; it just tells you whether the environment is ready.

04

Build it: compile and deploy to HUD

Hit Build it and the blocks compile into a real HUD reinforcement-learning environment (the tools, the task prompts, and the rubric-based reward) and deploy. A live modal tracks the compile and container build; the occasional generation hiccup is retried automatically rather than handed back to you.

05

Run a baseline, then train

With the environment live, run every task on HUD across a spanning set of models (Haiku 4.5, Sonnet 4.6, and Opus 4.8), with a few attempts each. The results tell you whether the environment is any good: solvable (a strong model can actually do it) and discriminating (it separates weak models from strong ones). Once it's both, fork a base model from the same screen and start an RL run against the reward you described in blocks, closing the loop from a plain-language idea to a measurably better model.

build.transpiralabs.com
From one screen: launch a run of every task in the deployed taskset on HUD across Haiku 4.5, Sonnet 4.6, and Opus 4.8, then fork a base model (qwen3-14b) into a trainable one and start an RL run on the tasks you defined. Rollouts and inference both route through HUD.
From one screen: launch a run of every task in the deployed taskset on HUD across Haiku 4.5, Sonnet 4.6, and Opus 4.8, then fork a base model (qwen3-14b) into a trainable one and start an RL run on the tasks you defined. Rollouts and inference both route through HUD.
Under the hood

Blocks become a canonical spec, then real code

Every block tree projects into a normalized intermediate representation: the canonical description of the environment. That representation is what gets checked, compiled to HUD SDK code, and deployed. Because the spec is consistent and human-readable, the same environment is auditable by a person and buildable by a machine, with nothing lost in translation.

Build an environment without writing code.