.
All right. Hello, everybody. Welcome. My name is Hassan. I lead the developer experience team over at Together AI, and I'm super excited to be here today to talk to you about how to make AI apps look good or stop letting your agents ship ugly UIs. I'm especially passionate about this project because a big part of my job and my personal life, I love building a lot of these AI apps. And I'll go to the next slide. I've been building about 10 apps a year for the last five years, and I've been lucky enough that some of these apps have gotten millions of users who have tried them out. And I think the number one reason for that is honestly just design and UX.
And so that's what I want to talk to you about today, how I approach design and UX in my apps as someone who's not a designer. But before we move on, really quick, I work at Together AI. We're an AI-native cloud platform. We help you do three things. We help you run open source AI models, chat models like GLM 5.2, image models like Nano Banana, audio models, vision models. We have all the different modalities and all the big open source models on our platform through our inference API. We let you fine-tune models on your own data. And then we also have a GPU cluster product where you can reserve H100s and B200s to train your own models or do your own inference.
So getting into some demos, I just want to start with a couple apps that I've built so you get a sense of the type of stuff that I build. They're usually very simple one-page apps where I try to index on the design and some animations and things like that. So this is a logo creator app that I built that got about 85,000 people who used it. This is one called Make Comics where it'll create a comic book from scratch starring you as the superhero. And this one, we actually have in person at the Together AI booth at this conference, where you can go and there's a little iPad and you can take a picture and get a real comic book printed out that you can take home.
Other stuff, this is generating subtitles from videos. I upload a lot of videos to YouTube and to Twitter, and so I needed something like this. And I looked into generating subtitles with open source models. This one had about 8,000 people who checked it out. AI chat app for open source models. This one's fairly straightforward. This one is a website that I built to help you build five or six different variations of whatever landing page you want to build, and then you can choose one of them. And then the last one I'll show off really quickly is an AI cloud agent where you can ask it to do things and give it a GitHub repo, and it'll spin up a sandbox
and actually create a PR for you from scratch. And so this is just an example of some of the stuff that I build and that I put out. And I think the big takeaway here is, we live in a world now where more and more AI apps are slop. You can look at it, and within a second or two, you can tell that this looks AI-generated. And so I think just doing a little bit of extra effort, a little 10 to 20% after, focused on the UI, is a really, really big competitive advantage for these things. So like I said, vibe-coded apps all look the same. They have the same tells. They have the same purple gradient background in every single one. They have italics in headers.
They always have the scroll to explore for some reason. They have these pills that are all caps and with spaced-out letter spacing. They have these gradient logos. They use a bunch of emojis. And so it's the same kind of stuff, sometimes some spacing and padding issues. But the point is, if you really think about it and you look at all of these AI-generated websites, you can make a list of 20 or 30 different things that are like, okay, this is what AI slop is, right? All these random graphics. And so I'm going to talk about two different ways that I've tried to overcome this. And the first one I'm going to start with is this design skill that I built called Hallmark.
And Hallmark basically takes all of these AI slop patterns and codifies them and tells AI models, hey, don't use these. Don't do a purple gradient. Don't use italics in the title. And all of these AI slop gates, is what I call them, or slop patterns. So that's one thing it does. And then the second thing it does, which I think is really important when you're building stuff, is it gives your AI model a lot of different themes. And so I built a bunch of these different themes. We feed them into Hallmark. And so when you ask Hallmark to create a website for you, it'll use these as context. And that's going to be a theme throughout this talk as well,
that if you give AI models really, really good inspiration, they tend to perform very, very well. And so I launched this about a month and a half ago. I have a little over 10,000 people who have tried it out so far. These are some examples of, I've mostly indexed it on landing pages, but landing pages using Hallmark. And so this is build a landing page for an indie podcast, and it gives you that. And there are different skills and stuff that I'm not going to get too deep into. But the main things I just wanted to cover are the AI slop gates and the themes. And those two things really do a lot. And so this is the announcement tweet,
and I got a bunch of really great feedback, and we're still iterating a lot to try to make it really, really good. But I found this to be one way that I try to avoid AI slop websites. And so these are some more examples of Hallmark-generated pages. This one's build a landing page for an invoicing app. And you can see they don't have a lot of the same tells that you'd expect from an AI-generated website. And these also are just one shot. This is one single prompt, and you get this whole website. And really, a lot of the magic also is iterating on these things over and over and over again. So this is another one. And then before and after, this is a pretty good example.
This is build a page for a learning app for kids. And on the left is without Hallmark, and on the right is with Hallmark. You can see it's just a little bit cleaner, it's a little bit nicer. It has more animations, which I didn't record a video to show. But it just looks a little bit nicer in general. This is another one as well. On the left, the classic AI-generated page with the gradients and everything like that. And on the right is with Hallmark. You can look at the one on the right and still say, well, that's not a perfect landing page. But it does give you a much better base to start out from, right? And then you iterate your way
to something that really, really looks incredible. And then I've been indexing on this thing, but app iteration is also very important. And I think specifically, a lot of people undervalue the importance of using smaller, faster models for these app iteration cycles. A lot of the apps that I build now, I'll start in Codex or Cloud Code to build a base. And then for iterating, I'll use usually a smaller open source model like GLM 5.2. GLM 5.2 is amazing. Who here has used it? A show of hands. Okay, a few people. So this is a model that came out two weeks ago that, in my opinion, was the first open source model to actually be very, very good at design.
And actually, we're going to play a little game here where one of these landing pages was generated by GLM 5.2, which is a cheaper open source model, and the other one was generated with Opus 4.8. Raise your hand if you think GLM 5.2 is A. Okay, four hands. That was the GLM 5.2 one. Right, so they're almost indistinguishable in certain ways where the one on the left is generated with GLM 5.2. It was created way faster as well because it's a smaller model, so it's inherently a lot faster. And the one on the right cost five times as much and was a lot slower as well. So anyway, this is another one where the left and the right,
the left one arguably is even more AI-generated, and that's the one that Opus actually created. Right, so anyway, when I say use a cheaper model to iterate with, it still needs to be sufficiently good, and GLM 5.2 is one of those models I feel is really, really incredible for this kind of stuff. So this is another example where it's very hard to tell the difference. And for iteration, so this is a really simple website I one-shot with just that one prompt. This is using GLM 5.2. And you can see this does have a lot of the AI tells. It's impressive that it actually works. It's an image playground where you send it a prompt and you get an image.
But just with a little bit of iteration on the left, I'm not going to go through all of it, you get to a website that looks roughly similar, but it just looks a lot nicer, and it has a much better logo and way better loading states and animations and just better spacing overall with just one or two follow-up prompts. So I think iteration is extremely, extremely important. So the final part of my talk is just takeaways for how I approach building apps that look good as someone who's not really a designer as well. A lot of other people speaking on this track are incredibly talented designers, and you should take a look at their thing. My objective is not necessarily
to make the best-designed app in the world, it's just to make apps that look and feel really good, or at least much, much better than purely AI-generated slop. So my main takeaways for this: one is getting familiar with a lot of these AI tells. We went through some of the patterns of AI slop. A lot of the time, I sit down with people and I show them a website and they're like, oh, that's AI-generated in two seconds. But they can't tell me why. They're like, yeah, it just looks AI-generated, I have no idea what it is. And so I think it's worth understanding that, well, yeah, it's purple gradient, and it's this logo, and it's this thing. And when you understand that stuff,
I think it becomes a lot easier to bake that into the apps that you build, or ask the AI models to, hey, don't do this or don't do that. So that's one tip I have. Another one that's tangential is saving your preferences in some sort of skill or markdown file. You can do it at agents.md, you can do whatever you want. But the big thing here, I think, is as you build stuff, you start to build an intuition for what you want, what you don't want. You generate a website, and every single time the logo looks like crap and you have to regenerate the logo, you can start to build out an agents.md that has a bunch of this stuff: avoid this. For the logo, do them this way.
For this, do it that way. And as I've gone, I've built up a substantial agents.md that helps me do this. And to a degree, this is what Hallmark is as well. Right? If you don't have your own, you can use something like Hallmark. This is maybe the most important one. If you take one thing away from this talk, please give your agents references and screenshots. I don't build anything nowadays without giving AI models a lot of inspiration. And I have this inspiration vault for anytime I look at a website or an app that I really like, or that I'm like, wow, this looks amazing. I'll just save it. I'll save it somewhere. And now I have a really large collection of them.
And so when I'm building a new app, I usually will be like, well, actually, I think I want this to look like a mix of Duolingo and a mix of this app and a mix of this app. And I'll paste in a ton of screenshots for the AI model to look at. And the output will always be way, way, way better. So always try to use references and screenshots. Longer and more specific prompts are always better. These days I will just record voice notes. And so I'll start a voice note for one, two, three minutes, and I'll just rant and be like, well, I want to build an app that looks like this. And here's how you should use it. And here's the type of user that's going to use it.
And we have a text box here, and we have an image upload thing. And here's how it should look. And here's some inspiration, right? And so usually, all my prompts now are two to three paragraphs. So they're a lot longer prompts, and they usually do a lot better. This is an example of a much longer prompt. I'm not going to go through all of it, but it just produces something that's just a little bit better. The thing on the bottom was produced with this prompt. Break things down into steps. I just talked about making your prompts longer. But also, if you're building seven different features, you probably don't want to put them all in the same prompt.
Right, you probably want one or two features per prompt where you talk about them extensively. And usually I'll send off, the start of the app will be a huge prompt with a bunch of screenshots of inspiration. And then immediately I'll queue up a bunch of other messages of like, oh, we'll do this feature and do this feature and do this feature, and I'll let it go. So that's something that I've seen helps. Cool, this is the one I talked about. Iterating with a cheaper open source model can be better than using closed source models for everything. For iteration tasks, I found they're a lot better. I think Cursor did a great job proving this with Composer 2.5,
which is an open source model that they post-trained. And it feels magical using it for iteration, because it's so, so, so fast. And so you'll see that in some of these open source models. Cool. And then the last thing is I see people trying to one-shot apps and then being like, well, that's it, I'm done. I'm going to post this as is. And it's really, really important to understand that whatever your agent creates is just the base, right? And it's on you to give it additional context, give it additional inspiration, and go back and forth and make the apps look and feel really good, keep them simple, and iterate that way. Cool, that's all I got.
Thank you so much for coming. well, that's it, I'm done. You know, I'm gonna post this as is. And it's really, really important to understand that like whatever your agent creates is just the base, right? And it's on you to kind of like give it additional contact, give it additional inspiration, and go back and forth and make the apps look and feel really good, keep them simple, and kind of iterate that way. Cool, that's all I got. Thank you so much for coming.