[](https://hamel.dev/blog/posts/field-guide/#cb2-1)def generate_search_query(scenario, persona, listing_db): [](https://hamel.dev/blog/posts/field-guide/#cb2-2) """Generate a realistic user query about listings""" [](https://hamel.dev/blog/posts/field-guide/#cb2-3) # Pull real listing data to ground the generation [](https://hamel.dev/blog/posts/field-guide/#cb2-4) sample_listings = listing_db.get_sample_listings( [](https://hamel.dev/blog/posts/field-guide/#cb2-5) price_range=persona.price_range, [](https://hamel.dev/blog/posts/field-guide/#cb2-6) location=persona.preferred_areas [](https://hamel.dev/blog/posts/field-guide/#cb2-7) ) [](https://hamel.dev/blog/posts/field-guide/#cb2-8) [](https://hamel.dev/blog/posts/field-guide/#cb2-9) # Verify we have listings that will trigger our scenario [](https://hamel.dev/blog/posts/field-guide/#cb2-10) if scenario == "multiple_matches" and len(sample_listings) < 2: [](https://hamel.dev/blog/posts/field-guide/#cb2-11) raise ValueError("Need multiple listings for this scenario") [](https://hamel.dev/blog/posts/field-guide/#cb2-12) if scenario == "no_matches" and len(sample_listings) > 0: [](https://hamel.dev/blog/posts/field-guide/#cb2-13) raise ValueError("Found matches when testing no-match scenario") [](https://hamel.dev/blog/posts/field-guide/#cb2-14) [](https://hamel.dev/blog/posts/field-guide/#cb2-15) prompt = f""" [](https://hamel.dev/blog/posts/field-guide/#cb2-16) You are an expert real estate agent who is searching for listings. You are given a customer type and a scenario. [](https://hamel.dev/blog/posts/field-guide/#cb2-17) [](https://hamel.dev/blog/posts/field-guide/#cb2-18) Your job is to generate a natural language query you would use to search these listings. [](https://hamel.dev/blog/posts/field-guide/#cb2-19) [](https://hamel.dev/blog/posts/field-guide/#cb2-20) Context: [](https://hamel.dev/blog/posts/field-guide/#cb2-21) - Customer type: {persona.description} [](https://hamel.dev/blog/posts/field-guide/#cb2-22) - Scenario: {scenario} [](https://hamel.dev/blog/posts/field-guide/#cb2-23) [](https://hamel.dev/blog/posts/field-guide/#cb2-24) Use these actual listings as reference: [](https://hamel.dev/blog/posts/field-guide/#cb2-25) {format_listings(sample_listings)} [](https://hamel.dev/blog/posts/field-guide/#cb2-26) [](https://hamel.dev/blog/posts/field-guide/#cb2-27) The query should reflect the customer type and the scenario. [](https://hamel.dev/blog/posts/field-guide/#cb2-28) [](https://hamel.dev/blog/posts/field-guide/#cb2-29) Example query: Find homes in the 75019 zip code, 3 bedrooms, 2 bathrooms, price range $750k - $1M for an investor. [](https://hamel.dev/blog/posts/field-guide/#cb2-30) """ [](https://hamel.dev/blog/posts/field-guide/#cb2-31) return generate_with_llm(prompt)