Written by:

Tony Yang

Share this post:

I recently had the opportunity to chat with Shaun Merritt, cofounder and CTO of Karrot.ai, a LinkedIn ABM tool.

Shaun was kind enough to share a comprehensive breakdown of how he used AI vibe-coding tools to build Karrot as a solo software engineer in just a few months! In my interview with him, he shared his step-by-step process, especially how he used tools like ChatGPT, v0, and Claude Code. 

Here’s a summary of my discussion with Shaun, but you can listen or watch the full interview in the video below.

 

From Young App Tinkerer To Joining A Startup Out Of High School

Shaun’s journey into tech started early. As a teenager, he was already experimenting with programming. He learned by building simple iOS apps, each one slightly more complex than the last.

Instead of following the traditional path of going to college and getting a computer science degree, Shaun dove straight into the startup world, starting at Pray.com while still in high school and joining them full time upon graduation where he learned the ropes of product development and business firsthand.

Later, he co-founded Toucan, a language learning browser extension, where he quickly realized the importance of building things people actually want. He grew from a solo builder to leading a team of engineers, focusing on keeping things simple and always prioritizing the user experience. These early experiences shaped his approach to product development.

How He Started Karrot

After Toucan, Shaun was looking for his next challenge and saw the potential of AI to accelerate software development. He teamed up with Eric Siu from Single Grain, and together they identified a real customer pain point: running personalized LinkedIn ads to targeted enterprise accounts.

The manual process of creating personalized campaigns was slow and inefficient, so Shaun first built an initial admin portal to automate campaign creation, which quickly proved its value with higher engagement and lower costs. This validation motivated them to build Karrot into a full-fledged product.

Breaking Down the Build: Step-by-Step Process

I asked Shaun to break down exactly how he built Karrot using AI vibe-coding tools, and he walked me through how he first used ChatGPT, then v0, Cursor and Claude Code. Here’s the process he shared:

1. Defining the Product and User Flows

Shaun starts every project by defining the core problem and mapping out user journeys. He sketches out flows and identifies the key features that will deliver value. For him, the hardest part is deciding what to build and how it should look, especially since design isn’t his strongest skill.

2. Rapid Prototyping and UI Generation with v0

To overcome design challenges and accelerate prototyping, Shaun relies heavily on v0. He uses v0 as his primary prototyping and UI generation tool to quickly generate UI components and mock up new features.

He starts with a blank project and uses natural language prompts to describe the screens and features he wants so that he can iterate on layouts and flows without getting bogged down in code.

For example, to add a new feature like “Website Activity,” he’ll prompt v0 with:

“Add a new tab on the sidebar called Website Activity. Fill that page out with demo data similar to what I have on the companies page.”

v0 generates React components and layouts based on these prompts. Shaun iterates by refining his prompts, asking v0 to add, remove, or adjust UI elements until the flow feels right.

He leverages open source component libraries (like shadcn/ui) by specifying them in his prompts, ensuring the generated UI is both modern and customizable.

As the prototype grows, Shaun prompts v0 to refactor large files into smaller, modular components. This keeps the project maintainable and speeds up future iterations. This approach allows him to test ideas with customers early and often, making adjustments based on real feedback rather than assumptions. He’s found that focusing on functionality and user feedback is more important than perfecting the design at the prototype stage.

He uses v0 not just for static mockups, but for interactive prototypes he can demo to customers and gather feedback before writing any production code.

Best Practices:

  • Be explicit in your prompts—describe both the structure and the data you want to see.
  • Use v0’s ability to remember context across prompts to build up complex flows incrementally.
  • Regularly refactor and modularize as the prototype grows.

3. Research, Code Generation, and Product Flow with ChatGPT

For the AI layer, Shaun integrates ChatGPT to handle research, code generation, and even brainstorming product flows. This includes a variety of tasks throughout the build, such as:

  • Researching third-party APIs (like LinkedIn’s ad API) and understanding integration requirements.
  • Generating code snippets for backend logic, API calls, and data processing.
  • Brainstorming product flows and edge cases by role-playing as a user or designer.

ChatGPT is also used to help Shaun understand and debug code, especially when integrating new features or troubleshooting issues, making it a versatile tool throughout the development process.

Best Practices:

  • Treat ChatGPT as a collaborative partner—ask it to explain, suggest, and critique, not just generate code.
  • Use it to accelerate learning curves on new APIs or technologies.
  • Iterate on prompts and clarify context to improve the quality of responses.

4. Backend Logic and Workflow Automation with Claude Code

Once the prototype is validated, Shaun moves to building out the backend using Claude Code.

He imports screenshots and code from v0, then uses Claude Code’s planning mode within Cursor to create project plans and workflows for the new feature, providing both visual references and code context.

Claude Code asks clarifying questions, then generates a detailed implementation plan and scaffolds out the necessary code.

The tool handles much of the heavy lifting, getting features 60-70% of the way there, after which Shaun steps in to fine-tune and complete the implementation.

This workflow allows him to focus on higher-level architecture and problem-solving, rather than repetitive coding tasks.

Best Practices:

  • Use planning mode to keep Claude Code focused on understanding before generating code.
  • Provide both visual (screenshots) and code (snippets) context for best results.
  • Be ready to step in and finish or polish the last 30-40%—AI gets you close, but human review is still essential.

5. Iterating with Customer Feedback

A key part of Shaun’s process is constant iteration with real users and customers. He conducts weekly check-ins, demoing new features using the v0 prototype, and gathers real-time feedback on usability and value. He also uses customer reactions to prioritize what to build next and what to refine.

Once a feature is validated, he brings in a part-time designer to polish the UI, ensuring the product is both functional and visually appealing.

Feedback from these sessions is fed back into the v0 and Claude Code workflows for rapid iteration.

This feedback loop ensures that he’s building features that actually solve user problems, rather than just adding complexity.

Best Practices:

  • Use AI tools to save time on building, and reinvest that time into customer conversations.
  • Validate with real users before investing in production-level polish.
  • Keep the feedback loop tight—build, demo, iterate.

6. Scaling and Team Integration

As Karrot grows, Shaun is onboarding new engineers with the expectation that they’ll use AI tools as part of their workflow, both to understand the codebase and to accelerate development.

Shaun believes that while AI can handle much of the coding, engineers still play a crucial role in architecture, quality assurance, and making final decisions about what to build.

Best Practices:

  • Make AI literacy a core part of your engineering culture.
  • Use AI for onboarding, code review, and even documentation.
  • Focus human effort on high-leverage activities: architecture, QA, and customer understanding.

Lessons Learned

Reflecting on his journey, Shaun emphasizes the importance of spending more time talking to customers and less time building for building’s sake. AI has freed up his time to focus on user needs, and he’s learned that the real differentiator is understanding and solving real problems—not just shipping features.

For anyone building SaaS today, Shaun’s process is a powerful example of how to combine AI tools with a relentless focus on customer feedback to move faster and build better products.

If you’re thinking about building with AI, Shaun’s approach is a fantastic blueprint to follow. The real magic happens when you combine powerful tools with constant, honest conversations with your users.

Share this post:

Tags:

About the Author

Scroll to Top