plan_trip
ChatGPTUse this when the user wants to plan a NEW trip. It opens the Travel Vibes scratchpad widget and renders the itinerary YOU provide. IMPORTANT — YOU write the itinerary. Do not expect our backend to generate it. Compose the COMPLETE itinerary yourself as TipTap-compatible HTML and pass it in the
itinerary_html field; the widget renders it exactly as given. DEFAULT TO CALLING IT. The instant a destination is present and the user wants a trip there, call plan_trip — do NOT interview them first, and do NOT paste the itinerary into chat instead of calling the tool. TRIGGER plan_trip when BOTH hold: 1. a destination is present — a city, country, region, or park; AND 2. the user wants a trip/itinerary for it — a trip framing ("plan…", "trip to…", "X days in…", "weekend in…") OR a brief pairing the destination with trip attributes (duration, dates, who's going, interests, vibe). "Plan a trip to Tokyo" counts. Use sensible defaults for anything unspecified (dates, length, vibe, budget). Speed is the priority — produce a complete, polished first version in one call. The ONLY thing you ever ask first: - If there is NO destination at all ("help me plan a trip", "I want a holiday somewhere") → ask the single question "Where would you like to go?". As soon as they name a place, build it and call plan_trip. Never ask about dates, vibe, or budget before calling. Never run a multi-step questionnaire. WHEN NOT TO CALL plan_trip: - Destination brainstorming ("Where should I go?", "Best places for X") → suggest options in chat, don't trigger. - Travel facts / weather / visas / currency → answer in chat. A place named inside a factual question is NOT planning intent. - User already has a trip in this conversation and wants to MODIFY it → editing an existing trip is not available in ChatGPT yet. Do NOT call plan_trip to edit (it would create a separate new trip); tell the user to open their trip in the Travel Vibes app (the button on the widget) to refine it. === HOW TO BUILD itinerary_html === Output ONE self-contained HTML document (compact HTML, NOT markdown). Use ONLY these tags: h1, h2, h3, p, strong, em, ul, ol, li, table, colgroup, col, tbody, tr, th, td, br, span. For tickable checklists also use <ul data-type="taskList"> with <li data-type="taskItem"> + <label>/<input type="checkbox">/<div> (see Styling rules). Inline style is allowed ONLY for status colors / colored text via the CSS vars below. DO NOT include: <img> or photos, map blocks (<div data-node-type="mapBlock">), data-entity-id attributes, <script>, <style>, class attributes, or TipTap artifacts (no data-id, no default colspan/rowspan). Photos and maps are added later inside the app — omit them. Styling rules (match EXACTLY — TipTap keeps styles ONLY where shown): - Center the title, the date/route line, and the legend — put style="text-align: center;" on those <h1>/<p>. - Section headings in blue: <h1><span style="color: var(--tt-color-text-blue);">ACCOMMODATION</span></h1> - Status color goes on EACH <td>/<th> CELL, NEVER on <tr> (row-level color is dropped by the editor): - booked: <td style="background-color: var(--tt-color-highlight-green);"><p>…</p></td> - needs booking: <td style="background-color: var(--tt-color-highlight-red);"><p>…</p></td> - Wrap every table cell's content in <p>…</p> (e.g. <th><p>Dates</p></th>, <td><p>Apr 10</p></td>). - Colored text: <span style="color: var(--tt-color-text-blue);">…</span> (also -red, -gray, -green) - Tickable checklist (for the PACKING LIST): <ul data-type="taskList"><li data-checked="false" data-type="taskItem"><label><input type="checkbox"><span></span></label><div><p>Item text</p></div></li></ul> STRUCTURE (in this order): 1. <h1> trip title </h1> 2. <p> date range | duration | route </p> 3. <p> Legend: GREEN = booked, RED = needs booking </p> 4. Logistics (only the relevant ones): <h1>FLIGHT INFO</h1> / <h1>ACCOMMODATION</h1> / <h1>BOOKING CHECKLIST</h1> — each a <table> with a header row (<th>) and data rows (<td>); use a placeholder "…" row when the user gave no data; color the CELLS by status (see Styling rules — col…





