In this episode of How I AI, you get elite prompting strategies from the brilliant Ravi Mehta, former CPO at Tinder and a product leader at places like Facebook and TripAdvisor. Ravi is deeply knowledgeable about how AI can unlock high-quality product experiences, and he's shared all his secrets with us in this ep.
I've seen a lot of product managers and designers, myself included, engaging in what I call "vibe prototyping." We're prompting prototyping systems, and while we're often impressed that a prototype gets generated at all, the outcomes aren't always what we need for the product or experience we're trying to craft.
We might be asking the AI to do too many jobs at once, leading to an average output rather than something truly exceptional. Ravi's approach fundamentally changes this by focusing on structured data and precise media generation, elevating our AI-powered workflows from "good, not great" to truly professional.
He walks us through how design systems and UX descriptions are important, but also shows how that JSON and robust data models should often be the real foundation for great prototyping.
He also demonstrates how to use structured prompting in Midjourney to get high-quality photos and images for your prototypes.
Workflow 1: Data-Driven Prototyping for Superior UX
When we build products, one of the first things engineering does is define the data schema that will drive the front end. This codifies ambiguous designs and specs in a concrete way. Ravi realized we can apply this same principle to AI prototyping.
Instead of asking a prototyping tool to simultaneously figure out UX, code architecture, and data structure, we can pre-feed it a well-defined data model. This “separation of concerns” allows the AI to focus on creating the best possible user experience around precise data, dramatically improving the quality and flexibility of the resulting prototype.
The Problem with "Vibe Prototyping"
Let's start with a common "vibe prototyping" scenario. Using a tool like Reforge Build (a prototyping tool specifically designed for product teams), Ravi used a simple, functional prompt to create a trip planning website:
Make a website for planning a Paris trip with multiple people, include some activities, hotels and restaurants, over three days, add user profiles and let people comment on things. Make it look nice.
As I reflected on this prompt, I thought, if I slacked this to a designer, I'd probably get a meeting request to clarify! Yet, AI tools can generate something quickly.
Reforge Build even asks follow-up questions to help refine the prompt, which is a great feature. However, when we expect the AI to handle everything – UX design, underlying data structure, and code architecture – the output is often an average across these areas.
While impressive that anything is generated in 30 seconds, the results often have issues. For example, in the initial prototype, we saw a photo of a hotel in French Polynesia instead of Paris, and a broken link for a Seine River Cruise photo.
Step 1: Generate Structured JSON Data with Real Media
Instead of starting with a broad prompt for the prototype, Ravi’s data-driven approach begins by generating a detailed JSON data set using a powerful LLM like Claude. This allows us to define the content and structure first, providing a clear foundation for the UI. He prefers Claude for generating data that feels human and authentic, especially for conversations.
Here’s the prompt Ravi used in Claude to generate the data schema and populate it:
Using JSON, generate a sample itinerary that I can use to prototype a shared trip itinerary feature. The destination is Paris. The Itineration include an itinerary name, cover, photo, and date range covering three days. There should be three to four travelers associated with the itinerary. Each traveler should include a first name, last name, avatar, photo, and preferred travel style, like foodie or history buff. For each day include a collection of things to see on that day. There should be 12 to 15 items in total. The items should uh, be a hotel for day one. Popular things to see on each subsequent day. Each item should include a name, a start time, a duration, a star rating, number of reviews. Tags to describe them a photo in a short description. Some items should have notes for one or more travelers. The notes should be in chronological order and respond to each other like a message thread for each itinerary item.

A critical part of this is incorporating real media to avoid hallucinations and low-quality images. Ravi achieved this by activating the Unsplash MCP server within Claude. MCP servers are a fantastic way for LLMs to access external services. The Unsplash MCP server takes a query (like "Eiffel Tower" or a hotel name) and returns actual URLs for relevant photos from Unsplash. This means our mock data gets real, high-quality images.
This process takes a moment, as Claude is not only generating a complex JSON structure but also making multiple API calls to Unsplash for each photo. The result is an incredibly detailed, authentic-feeling dataset with accurate image URLs.

Step 2: Generate the Prototype from Structured Data
With our rich JSON data in hand, the prompt for the prototyping tool becomes much simpler:
Generate a trip itinerary feature based on the sample data below
Followed by pasting the entire JSON data set.

What's fascinating is how the AI uses this data. It doesn't get "fuzzy" with it; it takes the data as-is and builds the user experience around it. This leads to a much cleaner, more accurate, and visually appealing prototype compared to the initial "vibe" approach. We now have beautiful, relevant photos (a full Eiffel Tower!), detailed itineraries, and realistic traveler profiles with avatar photos. The accuracy of the data significantly improves the perceived quality of the design.

"The tool has been able to focus on what is the right UX around this dataset rather than simultaneously figuring out the UX simultaneously, figuring out the dataset." - Ravi Mehta
Step 3: Iterate and Augment Your Prototype
The real power of this data-driven approach shines in iteration. The generated code is clean and componentized. You can easily modify the data directly within the lib/sampleData.ts
file in Reforge Build.
For example, changing a traveler's name from "Marcus" to "Mark" or swapping out a cover photo with a new Unsplash URL is quick and easy.
Even better, you can go back to Claude and ask it to generate entirely new itineraries based on the same schema:
Now generate an itinerary for the same travelers going to Thailand.
Claude will use the existing context, leverage the Unsplash MCP server for new images, and produce a fresh JSON dataset. Swapping this new JSON into your prototype instantly transforms it to a new destination, complete with relevant photos and details.

