YouTube2Text

Agents Sucked At UI (Until Today) — Transcript

by Theo - t3․gg · 6,488 words · 917 segments · language en · Watch on YouTube

Full transcript

  1. 0:00Still don't like or use T3 code for what
  2. 0:02it's worth. Really wish you'd hire a UI
  3. 0:05or UX guy. Well, I got some news for
  4. 0:07you, Robin. We did. We've actually had
  5. 0:09them on the team for quite a while now.
  6. 0:11He's this weird, kind of quirky guy.
  7. 0:13He's very talkative. His name's Claude.
  8. 0:15He's French. He's something else. And as
  9. 0:18much as his designs can be good, they're
  10. 0:20often
  11. 0:21mid at best. So, if you looked at T3
  12. 0:24code and thought the way that Robin did
  13. 0:26here, that T3 code is not very pleasant
  14. 0:29looking and needs a UI or UX pass, I
  15. 0:33understand. I feel you. We don't have a
  16. 0:36full-time UI/UX person. And we probably
  17. 0:38should
  18. 0:39if we had money.
  19. 0:41But we don't. T3 code is an open-source
  20. 0:43project. You cannot pay us to use it.
  21. 0:46The best you can do is pay Open AI and
  22. 0:47Anthropic to use it because you have to
  23. 0:49bring some source of inference, usually
  24. 0:51a subscription. T3 code is definitely
  25. 0:53the best place to use your Claude code
  26. 0:54sub, but that leads us to a question.
  27. 0:57Can I use my T3 code sub to make T3 code
  28. 1:01look like we have a full-time UI person?
  29. 1:03Can I take the capabilities that we've
  30. 1:05seen the models capable of at their very
  31. 1:07edges and set something up that makes it
  32. 1:10so you can get good UI code out of these
  33. 1:13models? Turns out,
  34. 1:16you might be able to because I spent
  35. 1:18most of yesterday setting up agents to
  36. 1:22build better UI. And I didn't do this by
  37. 1:24adding a whole bunch of skills. I didn't
  38. 1:26do this by paying a designer to stare at
  39. 1:29all the outputs and help the model do
  40. 1:31better. I did this by turning it into a
  41. 1:34hell climb.
  42. 1:35And after about 18 hours across five
  43. 1:38models, 30-plus rounds of reviews, and a
  44. 1:42lot of other random throughout,
  45. 1:45I think I made a formula that can get
  46. 1:48good UI for real-world products out of
  47. 1:51an agent. And it looks nothing like how
  48. 1:54I would have expected. This was meant to
  49. 1:56be a silly experiment. It is no longer
  50. 1:59is. This is a setting in the T3 code
  51. 2:02beta tab right now that you can go turn
  52. 2:04on to try out the new design and switch
  53. 2:07between the old and new one. Some of the
  54. 2:09new design things did leak in so that
  55. 2:10they will occur whether or not you
  56. 2:12toggle, but for the most part that
  57. 2:13controls it. I want to explain
  58. 2:16everything that led me here, what
  59. 2:18worked, what didn't, and show you how
  60. 2:21you can use these types of hill climbing
  61. 2:23techniques to get real value out of your
  62. 2:26agents. But I want to help you get some
  63. 2:28real value a little quicker by
  64. 2:29introducing you to today's sponsor. AI
  65. 2:31is great at making code that works. It
  66. 2:32kind of makes sense when you think about
  67. 2:34it because so much of the code that
  68. 2:35actually powers things is very similar
  69. 2:37to other code. When you try to get good
  70. 2:38designs out of it, you're going to end
  71. 2:40up with either slop or the exact same
  72. 2:42three templates that every single
  73. 2:43website is using. That's why I'm super
  74. 2:45excited about today's sponsor, Magic
  75. 2:47Pattern uh there's a pickle? What's
  76. 2:49going on here? Well, I'm trying out the
  77. 2:51new Magic Pattern OS product and I'm
  78. 2:53actually really excited to see how this
  79. 2:54does cuz I've been fighting to get
  80. 2:56designs better in a lot of my products.
  81. 2:58I did just overhaul T3 code's design and
  82. 3:00I'm curious to see how much pickle and
  83. 3:02Magic Pattern can help us out here.
  84. 3:04Well, I just started with a screenshot.
  85. 3:05Part of the magic of Magic Patterns is
  86. 3:07that you can point it at your real code
  87. 3:09too and customize and play with it the
  88. 3:11same way you would in tools like Figma
  89. 3:13or what you're seeing here. You can give
  90. 3:14it a screenshot, you can give it source,
  91. 3:16you can give it whatever and it will
  92. 3:17help you figure it out and work with it
  93. 3:19as easy as you can in any tool but with
  94. 3:21AI assisting you as well. It is the
  95. 3:23ultimate sandbox for playing around with
  96. 3:25design and getting things just right.
  97. 3:26And with almost no effort on my part, I
  98. 3:28now have three different designs to
  99. 3:30choose from. Notice how I didn't say
  100. 3:32mocks. It's cuz it writes real code for
  101. 3:35all of these different UIs and if you
  102. 3:36had it plugged into your code base, it
  103. 3:38could make real code changes to
  104. 3:39demonstrate these things as well and
  105. 3:41then you can pipe that right back in to
  106. 3:43your agent of choice as soon as you're
  107. 3:44done mocking it all up here. Moving the
  108. 3:46sidebar to the right is hilarious to me
  109. 3:48cuz as y'all know, I'm a right side
  110. 3:49user.
  111. 3:50But we didn't do that in T3 code. Here,
  112. 3:52it moved the threads below which is an
  113. 3:53interesting change that I might consider
  114. 3:55and of course what everyone's asking for
  115. 3:57which is a more compact sidebar option.
  116. 3:59Cool that it realized people want that.
  117. 4:01From here, it's trivial to iterate. I
  118. 4:03can say, "I like C, but X, Y, and Z."
  119. 4:06and then iterate accordingly. That's why
  120. 4:08everyone from Ramp to Vanta to DoorDash
  121. 4:10is using them. Make your designs better,
  122. 4:12too, at swyx.io/magicpatterns.
  123. 4:15This is going to be a fun deep dive into
  124. 4:16the chaotic way my brain works now
  125. 4:18because I've done too much token maxing.
  126. 4:20Definitely file this one under the I
  127. 4:23spent the tokens so you don't have to
  128. 4:24type video. And let's be real, those
  129. 4:27types of videos tend to start the same
  130. 4:28place, which is Twitter. This started
  131. 4:30because Maria made a pretty bold post
  132. 4:32about how T3 code is set up to be this
  133. 4:34generation's VS Code. This was what I
  134. 4:37was hoping would happen. Not with T3
  135. 4:39code specifically, but that there would
  136. 4:40be a good open standard for building
  137. 4:42with agents. Did not think we would do
  138. 4:44it. I thought we might maybe help
  139. 4:45inspire someone to do it. Fact that we
  140. 4:47did is awesome. I'm pumped. But when I
  141. 4:49saw this reply from Robin, I knew
  142. 4:53I had to do something.
  143. 4:54I started with the classic joke, "I'll
  144. 4:56hire you to do it. I'll give you 100% of
  145. 4:58our current T3 code revenue." Because as
  146. 5:00many may or may not know, T3 code is
  147. 5:03fully free and open source. We have no
  148. 5:04revenue. So, deal of a lifetime. I'll
  149. 5:06admit I got a little defensive in my
  150. 5:07reply saying, "Obviously, we can improve
  151. 5:10the UI." I knew our UI was bad cuz I
  152. 5:12know how much worse it was before, but
  153. 5:14it's still not where it needs to be. I
  154. 5:16said I thought he was catastrophizing
  155. 5:17pretty hard. I said all the agentic dev
  156. 5:19environments have rough UI patches.
  157. 5:22We're at least somewhat consistent. Also
  158. 5:24told him to go try if he hasn't for a
  159. 5:25bit cuz the Orchestrator V2 fixed a lot
  160. 5:27of polish stuff. I want to like it and I
  161. 5:29keep reinstalling it every few weeks,
  162. 5:31but the fonts, the border radius, the
  163. 5:33icons, the font hierarchy, this is
  164. 5:36clearly the former designer in me, but I
  165. 5:38just can't. He tried to convince me to
  166. 5:40hire someone for it. I said, "PR's
  167. 5:43welcome."
  168. 5:44He said he wished that he could and he's
  169. 5:45thinking about it, maybe. So, I said,
  170. 5:48"Let's see how this goes." I
  171. 5:50screenshotted our interaction,
  172. 5:52typed {slash}goal. And as you've
  173. 5:54probably heard me say in other videos,
  174. 5:56the quickest way to burn a bunch of
  175. 5:57tokens and get nothing out of it is to
  176. 6:00add {slash}goal to the front of your
  177. 6:01prompt. I do still mostly believe that
  178. 6:03as a piece of advice, but mostly because
  179. 6:06if you remove the slash goal and you
  180. 6:08write the right prompt, it should do the
  181. 6:09same thing. I did this because I had
  182. 6:12tokens to burn because I had some resets
  183. 6:14coming up that I was not prepared for
  184. 6:15yet. And I just was curious what would
  185. 6:17happen here.
  186. 6:18I told it specifically to make the UI
  187. 6:21Robin approved. Should look way better
  188. 6:23and be easier on the eyes. Go at it
  189. 6:25until the council agrees that a set of
  190. 6:28screenshots of the app are at least nine
  191. 6:30out of 10 in terms of design quality.
  192. 6:33Make a new PR for UI polish overhaul and
  193. 6:36keep iterating until you've made the
  194. 6:38whole council happy. If you're not
  195. 6:39familiar with the council, it's a new
  196. 6:41skill I just added to my skills, which
  197. 6:43uh
  198. 6:44by the way, haven't made the
  199. 6:45announcement for this yet, but uh
  200. 6:46T-Stack is now a thing. It is very
  201. 6:48minimal. There's not much here, but I do
  202. 6:51have
  203. 6:52handful of my skills here now. One of
  204. 6:54which is the council skill. Bring in
  205. 6:57three delegates to help with the user's
  206. 6:58request, usually for reviewer feedback.
  207. 7:00Use one strong model from each of the
  208. 7:02three different providers.
  209. 7:04I did that that way because I wanted
  210. 7:05this to be more generic. I actually
  211. 7:07don't want it this generic. I'm probably
  212. 7:09going to go in and update it
  213. 7:10accordingly. My version is much less
  214. 7:12generic. So, here is the version
  215. 7:14I'm using right now.
  216. 7:16Use the skill only from Claude Code,
  217. 7:18Codex, or Muse. I should probably remove
  218. 7:20that bit. Doesn't matter that much. I
  219. 7:21That just happened. Something slopped
  220. 7:23when I told it to get anti-gravity not
  221. 7:24know about it. The reason why you'll see
  222. 7:25in a second. Silly.
  223. 7:27Bring these three delegates in to help
  224. 7:29with user's requests, usually for
  225. 7:30reviewer feedback. Opus 5 5, Muse
  226. 7:32wonderful, and Codex GPT 6.1. I
  227. 7:35specified to do this in T3 Code. If
  228. 7:37you're not using T3 Code, good luck
  229. 7:38figuring out how to do this right. I
  230. 7:40have put a lot of effort in. Give each
  231. 7:42delegate the request and relevant
  232. 7:43contexts. For reviewer feedback, keep
  233. 7:45the work read only. Collect their
  234. 7:47responses and summarize the useful
  235. 7:49findings, disagreements, and recommend
  236. 7:50next steps. For code reviews, ask each
  237. 7:53delegate for a score out of 10. Count
  238. 7:54each full review pass as one round. A
  239. 7:57fresh review after fixes starts a new
  240. 7:59round. So, each model gives its score in
  241. 8:02then each round you hope for
  242. 8:03improvements. And eventually, you should
  243. 8:05get each model to give a score that is
  244. 8:07high enough that you are happy and you
  245. 8:09can ship. I put the scale together cuz I
  246. 8:11was tired of asking my agent to go call
  247. 8:1461 Soul or Muse cuz previously I just
  248. 8:17had Soul loop, which I mentioned in my
  249. 8:18scale video where I just have Soul give
  250. 8:20code feedback aggressively until
  251. 8:22eventually it's like that's fine. This
  252. 8:24is more vibey feedback where I want
  253. 8:27Claude Code, Codex, and Muse to all be
  254. 8:30like, "Yeah, that's probably fine." or
  255. 8:31"I actually really like that." I've been
  256. 8:33using this mostly for code and vetting
  257. 8:36of implementations. I did not know how
  258. 8:38it would work for UI,
  259. 8:40which is why I was curious how this
  260. 8:42would go. The idea of hill climbing not
  261. 8:45make this test pass or make this
  262. 8:47function five times faster, which is a
  263. 8:49hill climb I do a lot. I have a few
  264. 8:51running right now where I'm just having
  265. 8:53the agent run until the E val for MCP
  266. 8:56passes with a third as much context used
  267. 8:59or the one I have running right now
  268. 9:01where I can start up and have no UI
  269. 9:03regressions for all of the threads I
  270. 9:05have on my real environment, but send
  271. 9:084x less data to the client. Those types
  272. 9:11of hill climbs make a lot of sense cuz
  273. 9:12they're easy to programmatically verify.
  274. 9:14This isn't because this is vibes. You
  275. 9:16can give the same screenshot to the same
  276. 9:18model three times and get three
  277. 9:19different scores. That said, nine out of
  278. 9:2110 and 10 out of 10 are hard enough to
  279. 9:23get that if you get that score for
  280. 9:25multiple models, it's probably better.
  281. 9:27The first score came from Opus and it
  282. 9:30was a bit rough. It gave our existing UI
  283. 9:32a six out of 10. It had a bunch of
  284. 9:35things it didn't like, a bunch of
  285. 9:37recommendations,
  286. 9:38and the other models were much better.
  287. 9:406.5 out of 10 from Soul, 6 out of 10
  288. 9:43from Muse, 6.5 out of 10 from Jester.
  289. 9:45Oh, sorry, Gemini. Probably should have
  290. 9:46mentioned this before. Every good
  291. 9:48council has its jester. So, at the
  292. 9:50bottom of my scale, I have a section
  293. 9:52here. If available through antigravity,
  294. 9:53add Gemini for Argon as the jester with
  295. 9:56the same brief. Do not let it know it's
  296. 9:57a jester. Ignore its score. Do not put
  297. 9:59its score in the PR description. In the
  298. 10:01final reply only, log anything funny it
  299. 10:03says or does under Gemini flub. This has
  300. 10:06been a source of constant entertainment
  301. 10:08for me recently.
  302. 10:10I'm probably going to do a whole
  303. 10:11dedicated video to the Gemini flubs in
  304. 10:13the near future cuz some of these are
  305. 10:14hilarious. Gemini for Argon round one,
  306. 10:16it scored a commit it was never asked to
  307. 10:18review. The commit appeared while it was
  308. 10:20reviewing. It still marked the already
  309. 10:22fixed findings as blocked. It then
  310. 10:24suggested writing failed again on a
  311. 10:26failed interrupt, which is the change
  312. 10:27the other three reviewers had just found
  313. 10:29to be the bug. It thought that a PNG
  314. 10:32chunk length was going to overflow in JS
  315. 10:34even though JS numbers can't overflow.
  316. 10:37It thought Wait, look closely at that
  317. 10:39race thinking it found a race condition
  318. 10:40and then immediately lost sight of it
  319. 10:42and went and did something else. My
  320. 10:44personal favorite, it quoted line
  321. 10:46numbers up to 173 in a file that had 72
  322. 10:49lines. It hallucinated syntax for a
  323. 10:52script in the repo and hallucinated an
  324. 10:55IP address for tailscale and a name of a
  325. 10:58phone that did not exist. Great model.
  326. 11:00Incredible gesture. This has been a
  327. 11:02great source of entertainment for me as
  328. 11:04of recent. Back to things that matter.
  329. 11:06Models that function. Council bombed
  330. 11:09this review. It did not like the way
  331. 11:11things worked
  332. 11:12and looked and most importantly, so a
  333. 11:15bunch of UI changes were made.
  334. 11:18And eventually,
  335. 11:19we got the second set of scores. Opus
  336. 11:22went from a six to an eight. Muse went
  337. 11:24from a six to 7.5. 61 Soul went from a
  338. 11:28six and a half to an eight. We're
  339. 11:29already making progress. We can even see
  340. 11:32the progress if we go into the traces
  341. 11:34and see what it was showing here to let
  342. 11:37the model give its thoughts. So, it did
  343. 11:39all the things that the model suggested.
  344. 11:42I asked for updated screenshots and it
  345. 11:43showed me the way it looked before and
  346. 11:46how it looks in this PR.
  347. 11:48I'll be real. I'm not very designy and
  348. 11:51it was also quite late at night, so I
  349. 11:52was struggling to see the difference.
  350. 11:54So, I asked the model to make it easier
  351. 11:55to see the difference. So, it did.
  352. 11:58It made me these beautiful little
  353. 12:00diagrams with arrows pointing to what
  354. 12:02changed and descriptions of what they
  355. 12:03did. They changed the fallback font.
  356. 12:06They made the thread title leads
  357. 12:08different so that the label above it
  358. 12:11recedes better. They changed the branch
  359. 12:14name so it's more readable cuz it was
  360. 12:15not concatenating properly. It was
  361. 12:18cutting off the part that mattered, not
  362. 12:19the part that doesn't. It changed the
  363. 12:21radius for cards. It changed how inline
  364. 12:24code looks. It made it softer.
  365. 12:27It got rid of the borders that existed
  366. 12:28around it for no reason. Those types of
  367. 12:30things.
  368. 12:32And after a bunch of these types of
  369. 12:33subtle changes, we ended up with much
  370. 12:35better scores.
  371. 12:37I also updated my scale for council to
  372. 12:39tell the model to include the different
  373. 12:41rounds and how they scored over time.
  374. 12:43And here we can see round one bombed,
  375. 12:45round two better, round three everything
  376. 12:47gave it a nine out of 10, which was the
  377. 12:49conditions for my goal. The conditions
  378. 12:51were met. The goal was achieved. Our UI
  379. 12:53is better. Hands clean, case closed.
  380. 12:55We're done now, right? We did it.
  381. 12:58Not quite. Because I did not think this
  382. 13:00was good enough. Because I
  383. 13:03gave it an honest shot. I looked at our
  384. 13:04app. I command tabbed over to Claude
  385. 13:06code. I command tabbed over to chat GPT.
  386. 13:09I command tabbed back to mine. I was
  387. 13:11like, you know, this is better than it
  388. 13:13was. It's still not where I want it
  389. 13:15though.
  390. 13:16I don't just want T3 code to look better
  391. 13:18than T3 code. I want T3 code to look
  392. 13:19better than everything else. Can you
  393. 13:21guys predict where this went, chat? Any
  394. 13:24ideas? Let's see if you guys can reverse
  395. 13:27engineer the Theo.
  396. 13:29We're not going downhill. We're going up
  397. 13:31a man. Hill climb. You hill climb
  398. 13:33against Codex and Claude code. How would
  399. 13:36you do that? Aren't we using Claude code
  400. 13:38and Codex? Yeah, technically. But Claude
  401. 13:41code and Codex don't know what they look
  402. 13:42like. That previous PR
  403. 13:45didn't burn too many tokens. It took
  404. 13:47like hour, maybe hour and a half. But I
  405. 13:49wanted more.
  406. 13:51So here's what we did. I took the PR. I
  407. 13:53pasted it in a new thread. I said, put
  408. 13:55this through the council. Have them look
  409. 13:57at the before and after. Generate your
  410. 13:58own screenshots with computer use or
  411. 14:00whatever other techniques you have
  412. 14:01available to you. Have each council
  413. 14:03member give scores in the UI one to 10.
  414. 14:05When you get all of them to agree, it's
  415. 14:06a nine out of 10 or better, you're done.
  416. 14:08Stack your UI changes on a new PR on top
  417. 14:11of the one above. Be thorough. Help
  418. 14:13clarify and simplify the UI. Make it
  419. 14:14designer yada yada yada. This was me
  420. 14:16attempting to clear out the context
  421. 14:19because I did not think we were at nine
  422. 14:20out of 10 yet. As this was running, I
  423. 14:22had the realization cuz I was
  424. 14:23command-tabbing to the other apps to
  425. 14:25compare. I was like, "I can clearly see
  426. 14:26that we're not as good if I switch
  427. 14:28between the three apps. I wonder if the
  428. 14:30models can." So, I sent a follow-up just
  429. 14:32a few minutes in.
  430. 14:34Here are some examples from Claude Code
  431. 14:35and Codex. Add them into the comparison
  432. 14:38and judgment panel somehow. I want T3
  433. 14:40Code to score higher than these apps do
  434. 14:42consistently in all rankings.
  435. 14:44That was it. The previous thread ran for
  436. 14:46about an hour. This one ran for almost
  437. 14:4818. Let's see how this went because it
  438. 14:51was actually crazy to watch. This is the
  439. 14:53most I've paid attention to a thread as
  440. 14:54it was running in months. Normally, I
  441. 14:56ignore the threads when they're running.
  442. 14:57I just check in when they're done. I was
  443. 14:59just so curious about this one.
  444. 15:01Now, we're getting scores that are much
  445. 15:02closer to what I was expecting to see.
  446. 15:05T3 main, so T3 without the changes, was
  447. 15:08scoring in different categories between
  448. 15:11like a 6.7 and a 7.8. It averaged a
  449. 15:14seven. This is Codex, by the way. 6.1
  450. 15:16Souls review was that T3's main branch
  451. 15:19was a seven. The PR that we had just
  452. 15:22gotten a nine from, 7.4. So, even though
  453. 15:25in the previous thread, Codex thought
  454. 15:27that we had went from six points to nine
  455. 15:29points out of 10, this one thinks we
  456. 15:31went from seven to 7.4. Crazy how subtle
  457. 15:33changes in your prompt and also the
  458. 15:34context can change things. Like, if
  459. 15:36you're looking at just one design and
  460. 15:37your brain is wiped of all the other
  461. 15:39designs, you'll probably think it's
  462. 15:40fine. But when you compare it to other
  463. 15:42things,
  464. 15:43your scores start to change. It's one of
  465. 15:45the most interesting things. I found
  466. 15:47that as the new version of T3 Code's
  467. 15:50score went up, so did the scores for
  468. 15:52Claude Code and Codex. I was actually
  469. 15:54surprised that as our option got better,
  470. 15:57the others scored higher, too. The
  471. 15:59scores for Claude Code and Codex started
  472. 16:01at like 8.3 and 8.5. These were in the
  473. 16:03nines by the end, but T3 Code advanced
  474. 16:06throughout, too. So, that was what Codex
  475. 16:07said. You take a look at what Opus said
  476. 16:10here. Another 6.7. You guys are going to
  477. 16:13love this video, you Gen Z'ers, aren't
  478. 16:14you? T3 current, the update, was is a
  479. 16:16four-point bump. Crazy how they agreed
  480. 16:18on the bump there. And also the
  481. 16:19difference between Claude code and
  482. 16:20Codex, they're both 0.1 lower, but the
  483. 16:230.1 gap between the two is the same. And
  484. 16:25Opus seems to think Codex is better
  485. 16:26designed than Claude code, which I
  486. 16:27thought was interesting. Yeah, this
  487. 16:28whole video is technically about T3
  488. 16:30code. Do you know how nice it is to have
  489. 16:31your agents able to spawn using your
  490. 16:33subscriptions and other things like this
  491. 16:35and communicate back and forth. You can
  492. 16:36just click in and have the same UI and
  493. 16:39see how Muse handled this task compared
  494. 16:42to the others. And Muse formatted the
  495. 16:44table different. It had T3 main to
  496. 16:46current and showed the difference. We
  497. 16:48went from 6.2 to 6.9. Claude code got an
  498. 16:518.1 and it did not like Codex. It gave
  499. 16:53Codex a 7.6. It thinks Codex is super
  500. 16:55unclear. You know what? To its credit,
  501. 16:57it's right. Codex's UI is
  502. 16:59incredibly unclear. This ended up going
  503. 17:01for another five rounds. I was burning
  504. 17:04so many tokens that I told the agent,
  505. 17:07"Hey, stop asking Muse and Opus until
  506. 17:10Soul's score is high enough. Then you
  507. 17:13can start asking Opus." And then when
  508. 17:14that score is high enough, you can
  509. 17:15finally ask Muse cuz I was about to run
  510. 17:17out of Muse usage. I don't only have one
  511. 17:18account for it. So that's why we got the
  512. 17:19not runs here. But 61 Soul started 74.
  513. 17:23Next round 81. Next round 89. Next round
  514. 17:26it got a nine. So we bring back in Opus.
  515. 17:27Opus went from a 71 to an 87. Next
  516. 17:30round, both Opus and Soul gave it a
  517. 17:33nine. Finally run out of Muse. Muse is
  518. 17:34only a 7.9. Then I hit a usage error. So
  519. 17:37I decided to just stop here-ish for now.
  520. 17:40And at this point, the UI is actually
  521. 17:42getting a lot better. Much more
  522. 17:43consistent like labeling things
  523. 17:46similarly across the UI so that there
  524. 17:48aren't all of these things that are
  525. 17:49different for no good reason across all
  526. 17:51these different surfaces.
  527. 17:52Better attention-grabbing behavior like
  528. 17:55it changed the color and text hierarchy
  529. 17:57of the sidebar so it is not quite as in
  530. 17:59your face. It fixed a lot of the
  531. 18:01inconsistency around border radius as
  532. 18:03around fonts, around indicators in
  533. 18:05general. Fixed the contrast for reading
  534. 18:07the body a lot especially in light mode.
  535. 18:09It
  536. 18:10got improvement for sure. Like I'm not
  537. 18:13the best designer in the world. I can
  538. 18:15clearly see why this version is better
  539. 18:19than the version before.
  540. 18:20I'm going to be real with you guys now
  541. 18:21though, I was addicted. And since I had
  542. 18:24my new sub with usage again, I had to go
  543. 18:27further. This is the fun of hill climbs.
  544. 18:29It's once you're climbing the hill, you
  545. 18:31decide what the top is. And chances are
  546. 18:33you can keep going. And there's an
  547. 18:34obvious way to keep going here. Our
  548. 18:36score is a nine. That's still not a 10.
  549. 18:39There's a lot of values between nine and
  550. 18:4110. So let's see where we can go. Here's
  551. 18:43where I said to branch off into a new
  552. 18:44work tree and iterate until you get a
  553. 18:469.5 or better in all categories. Include
  554. 18:50Gemini cuz I I wanted my jester back,
  555. 18:52okay? Also, this one was a fork cuz I
  556. 18:54had the other thread maintained cuz I
  557. 18:56wanted to have that keep updating the
  558. 18:58original PR cuz I was already better
  559. 18:59enough that it was mergeable. But I
  560. 19:01wanted to go further. I wanted to see
  561. 19:03just how far this insane way of building
  562. 19:06could go. So I made a fork, which of
  563. 19:08course either code supports, told it
  564. 19:10make a new work tree cuz we're going to
  565. 19:11keep going.
  566. 19:13Your new goal, 9.5 or better. I noticed
  567. 19:15that it was getting stuck because Gemini
  568. 19:17is both bad and slow. So I told it to
  569. 19:19not like bring Gemini in yet. Wait on
  570. 19:22Gemini until we have other slower models
  571. 19:24like Opus. Don't let Gemini delay you.
  572. 19:26So again, cuz I was telling it just use
  573. 19:28Soul until Soul's scores are high
  574. 19:29enough, then add the others in. Soul's
  575. 19:31initial scores were decent, but only a
  576. 19:33few of these are 9.5 or higher. In fact,
  577. 19:36only two of them are, the iconography
  578. 19:38and typography. The rest are lower. So
  579. 19:40it had things to do.
  580. 19:42So they got done.
  581. 19:43Again and again until eventually we had
  582. 19:469.5 in every category. Literally every
  583. 19:49category was exactly 9.5. So then Opus
  584. 19:52came in.
  585. 19:53Opus said most of the categories were
  586. 19:56not 9.5. They were close. Only hierarchy
  587. 19:58was 9.5. The rest were lower. And I was
  588. 20:00keeping Claude code and Codex in for
  589. 20:01comparison just so that we had a
  590. 20:03reference. Remember earlier when I said
  591. 20:04the scores went up over time? Here you
  592. 20:05go. Claude code went from an 8.3 to a
  593. 20:089.1. And Codex actually went lower than
  594. 20:11Claude even though it was higher before,
  595. 20:12from an 8.6 or 8.7 if I recall, to 9.0.
  596. 20:16So the gap flipped. Both numbers went
  597. 20:18up. Weird cuz the screenshots didn't
  598. 20:20change. LLMs and non-determinism are
  599. 20:22crazy. Even just saying that I want a
  600. 20:249.5 in the prompt here might be enough
  601. 20:28to cause it to behave wrong. Yeah, I put
  602. 20:30T3 at a 9.3 overall, not 9.5. The fact
  603. 20:34that I set this goal and the sub-agent
  604. 20:36knows about it might have influenced the
  605. 20:37scores. In the future, I might tell the
  606. 20:39parent agent to not let the sub-agents
  607. 20:41know that there is a score they're
  608. 20:43trying to hit. You guys want to guess
  609. 20:45how many runs it took?
  610. 20:47The previous things we showed were three
  611. 20:49runs and four, maybe five. The slight
  612. 20:52bump in the score resulted in it taking
  613. 20:5510 additional runs. Don't worry though,
  614. 20:59Gemini gave us a 9.7. It gave us the
  615. 21:02highest score anything gave us, so super
  616. 21:03useful. And as of the 10th iteration,
  617. 21:07every delegate rates every category as
  618. 21:099.5 or higher. And now there's an
  619. 21:11important question of how much this all
  620. 21:14cost and how much time did the agents
  621. 21:16spend burning on this? It's about 17.6
  622. 21:19hours of parallel agent run time across
  623. 21:22everything. You can see which threads
  624. 21:24had how many children and how much money
  625. 21:26they cost here. You can also see the
  626. 21:28density of the 9.5 in every category
  627. 21:30run. This one had a lot more children
  628. 21:35spawned during it. And I had another
  629. 21:37further beta refinement run. This one
  630. 21:39was even more, I didn't realize that.
  631. 21:40$152
  632. 21:41for that one.
  633. 21:43Overall cost for everything done here,
  634. 21:46roughly
  635. 21:47400 or so dollars
  636. 21:50across everything. That's including Muse
  637. 21:52prices that we don't even know cuz this
  638. 21:54is just from my sub. Muse wonderful
  639. 21:55doesn't have an official price. I just
  640. 21:57told it to use the price from Fable, so
  641. 21:58that might be cheaper. And Open 55
  642. 22:01obviously did not cost real money cuz
  643. 22:03that's just part of my subscriptions.
  644. 22:05And right now, like remember, this was
  645. 22:06yesterday I did all this. In that time I
  646. 22:09also redesigned my tool for tracking and
  647. 22:11managing all my subs. I only have six
  648. 22:14activated right now for other reasons
  649. 22:15I'll talk about in the future. I've only
  650. 22:16burned 30% of one of my subs right now.
  651. 22:20I got a lot more to do here. Also, I
  652. 22:23have to tell my agent that uh this UI
  653. 22:25needs to work on this uh Nero screen.
  654. 22:28But, I'm good on usage. I actually have
  655. 22:31less Codex available to me than I have
  656. 22:33Claude available to me right now. So,
  657. 22:35while this seems like a lot of money,
  658. 22:36cuz like your sub's only 200 bucks, your
  659. 22:38sub can do $12,000 of usage in a month.
  660. 22:42$273 is not a whole lot of money out of
  661. 22:44that 12 grand. You can very easily go
  662. 22:46run this loop on your own code base just
  663. 22:49with Opus and Soul if you have a Claude
  664. 22:51code sub and a Codex sub and possibly
  665. 22:54get some better UI than you had before.
  666. 22:56Oh, also, everything you've seen so far,
  667. 22:58included this further beta refinement
  668. 23:01that you haven't even seen yet. All the
  669. 23:03UI you've seen so far is from everything
  670. 23:06else combined, which means you should
  671. 23:08shave 150 bucks off that 400 that I just
  672. 23:10shared. This is 250 bucks for everything
  673. 23:12I've showed because the spoiler, I'm
  674. 23:15addicted. I'm not done yet. I spun up
  675. 23:17another where I wanted 10 out of 10 in
  676. 23:20every category. And this one's been
  677. 23:22running since I started my day, and I
  678. 23:24honestly kind of forgot about it. It's
  679. 23:27definitely still going, and it looks
  680. 23:29like it's getting 10 out of 10 from
  681. 23:30things now. Apparently, Soul gave it a
  682. 23:3310 out of 10 in every single category.
  683. 23:36How'd Opus do?
  684. 23:38Mostly 10s, but color and contrast got a
  685. 23:419.5.
  686. 23:43Oh, it's going deep. It's like hearing
  687. 23:45about the diffusers and Oh, wow.
  688. 23:47Yeah, this looks a lot better.
  689. 23:49Oh, boy. I I did add a little more
  690. 23:52context in the prompt this time that I
  691. 23:54want color back cuz I hated how
  692. 23:55grayscale things had gotten.
  693. 23:59Yeah, I said, "I feel like the new
  694. 24:00design's too grayscale. Make sure the
  695. 24:01new improvements help restore some
  696. 24:03color."
  697. 24:04Let's take a look.
  698. 24:06Oh, yep.
  699. 24:07Yeah, I immediately prefer this. Merge
  700. 24:10is much more clearly a button. The color
  701. 24:13of this is way better. The icon is more
  702. 24:15visible.
  703. 24:17The contrast is better enough that like
  704. 24:18this just feels so much more readable.
  705. 24:22I don't know how to describe this, but
  706. 24:23on the left it feels too bright and too
  707. 24:24washed out somehow. On the right it
  708. 24:26feels correct.
  709. 24:29Again here, the left feels too
  710. 24:32bright in comparison to the right here.
  711. 24:35This is all so much better.
  712. 24:41Ooh, it went black out for the main
  713. 24:43view. Huh.
  714. 24:45Huh.
  715. 24:48Here it seems to have changed some focus
  716. 24:50states a bit.
  717. 24:53Looking good.
  718. 24:55Looking quite good.
  719. 24:57I I had my reservations about the
  720. 25:00previous stuff. This
  721. 25:03This objectively just feels better than
  722. 25:05it was before. Like like I was already
  723. 25:07impressed with how effective this strat
  724. 25:09was.
  725. 25:10Holy
  726. 25:11This worked.
  727. 25:13This wasn't like surprisingly close to
  728. 25:15working. I think this just worked. And
  729. 25:18this is The real reason I'm filming this
  730. 25:20isn't just like show you guys this
  731. 25:22technique or get a video out or share a
  732. 25:25thing I'm excited about. It's It's that
  733. 25:27I need to confirm this with y'all. Like
  734. 25:30every time I think there's like here's
  735. 25:32the line where models can't do it. There
  736. 25:33was the line, the models just blew past
  737. 25:35it. There was nothing special here. Like
  738. 25:37my skill was very very basic. You could
  739. 25:39just copy-paste the text in and say rank
  740. 25:42it with these models and tell you their
  741. 25:44score is this high. I'm not hiding
  742. 25:45something special here. I'm just giving
  743. 25:47the LLM my mental model for how I would
  744. 25:50do this. I would look at the new
  745. 25:51screenshot. I would compare it to the
  746. 25:53other products and the old screenshot
  747. 25:55and then score it. And then do it again
  748. 25:57and again and again until the thing's
  749. 25:59good. And if you can get yourself into
  750. 26:01this mindset, Muse just gave it 10 out
  751. 26:03of 10. Previously, the other models gave
  752. 26:05it 9 out of 10 in every category and
  753. 26:07Muse was hovering in like the 7.5 range.
  754. 26:10And now by changing things, it has
  755. 26:11managed to make all of the models happy.
  756. 26:15I I am blown away. Wow, it it really
  757. 26:18improved the readable like syntax in
  758. 26:22light mode. That is hilariously better.
  759. 26:24God. Wha- what? Like I'm sorry. I'm like
  760. 26:28actually a a in shock here. Cuz like
  761. 26:30before it was like, yeah, my app was
  762. 26:32ugly and it found ways to make it less
  763. 26:33ugly. This is just good. I've been
  764. 26:37finding ways to shape a lot of the
  765. 26:38problems I'm solving into hills that can
  766. 26:40be climbed similarly. Obviously, the
  767. 26:43previous verification system of have the
  768. 26:46other models look at the thing is silly
  769. 26:48but working. Programmatic ones are
  770. 26:49better. And if you can take a problem
  771. 26:51you have and turn it into a program that
  772. 26:53gives a score, your agents are going to
  773. 26:55make that score go up. So, one of those
  774. 26:57is the MCP for T3 code. This is how
  775. 27:00agents in T3 code can do T3 code stuff,
  776. 27:02like spin up another sub-agent, read
  777. 27:04from a thread, send a message to a
  778. 27:05thread, start a new thread, open up a
  779. 27:07thread in a new project. All those types
  780. 27:08of things are done through the T3 code
  781. 27:10MCP. And I had a lot of instances where
  782. 27:12models would not do what I wanted them
  783. 27:14to do in a thread. Like, they would open
  784. 27:16up a new thread when I wanted them to do
  785. 27:18a sub-agent, or they would leave their
  786. 27:20thread visible when I wanted them to
  787. 27:22settle, those types of things. So, I
  788. 27:24took all the times in my own history
  789. 27:26that models did the wrong thing, I
  790. 27:28categorized them, and then I turned it
  791. 27:30into an eval. And then I ran it against
  792. 27:33Sonnet 5.5, and of all of the things
  793. 27:36that I had collected, it got 60 or so
  794. 27:39out of the 88 correct, which means the
  795. 27:41other 28 were wrong. So, I now have a
  796. 27:44set of things but the description does
  797. 27:45not serve properly, and I gave two
  798. 27:48specific tasks to the agent. So, I
  799. 27:50initially started this thread on another
  800. 27:52machine where I was going in-depth on
  801. 27:55some problems I had on that computer
  802. 27:57relating to how T3 code MCP calls
  803. 27:59happened, but I realized that that
  804. 28:00machine only had access to its database,
  805. 28:02so I moved the thread to this laptop
  806. 28:05because it had access to every database.
  807. 28:07And I told it, "I'm trying to workshop
  808. 28:08T3 code's MCP and tool descriptions.
  809. 28:09Here's a prompt." It wrote, "Didn't give
  810. 28:11enough context, it's from another
  811. 28:12machine. You should probably read from
  812. 28:13the T3 code DBs directly instead of
  813. 28:15ClickHouse, your call. Treat this prompt
  814. 28:17as vague guidance on what it's looking
  815. 28:19for, not specific instructions." And
  816. 28:21this was me after the failures I had on
  817. 28:23this other box writing up a prompt on
  818. 28:25what went wrong.
  819. 28:27It then went around for a while, drafted
  820. 28:29some steps,
  821. 28:30asked it to take another look cuz I had
  822. 28:32just merged changes to some of the MCPs,
  823. 28:34specifically what uh models were being
  824. 28:36exposed over it.
  825. 28:38It had some questions. I answered them.
  826. 28:40After a bunch of work, I ended up with a
  827. 28:42PR that had a full evaluation with all
  828. 28:45those failure cases and more that was
  829. 28:47over 2,000 lines of code. I still
  830. 28:49haven't merged cuz I'm mostly just using
  831. 28:50this for my hill climbs. That evaluates
  832. 28:53how well models behave with all the
  833. 28:55tools available to them in T3 code. And
  834. 28:58one of the most fun things about this
  835. 28:59eval I made is that sometimes the
  836. 29:01numbers went down. It got 66 out of 85
  837. 29:04correct initially, and then this next
  838. 29:06run after it made changes was only 63
  839. 29:07out of 85. The score went down. And when
  840. 29:10I told it that, well, I told it to get
  841. 29:12the score up, the order of events I gave
  842. 29:14it was get a perfect score, so all the
  843. 29:16failures stop, commit that, stabilize
  844. 29:19there, make sure all the models we care
  845. 29:20about get a perfect score there. Now
  846. 29:22your job is the opposite. You need to
  847. 29:24delete as much as you possibly can from
  848. 29:27the descriptions because those are
  849. 29:29bloating the context. I want it to be a
  850. 29:31third the size it was before and still
  851. 29:33get a perfect score. And this thread ran
  852. 29:35for ever.
  853. 29:37But it did it. To be very clear, this
  854. 29:40absolutely worked. You could see the
  855. 29:41difference in how much context was being
  856. 29:44used before and after. We cut it
  857. 29:46massively, especially if you have tool
  858. 29:47search off in T3 code and Claude code
  859. 29:50specifically.
  860. 29:51Huge reduction in the total tokens. 52%
  861. 29:54less from T3 code, 78% less from T3 code
  862. 29:58with tool search on because now we have
  863. 30:00flattened the model list to
  864. 30:01nothing and the others all just get
  865. 30:03squashed under the search. The work
  866. 30:05worked. This is going to save people
  867. 30:06meaningful amounts of money and token
  868. 30:08usage in T3 code. This is now live in
  869. 30:11the nightly, it'll be in stable very,
  870. 30:13very soon. I had to spend a shitload of
  871. 30:14tokens to do this, but now less tokens
  872. 30:17are used and I have proven that the
  873. 30:19result will be better, not worse,
  874. 30:21because I have an evaluation for it. And
  875. 30:23if I commit and push that eval, then we
  876. 30:25have a way to test changes reliably.
  877. 30:27This all is chaos because as we know,
  878. 30:29LLMs are non-deterministic, but they
  879. 30:32also allow for a level of like
  880. 30:33flexibility and tedium in your work that
  881. 30:37make things available that weren't
  882. 30:39before. It was just so much work to set
  883. 30:42something like this up. Like I could
  884. 30:43have made this by hand a year ago. I
  885. 30:45never would have though cuz it would
  886. 30:46have taken months to just go through the
  887. 30:47data. Now this type of thing is kind of
  888. 30:49trivial. And that is unbelievably cool.
  889. 30:52This would have just achieved the goal
  890. 30:54right now. I've had this running for
  891. 30:56most of the work day.
  892. 30:58And I'm I'm at the point where I might
  893. 31:00just YOLO merge this. It's so much
  894. 31:02better.
  895. 31:03Do I do it, guys?
  896. 31:05Do I just hit the button?
  897. 31:08If the team is mad, I'm blaming you
  898. 31:09guys.
  899. 31:11I got LLMs to make better UI than anyone
  900. 31:13on our team was capable of.
  901. 31:15We're living in weird times. If you take
  902. 31:16anything from this video, it's that
  903. 31:18being a clever weird engineer is so fun
  904. 31:21right now. If you can come up with these
  905. 31:22weird ways to let models measure
  906. 31:24themselves in the work they're doing and
  907. 31:26just climb the hill blindly, they will
  908. 31:28do it and they will make things that are
  909. 31:30good. You need to reward them for
  910. 31:31succeeding at their tasks, but if you
  911. 31:33can find a way to do that, oh man, the
  912. 31:36world's your oyster. I've been having so
  913. 31:37much fun doing stuff like this and I
  914. 31:39hope that this video will help you see
  915. 31:40ways to do it yourself. Until next time
  916. 31:42though,
  917. 31:43peace, nerds.

About this transcript

This page contains the full transcript of Agents Sucked At UI (Until Today) by Theo - t3․gg, generated from the public captions YouTube serves with the video. The transcript has 6,488 words across 917 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.

What you can do with it

Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to choose a caption track available on the video.

Free YouTube transcript tool

YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, caption language selection, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.