Lenny's Podcast: Product | Career | Growth
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.
00:18:35 · Lenny Rachitsky, Zevi Arnovitz
[00:18:35] S0: Amazing. [00:18:35] S1: On weekends. Yeah. So you get basically deep explanations into why each question was wrong or each question was right. And at the moment, StudyMate only has multiple choice questions. And I was doing some competitor research over the last weekend and I saw competitors who had true or false questions and also fill in the blank questions, which I loved. So I think that'd be really cool if we could build that live. How's that sound? [00:19:00] S0: I love it. Crossing your fingers, this all work. I just want to highlight the stuff you shared right before this in cursor. So this is a huge deal, what you describe here. This is essentially what you've figured out is a way as a person that has no idea how to write any code, how to build a product in Cursor as a product manager using this series of /commands that you've concocted that you're going to be sharing with listeners. They can download all these and just use them directly. They don't have to figure out all these prompts that you've figured out. [00:19:31] S1: Yeah, 100%. Basically what happened was I formulated the backbone of this with the CTO, and it was basically within the system prompt of the CTO project that I had within GPT. So it said, step one, we do this. Step two, we do this. And now I'll keep building. And if I see something that happens over and over again, I'll just create a /command and then it will be automated within the workflow.
00:19:31 · Zevi Arnovitz, Lenny Rachitsky
[00:19:31] S1: Yeah, 100%. Basically what happened was I formulated the backbone of this with the CTO, and it was basically within the system prompt of the CTO project that I had within GPT. So it said, step one, we do this. Step two, we do this. And now I'll keep building. And if I see something that happens over and over again, I'll just create a /command and then it will be automated within the workflow. [00:19:54] S0: Amazing. So just to summarize the /command. So one is create an issue in Linear, which I love. Linear is awesome. Shout out Linear. [00:20:02] S1: That's also from the product pass. [00:20:04] S0: From the product pass. Oh my God, what a value? Okay. So step one is create the issue in linear. So it's a command. So this prompt /command you've created, just create issue. Then it's explore, which is explore the idea, help me ideate on what this could be. And this is Claude helping you think through the feature and product. And then it's actually create the plan. And so it's like the AI helping you build the plan to build the product. Then it's actually execute, which is just build the thing. And then there's this review, peer review step, which is awesome that you'll share. And then there's document, update documentation based on the new feature that we're adding. Sweet.
00:20:44 · Zevi Arnovitz
[00:20:44] S1: Yeah. Cool. So let's go ahead and start building. So I'm going to use Wispr Flow to dictate and basically this starts with /create issue. So this basically sends that prompt. And I love this because I usually do this during when I'm building something else. So basically it tells Claude that I'm mid building something and I don't have a lot of time to waste time on this. So just ask some brief questions so that you have enough to capture within linear. So I want to add fill in the blank questions to StudyMate. I want this to be 30% of tests to be generated as fill in the blank questions. I want there to be six potential answers for two blank spots, and of course there's only going to be two correct answers. So one correct answer and two incorrect answers for each spot and I want the interface to be drag and drop. So that's just basically a quick think of how I want this to work. So it's going to ask me a few questions. Quizzes are 100% multiple choice, question structure, single sentence passage to blanks and priority. So one and two are correct, and this is not high priority. It's a nice to have feature. So now basically what Claude is going to do is it's going to use MCP, which is basically a technology that was created by Anthropic, which gives AI the ability to use tools. So this is connected to my linear. So what it's going to do now is it's going to use everything we've said and create an issue within Linear.