This flexibility allows you to:
- Stress-test UX: See how your design handles different content lengths, image orientations, or user-generated content. As a product leader, I love this for design reviews where I can ask, "What happens if the user's profile is a thousand words long?" or "What if this photo is vertical, but our design crops it horizontally?" AI will expose these edge cases designers might miss.
- Localize instantly: Generate content in different languages to preview the experience.
- Augment data: If you have existing JSON, you can ask Claude to "augment this JSON with information about the travelers and their conversations," adding new elements without starting from scratch.
- Add new features: Implement new functionality, like "blank cards if people have time in between activities" as Ravi showed, and it dynamically integrates with any data set.

This data-driven approach provides a robust primitive for standardizing prototyping efforts, leading to truly professional, dynamic, and realistic prototypes.
Workflow 2: Structured Midjourney Prompting for Professional Images
Beyond generating data for prototypes, Ravi also shared a brilliant framework for generating high-quality, curated images using Midjourney. Many of us use Midjourney with "vibe prompts," which often yields beautiful but generic results.
To get higher quality work. Ravi developed a structured approach to prompting in midjourney which he shared in this episode.
The Subject-Setting-Style Framework
The key is to think about three elements when crafting your Midjourney prompt:
- Subject: What exactly do you want to depict?
- Setting: Where is the subject, and crucially, what is the lighting like?
- Style: How do you want it to look? This is where photographic and cultural references come in handy.
Let's compare a basic prompt to a structured one:
- Basic Prompt:
office chair
Results: Decent, but not really usable for a high-end catalog.

- Structured Prompt:
an empty stylish office chair, overlooking Milan during an autumn raining morning, Fuji Color C200
Breakdown:
- Subject:
an empty stylish office chair
- Setting:
overlooking Milan during an autumn raining morning
(This defines placement and lighting) - Style:
Fuji Color C200
(A warm film stock that evokes golden hour results)
Results: Stunning, curated images with beautiful lighting and cultural cues. This is a truly usable photo!
The Film Stock and Camera Metadata "Cheat Code"
One of the most powerful aspects of the "style" element is using photographic language – specifically, film stocks and camera metadata. These models are trained on vast datasets that likely include metadata about how photos were shot. By mentioning specific film stocks, camera brands, or lens settings, you're guiding the AI to a higher-quality, more aesthetic subset of its training data.
Film Stock Example: Kodak Trix
Instead of saying "I want grain" or "I want contrast," specify Kodak Trix
. This beautiful black-and-white film stock is known for its contrast and grain, and Midjourney will emulate that aesthetic subtly and effectively.

Camera Metadata Example: Leica + Lens Details
For a portrait of a young man, Ravi used:
A young man with brown hair and eyes at golden hour, Leica 50mm F1.2, Fujifilm Provia
Breakdown:
-
Leica
: References an $8,000 high-end camera, guiding the AI towards premium photography aesthetics. -
50mm lens
: A common focal length for portraits. -
F1.2
: Specifies an incredibly blurry background (bokeh), creating an ethereal look. -
Fujifilm Provia
: A film stock good for portraits.
Results: Professional-looking portraits that avoid the "uncanny valley" often seen with AI-generated people.

When we omitted this camera metadata and simply used portrait of a young man with brown hair and eyes
, the results were generic sketches or photos with that slightly "too perfect" uncanny quality.

"As you develop that understanding [of art literacy], you'll also develop a vocabulary around it, which I think is incredibly powerful for prompting." - Ravi Mehta
This workflow highlights the importance of art literacy in the age of AI. Understanding how to describe design, taste, elegance, and quality, and using the specific vocabulary of photography or art, empowers you to create significantly better assets.
If you're struggling, try dropping a photo you like into Claude or ChatGPT and ask it to describe the visual elements, lighting, and style to help build your descriptive vocabulary.
Final Thoughts and Opportunities
Ravi has completely changed my perspective on AI prototyping and image generation. His data-driven approach is simple to implement and lets you generate realistic prototypes efficiently.
By separating the concerns of data and UI, and by leveraging structured, language, we can move beyond "vibe prototyping" to achieve consistent results. These techniques not only save time but also enable more rigorous testing and more meaningful feedback, ultimately leading to better products.
For consumer product teams, AI unlocks incredible opportunities for delight and personalization. These are the "nice-to-haves" that often get scoped out but are crucial for a product to stand out. With AI, we can deliver rich, engaging, and highly personalized experiences without the traditional time and resource constraints. It's about empowering your product to do something today that it couldn't do yesterday for the user.
And for those moments when AI isn't quite doing what you want, Ravi's pro-tip: be encouraging! Use words like "elite sales coach" or "elite photographer" in your prompt. It's not about flattering the AI; it's about guiding it to the higher-quality, more refined sections of its training data associated with those descriptive terms.
I highly encourage you to try these workflows! Explore generating your own structured JSON data and experimenting with Midjourney's Subject-Setting-Style framework. You'll be amazed at the difference it makes.
Thanks again to Ravi for sharing hist incredible insights and workflows with us! If you'd like to learn more from Ravi, you can find him on his Substack, Ravi on product, at ravi-mehta.com, or connect with him on LinkedIn and X.
He also has an AI Strategy course with Brian Balfour through Reforge, which is designed to help product builders create winning products in today's intense tech environment.
Thank you to our Sponsors:
- Google Gemini —Your everyday AI assistant
- Persona —Trusted identity verification for any use case