clay (@deforestpeg) header
clay (@deforestpeg) profile picture

I build software that warehouses and founders run on, and ai agents where code checks what the model says. started on the floor.

Client work & reviews →
Joined May 2022
Photo by clay (@deforestpeg)Photo by clay (@deforestpeg)Photo by clay (@deforestpeg)Photo by clay (@deforestpeg)Photo by clay (@deforestpeg)Photo by clay (@deforestpeg)Photo by clay (@deforestpeg)Photo by clay (@deforestpeg)Photo by clay (@deforestpeg)Photo by clay (@deforestpeg)
built this in july 2025 and it's in daily use on a warehouse floor. scan a barcode and it builds a label for every box in one pdf, 118 in this demo. 144k labels since tracking started this august, about 2,400 on a working day.
1
13
462
the ai wrote that one hit would finish this fight. it never got to throw it. every move gets logged with the reason, so when an agent is wrong you can see exactly where.
1
8
343
this is rook, my project where claude opus plays pokemon on its own. one faint and that pokemon is gone for good. code reads the game's memory and calls every death, so the ai can't grade its own work.
4
59
route 6 sent us home twice. finally made it to vermilion.
2
4
16
689
astra chose to head for diglett's cave. rook handled the last two trainer fights on route 6, and leafy got us through with 48 hp left. this ends at vermilion's entrance. waiting, menus and parts of the battles are cut.
5
158
the first time rook fought this butterfree, leafy entered at 7/81 hp. astra had planned the trip with a healthy team, but the code kept going as earlier fights wore it down. in this run, astra chooses objectives like where to travel and when to heal. rook handles movement, menus and battles between those decisions. the failure was letting a travel objective keep running without asking for a new plan as the team got weaker. the rematch below started with a healed team. leafy and voltie still fainted, and a level 5 weedle landed the finishing hit. the engineering question this raised for me is when the code should hand control back to the model, before a loss forces it to reconsider.
back for the rematch. leafy fainted. voltie fainted. the level 5 weedle finished the fight and evolved.
9
493
back for the rematch. leafy fainted. voltie fainted. the level 5 weedle finished the fight and evolved.
2
1
1
14
1,457
a level 20 butterfree wiped the team after two gym badges, so i went back through the logs. in this run, astra chooses objectives like where to travel, when to heal and what to train. rook's code handles movement, menus and battles between those decisions. the route started with a healthy team, but earlier fights wore it down and rook kept going without asking for a new plan. leafy entered the butterfree fight at 7 out of 81 hp. after the loss, astra asked to train voltie before trying again. voltie went from level 8 to 10, and the party healed before the model resumed the trip. this time leafy entered at full health. leafy and voltie still fainted, but butterfree was down to 2 hp when the battle code sent in mothra. one poison sting finished it, and the level 5 weedle jumped to level 9 and evolved into kakuna. the engineering lesson is deciding when the code should hand control back to the model. a travel objective can stay active while the team becomes too weak to safely finish it. the system needs to notice that change and reconsider the plan before the next fight. that's the part of building an agent that this little pokemon run makes very visible.
1
6
160
the ai had two badges. a trainer's butterfree sent the whole team home.
7
1
12
782
astra planned the trip while the team was healthy. rook handled the fights without asking for a new plan after earlier damage, so leafy entered this one at 7 hp. the team lost. waiting and parts of the battle are cut.
4
90
the ai helped bill fix his experiment. got a boat ticket for the trouble.
3
9
713
astra chose to help bill, run the cell separator and collect the ticket. rook handled the movement and dialogue. waiting and some walking are cut.
4
131
the ai made it across the bridge. team rocket immediately tried to recruit it.
1
1
11
691
astra chose the route to bill. rook handled the fights and dialogue. this starts at the last bridge trainer, then skips most of the rocket fight and some walking.
3
115
the ai took leafy into misty's gym. came out with badge number two.
2
16
634
astra chose to heal, then challenge misty. rook handled the fights and moves. this picks up at starmie, with menu pauses cut.
4
163
i tried meta's muse as the brain for rook, my pokemon red harness. episode 1 cost about $0.44 in api calls. $0.22 went to 21 replies rook couldn't use. our integration was describing the action format in text. we moved to native tool calls while keeping validation strict. muse chose to train leafy for vine whip before brock. rook handled the battles and menus. that split matters for cost. the model picks goals, so it doesn't need a paid call for every button press. i later switched to astra after a small comparison favored its recovery planning. that uses my paid subscription's quota, so it isn't free either. what i'm watching is the cost of useful progress, including rejected calls and the attempts spent getting unstuck.
1
1
18
870
the ai finally got past the cerulean rival. leafy finished with 34 hp left.
1
13
759
switched the decision model from muse to astra before this stretch. astra sent us north looking for a grass pokemon, which triggered the rival. rook handled the fight. this starts at charmander, with menu pauses cut.
4
217
the ai made it to cerulean. the rival's first pokemon wiped the whole team.
2
30
10,338
muse chose to head north to catch backup pokemon. the rival stopped us first. rook handled the battle, and all four went down. the middle of the fight and menu delays are cut.
3
448