Lenny's Podcast: Product | Career | Growth
00:08:03 · Zevi Arnovitz
[00:08:03] S1: Yeah, exactly. GPT projects and Claude projects, which are basically a shared folder of chats which share both custom instructions and shared knowledge base. And I think it was around when GPT started using memory where I thought it was interesting, but it really annoyed me because I do a bunch of different things. I'm a terrible runner, I'm a PM, I was a student, psychology student, so I had all these different facets of life. And what happened was the memory feature was mixing stuff up. So like I talked to GPT about running and it would say, "Oh yeah, after this 5K, you're going to crush all your next product reviews." And it's like, okay, I understand that you have that in your memory, but it's just not relevant. And projects basically allows you to compartmentalize and have things within the right context. So tracking back to the story I told when we came back from Japan, I started building this app. The first thing I noticed was that these products were built in a way where, and when I say these products, I mean Bolt and Lovable, were built in a way where they were super eager to write code. So their system prompt was you're a coding agent. So when you'd write something, they'd straight away start coding. So at the beginning of a project, this was super fun and exciting because they just go and start building your app. But later on when things got more complex, this created much more problems because planning is really important when you're implementing something technical and let's say you're implementing payments or something that's going to be a change to your database. If the coding agent is just like, "All right, I got it." And just starts writing code, this always results in terrible things, some really gnarly bugs that I had. And to mitigate this, what I did was I created sort of a CTO. So again, I'm not technical. I have been in product for a while, but I know zero stuff about code. So basically what I did was I created a CTO with the custom prompt of it being the complete technical owner of the project. So I told it, "I own the problem. I own how we want the users to feel. You're the complete owner of how this is going to be built. I want you to challenge me. I don't want you to be a people pleaser." All these things that kind of mitigate the regular ChatGPT-isms.
00:10:28 · Zevi Arnovitz, Lenny Rachitsky
I always think about this where for some reason, the easiest way for me to think about AI is to imagine it as people. And I think ChatGPT would probably be the worst CTO because it's such a people pleaser and it's so sycophantic where ... Just a short story I had a few weeks ago, I was trying to learn about Bun JavaScript, which was acquired by Anthropic and I was trying to understand what they do. So I was talking to GPT and this wasn't within my co-founder CTO project and I asked it if it's similar to a different framework that I have in my app called Zustand, which nothing to do at all with what Bun JavaScript does. And basically GPT goes, "Oh yeah, it's exactly the same." And then it started talking about what it meant and I was like, "Wait, no, these are not the same at all." And it said the most terrifying and hilarious thing. He goes, "Oh, I'm sorry. I thought you were just making this up and I was riffing with you." And I was like, "Oh no, no, no, this is terrible." So basically if regular ChatGPT was a CTO, that would be the CTO who goes along with your dumbest ideas. So creating the project allowed me to mitigate that. [00:11:40] S0: So this is, just to be super clear, you have a ChatGPT project that you've given a prompt to be your CTO of your product and being a non-technical person, this is kind of like the thing you talk to when, and we'll get to what you're actually using to build when you have questions about architecture and decisions that are technical.
00:12:00 · Zevi Arnovitz, Lenny Rachitsky
[00:12:00] S1: Yeah. So now I'll show my full workflow and I don't involve GPT anymore, but I definitely would recommend, even though the technology has gone ... So when I started this, there was no plan mode or ask mode. It was just build on these products on Lovable and Bolt, and they've progressed a ton. A lot of what I had as workflows have become ingrained in these products, which is really interesting. I would still recommend start with a project for, first of all, the reason that I said, and also it kind of puts you in a place where you're in a chatbot and not writing code. So you take the time to converse and to learn, which I think is critical. And the second thing is if you're non-technical like me, code is terrifying. It's the scariest thing in the world to look at, and I look at it as kind of like exposure therapy. I think if you see this where I'm working like in Claude or in Cursor, you might be excited to start using those, but I would really recommend starting slow with a GPT project, beautiful UI, super simple, then maybe graduate to like a Bolt or a Lovable, and then go to Cursor in light mode, slowly, slowly, gradually ease in until you open a terminal, go full dark mode, go full dev. So I would really recommend doing this gradually. [00:13:19] S0: That is awesome advice. And so just to be clear, these days you're using Cursor with Claude Code powering it. And what I love about that is that you've never written code. The way you put it, you're afraid of even looking at code. [00:13:33] S1: Yeah, 100%.
00:13:33 · Zevi Arnovitz, Lenny Rachitsky
[00:13:33] S1: Yeah, 100%. [00:13:33] S0: You can do exposure therapy, and I love that Cursor is useful to you. And what you're telling us is that graduating from a ChatGPT project that is kind of your technical co-founder kind of taught you enough to feel more comfortable going straight to cursor. You said that you actually went to Bolt and Lovable kind of in the interim and then you went just straight to Cursor. What's the reason to just go straight to Cursor? Is it just Cursor can do everything and once you get the hang of it, it's actually the most powerful tool? [00:14:02] S1: Yeah, I think I graduated from each tool when I kind of outgrew it. So Bolt was awesome until I was trying to connect payments to my app and I kind of started losing it and then I graduated to Cursor and I've actually fallen in love with Claude. So I'm using Claude Code, but that also runs within Cursor, and I think this is Tal who told me this. I'm not sure who he's quoting, but code is just words at the end of the day. So it's just files on your computer. So basically you can be working on the same project and carry it from app to app. And especially now, I can work with multiple models and apps on my project. So start slow, but definitely there's a lot of places you can graduate to. [00:14:42] S0: Awesome. Okay. Should we dive into screen share showing how you operate? [00:14:47] S1: Awesome. I pulled up cursor. Can you see it? [00:14:49] S0: Mm-hmm.
00:14:50 · Zevi Arnovitz
[00:14:50] S1: Perfect. So within my code base, what you can see here on the left, these are all my code files. Here on the right is Cursor. So this is basically like having AI, which has access to all the code. And here in the middle, I have Claude Code running. And what you can see here, I'm going to close cursor for a second. What you can see here are all my /commands. Basically what /commands are, they are reusable prompts that I save within the code base that I can run by writing / and then the name of the file. So here you can see Create Issue, which is the first command that I'm going to use. And basically what this tells Claude, it says the user is meant development and thought of a bug or a feature and improvement, capture it fast so they can keep working. And then it basically says, this is the format that I want you to capture the linear issue in, and it explains a bunch of things what exactly Claude needs to do to get there. So the way I invoke this is basically I'll do /create issue and this injects this prompt into Claude. So it says, "I'm ready to help you to capture this issue, what's on your mind." So basically when I'll do this is if I'm working on a big project and I suddenly come across a bug or have an idea that I don't want to work on right now, but I want to work on later, I'll do this really quick and Claude's main goal is to quickly capture what I'm thinking about. So quickly to run through my full workflow. So basically it starts with creating an issue. So this is the create issue /command, which basically tells Claude that I'm mid-development and it should quickly capture what I'm thinking about and create an issue within linear. Then later on, when I want to pick this up, I have the exploration phase. Exploration phase is basically telling Claude, we're going to only explore what we want to solve here. It could either pull from linear or I can just speak freely to it. And what it will do is it will analyze and understand the issue and just ask clarifying questions. The next phase after we've done finished exploration phase is we're going to create a plan. So you can see create plan. This basically has a template that I love for creating plans, and the output of this at the end of the day will be a markdown file with our plan that we can end up building along with code. After creating the plan, we have execute plan.
00:17:13 · Zevi Arnovitz, Lenny Rachitsky
After execution, we have review and then we have peer review, which is really cool and we'll get into later on, and at the end, we update the docs. So this is updating documentation and everything so that agents can write better code later on. So I think what we'll do is we're going to build a feature live for my app, which I think is really cool. But first what I'd like to do is show you the app so you have some context. So this is StudyMate. It's a platform for students, which allows them to upload study materials and create interactive tests based on their own materials. So here we can go to the top. Let's upload a PDF. We can decide what pages we want to be quizzed on. We can decide the number of questions, the difficulty level. And basically what happens behind the scenes is we send the information the user uploaded along with the system prompt and any other augmentations the users decided to Gemini and we create a quiz. These are challenging questions that are meant to assess comprehension. You even have some hints and once we do a few of these, we can submit ... I got them right? [00:18:21] S0: Terrible results. [00:18:22] S1: Yeah, lucky. [00:18:23] S0: And so just to be really clear about this, this is like a side business that you have, an app that you built that's making money. That's like a thing you vibe coded having no technical experience. [00:18:32] S1: Yeah, this is my weekend project. Yeah. This is what I do. [00:18:35] S0: Amazing.