<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:media="http://search.yahoo.com/mrss/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RAG &#038; Knowledge Bases &#8211; Flowpast.com &#8211; Your Workflow Automation Library</title>
	<atom:link href="https://flowpast.com/function/rag-knowledge/feed/" rel="self" type="application/rss+xml" />
	<link>https://flowpast.com</link>
	<description>Flowpast.com - Pre-Built n8n, Make &#38; Zapier Workflow Templates</description>
	<lastBuildDate>Fri, 23 Jan 2026 02:56:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://flowpast.com/wp-content/uploads/2025/12/cropped-icon-32x32.png</url>
	<title>RAG &#038; Knowledge Bases &#8211; Flowpast.com &#8211; Your Workflow Automation Library</title>
	<link>https://flowpast.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Build a Startup Recognition System MVP AI Prompt</title>
		<link>https://flowpast.com/prompts/build-a-startup-recognition-system-mvp-ai-prompt/</link>
		
		<dc:creator><![CDATA[Lisa Granqvist]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 02:56:32 +0000</pubDate>
				<category><![CDATA[Prompts]]></category>
		<guid isPermaLink="false">https://flowpast.com/?p=5003196</guid>

					<description><![CDATA[Team rewards feel random - a proven AI Prompt that designs a peer recognition system with rollout phases, metrics, and an MVP prototype. Access our full AI prompt library for every model.]]></description>
										<content:encoded><![CDATA[<!-- FOCUS_KEYWORD: startup recognition system -->
<div class="hook-introduction">

<p>Recognition programs in startups often drift into “random kudos” territory. The loudest voices get noticed, quiet work disappears, and rewards start to feel political. Then adoption drops, and you’re back to ad hoc shout-outs that don’t change behavior.</p>



<p>This <strong>startup recognition system</strong> is built for <strong>People Ops leads</strong> trying to formalize recognition without adding admin overhead, <strong>startup founders</strong> who need culture consistency across remote and hybrid teams, and <strong>engineering managers</strong> who want a system that reinforces delivery while staying ethical. The output is a complete recognition system blueprint with rollout phases, behavioral-science-backed mechanisms, metrics, edge-case handling, and a working MVP prototype plan you can actually ship.</p>

</div>

<div class="what-and-when-section">

<h2 class="wp-block-heading">What Does This AI Prompt Do and When to Use It?</h2>



<table class="solution-results-table three-column" role="presentation" aria-label="What this prompt does, when to use it, and what you get">
 <thead>
    <tr>
      <th scope="col">What This Prompt Does</th>
      <th scope="col">When to Use This Prompt</th>
      <th scope="col">What You&#8217;ll Get</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <ul class="automation-list">
          <li>It runs a mandatory pre-analysis to define success criteria, constraints, and what details need clarification before designing anything.</li>
          <li>It diagnoses your current recognition reality by mapping team structure, workflows, existing habits, and cultural failure modes like favoritism or invisible work.</li>
          <li>It designs an ethically sound system that blends individual recognition, team-based wins, and meaningful non-cash reward options.</li>
          <li>It adapts recommendations to maturity stage, remote/hybrid setup, tooling limits, and build capacity so the plan is feasible.</li>
          <li>It includes edge-case handling plus a “What This Is NOT” boundary section to prevent manipulative gamification or burnout incentives.</li>
       </ul>
      </td>
      <td>
        <ul class="results-list">
          <li>You’re scaling from a tight-knit 10–20 people team to 40+ and informal praise no longer reaches everyone.</li>
          <li>Morale is getting weird: people feel unseen, or recognition seems to follow proximity, tenure, or charisma.</li>
          <li>You need to roll out recognition across remote time zones and Slack channels without creating a new bureaucracy.</li>
          <li>A retention or engagement dip is forcing you to prove culture investments with measurable outcomes, not vibes.</li>
          <li>You want an MVP you can pilot in weeks, not a “culture initiative” that drags on for quarters.</li>
        </ul>
      </td>
       <td>
         <ul class="deliverables-list">
           <li>A complete recognition system design with 3-phase rollout (pilot, expansion, steady-state) and clear adoption gates.</li>
           <li>A set of 6–10 mechanism recommendations (how recognition is given, by whom, and for what) with behavioral rationale.</li>
           <li>An MVP prototype plan, including a working workflow spec (for Slack/forms/spreadsheets) and iteration loop.</li>
           <li>A measurement framework with 8–12 metrics, including leading indicators, guardrails, and “don’t game this” notes.</li>
           <li>A “What This Is NOT” boundary list plus edge-case playbooks for missing inputs, contradictions, and unrealistic constraints.</li>
         </ul>
       </td>
    </tr>
  </tbody>
</table>

</div>

<div class="prompt-display-section">

<h2 class="wp-block-heading">The Full AI Prompt: Startup Recognition System MVP Builder</h2>


<!-- Prompt file not found: /home/flowpast/htdocs/flowpast.com/wp-content/data/prompts_scraped/5006504/prompt-2026.txt -->

</div>

<div class="pro-tips-section">

<h2 class="wp-block-heading">Pro Tips for Better AI Prompt Results</h2>



<ul class="wp-block-list">

<li><strong>Bring a real “recognition inventory,” not your aspirations.</strong> Before you run the prompt, jot down how recognition happens today (Slack shout-outs, 1:1 praise, peer bonuses, weekly demos). Include what feels unfair or broken. If you can, paste 5 anonymized examples of recent recognition messages so the system can match your tone.</li>


<li><strong>Define success like a product team would.</strong> Don’t stop at “better culture.” Add concrete outcomes such as “increase peer-to-peer recognition by 30%,” “reduce ‘invisible work’ complaints in eNPS comments,” or “make cross-team wins visible weekly.” After the first output, ask: “Add 3 leading indicators we can track in the first 14 days of the pilot.”</li>


<li><strong>Be explicit about your ethical red lines.</strong> This prompt avoids coercive ranking, but you should still state what you will not do (public leaderboards, forced participation, reward tying to overtime). A helpful follow-up: “Rewrite the mechanisms to minimize status competition while still keeping participation high.”</li>


<li><strong>Force an MVP constraint on tooling and time.</strong> If you let the plan sprawl, it will. Tell the assistant what you can ship in two weeks (for example, Slack + Google Form + Airtable) and what’s off-limits (custom engineering, new vendors, payroll changes). After the first pass, try: “Now redesign the MVP assuming we only have Slack and a spreadsheet.”</li>


<li><strong>Iterate on edge cases like you’re doing QA.</strong> The prompt includes edge-case handling; use it. Feed it scenarios such as “team of 6 in-office + 20 remote,” “one team dominates nominations,” or “people nominate friends.” Then ask: “Add guardrails and moderation rules for each edge case, with a lightweight escalation path.”</li>

</ul>

</div>

<div class="related-prompts-section">

<h2 class="wp-block-heading">Related Prompts</h2>



<p>Once your recognition MVP is designed, these prompts help you measure adoption, tighten the rollout, and communicate the system with the same level of rigor.</p>



<p>If you also need to prove impact with hard data, pair this with <a href="https://flowpast.com/prompts/build-a-social-vs-organic-seo-correlation-report-ai-prompt/">Build a Social vs Organic SEO Correlation Report AI Prompt</a>. The domain is different, but the workflow is familiar: define signals, isolate confounders, and produce a report leaders trust. Use it as inspiration for how you’ll correlate recognition activity with retention, performance signals, or engagement survey movement.</p>



<p>For teams doing a broader “fix the funnel” pass on internal programs, <a href="https://flowpast.com/prompts/organic-conversion-seo-audit-plan-ai-prompt/">Organic Conversion SEO Audit Plan AI Prompt</a> is a strong companion. A recognition system is basically an adoption funnel: awareness, first use, repeat use, habit. This audit mindset helps you spot drop-off points (managers not reinforcing, unclear criteria, reward delays) and plug the leaks.</p>



<p>When you’re trying to get language right for cross-functional rollout, <a href="https://flowpast.com/prompts/build-primary-seo-keyword-sets-with-this-ai-prompt/">Build Primary SEO Keyword Sets with this AI Prompt</a> can help you standardize internal naming. That’s not a small thing, honestly. A shared vocabulary for awards, values, and behaviors prevents “everyone interprets it differently” chaos and makes your guidelines easier to follow.</p>


<br>


<p>Quick reference:</p>



<ul class="wp-block-list">

<li><a href="https://flowpast.com/prompts/build-a-social-vs-organic-seo-correlation-report-ai-prompt/">Build a Social vs Organic SEO Correlation Report AI Prompt</a>: Connect signals to measurable outcomes.</li>


<li><a href="https://flowpast.com/prompts/organic-conversion-seo-audit-plan-ai-prompt/">Organic Conversion SEO Audit Plan AI Prompt</a>: Find adoption bottlenecks and fixes.</li>


<li><a href="https://flowpast.com/prompts/build-primary-seo-keyword-sets-with-this-ai-prompt/">Build Primary SEO Keyword Sets with this AI Prompt</a>: Standardize labels, behaviors, and definitions.</li>


<li><a href="https://flowpast.com/prompts/build-a-voice-search-seo-plan-with-this-ai-prompt/">Build a Voice Search SEO Plan with this AI Prompt</a>: Write guidelines people can actually follow.</li>


<li><a href="https://flowpast.com/prompts/create-a-local-seo-keyword-plan-with-this-ai-prompt/">Create a Local SEO Keyword Plan with this AI Prompt</a>: Segment audiences and tailor rollout messaging.</li>

</ul>

</div>

<div class="faq-section">

<h2 class="wp-block-heading">Common Questions</h2>


<div class="faq-item">
<span class="question">Which roles benefit most from this startup recognition system AI prompt?</span>

<p class="answer"><strong>Heads of People / People Ops Managers</strong> use this to replace inconsistent kudos with a system that’s measurable and low-maintenance, without turning culture into bureaucracy. <strong>Founders and COOs</strong> lean on it when they need a values-aligned program that scales past “everyone in one room” and still feels authentic. <strong>Engineering Managers</strong> benefit because the prompt designs mechanisms that make behind-the-scenes work visible, not just the flashy launches. <strong>Team Leads in customer-facing orgs</strong> apply it to reduce favoritism risk and keep recognition fair across shifts, territories, or time zones.</p>

</div>

<div class="faq-item">
<span class="question">Which industries get the most value from this startup recognition system AI prompt?</span>

<p class="answer"><strong>SaaS and product startups</strong> get immediate value because recognition often gets stuck on “launch moments,” while maintenance, reliability, and internal enablement go unnoticed; this prompt corrects for that. <strong>E-commerce and DTC teams</strong> use it to recognize repeatable operational wins (fulfillment fixes, CS quality, inventory saves) and keep morale stable during peak seasons. <strong>Agencies and studios</strong> benefit when multiple client teams need consistent standards, plus guardrails so praise doesn’t just follow billable visibility. <strong>Professional services firms</strong> apply it to reinforce collaboration and knowledge sharing, not just individual utilization or heroics.</p>

</div>

<div class="faq-item">
<span class="question">Why do basic AI prompts for designing a recognition system produce weak results?</span>

<p class="answer">A typical prompt like “Write me a team recognition program for my startup” fails because it: lacks a pre-analysis that defines success and constraints, provides no diagnostic step to map current habits and failure modes, ignores tooling and build capacity so the plan becomes unrealistic, produces generic “monthly awards” instead of concrete mechanisms and workflows, and misses ethical boundaries that prevent manipulative gamification or burnout incentives. You end up with something inspirational that no one uses. This prompt is structured like an implementation guide, not a blog post.</p>

</div>

<div class="faq-item">
<span class="question">Can I customize this startup recognition system prompt for my specific situation?</span>

<p class="answer">Yes, and you should. The prompt is designed to ask clarifying questions in the pre-analysis, then adapt to team maturity, remote/hybrid reality, tool constraints, and build capacity. Even though the template enforces bracketed variables like [UPPERCASE_WITH_UNDERSCORES], you can paste your specifics into those fields (team size, locations, values, budget, tools). After the first output, ask: “Now tailor the MVP to our tools and list what we can ship in 14 days vs 60 days, plus the risks of each.”</p>

</div>

<div class="faq-item">
<span class="question">What are the most common mistakes when using this startup recognition system prompt?</span>

<p class="answer">The biggest mistake is leaving [SUCCESS_LOOKS_LIKE] too vague — instead of “better culture,” try “increase peer nominations from 10/week to 25/week, and reduce ‘unfair recognition’ comments in the next survey.” Another common error is setting [TOOLING_CONSTRAINTS] as “we use Slack” rather than “Slack only, no new apps, and managers have 10 minutes/week max.” People also under-specify [ETHICAL_RED_LINES]; “don’t be toxic” is weaker than “no public leaderboards, no forced participation, no rewards tied to overtime.” Finally, teams misstate [BUILD_CAPACITY] as “engineering can help” instead of “one engineer, 4 hours/week for two sprints,” which changes what MVP is realistic.</p>

</div>

<div class="faq-item">
<span class="question">Who should NOT use this startup recognition system prompt?</span>

<p class="answer">This prompt isn’t ideal for one-off morale boosts where you won’t pilot, measure, and iterate. It’s also not a fit for teams that haven’t validated basic management hygiene yet (clear expectations, fair pay practices, consistent feedback), because recognition can’t patch foundational issues. And if you only want a quick “employee of the month” template, this will feel like too much structure. In those cases, start with a lightweight manager toolkit and revisit a full system once you’re ready to prototype and track outcomes.</p>

</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Which roles benefit most from this startup recognition system AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Heads of People / People Ops Managers use this to replace inconsistent kudos with a system that’s measurable and low-maintenance, without turning culture into bureaucracy. Founders and COOs lean on it when they need a values-aligned program that scales past “everyone in one room” and still feels authentic. Engineering Managers benefit because the prompt designs mechanisms that make behind-the-scenes work visible, not just the flashy launches. Team Leads in customer-facing orgs apply it to reduce favoritism risk and keep recognition fair across shifts, territories, or time zones."
      }
    },
    {
      "@type": "Question",
      "name": "Which industries get the most value from this startup recognition system AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "SaaS and product startups get immediate value because recognition often gets stuck on “launch moments,” while maintenance, reliability, and internal enablement go unnoticed; this prompt corrects for that. E-commerce and DTC teams use it to recognize repeatable operational wins (fulfillment fixes, CS quality, inventory saves) and keep morale stable during peak seasons. Agencies and studios benefit when multiple client teams need consistent standards, plus guardrails so praise doesn’t just follow billable visibility. Professional services firms apply it to reinforce collaboration and knowledge sharing, not just individual utilization or heroics."
      }
    },
    {
      "@type": "Question",
      "name": "Why do basic AI prompts for designing a recognition system produce weak results?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A typical prompt like “Write me a team recognition program for my startup” fails because it: lacks a pre-analysis that defines success and constraints, provides no diagnostic step to map current habits and failure modes, ignores tooling and build capacity so the plan becomes unrealistic, produces generic “monthly awards” instead of concrete mechanisms and workflows, and misses ethical boundaries that prevent manipulative gamification or burnout incentives. You end up with something inspirational that no one uses. This prompt is structured like an implementation guide, not a blog post."
      }
    },
    {
      "@type": "Question",
      "name": "Can I customize this startup recognition system prompt for my specific situation?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, and you should. The prompt is designed to ask clarifying questions in the pre-analysis, then adapt to team maturity, remote/hybrid reality, tool constraints, and build capacity. Even though the template enforces bracketed variables like [UPPERCASE_WITH_UNDERSCORES], you can paste your specifics into those fields (team size, locations, values, budget, tools). After the first output, ask: “Now tailor the MVP to our tools and list what we can ship in 14 days vs 60 days, plus the risks of each.”"
      }
    },
    {
      "@type": "Question",
      "name": "What are the most common mistakes when using this startup recognition system prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The biggest mistake is leaving [SUCCESS_LOOKS_LIKE] too vague — instead of “better culture,” try “increase peer nominations from 10/week to 25/week, and reduce ‘unfair recognition’ comments in the next survey.” Another common error is setting [TOOLING_CONSTRAINTS] as “we use Slack” rather than “Slack only, no new apps, and managers have 10 minutes/week max.” People also under-specify [ETHICAL_RED_LINES]; “don’t be toxic” is weaker than “no public leaderboards, no forced participation, no rewards tied to overtime.” Finally, teams misstate [BUILD_CAPACITY] as “engineering can help” instead of “one engineer, 4 hours/week for two sprints,” which changes what MVP is realistic."
      }
    },
    {
      "@type": "Question",
      "name": "Who should NOT use this startup recognition system prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "This prompt isn’t ideal for one-off morale boosts where you won’t pilot, measure, and iterate. It’s also not a fit for teams that haven’t validated basic management hygiene yet (clear expectations, fair pay practices, consistent feedback), because recognition can’t patch foundational issues. And if you only want a quick “employee of the month” template, this will feel like too much structure. In those cases, start with a lightweight manager toolkit and revisit a full system once you’re ready to prototype and track outcomes."
      }
    }
  ]
}
</script>
</div>

<div class="closing-section">

<p>Random praise doesn’t scale, and forced gamification backfires. Use this prompt to design a recognition system your team will actually use, then pilot the MVP and improve it with real feedback.</p>

</div>]]></content:encoded>
					
		
		
		<media:content url="https://flowpast.s3.eu-north-1.amazonaws.com/featured_blog_images/5003196.webp" medium="image"></media:content>
            	</item>
		<item>
		<title>Build an Enterprise RBAC Plan with this AI Prompt</title>
		<link>https://flowpast.com/prompts/build-an-enterprise-rbac-plan-with-this-ai-prompt/</link>
		
		<dc:creator><![CDATA[Lisa Granqvist]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 02:51:37 +0000</pubDate>
				<category><![CDATA[Prompts]]></category>
		<guid isPermaLink="false">https://flowpast.com/?p=5001442</guid>

					<description><![CDATA[Access gaps expose data - the ultimate AI Prompt that designs enterprise RBAC with schema, middleware, UI gating, tests, and audits. Discover more AI prompts for marketing, sales, and ops.]]></description>
										<content:encoded><![CDATA[<!-- FOCUS_KEYWORD: enterprise RBAC plan -->

<div class="hook-introduction">

<p>Your app “kind of” has permissions. A few admin checks, a couple of feature flags, and some UI hiding that makes stakeholders feel safe. Then you find a direct API call that bypasses the frontend, an internal role that can quietly escalate, or a contractor account that still works months later.</p>



<p>This <strong>enterprise RBAC plan</strong> is built for <strong>security-minded software architects</strong> who need enforcement patterns that developers won’t accidentally bypass, <strong>engineering managers</strong> cleaning up messy, inconsistent authorization rules across services, and <strong>product teams in regulated environments</strong> that need audit-ready access controls without making the UX miserable. The output is a complete, implementation-ready RBAC blueprint: roles and permissions, a data schema with indexes and constraints, middleware/guard patterns, UI gating guidance, test plans, auditing workflows, and a clear “What This Is NOT” scope section.</p>

</div>

<div class="what-and-when-section">

<h2 class="wp-block-heading">What Does This AI Prompt Do and When to Use It?</h2>



<table class="solution-results-table three-column" role="presentation" aria-label="What this prompt does, when to use it, and what you get">
 <thead>
    <tr>
      <th scope="col">What This Prompt Does</th>
      <th scope="col">When to Use This Prompt</th>
      <th scope="col">What You&#8217;ll Get</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <ul class="automation-list">
          <li>It restates your authorization situation and lists the specific risks it is designed to close (unauthorized access, privilege escalation, and permission sprawl).</li>
          <li>It designs an RBAC model that defines roles, resources, actions, and role structure (flat vs. hierarchical) with escalation-resistant admin patterns.</li>
          <li>It proposes a data-layer schema (tables/collections) with indexes, constraints, and migration notes, including performance implications as roles and tenants grow.</li>
          <li>It outputs backend enforcement patterns (middleware/guards) plus frontend experience guidance so the UI never becomes the only gate.</li>
          <li>It adds concrete operational guardrails: tests, auditing, and a “What This Is NOT” section that prevents scope creep and false security assumptions.</li>
       </ul>
      </td>
      <td>
        <ul class="results-list">
          <li>You found an endpoint that should be restricted, but it is callable with a basic user token.</li>
          <li>Your current “admin” role is a catch-all and you need separation of duties before you add more internal teams.</li>
          <li>You are refactoring services and want consistent authorization rules before APIs multiply across microservices.</li>
          <li>Compliance or enterprise customers are asking for least privilege, audit logs, and clear access review processes.</li>
          <li>Multi-tenant complexity is arriving (or already here), and you need patterns that scale without exploding permission counts.</li>
        </ul>
      </td>
       <td>
         <ul class="deliverables-list">
           <li>A complete RBAC model with defined roles, resources, actions, and at least one safe admin escalation pattern.</li>
           <li>A proposed schema with tables/collections, key columns/fields, and index recommendations to keep permission checks fast.</li>
           <li>Ready-to-implement enforcement guidance, including middleware/guard logic and where checks must live in the request lifecycle.</li>
           <li>A practical test plan (unit, integration, and abuse-case tests) plus examples of what to assert for deny-by-default behavior.</li>
           <li>An auditing and access-review checklist, including events to log and periodic review steps that stay maintainable.</li>
         </ul>
       </td>
    </tr>
  </tbody>
</table>

</div>

<div class="prompt-display-section">

<h2 class="wp-block-heading">The Full AI Prompt: Enterprise RBAC Blueprint Generator</h2>



<div class="prompt-viewer-wrapper" id="prompt-section">
    <div class="prompt-comparison-row prompt-premium">
        <!-- Header with buttons -->
        <div class="prompt-row-header">
            <!-- <span class="prompt-row-icon">✨</span> -->
            <span class="prompt-row-title">
                                    Step 1: Customize the prompt with your input
                            </span>
            <div class="prompt-header-buttons">
                                    <button class="prompt-header-btn prompt-header-reset" onclick="resetPrompt()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                                <button class="prompt-header-btn prompt-header-copy-green flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span>Customize and Copy Full Prompt</span>
                </button>
            </div>
        </div>

        <!-- Customize the Prompt Section -->
                    <div class="prompt-customize-section">
                <span class="customize-title">Customize the Prompt</span>
                <p class="customize-subtitle">Fill in the fields below to personalize this prompt for your needs.</p>
                <table class="customize-table">
                    <thead>
                        <tr>
                            <th>Variable</th>
                            <th>What to Enter</th>
                            <th>Customise the prompt</th>
                        </tr>
                    </thead>
                    <tbody>
                                                    <tr>
                                <td class="var-name"><code>[UPPERCASE_WITH_UNDERSCORES]</code></td>
                                <td class="var-desc">
                                    Specify the naming convention to be used for user-provided values, adhering to the format of uppercase letters separated by underscores.                                    <div class="var-example">For example: "USER_ROLE_PERMISSIONS or RESOURCE_ACCESS_LEVEL"</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[UPPERCASE_WITH_UNDERSCORES]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[FORMAT]</code></td>
                                <td class="var-desc">
                                    Define the format or structure required for the RBAC blueprint, such as JSON, YAML, or database schema.                                    <div class="var-example">For example: "JSON structure with nested roles and permissions, or SQL schema for relational databases."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[FORMAT]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[CONTEXT]</code></td>
                                <td class="var-desc">
                                    Provide details about the application, including its purpose, architecture, and any specific constraints or requirements.                                    <div class="var-example">For example: "A multi-tenant SaaS application for project management, supporting both web and mobile platforms with high user concurrency."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[CONTEXT]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[INDUSTRY]</code></td>
                                <td class="var-desc">
                                    Specify the industry or domain the application serves, as this can influence compliance requirements and access control patterns.                                    <div class="var-example">For example: "Healthcare industry requiring HIPAA compliance and strict data privacy controls."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[INDUSTRY]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[PRODUCT_DESCRIPTION]</code></td>
                                <td class="var-desc">
                                    Briefly describe the product, including its main features, functionality, and target user base.                                    <div class="var-example">For example: "A cloud-based CRM platform enabling sales teams to manage customer relationships, track leads, and automate workflows."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[PRODUCT_DESCRIPTION]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[TARGET_AUDIENCE]</code></td>
                                <td class="var-desc">
                                    Describe the primary users of the application, including their roles, needs, and any defining characteristics.                                    <div class="var-example">For example: "Enterprise security teams managing access control for 500+ employees across multiple departments and locations."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[TARGET_AUDIENCE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                            </tbody>
                </table>

                <button class="copy-customized-btn flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span class="copy-customized-text">Customise the prompt now</span>
                </button>
            </div>
        
        <!-- Full Prompt Code Header -->
                    <div class="prompt-code-header">
                <span class="prompt-code-title">
                    Step 2: Copy the Prompt
                </span>
                <div class="prompt-code-buttons">
                    <!-- Reset: Only visible when unlocked -->
                    <button class="prompt-header-btn prompt-header-reset btn-when-unlocked" onclick="resetPrompt()" style="display: none;">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                    <!-- Copy Full Prompt -->
                    <button class="prompt-header-btn prompt-header-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                            <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                        </svg>
                        <span>Copy Full Prompt</span>
                    </button>
                </div>
            </div>
        

        <!-- Prompt Content -->
        <div class="prompt-box prompt-gated-wrapper">
            <!-- Gated: Blurred content -->
            <div class="prompt-gated-content">
                <div class="prompt-header-visible">OBJECTIVE</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PERSONA</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">CONSTRAINTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PROCESS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">What This Is NOT</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">INPUTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">OUTPUT SPECIFICATION</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">Role Architecture</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">Database Schema</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">Middleware Implementation</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">UI Access Control</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">API Route Protection</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">Error Handling</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">Testing Strategy</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">Monitoring &amp; Audit</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">Deployment Checklist</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">QUALITY CHECKS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div>            </div>
            <!-- Unlocked: Full content (hidden by default) -->
            <div class="prompt-content-full" id="premium-prompt-content" style="display: none;">
                ## OBJECTIVE
Create a complete, implementation-ready Role-Based Access Control (RBAC) blueprint tailored to the given application. The deliverable must close active unauthorized access issues, prevent privilege escalation (external and internal), and remain maintainable as the product and team scale—without degrading user experience.

## PERSONA
Act as a security-focused software architect and ex–enterprise security advisor who has led multiple zero-trust and least-privilege rollouts in high-compliance environments. Communicate like a pragmatic builder: precise, code-forward, and opinionated about guardrails that developers will actually keep in place.

## CONSTRAINTS
- Prioritize least privilege, explicit deny-by-default, and separation of duties.
- Avoid vague security platitudes; every recommendation must map to a concrete implementation step.
- Optimize for long-term scalability (more roles, more resources, more endpoints, more tenants if applicable).
- Include both backend enforcement and frontend experience patterns (UI should never be the only gate).
- Prefer patterns that reduce “permission sprawl” and minimize performance overhead.
- Add a “What This Is NOT” subsection to clarify excluded scope.
- Handle unclear or missing inputs by stating assumptions and offering 2–3 safe options.
- Follow variable format compliance: user-provided values use [UPPERCASE_WITH_UNDERSCORES]; AI-filled placeholders use {Title Case}.

## PROCESS
1. **Pre-Analysis (required):** Restate the situation in your own words, list the key security risks you’re addressing, and confirm the main technical constraints inferred from the inputs.
2. **RBAC model design:** Define roles, permissions, resources, and actions; decide on role hierarchy vs. flat roles; include escalation-resistant admin patterns.
3. **Data layer plan:** Propose a schema (tables/collections), indexes, and constraints; include migration guidance and performance notes.
4. **Enforcement layer:** Provide middleware/guards/hooks for backend authorization and token/session strategy integration.
5. **Frontend access patterns:** Show safe UI gating patterns (feature flags vs. authorization), including loading states and optimistic UI cautions.
6. **Failure handling:** Design user-friendly denial flows, error payload conventions, and fallback components.
7. **Validation:** Provide tests (unit/integration/e2e) that prove boundaries hold and cannot be bypassed.
8. **Telemetry:** Specify audit events, log fields, alerting signals, and review workflows.
9. **Deployment hardening:** Produce a rollout checklist that reduces lockouts and prevents “too permissive” regressions.

### What This Is NOT
- Not a full identity provider (IdP) selection guide or SSO procurement document.
- Not a generic OWASP checklist dump.
- Not permissioning based purely on frontend conditions.
- Not a replacement for threat modeling beyond access control (you may note adjacent risks, but stay centered on RBAC).

## INPUTS
- **Application type:** [FORMAT]
- **Technology stack:** [CONTEXT]
- **Database system:** [INDUSTRY]
- **Current authentication setup:** [PRODUCT_DESCRIPTION]
- **User base size + growth expectation:** [TARGET_AUDIENCE]

## OUTPUT SPECIFICATION
Use the following sections and populate each with concrete, buildable detail. Include code snippets in the dominant stack implied by [CONTEXT], and tailor data structures to [INDUSTRY]. Use these placeholders where needed: {Role}, {Permission}, {Resource}, {Action}, {Endpoint}, {Table}, {Column}, {Index}, {Error Code}, {Log Event}.

### Role Architecture
- {Role} catalog with purpose, allowed {Action}s, and guarded {Resource}s  
- Role hierarchy or composition strategy (and why)  
- Admin design that avoids “god mode” by default (break-glass, time-bound elevation, approvals if applicable)  
- Least-privilege defaults and onboarding/offboarding implications  

### Database Schema
- Tables/collections for users, roles, permissions, and mappings (e.g., user↔role, role↔permission)  
- Constraints, indexes, and query patterns for fast checks  
- Guidance for multi-tenant support if relevant (safe scoping rules)  
- Example migrations or schema definitions matching [INDUSTRY]  

### Middleware Implementation
- Backend authorization middleware/guards with:
  - token/session parsing tied to [PRODUCT_DESCRIPTION]
  - permission resolution (cached where appropriate)
  - deny-by-default logic and explicit checks
- Frontend hooks/utilities for permission queries (never authoritative alone)
- Examples:
  - checking {Permission} for {Endpoint}
  - securing sensitive admin actions
  - preventing IDOR-style access to {Resource} by ownership/tenant scope  

### UI Access Control
- Component patterns for conditional rendering with safe defaults  
- Strategies for route-level gating, feature visibility vs. capability enforcement  
- Loading/unknown-permission states and “request access” UX  
- Guidance to avoid leaking sensitive data via prefetching or cached responses  

### API Route Protection
- Endpoint policy mapping: {Endpoint} → required {Permission}s  
- Object-level authorization (resource ownership/tenant boundaries)  
- Rate limiting and abuse controls where RBAC intersects with brute-force/admin endpoints  
- Examples in the primary backend framework implied by [CONTEXT]  

### Error Handling
- Standard error contract (e.g., {Error Code}, message, correlation id)  
- User-facing copy that’s helpful without revealing sensitive authorization logic  
- Fallback UI components for forbidden/unauthenticated states  
- Safe redirects and post-login continuation patterns  

### Testing Strategy
- Unit tests for permission evaluation  
- Integration tests for middleware and endpoint coverage  
- E2E tests for common role journeys and regression traps  
- Negative tests proving privilege escalation is blocked (role tampering, token replay, forced browsing)  

### Monitoring &amp; Audit
- Audit log schema and storage guidance:
  - {Log Event} types (role change, permission change, denied access, admin actions)
  - required fields (actor, target, resource, scope, timestamp, request id)
- Alerting signals (spikes in denied access, repeated admin probing, anomalous role changes)
- Review/retention policy recommendations aligned to enterprise expectations  

### Deployment Checklist
- Rollout plan to avoid lockouts (staged enforcement, shadow mode, allowlists with expiry)  
- Data backfill/migration steps for existing users  
- Performance checks (cache hit rates, authz query latency)  
- Security verification gates before release  

## QUALITY CHECKS
At the end, include a short verification list confirming:
- Least-privilege defaults are enforced and “implicit allow” is eliminated.
- Authorization is enforced server-side for every protected {Endpoint} and object-level access is handled.
- Schema supports growth (more roles/permissions/users) without slow permission checks.
- Tests include negative cases for privilege escalation and forced browsing.
- Audit trails capture role/permission changes and sensitive access attempts with enough context to investigate.            </div>
        </div>


    </div>

    <!-- CTA Row - Full width buttons -->
    <div class="prompt-cta-row">
        <button class="prompt-cta-btn prompt-cta-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
            </svg>
            <span class="cta-copy-text">Copy Full Prompt</span>
        </button>
    </div>
</div>

<style>
    /* Gated prompt states */
    .prompt-gated-wrapper {
        position: relative;
    }

    /* When unlocked - show full content, hide gated */
    body.flowpast-unlocked .prompt-gated-wrapper .prompt-gated-content {
        display: none;
    }

    body.flowpast-unlocked .prompt-gated-wrapper .prompt-content-full {
        display: block !important;
    }

    /* Show/hide elements based on unlock state */
    body.flowpast-unlocked .btn-when-unlocked {
        display: inline-flex !important;
    }

    .prompt-viewer-wrapper {
        scroll-margin-top: 250px;
    }

    /* ========================================
   PROMPT VIEWER - MAIN WRAPPER
   ======================================== */
    .prompt-viewer-wrapper {
        margin: 30px 0;
        display: flex;
        flex-direction: column;
        gap: 20px;
    }

    /* ========================================
   PROMPT BOX CONTAINER
   ======================================== */
    .prompt-comparison-row {
        border-radius: 12px;
        overflow: hidden;
        border: 1px solid #e0e0e0;
        background: #fff;
    }

    /* ========================================
   HEADER WITH BUTTONS
   ======================================== */
    .prompt-row-header {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 14px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
        flex-wrap: wrap;
    }

    .prompt-row-icon {
        font-size: 20px;
    }

    .prompt-row-title {
        font-weight: 600;
        font-size: 22px;
        color: #fff !important;
        text-decoration: underline
    }

    .prompt-header-buttons {
        margin-left: auto;
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
    }

    /* Header buttons */
    .prompt-header-btn {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 10px 20px;
        border-radius: 6px;
        font-size: 14px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-header-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-header-copy:hover {
        background: #2a2a2a;
    }

    .prompt-header-copy.copied {
        background: #2e7d32;
    }

    .prompt-header-copy-green {
        background: #04AA6D !important;
        color: #fff !important;
    }

    .prompt-header-copy-green:hover {
        background: #039860 !important;
    }

    .prompt-header-copy-green.copied {
        background: #2e7d32 !important;
    }

    .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-header-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-1px);
    }

    /* ========================================
   PROMPT CONTENT - FULL (NO SCROLL)
   ======================================== */
    .prompt-box {
        background: #ffffff;
    }

    .prompt-content-full {
        padding: 24px;
        margin: 0;
        color: #202124;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.7;
        white-space: pre-wrap;
        word-wrap: break-word;
        /* No scroll - show full content */
        max-height: none;
        overflow: visible;
    }

    /* Highlighted variable in prompt */
    .prompt-variable {
        background: #fff3cd;
        color: #1967d2;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #ffc107;
    }

    .prompt-variable-filled {
        background: #d4edda;
        color: #155724;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #28a745;
    }

    /* ========================================
   GATED CONTENT (NO ACCESS)
   ======================================== */
    .prompt-gated-content {
        padding: 24px;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.8;
        max-height: none;
        overflow: visible;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        cursor: default;
    }

    /* ## headers - larger, black */
    .prompt-header-visible {
        color: #202124;
        font-weight: 600;
        margin: 5px 0 0px 0;
        font-size: 20px;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        text-decoration: underline;
        text-underline-offset: 4px;
    }

    /* ### headers - smaller, black */
    .prompt-header-visible.subheader {
        color: #202124;
        font-weight: 600;
        margin: 5px 0;
        font-size: 18px;
    }

    .prompt-header-visible:first-child {
        margin-top: 0;
    }

    /* ========================================
   LOCKED SECTION BLOCK
   ======================================== */
    .locked-section {
        position: relative;
        margin: 4px 0 8px 0;
        border-radius: 6px;
        overflow: hidden;
        background: linear-gradient(110deg, #e2e8f0 8%, #f1f5f9 18%, #e2e8f0 33%);
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
    }

    .locked-section-bg {
        position: relative;
    }

    .locked-section-lines {
        padding: 8px 12px;
        position: relative;
    }

    .locked-line {
        height: 6px;
        background: rgba(255, 255, 255, 0.6);
        border-radius: 3px;
        margin-bottom: 4px;
        margin-left: 12px;
    }

    .locked-line:last-child {
        margin-bottom: 0;
    }

    .locked-section-icon {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: 10;
        font-size: 24px;
        filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1));
    }

    /* Subheader locked sections - slightly indented */
    /*  .prompt-header-visible.subheader+.locked-section {
        margin-left: 16px;
    } */

    /* ========================================
   COMPATIBILITY BADGES
   ======================================== */
    .prompt-compatibility {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 8px;
        padding: 12px 20px;
        background: #f8f9fa;
        border-top: 1px solid #e0e0e0;
    }

    .compat-label {
        font-size: 13px;
        color: #5f6368;
        font-weight: 500;
    }

    .compat-badge {
        padding: 4px 10px;
        background: #e8f0fe;
        color: #1967d2;
        border-radius: 4px;
        font-size: 12px;
        font-weight: 500;
    }

    /* ========================================
   CTA ROW - FULL WIDTH BUTTONS
   ======================================== */
    .prompt-cta-row {
        display: flex;
        gap: 16px;
        flex-wrap: wrap;
    }

    .prompt-cta-btn {
        flex: 1;
        min-width: 200px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        padding: 16px 24px;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-cta-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-copy:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-copy.copied {
        background: #2e7d32;
    }

    .prompt-cta-reset {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-reset:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-cta-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    /* ========================================
    CUSTOMIZE YOUR PROMPT SECTION
    ======================================== */
    .prompt-customize-section {
        padding: 24px;
        border-bottom: 1px solid #e0e0e0;
        background: #fafbfc;
    }

    .customize-title {
        margin: 0 0 8px 0;
        font-size: 18px;
        font-weight: 700;
        color: #202124;
    }

    .customize-subtitle {
        margin: 0 0 20px 0;
        font-size: 14px;
        color: #5f6368;
    }

    .customize-table {
        width: 100%;
        border-collapse: collapse;
        margin-bottom: 20px;
    }

    .customize-table th {
        text-align: left;
        padding: 12px;
        background: #f1f3f4;
        border: 1px solid #e0e0e0;
        font-size: 13px;
        font-weight: 600;
        color: #202124;
    }

    .customize-table td {
        padding: 12px;
        border: 1px solid #e0e0e0;
        vertical-align: top;
    }

    .customize-table .var-name {
        width: 25%;
        background: #f8f9fa;
    }

    .customize-table .var-name code {
        background: #fff3cd;
        color: #1967d2;
        border: 1px solid #ffc107;
        padding: 4px 8px;
        border-radius: 4px;
        font-size: 12px;
        word-break: break-all;
        font-weight: 600;
    }

    .customize-table .var-desc {
        width: 35%;
        font-size: 13px;
        color: #5f6368;
        line-height: 1.5;
    }

    .customize-table .var-example {
        margin-top: 8px;
        padding: 8px 10px;
        background: #f8f9fa;
        border-left: 3px solid #dadce0;
        font-size: 12px;
        color: #5f6368;
        font-style: italic;
        border-radius: 0 4px 4px 0;
    }

    .customize-table .var-input {
        width: 40%;
    }

    .customize-input {
        width: 100%;
        padding: 10px 12px;
        border: 1px solid #dadce0;
        border-radius: 6px;
        font-size: 13px;
        font-family: inherit;
        resize: vertical;
        transition: border-color 0.2s, box-shadow 0.2s;
    }

    .customize-input:focus {
        outline: none;
        border-color: rgb(5, 152, 98);
        box-shadow: 0 0 0 3px rgba(5, 152, 98, 0.1);
    }

    .customize-input::placeholder {
        color: #9aa0a6;
        font-style: italic;
    }

    .copy-customized-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        width: 100%;
        padding: 16px 24px;
        background: rgb(5, 152, 98);
        color: #fff;
        border: none;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
    }

    .copy-customized-btn:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    .copy-customized-btn.copied {
        background: #2e7d32;
    }

    /* ========================================
    FULL PROMPT CODE HEADER
    ======================================== */
    .prompt-code-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 10px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
    }

    .prompt-code-title {
        font-size: 22px;
        font-weight: 600;
        text-decoration: underline;

    }

    .prompt-code-buttons {
        display: flex;
        gap: 8px;
    }

    .prompt-code-buttons .prompt-header-btn {
        padding: 8px 14px;
        font-size: 13px;
        background: #ffffff;
        color: #202124;
        border: 1px solid #dadce0;
    }

    .prompt-code-buttons .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
        border-color: rgb(5, 152, 98);
    }

    .prompt-code-buttons .prompt-header-btn.prompt-header-access:hover {
        background: rgb(4, 130, 83) !important;
        border-color: rgb(4, 130, 83);
        color: #fff !important;
    }

    .prompt-code-buttons .prompt-header-btn:hover {
        background: #f1f3f4;
    }

    .prompt-code-buttons .prompt-header-copy.copied {
        background: #d4edda;
        color: #155724;
        border-color: #28a745;
    }

    .prompt-header-reset {
        background: #ffffff;
        color: #202124;
    }

    /* ========================================
   RESPONSIVE
   ======================================== */
    @media (max-width: 768px) {
        .prompt-row-header {
            flex-direction: column;
            align-items: flex-start;
            gap: 12px;
        }

        .prompt-header-buttons {
            margin-left: 0;
            width: 100%;
        }

        .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }

        .prompt-cta-row {
            flex-direction: column;
        }

        .prompt-cta-btn {
            width: 100%;
        }

        /* Customize table responsive */
        .customize-table,
        .customize-table thead,
        .customize-table tbody,
        .customize-table tr,
        .customize-table th,
        .customize-table td {
            display: block;
        }

        .customize-table thead {
            display: none;
        }

        .customize-table tr {
            margin-bottom: 16px;
            border: 1px solid #e0e0e0;
            border-radius: 8px;
            overflow: hidden;
        }

        .customize-table td {
            width: 100% !important;
            border: none;
            border-bottom: 1px solid #e0e0e0;
        }

        .customize-table td:last-child {
            border-bottom: none;
        }

        .customize-table .var-name {
            background: #f1f3f4;
            font-weight: 600;
        }

        .prompt-code-header {
            flex-direction: column;
            gap: 12px;
            align-items: flex-start;
        }

        .prompt-code-buttons {
            width: 100%;
        }

        .prompt-code-buttons .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }
    }
</style>

<script>
    function handlePromptCopy() {
        // Check if unlocked via cookie
        if (typeof window.flowpastIsUnlocked === 'function' && !window.flowpastIsUnlocked()) {
            // Show email popup
            if (typeof window.flowpastShowEmailPopup === 'function') {
                window.flowpastShowEmailPopup('prompt');
            }
            return;
        }

        // Copy the customized prompt (with filled variables)
        const customizedPrompt = getCustomizedPrompt();
        const copyButtons = document.querySelectorAll('.prompt-header-copy, .prompt-header-copy-green, .prompt-cta-copy, .copy-customized-btn');

        navigator.clipboard.writeText(customizedPrompt).then(() => {
            copyButtons.forEach(btn => {
                btn.classList.add('copied');
                const textSpan = btn.querySelector('span');
                if (textSpan) textSpan.textContent = 'Copied!';
            });

            setTimeout(() => {
                copyButtons.forEach(btn => {
                    btn.classList.remove('copied');
                    const textSpan = btn.querySelector('span');
                    if (textSpan) textSpan.textContent = 'Copy Full Prompt';
                });
            }, 2000);
        }).catch(err => {
            console.error('Failed to copy:', err);
        });
    }

    // Store original prompt for customization
    const originalPrompt = "## OBJECTIVE\r\nCreate a complete, implementation-ready Role-Based Access Control (RBAC) blueprint tailored to the given application. The deliverable must close active unauthorized access issues, prevent privilege escalation (external and internal), and remain maintainable as the product and team scale\u2014without degrading user experience.\r\n\r\n## PERSONA\r\nAct as a security-focused software architect and ex\u2013enterprise security advisor who has led multiple zero-trust and least-privilege rollouts in high-compliance environments. Communicate like a pragmatic builder: precise, code-forward, and opinionated about guardrails that developers will actually keep in place.\r\n\r\n## CONSTRAINTS\r\n- Prioritize least privilege, explicit deny-by-default, and separation of duties.\r\n- Avoid vague security platitudes; every recommendation must map to a concrete implementation step.\r\n- Optimize for long-term scalability (more roles, more resources, more endpoints, more tenants if applicable).\r\n- Include both backend enforcement and frontend experience patterns (UI should never be the only gate).\r\n- Prefer patterns that reduce \u201cpermission sprawl\u201d and minimize performance overhead.\r\n- Add a \u201cWhat This Is NOT\u201d subsection to clarify excluded scope.\r\n- Handle unclear or missing inputs by stating assumptions and offering 2\u20133 safe options.\r\n- Follow variable format compliance: user-provided values use [UPPERCASE_WITH_UNDERSCORES]; AI-filled placeholders use {Title Case}.\r\n\r\n## PROCESS\r\n1. **Pre-Analysis (required):** Restate the situation in your own words, list the key security risks you\u2019re addressing, and confirm the main technical constraints inferred from the inputs.\r\n2. **RBAC model design:** Define roles, permissions, resources, and actions; decide on role hierarchy vs. flat roles; include escalation-resistant admin patterns.\r\n3. **Data layer plan:** Propose a schema (tables\/collections), indexes, and constraints; include migration guidance and performance notes.\r\n4. **Enforcement layer:** Provide middleware\/guards\/hooks for backend authorization and token\/session strategy integration.\r\n5. **Frontend access patterns:** Show safe UI gating patterns (feature flags vs. authorization), including loading states and optimistic UI cautions.\r\n6. **Failure handling:** Design user-friendly denial flows, error payload conventions, and fallback components.\r\n7. **Validation:** Provide tests (unit\/integration\/e2e) that prove boundaries hold and cannot be bypassed.\r\n8. **Telemetry:** Specify audit events, log fields, alerting signals, and review workflows.\r\n9. **Deployment hardening:** Produce a rollout checklist that reduces lockouts and prevents \u201ctoo permissive\u201d regressions.\r\n\r\n### What This Is NOT\r\n- Not a full identity provider (IdP) selection guide or SSO procurement document.\r\n- Not a generic OWASP checklist dump.\r\n- Not permissioning based purely on frontend conditions.\r\n- Not a replacement for threat modeling beyond access control (you may note adjacent risks, but stay centered on RBAC).\r\n\r\n## INPUTS\r\n- **Application type:** [FORMAT]\r\n- **Technology stack:** [CONTEXT]\r\n- **Database system:** [INDUSTRY]\r\n- **Current authentication setup:** [PRODUCT_DESCRIPTION]\r\n- **User base size + growth expectation:** [TARGET_AUDIENCE]\r\n\r\n## OUTPUT SPECIFICATION\r\nUse the following sections and populate each with concrete, buildable detail. Include code snippets in the dominant stack implied by [CONTEXT], and tailor data structures to [INDUSTRY]. Use these placeholders where needed: {Role}, {Permission}, {Resource}, {Action}, {Endpoint}, {Table}, {Column}, {Index}, {Error Code}, {Log Event}.\r\n\r\n### Role Architecture\r\n- {Role} catalog with purpose, allowed {Action}s, and guarded {Resource}s  \r\n- Role hierarchy or composition strategy (and why)  \r\n- Admin design that avoids \u201cgod mode\u201d by default (break-glass, time-bound elevation, approvals if applicable)  \r\n- Least-privilege defaults and onboarding\/offboarding implications  \r\n\r\n### Database Schema\r\n- Tables\/collections for users, roles, permissions, and mappings (e.g., user\u2194role, role\u2194permission)  \r\n- Constraints, indexes, and query patterns for fast checks  \r\n- Guidance for multi-tenant support if relevant (safe scoping rules)  \r\n- Example migrations or schema definitions matching [INDUSTRY]  \r\n\r\n### Middleware Implementation\r\n- Backend authorization middleware\/guards with:\r\n  - token\/session parsing tied to [PRODUCT_DESCRIPTION]\r\n  - permission resolution (cached where appropriate)\r\n  - deny-by-default logic and explicit checks\r\n- Frontend hooks\/utilities for permission queries (never authoritative alone)\r\n- Examples:\r\n  - checking {Permission} for {Endpoint}\r\n  - securing sensitive admin actions\r\n  - preventing IDOR-style access to {Resource} by ownership\/tenant scope  \r\n\r\n### UI Access Control\r\n- Component patterns for conditional rendering with safe defaults  \r\n- Strategies for route-level gating, feature visibility vs. capability enforcement  \r\n- Loading\/unknown-permission states and \u201crequest access\u201d UX  \r\n- Guidance to avoid leaking sensitive data via prefetching or cached responses  \r\n\r\n### API Route Protection\r\n- Endpoint policy mapping: {Endpoint} \u2192 required {Permission}s  \r\n- Object-level authorization (resource ownership\/tenant boundaries)  \r\n- Rate limiting and abuse controls where RBAC intersects with brute-force\/admin endpoints  \r\n- Examples in the primary backend framework implied by [CONTEXT]  \r\n\r\n### Error Handling\r\n- Standard error contract (e.g., {Error Code}, message, correlation id)  \r\n- User-facing copy that\u2019s helpful without revealing sensitive authorization logic  \r\n- Fallback UI components for forbidden\/unauthenticated states  \r\n- Safe redirects and post-login continuation patterns  \r\n\r\n### Testing Strategy\r\n- Unit tests for permission evaluation  \r\n- Integration tests for middleware and endpoint coverage  \r\n- E2E tests for common role journeys and regression traps  \r\n- Negative tests proving privilege escalation is blocked (role tampering, token replay, forced browsing)  \r\n\r\n### Monitoring & Audit\r\n- Audit log schema and storage guidance:\r\n  - {Log Event} types (role change, permission change, denied access, admin actions)\r\n  - required fields (actor, target, resource, scope, timestamp, request id)\r\n- Alerting signals (spikes in denied access, repeated admin probing, anomalous role changes)\r\n- Review\/retention policy recommendations aligned to enterprise expectations  \r\n\r\n### Deployment Checklist\r\n- Rollout plan to avoid lockouts (staged enforcement, shadow mode, allowlists with expiry)  \r\n- Data backfill\/migration steps for existing users  \r\n- Performance checks (cache hit rates, authz query latency)  \r\n- Security verification gates before release  \r\n\r\n## QUALITY CHECKS\r\nAt the end, include a short verification list confirming:\r\n- Least-privilege defaults are enforced and \u201cimplicit allow\u201d is eliminated.\r\n- Authorization is enforced server-side for every protected {Endpoint} and object-level access is handled.\r\n- Schema supports growth (more roles\/permissions\/users) without slow permission checks.\r\n- Tests include negative cases for privilege escalation and forced browsing.\r\n- Audit trails capture role\/permission changes and sensitive access attempts with enough context to investigate.";
    const variables = ["[UPPERCASE_WITH_UNDERSCORES]","[FORMAT]","[CONTEXT]","[INDUSTRY]","[PRODUCT_DESCRIPTION]","[TARGET_AUDIENCE]"];
    // Initial render with highlighted variables
    document.addEventListener('DOMContentLoaded', function() {
        renderPromptWithHighlights();
    });

    // Live update prompt as user types
    document.querySelectorAll('.customize-input').forEach(input => {
        input.addEventListener('input', renderPromptWithHighlights);
    });

    function renderPromptWithHighlights() {
        const promptContent = document.getElementById('premium-prompt-content');
        if (!promptContent) return;

        let updatedPrompt = originalPrompt;
        let filledVariables = {};

        // Collect filled values
        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                filledVariables[placeholder] = value;
            }
        });

        // Replace filled variables and highlight remaining
        let htmlContent = escapeHtml(updatedPrompt);

        variables.forEach(placeholder => {
            const escapedPlaceholder = escapeHtml(placeholder);
            const regex = new RegExp(escapeRegex(escapedPlaceholder), 'g');

            if (filledVariables[placeholder]) {
                // Show filled value with green highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable-filled">' + escapeHtml(filledVariables[placeholder]) + '</span>'
                );
            } else {
                // Show original placeholder with yellow highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable">' + escapedPlaceholder + '</span>'
                );
            }
        });

        promptContent.innerHTML = htmlContent;
    }

    function escapeRegex(string) {
        return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    }

    function escapeHtml(text) {
        const div = document.createElement('div');
        div.textContent = text;
        return div.innerHTML;
    }

    function resetPrompt() {
        // Clear all input fields
        document.querySelectorAll('.customize-input').forEach(input => {
            input.value = '';
        });

        // Re-render with original placeholders highlighted
        renderPromptWithHighlights();

        // Visual feedback
        const resetBtns = document.querySelectorAll('.prompt-header-reset, .prompt-cta-reset');
        resetBtns.forEach(btn => {
            const originalText = btn.querySelector('span').textContent;
            btn.querySelector('span').textContent = 'Reset!';
            setTimeout(() => {
                btn.querySelector('span').textContent = originalText;
            }, 1000);
        });
    }


    function getCustomizedPrompt() {
        let updatedPrompt = originalPrompt;

        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                const regex = new RegExp(escapeRegex(placeholder), 'g');
                updatedPrompt = updatedPrompt.replace(regex, value);
            }
        });

        return updatedPrompt;
    }
</script>

</div>

<div class="pro-tips-section">

<h2 class="wp-block-heading">Pro Tips for Better AI Prompt Results</h2>



<ul class="wp-block-list">

<li><strong>Bring a real resource map, not just “users and admins”.</strong> Before you run the prompt, list 10–30 concrete resources and verbs (for example: “Invoices: create, view, refund, export” and “Users: invite, deactivate, reset MFA”). If you only say “secure my app,” you will get abstract roles that fall apart the moment a new endpoint ships.</li>


<li><strong>Force explicit deny-by-default in the output.</strong> After you get the first draft, follow up with: “Show me the deny-by-default rule and the exact middleware/guard behavior when a permission is missing.” This keeps the design from drifting into “allow unless blocked,” which honestly is how privilege escalation sneaks in.</li>


<li><strong>Ask it to model your riskiest flows first.</strong> Pick 2–3 scenarios like “refunds,” “PII export,” or “role assignment,” and prompt: “Design roles and permissions around these flows, then generalize.” You will get cleaner separation of duties and less permission sprawl than starting from org charts.</li>


<li><strong>Iterate on role granularity with targeted contrasts.</strong> After the first output, try asking: “Now make option 2 more aggressive (fewer roles, broader permissions) and option 4 more conservative (more separation of duties), then score each for auditability and developer friction.” Seeing tradeoffs side-by-side makes stakeholder approval much faster.</li>


<li><strong>Combine RBAC with auditing requirements as a second pass.</strong> Once roles and middleware are drafted, ask: “Add an audit event taxonomy with event names, required fields, retention guidance, and 3 example log lines for the most sensitive actions.” It turns a theoretical RBAC model into something you can defend during an incident review.</li>

</ul>

</div>

<div class="related-prompts-section">

<h2 class="wp-block-heading">Related Prompts</h2>



<p>If you’re building serious systems documentation, these prompts can help you produce clean, reviewable artifacts quickly (just in very different formats).</p>



<p>If you also need a tight, memorable way to communicate a complex initiative internally, <a href="https://flowpast.com/prompts/write-a-singable-song-chorus-with-this-ai-prompt/">Write a Singable Song Chorus with this AI Prompt</a> can be a surprisingly useful creative constraint. Use it when you’re crafting security training hooks or internal campaign lines that teams actually remember.</p>



<p>For teams doing polished enablement content, <a href="https://flowpast.com/prompts/compose-a-catchy-song-melody-blueprint-with-this-ai-prompt/">Compose a Catchy Song Melody Blueprint with this AI Prompt</a> pairs well when your rollout needs a structured “blueprint” mindset. Different domain, same advantage: you get a repeatable plan instead of improvising every time.</p>



<p>When your org needs a step-by-step sequence for deliverables and checkpoints, <a href="https://flowpast.com/prompts/build-a-song-arrangement-blueprint-with-this-ai-prompt/">Build a Song Arrangement Blueprint with this AI Prompt</a> is a handy reference for turning raw ideas into a staged outline. That can complement an RBAC rollout plan where sequencing matters: schema first, then enforcement, then tests, then audits.</p>


<br>


<p>Quick reference:</p>



<ul class="wp-block-list">

<li><a href="https://flowpast.com/prompts/write-a-singable-song-chorus-with-this-ai-prompt/">Write a Singable Song Chorus with this AI Prompt</a>: Memorable internal messaging and training hooks.</li>


<li><a href="https://flowpast.com/prompts/compose-a-catchy-song-melody-blueprint-with-this-ai-prompt/">Compose a Catchy Song Melody Blueprint with this AI Prompt</a>: Structured blueprint for creative deliverables.</li>


<li><a href="https://flowpast.com/prompts/build-a-song-arrangement-blueprint-with-this-ai-prompt/">Build a Song Arrangement Blueprint with this AI Prompt</a>: Step-by-step outline with sequencing.</li>

<li><a href="https://flowpast.com/prompts/write-a-shakespearean-solo-monologue-with-this-ai-prompt/">Write a Shakespearean Solo Monologue with this AI Prompt</a>: Dramatic narrative for presentations and scripts.</li>

<li><a href="https://flowpast.com/prompts/create-a-five-poem-anthology-with-this-ai-prompt/">Create a Five-Poem Anthology with this AI Prompt</a>: Themed set of pieces for campaigns.</li>
<!-- /wp:post-content -->
</ul>
<!-- /wp:list -->
</div>

<div class="faq-section">
<!-- wp:heading {"level":2} -->
<h2 class="wp-block-heading">Common Questions</h2>
<!-- /wp:heading -->

<div class="faq-item">
<span class="question">Which roles benefit most from this enterprise RBAC plan AI prompt?</span>
<!-- wp:paragraph -->
<p class="answer"><strong>Software Architects</strong> use this to turn “we need RBAC” into a concrete model with roles, resources, actions, and enforcement layers that match real request flows. <strong>Security Engineers</strong> rely on it to bake in deny-by-default, least privilege, and separation of duties, plus audit events that stand up during reviews. <strong>Engineering Managers</strong> apply it when multiple teams ship services and authorization logic starts diverging, creating gaps and inconsistent behavior. <strong>Technical Product Managers</strong> use it to define role requirements, UX gating expectations, and acceptance criteria without hand-waving.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Which industries get the most value from this enterprise RBAC plan AI prompt?</span>
<!-- wp:paragraph -->
<p class="answer"><strong>SaaS platforms selling to mid-market and enterprise</strong> get value because customers expect clear roles, tenant-aware access, and predictable permission checks across APIs and UI. <strong>Fintech and payments</strong> teams use it to reduce fraud and internal misuse by separating duties for high-risk actions like refunds, exports, and payout changes, then backing it with audit trails. <strong>Healthcare and health tech</strong> apply it when PHI access must be tightly scoped by role and context, and audit logging needs to be consistent across services. <strong>B2B marketplaces</strong> use it to manage access for multiple parties (buyers, sellers, operators) while preventing cross-tenant data leakage as the platform scales.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Why do basic AI prompts for designing an RBAC blueprint produce weak results?</span>
<!-- wp:paragraph -->
<p class="answer">A typical prompt like “Write me an RBAC system for my app” fails because it: lacks a deny-by-default stance with explicit guard behavior, provides no concrete schema or indexing plan for performant permission checks, ignores separation of duties and admin escalation paths (where most real abuse happens), produces generic roles like “Admin/User” instead of mapping permissions to resources and actions, and misses operational pieces like tests, audits, and a clear “What This Is NOT” scope that prevents false security confidence.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Can I customize this enterprise RBAC plan prompt for my specific situation?</span>
<!-- wp:paragraph -->
<p class="answer">Yes. Even though the prompt has zero form variables, you customize it by adding your own placeholders in the required format, like [APPLICATION_TYPE], [TENANCY_MODEL], [SENSITIVE_ACTIONS], and [COMPLIANCE_REQUIREMENTS], then letting the model fill {Title Case} sections. If details are unclear, explicitly ask it to state assumptions and offer 2–3 safe options, then pick one and rerun the prompt with that decision locked. A good follow-up is: “Revise the RBAC blueprint assuming [TENANCY_MODEL]=‘single database, tenant_id on every row’ and [SENSITIVE_ACTIONS]=‘export PII, change billing, manage roles’.”</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">What are the most common mistakes when using this enterprise RBAC plan prompt?</span>
<!-- wp:paragraph -->
<p class="answer">The biggest mistake is leaving [SENSITIVE_ACTIONS] too vague — instead of “admin stuff,” try “role assignment, data export, refunds, API key creation, and impersonation.” Another common error is forgetting the tenant shape in [TENANCY_MODEL]; “multi-tenant” is not enough, but “shared DB with tenant_id and occasional cross-tenant operator access” is workable. Teams also under-specify [RESOURCES_AND_ACTIONS], which leads to fluffy roles; provide a list like “Invoices:view/refund/export” rather than “billing.” Finally, people skip [CURRENT_AUTH_GAPS]; “some endpoints are open” is weak, but “GET /reports/export has no server-side check” gives the prompt something concrete to close.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Who should NOT use this enterprise RBAC plan prompt?</span>
<!-- wp:paragraph -->
<p class="answer">This prompt isn’t ideal for one-off prototypes where you will not implement server-side enforcement or tests, because the blueprint is intentionally thorough. It’s also a poor fit if you have not validated what your roles even represent (for example, no clear resources, no defined sensitive actions), since the model will be forced to make broad assumptions. If you only need a quick UI-only gating concept, use a lightweight feature-flag approach instead, then come back once you’re ready to enforce authorization in the backend.</p>
<!-- /wp:paragraph -->
</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Which roles benefit most from this enterprise RBAC plan AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Software Architects use this to turn “we need RBAC” into a concrete model with roles, resources, actions, and enforcement layers that match real request flows. Security Engineers rely on it to bake in deny-by-default, least privilege, and separation of duties, plus audit events that stand up during reviews. Engineering Managers apply it when multiple teams ship services and authorization logic starts diverging, creating gaps and inconsistent behavior. Technical Product Managers use it to define role requirements, UX gating expectations, and acceptance criteria without hand-waving."
      }
    },
    {
      "@type": "Question",
      "name": "Which industries get the most value from this enterprise RBAC plan AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "SaaS platforms selling to mid-market and enterprise get value because customers expect clear roles, tenant-aware access, and predictable permission checks across APIs and UI. Fintech and payments teams use it to reduce fraud and internal misuse by separating duties for high-risk actions like refunds, exports, and payout changes, then backing it with audit trails. Healthcare and health tech apply it when PHI access must be tightly scoped by role and context, and audit logging needs to be consistent across services. B2B marketplaces use it to manage access for multiple parties (buyers, sellers, operators) while preventing cross-tenant data leakage as the platform scales."
      }
    },
    {
      "@type": "Question",
      "name": "Why do basic AI prompts for designing an RBAC blueprint produce weak results?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A typical prompt like “Write me an RBAC system for my app” fails because it: lacks a deny-by-default stance with explicit guard behavior, provides no concrete schema or indexing plan for performant permission checks, ignores separation of duties and admin escalation paths (where most real abuse happens), produces generic roles like “Admin/User” instead of mapping permissions to resources and actions, and misses operational pieces like tests, audits, and a clear “What This Is NOT” scope that prevents false security confidence."
      }
    },
    {
      "@type": "Question",
      "name": "Can I customize this enterprise RBAC plan prompt for my specific situation?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. Even though the prompt has zero form variables, you customize it by adding your own placeholders in the required format, like [APPLICATION_TYPE], [TENANCY_MODEL], [SENSITIVE_ACTIONS], and [COMPLIANCE_REQUIREMENTS], then letting the model fill {Title Case} sections. If details are unclear, explicitly ask it to state assumptions and offer 2–3 safe options, then pick one and rerun the prompt with that decision locked. A good follow-up is: “Revise the RBAC blueprint assuming [TENANCY_MODEL]=‘single database, tenant_id on every row’ and [SENSITIVE_ACTIONS]=‘export PII, change billing, manage roles’.”"
      }
    },
    {
      "@type": "Question",
      "name": "What are the most common mistakes when using this enterprise RBAC plan prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The biggest mistake is leaving [SENSITIVE_ACTIONS] too vague — instead of “admin stuff,” try “role assignment, data export, refunds, API key creation, and impersonation.” Another common error is forgetting the tenant shape in [TENANCY_MODEL]; “multi-tenant” is not enough, but “shared DB with tenant_id and occasional cross-tenant operator access” is workable. Teams also under-specify [RESOURCES_AND_ACTIONS], which leads to fluffy roles; provide a list like “Invoices:view/refund/export” rather than “billing.” Finally, people skip [CURRENT_AUTH_GAPS]; “some endpoints are open” is weak, but “GET /reports/export has no server-side check” gives the prompt something concrete to close."
      }
    },
    {
      "@type": "Question",
      "name": "Who should NOT use this enterprise RBAC plan prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "This prompt isn’t ideal for one-off prototypes where you will not implement server-side enforcement or tests, because the blueprint is intentionally thorough. It’s also a poor fit if you have not validated what your roles even represent (for example, no clear resources, no defined sensitive actions), since the model will be forced to make broad assumptions. If you only need a quick UI-only gating concept, use a lightweight feature-flag approach instead, then come back once you’re ready to enforce authorization in the backend."
      }
    }
  ]
}
</script>
</div>

<div class="closing-section">
<!-- wp:paragraph -->
<p>RBAC is easy to describe and hard to keep correct at scale. Use this prompt to get a defendable, implementation-ready access control plan you can ship, test, and audit.</p>
<!-- /wp:paragraph -->
</div>]]></content:encoded>
					
		
		
		<media:content url="https://flowpast.s3.eu-north-1.amazonaws.com/featured_blog_images/5001442.webp" medium="image"></media:content>
            	</item>
		<item>
		<title>Design Cookie-Based JWT Auth Flow AI Prompt</title>
		<link>https://flowpast.com/prompts/design-cookie-based-jwt-auth-flow-ai-prompt/</link>
		
		<dc:creator><![CDATA[Lisa Granqvist]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 02:48:24 +0000</pubDate>
				<category><![CDATA[Prompts]]></category>
		<guid isPermaLink="false">https://flowpast.com/?p=5001439</guid>

					<description><![CDATA[Cookie sessions get hijacked - a proven AI Prompt that designs JWT auth with HTTP-only cookies, CSRF defense, rotation, middleware, and logging. Discover more AI prompts for marketing, sales, and ops.]]></description>
										<content:encoded><![CDATA[<!-- FOCUS_KEYWORD: cookie-based JWT auth -->
<div class="hook-introduction">

<p>JWT auth breaks in the boring places. Tokens end up in localStorage, XSS turns into account takeover, and refresh flows become a pile of edge cases nobody monitors. Then you ship “good enough” auth and spend the next quarter chasing weird logout bugs and suspicious replays.</p>



<p>This <strong>cookie-based JWT auth</strong> is built for <strong>product engineers</strong> who need a secure login/refresh/logout flow that won’t leak tokens to browser JavaScript, <strong>tech leads</strong> who have to standardize middleware and cookie policies across multiple services, and <strong>security-minded founders</strong> who want a practical plan before a penetration test. The output is a production-grade design doc with implementation patterns (cookies, headers, rotation rules, middleware structure) plus logging and monitoring signals you can actually wire up.</p>

</div>

<div class="what-and-when-section">

<h2 class="wp-block-heading">What Does This AI Prompt Do and When to Use It?</h2>



<table class="solution-results-table three-column" role="presentation" aria-label="What this prompt does, when to use it, and what you get">
 <thead>
    <tr>
      <th scope="col">What This Prompt Does</th>
      <th scope="col">When to Use This Prompt</th>
      <th scope="col">What You&#8217;ll Get</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <ul class="automation-list">
          <li>It maps an end-to-end login → authenticated request → silent refresh → logout flow where the browser never reads tokens via JavaScript.</li>
          <li>It defines an access/refresh token model, including lifetimes, rotation strategy, and how to invalidate sessions server-side after theft or logout.</li>
          <li>It specifies cookie flags and header patterns (SameSite, Secure, HttpOnly, Path scoping, CSRF headers) with concrete configuration defaults.</li>
          <li>It provides middleware patterns to authenticate requests, attach user context, handle clock skew, and block tampered or replayed tokens.</li>
          <li>It adds operational guidance: what to log, which signals indicate abuse, and what alerts help you catch refresh-token reuse quickly.</li>
       </ul>
      </td>
      <td>
        <ul class="results-list">
          <li>You are migrating away from localStorage/sessionStorage tokens and need a safer approach without rewriting the whole front end.</li>
          <li>Your refresh flow is unreliable (random 401s, logout loops, “works on my machine”), and you need clear error behavior and race handling.</li>
          <li>You are about to ship an SPA + API and need CSRF defenses that match cookie-based auth rather than bearer tokens.</li>
          <li>A security review or customer questionnaire is asking how you prevent XSS token harvesting, replay after theft, and session hijacking.</li>
          <li>You are scaling to multiple services and need consistent middleware and logging conventions so incidents can be investigated fast.</li>
        </ul>
      </td>
       <td>
         <ul class="deliverables-list">
           <li>A complete auth flow blueprint with step-by-step request/response sequences for login, refresh, and logout.</li>
           <li>A token policy table that includes access/refresh TTLs, rotation rules, reuse detection, and safe clock-skew handling.</li>
           <li>Cookie and header configuration examples (HttpOnly/Secure/SameSite, CSRF header, CORS notes) ready to paste into docs.</li>
           <li>Middleware pseudocode for auth verification, user-context attachment, and consistent error responses across endpoints.</li>
           <li>A monitoring checklist with concrete log fields and alert ideas for replay attempts, refresh anomalies, and suspicious logout races.</li>
         </ul>
       </td>
    </tr>
  </tbody>
</table>

</div>

<div class="prompt-display-section">

<h2 class="wp-block-heading">The Full AI Prompt: Production-Grade Cookie JWT Auth Flow</h2>



<div class="prompt-viewer-wrapper" id="prompt-section">
    <div class="prompt-comparison-row prompt-premium">
        <!-- Header with buttons -->
        <div class="prompt-row-header">
            <!-- <span class="prompt-row-icon">✨</span> -->
            <span class="prompt-row-title">
                                    Step 1: Customize the prompt with your input
                            </span>
            <div class="prompt-header-buttons">
                                    <button class="prompt-header-btn prompt-header-reset" onclick="resetPrompt()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                                <button class="prompt-header-btn prompt-header-copy-green flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span>Customize and Copy Full Prompt</span>
                </button>
            </div>
        </div>

        <!-- Customize the Prompt Section -->
                    <div class="prompt-customize-section">
                <span class="customize-title">Customize the Prompt</span>
                <p class="customize-subtitle">Fill in the fields below to personalize this prompt for your needs.</p>
                <table class="customize-table">
                    <thead>
                        <tr>
                            <th>Variable</th>
                            <th>What to Enter</th>
                            <th>Customise the prompt</th>
                        </tr>
                    </thead>
                    <tbody>
                                                    <tr>
                                <td class="var-name"><code>[FORMAT]</code></td>
                                <td class="var-desc">
                                    Specify the type of application you are working on, such as web, mobile, or desktop, and include any relevant details about its functionality or user interaction.                                    <div class="var-example">For example: "Single-page web application for e-commerce, built with React and interacting with REST APIs."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[FORMAT]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[CONTEXT]</code></td>
                                <td class="var-desc">
                                    Provide details about the frameworks, runtime environment, hosting setup, and reverse proxy configuration currently in use for the application.                                    <div class="var-example">For example: "Node.js backend using Express, hosted on AWS Lambda with an NGINX reverse proxy in front."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[CONTEXT]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[CHALLENGE]</code></td>
                                <td class="var-desc">
                                    Outline the specific security or compliance standards the application must adhere to, such as SOC2, HIPAA, PCI, or GDPR.                                    <div class="var-example">For example: "The application must comply with GDPR for handling user data and SOC2 for operational security standards."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[CHALLENGE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[TIMEFRAME]</code></td>
                                <td class="var-desc">
                                    Specify the desired session length, including both idle timeout and absolute expiration duration, to help define token lifetimes.                                    <div class="var-example">For example: "Idle timeout of 15 minutes and absolute session expiration after 24 hours."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[TIMEFRAME]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[PRODUCT_DESCRIPTION]</code></td>
                                <td class="var-desc">
                                    Describe any observed vulnerabilities or issues with the current authentication system, such as token theft, session hijacking, or poor logout handling.                                    <div class="var-example">For example: "Tokens stored in localStorage are vulnerable to XSS attacks, and session hijacking has been observed due to missing CSRF protection."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[PRODUCT_DESCRIPTION]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                            </tbody>
                </table>

                <button class="copy-customized-btn flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span class="copy-customized-text">Customise the prompt now</span>
                </button>
            </div>
        
        <!-- Full Prompt Code Header -->
                    <div class="prompt-code-header">
                <span class="prompt-code-title">
                    Step 2: Copy the Prompt
                </span>
                <div class="prompt-code-buttons">
                    <!-- Reset: Only visible when unlocked -->
                    <button class="prompt-header-btn prompt-header-reset btn-when-unlocked" onclick="resetPrompt()" style="display: none;">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                    <!-- Copy Full Prompt -->
                    <button class="prompt-header-btn prompt-header-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                            <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                        </svg>
                        <span>Copy Full Prompt</span>
                    </button>
                </div>
            </div>
        

        <!-- Prompt Content -->
        <div class="prompt-box prompt-gated-wrapper">
            <!-- Gated: Blurred content -->
            <div class="prompt-gated-content">
                <div class="prompt-header-visible">OBJECTIVE</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PERSONA</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">CONSTRAINTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PROCESS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">What This Is NOT (scope boundaries)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">INPUTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">OUTPUT SPECIFICATION</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">1) {Security Architecture}</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">2) {Cookie Implementation}</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">3) {Token Refresh System}</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">4) {Validation Middleware}</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">5) {Logout Security}</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">6) {Frontend Integration}</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">7) {Security Monitoring}</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">8) {Implementation Checklist}</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">QUALITY CHECKS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div>            </div>
            <!-- Unlocked: Full content (hidden by default) -->
            <div class="prompt-content-full" id="premium-prompt-content" style="display: none;">
                ## OBJECTIVE
Create a production-grade JWT authentication design that removes all browser-accessible token storage and closes the common exploit paths (XSS token harvesting, token replay after theft, session hijacking). The deliverable must explain exactly how to implement HTTP-only cookie auth, silent refresh, server-side validation, and secure sign-out—complete with code patterns and operational monitoring guidance.

## PERSONA
Act as an ex–security advisor focused on real-world auth failures. You think in attacker workflows first, favor defenses that are transparent to legitimate users, and you translate security intent into implementable engineering steps for modern web stacks.

## CONSTRAINTS
- Prioritize architectures where tokens are never read or stored by client JavaScript.
- Use HTTP-only cookies as the primary transport for session credentials.
- Include CSRF defenses appropriate for cookie-based auth.
- Provide specific configuration values/patterns (cookie flags, headers, rotation rules, middleware structure), not vague best practices.
- Keep the front end free of token logic; the server owns issuance, refresh, and invalidation.
- Include explicit handling for expiration, tampering, reuse, clock skew, and logout races.
- Add practical logging/monitoring signals for auth abuse detection.
- If inputs are missing or unclear, ask targeted questions and provide safe default assumptions labeled as such.

## PROCESS
1. **Pre-Analysis Step (required):** Briefly restate the scenario in your own words and list any assumptions you’ll use.
2. Propose the end-to-end auth flow (login → authenticated requests → refresh → logout).
3. Define token model: access vs refresh token responsibilities, lifetimes, rotation, and server-side invalidation strategy.
4. Specify cookie settings and security headers for the given stack/environment.
5. Provide middleware patterns for request authentication and user-context attachment.
6. Detail error behavior (what the client sees vs what gets logged) for each failure mode.
7. Add monitoring guidance (events, metrics, alerts) tuned for token abuse.
8. Finish with an implementation checklist that engineers can follow and verify.

### What This Is NOT (scope boundaries)
- Not a generic “JWT overview” or cryptography primer.
- Not a recommendation to store tokens in localStorage/sessionStorage.
- Not a substitute for a full penetration test or legal compliance review.
- Not a one-size-fits-all SSO/OAuth redesign unless explicitly requested.

## INPUTS
- **Application type:** [FORMAT]
- **Current tech stack (frameworks, runtime, hosting, reverse proxy):** [CONTEXT]
- **Security/compliance requirements (e.g., SOC2, HIPAA, PCI, GDPR):** [CHALLENGE]
- **Desired session length (idle + absolute):** [TIMEFRAME]
- **Existing authentication issues/vulnerabilities observed:** [PRODUCT_DESCRIPTION]

## OUTPUT SPECIFICATION
Use the following sections and include implementation-ready detail in each:

### 1) {Security Architecture}
- Threat model summary: {Primary Threats} and {Excluded Threats}
- Recommended JWT layout: {Token Types}, {Claims}, {Signing Algorithm}, {Key Management}
- Session strategy: {Access Lifetime}, {Refresh Lifetime}, {Rotation Policy}, {Revocation Approach}
- Request flow diagram (text): {Flow Steps}

### 2) {Cookie Implementation}
- Cookie set(s) required: {Cookie Names} and purposes
- Exact cookie attributes with rationale:
  - {HttpOnly}, {Secure}, {SameSite}, {Domain}, {Path}, {MaxAge}
- Required headers &amp; platform controls:
  - {CSP Guidance}, {HSTS}, {X-Content-Type-Options}, {Referrer-Policy}
- CSRF protections for cookie auth:
  - {CSRF Pattern} (e.g., double-submit or synchronizer token) and when to enforce it

### 3) {Token Refresh System}
- Refresh endpoint design: {Route}, {Expected Cookies}, {Response Behavior}
- Rotation &amp; reuse detection: {How You Detect Replay}, {What You Invalidate}
- Concurrency handling: {Multiple Tabs Strategy} and {Race Resolution}
- Example server pseudo/code: {Refresh Handler Example}

### 4) {Validation Middleware}
- Middleware responsibilities: {Verification Steps} (signature, exp/nbf, issuer/audience, jti, user status)
- User context attachment: {User Context Shape}
- Authorization hooks: {RBAC/ABAC Extension Points}
- Example middleware pseudo/code: {Middleware Example}

### 5) {Logout Security}
- Logout types: {Client-Initiated Logout} and {Server-Forced Logout}
- Invalidation design: {Blacklist/Allowlist/Session Store} and retention window
- Cookie clearing strategy: {Clear Cookie Rules} (path/domain alignment)
- Example endpoint pseudo/code: {Logout Handler Example}

### 6) {Frontend Integration}
- Frontend request rules: {Fetch/XHR Settings} (credentials mode, CORS interaction)
- UI auth state approach: {Session Check Endpoint} and caching guidance
- No-token guarantee: explicitly state what the frontend must never do

### 7) {Security Monitoring}
- Error taxonomy: {Client-Facing Errors} vs {Server Logs}
- Log events to capture: {Auth Event List} (failed verification, refresh reuse, abnormal IP/UA shifts)
- Metrics &amp; alerts: {Alert Conditions} and {Suggested Thresholds}
- Incident response notes: {Triage Steps} for suspected token theft

### 8) {Implementation Checklist}
Provide a step-by-step list where each step includes:
- {Step}
- {How To Implement}
- {How To Verify}
- {Failure Modes To Test}

## QUALITY CHECKS
At the end, include a verification list confirming:
- Tokens are never accessible to client JavaScript (no localStorage/sessionStorage, no JS-readable cookies).
- Cookies use appropriate flags and CSRF protections are enforced where needed.
- Refresh rotation + reuse detection is defined and implementable server-side.
- Middleware validates all critical claims and handles clock skew/tampering safely.
- Logout reliably invalidates sessions and clears cookies without path/domain mismatches.            </div>
        </div>


    </div>

    <!-- CTA Row - Full width buttons -->
    <div class="prompt-cta-row">
        <button class="prompt-cta-btn prompt-cta-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
            </svg>
            <span class="cta-copy-text">Copy Full Prompt</span>
        </button>
    </div>
</div>

<style>
    /* Gated prompt states */
    .prompt-gated-wrapper {
        position: relative;
    }

    /* When unlocked - show full content, hide gated */
    body.flowpast-unlocked .prompt-gated-wrapper .prompt-gated-content {
        display: none;
    }

    body.flowpast-unlocked .prompt-gated-wrapper .prompt-content-full {
        display: block !important;
    }

    /* Show/hide elements based on unlock state */
    body.flowpast-unlocked .btn-when-unlocked {
        display: inline-flex !important;
    }

    .prompt-viewer-wrapper {
        scroll-margin-top: 250px;
    }

    /* ========================================
   PROMPT VIEWER - MAIN WRAPPER
   ======================================== */
    .prompt-viewer-wrapper {
        margin: 30px 0;
        display: flex;
        flex-direction: column;
        gap: 20px;
    }

    /* ========================================
   PROMPT BOX CONTAINER
   ======================================== */
    .prompt-comparison-row {
        border-radius: 12px;
        overflow: hidden;
        border: 1px solid #e0e0e0;
        background: #fff;
    }

    /* ========================================
   HEADER WITH BUTTONS
   ======================================== */
    .prompt-row-header {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 14px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
        flex-wrap: wrap;
    }

    .prompt-row-icon {
        font-size: 20px;
    }

    .prompt-row-title {
        font-weight: 600;
        font-size: 22px;
        color: #fff !important;
        text-decoration: underline
    }

    .prompt-header-buttons {
        margin-left: auto;
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
    }

    /* Header buttons */
    .prompt-header-btn {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 10px 20px;
        border-radius: 6px;
        font-size: 14px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-header-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-header-copy:hover {
        background: #2a2a2a;
    }

    .prompt-header-copy.copied {
        background: #2e7d32;
    }

    .prompt-header-copy-green {
        background: #04AA6D !important;
        color: #fff !important;
    }

    .prompt-header-copy-green:hover {
        background: #039860 !important;
    }

    .prompt-header-copy-green.copied {
        background: #2e7d32 !important;
    }

    .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-header-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-1px);
    }

    /* ========================================
   PROMPT CONTENT - FULL (NO SCROLL)
   ======================================== */
    .prompt-box {
        background: #ffffff;
    }

    .prompt-content-full {
        padding: 24px;
        margin: 0;
        color: #202124;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.7;
        white-space: pre-wrap;
        word-wrap: break-word;
        /* No scroll - show full content */
        max-height: none;
        overflow: visible;
    }

    /* Highlighted variable in prompt */
    .prompt-variable {
        background: #fff3cd;
        color: #1967d2;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #ffc107;
    }

    .prompt-variable-filled {
        background: #d4edda;
        color: #155724;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #28a745;
    }

    /* ========================================
   GATED CONTENT (NO ACCESS)
   ======================================== */
    .prompt-gated-content {
        padding: 24px;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.8;
        max-height: none;
        overflow: visible;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        cursor: default;
    }

    /* ## headers - larger, black */
    .prompt-header-visible {
        color: #202124;
        font-weight: 600;
        margin: 5px 0 0px 0;
        font-size: 20px;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        text-decoration: underline;
        text-underline-offset: 4px;
    }

    /* ### headers - smaller, black */
    .prompt-header-visible.subheader {
        color: #202124;
        font-weight: 600;
        margin: 5px 0;
        font-size: 18px;
    }

    .prompt-header-visible:first-child {
        margin-top: 0;
    }

    /* ========================================
   LOCKED SECTION BLOCK
   ======================================== */
    .locked-section {
        position: relative;
        margin: 4px 0 8px 0;
        border-radius: 6px;
        overflow: hidden;
        background: linear-gradient(110deg, #e2e8f0 8%, #f1f5f9 18%, #e2e8f0 33%);
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
    }

    .locked-section-bg {
        position: relative;
    }

    .locked-section-lines {
        padding: 8px 12px;
        position: relative;
    }

    .locked-line {
        height: 6px;
        background: rgba(255, 255, 255, 0.6);
        border-radius: 3px;
        margin-bottom: 4px;
        margin-left: 12px;
    }

    .locked-line:last-child {
        margin-bottom: 0;
    }

    .locked-section-icon {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: 10;
        font-size: 24px;
        filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1));
    }

    /* Subheader locked sections - slightly indented */
    /*  .prompt-header-visible.subheader+.locked-section {
        margin-left: 16px;
    } */

    /* ========================================
   COMPATIBILITY BADGES
   ======================================== */
    .prompt-compatibility {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 8px;
        padding: 12px 20px;
        background: #f8f9fa;
        border-top: 1px solid #e0e0e0;
    }

    .compat-label {
        font-size: 13px;
        color: #5f6368;
        font-weight: 500;
    }

    .compat-badge {
        padding: 4px 10px;
        background: #e8f0fe;
        color: #1967d2;
        border-radius: 4px;
        font-size: 12px;
        font-weight: 500;
    }

    /* ========================================
   CTA ROW - FULL WIDTH BUTTONS
   ======================================== */
    .prompt-cta-row {
        display: flex;
        gap: 16px;
        flex-wrap: wrap;
    }

    .prompt-cta-btn {
        flex: 1;
        min-width: 200px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        padding: 16px 24px;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-cta-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-copy:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-copy.copied {
        background: #2e7d32;
    }

    .prompt-cta-reset {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-reset:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-cta-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    /* ========================================
    CUSTOMIZE YOUR PROMPT SECTION
    ======================================== */
    .prompt-customize-section {
        padding: 24px;
        border-bottom: 1px solid #e0e0e0;
        background: #fafbfc;
    }

    .customize-title {
        margin: 0 0 8px 0;
        font-size: 18px;
        font-weight: 700;
        color: #202124;
    }

    .customize-subtitle {
        margin: 0 0 20px 0;
        font-size: 14px;
        color: #5f6368;
    }

    .customize-table {
        width: 100%;
        border-collapse: collapse;
        margin-bottom: 20px;
    }

    .customize-table th {
        text-align: left;
        padding: 12px;
        background: #f1f3f4;
        border: 1px solid #e0e0e0;
        font-size: 13px;
        font-weight: 600;
        color: #202124;
    }

    .customize-table td {
        padding: 12px;
        border: 1px solid #e0e0e0;
        vertical-align: top;
    }

    .customize-table .var-name {
        width: 25%;
        background: #f8f9fa;
    }

    .customize-table .var-name code {
        background: #fff3cd;
        color: #1967d2;
        border: 1px solid #ffc107;
        padding: 4px 8px;
        border-radius: 4px;
        font-size: 12px;
        word-break: break-all;
        font-weight: 600;
    }

    .customize-table .var-desc {
        width: 35%;
        font-size: 13px;
        color: #5f6368;
        line-height: 1.5;
    }

    .customize-table .var-example {
        margin-top: 8px;
        padding: 8px 10px;
        background: #f8f9fa;
        border-left: 3px solid #dadce0;
        font-size: 12px;
        color: #5f6368;
        font-style: italic;
        border-radius: 0 4px 4px 0;
    }

    .customize-table .var-input {
        width: 40%;
    }

    .customize-input {
        width: 100%;
        padding: 10px 12px;
        border: 1px solid #dadce0;
        border-radius: 6px;
        font-size: 13px;
        font-family: inherit;
        resize: vertical;
        transition: border-color 0.2s, box-shadow 0.2s;
    }

    .customize-input:focus {
        outline: none;
        border-color: rgb(5, 152, 98);
        box-shadow: 0 0 0 3px rgba(5, 152, 98, 0.1);
    }

    .customize-input::placeholder {
        color: #9aa0a6;
        font-style: italic;
    }

    .copy-customized-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        width: 100%;
        padding: 16px 24px;
        background: rgb(5, 152, 98);
        color: #fff;
        border: none;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
    }

    .copy-customized-btn:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    .copy-customized-btn.copied {
        background: #2e7d32;
    }

    /* ========================================
    FULL PROMPT CODE HEADER
    ======================================== */
    .prompt-code-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 10px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
    }

    .prompt-code-title {
        font-size: 22px;
        font-weight: 600;
        text-decoration: underline;

    }

    .prompt-code-buttons {
        display: flex;
        gap: 8px;
    }

    .prompt-code-buttons .prompt-header-btn {
        padding: 8px 14px;
        font-size: 13px;
        background: #ffffff;
        color: #202124;
        border: 1px solid #dadce0;
    }

    .prompt-code-buttons .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
        border-color: rgb(5, 152, 98);
    }

    .prompt-code-buttons .prompt-header-btn.prompt-header-access:hover {
        background: rgb(4, 130, 83) !important;
        border-color: rgb(4, 130, 83);
        color: #fff !important;
    }

    .prompt-code-buttons .prompt-header-btn:hover {
        background: #f1f3f4;
    }

    .prompt-code-buttons .prompt-header-copy.copied {
        background: #d4edda;
        color: #155724;
        border-color: #28a745;
    }

    .prompt-header-reset {
        background: #ffffff;
        color: #202124;
    }

    /* ========================================
   RESPONSIVE
   ======================================== */
    @media (max-width: 768px) {
        .prompt-row-header {
            flex-direction: column;
            align-items: flex-start;
            gap: 12px;
        }

        .prompt-header-buttons {
            margin-left: 0;
            width: 100%;
        }

        .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }

        .prompt-cta-row {
            flex-direction: column;
        }

        .prompt-cta-btn {
            width: 100%;
        }

        /* Customize table responsive */
        .customize-table,
        .customize-table thead,
        .customize-table tbody,
        .customize-table tr,
        .customize-table th,
        .customize-table td {
            display: block;
        }

        .customize-table thead {
            display: none;
        }

        .customize-table tr {
            margin-bottom: 16px;
            border: 1px solid #e0e0e0;
            border-radius: 8px;
            overflow: hidden;
        }

        .customize-table td {
            width: 100% !important;
            border: none;
            border-bottom: 1px solid #e0e0e0;
        }

        .customize-table td:last-child {
            border-bottom: none;
        }

        .customize-table .var-name {
            background: #f1f3f4;
            font-weight: 600;
        }

        .prompt-code-header {
            flex-direction: column;
            gap: 12px;
            align-items: flex-start;
        }

        .prompt-code-buttons {
            width: 100%;
        }

        .prompt-code-buttons .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }
    }
</style>

<script>
    function handlePromptCopy() {
        // Check if unlocked via cookie
        if (typeof window.flowpastIsUnlocked === 'function' && !window.flowpastIsUnlocked()) {
            // Show email popup
            if (typeof window.flowpastShowEmailPopup === 'function') {
                window.flowpastShowEmailPopup('prompt');
            }
            return;
        }

        // Copy the customized prompt (with filled variables)
        const customizedPrompt = getCustomizedPrompt();
        const copyButtons = document.querySelectorAll('.prompt-header-copy, .prompt-header-copy-green, .prompt-cta-copy, .copy-customized-btn');

        navigator.clipboard.writeText(customizedPrompt).then(() => {
            copyButtons.forEach(btn => {
                btn.classList.add('copied');
                const textSpan = btn.querySelector('span');
                if (textSpan) textSpan.textContent = 'Copied!';
            });

            setTimeout(() => {
                copyButtons.forEach(btn => {
                    btn.classList.remove('copied');
                    const textSpan = btn.querySelector('span');
                    if (textSpan) textSpan.textContent = 'Copy Full Prompt';
                });
            }, 2000);
        }).catch(err => {
            console.error('Failed to copy:', err);
        });
    }

    // Store original prompt for customization
    const originalPrompt = "## OBJECTIVE\r\nCreate a production-grade JWT authentication design that removes all browser-accessible token storage and closes the common exploit paths (XSS token harvesting, token replay after theft, session hijacking). The deliverable must explain exactly how to implement HTTP-only cookie auth, silent refresh, server-side validation, and secure sign-out\u2014complete with code patterns and operational monitoring guidance.\r\n\r\n## PERSONA\r\nAct as an ex\u2013security advisor focused on real-world auth failures. You think in attacker workflows first, favor defenses that are transparent to legitimate users, and you translate security intent into implementable engineering steps for modern web stacks.\r\n\r\n## CONSTRAINTS\r\n- Prioritize architectures where tokens are never read or stored by client JavaScript.\r\n- Use HTTP-only cookies as the primary transport for session credentials.\r\n- Include CSRF defenses appropriate for cookie-based auth.\r\n- Provide specific configuration values\/patterns (cookie flags, headers, rotation rules, middleware structure), not vague best practices.\r\n- Keep the front end free of token logic; the server owns issuance, refresh, and invalidation.\r\n- Include explicit handling for expiration, tampering, reuse, clock skew, and logout races.\r\n- Add practical logging\/monitoring signals for auth abuse detection.\r\n- If inputs are missing or unclear, ask targeted questions and provide safe default assumptions labeled as such.\r\n\r\n## PROCESS\r\n1. **Pre-Analysis Step (required):** Briefly restate the scenario in your own words and list any assumptions you\u2019ll use.\r\n2. Propose the end-to-end auth flow (login \u2192 authenticated requests \u2192 refresh \u2192 logout).\r\n3. Define token model: access vs refresh token responsibilities, lifetimes, rotation, and server-side invalidation strategy.\r\n4. Specify cookie settings and security headers for the given stack\/environment.\r\n5. Provide middleware patterns for request authentication and user-context attachment.\r\n6. Detail error behavior (what the client sees vs what gets logged) for each failure mode.\r\n7. Add monitoring guidance (events, metrics, alerts) tuned for token abuse.\r\n8. Finish with an implementation checklist that engineers can follow and verify.\r\n\r\n### What This Is NOT (scope boundaries)\r\n- Not a generic \u201cJWT overview\u201d or cryptography primer.\r\n- Not a recommendation to store tokens in localStorage\/sessionStorage.\r\n- Not a substitute for a full penetration test or legal compliance review.\r\n- Not a one-size-fits-all SSO\/OAuth redesign unless explicitly requested.\r\n\r\n## INPUTS\r\n- **Application type:** [FORMAT]\r\n- **Current tech stack (frameworks, runtime, hosting, reverse proxy):** [CONTEXT]\r\n- **Security\/compliance requirements (e.g., SOC2, HIPAA, PCI, GDPR):** [CHALLENGE]\r\n- **Desired session length (idle + absolute):** [TIMEFRAME]\r\n- **Existing authentication issues\/vulnerabilities observed:** [PRODUCT_DESCRIPTION]\r\n\r\n## OUTPUT SPECIFICATION\r\nUse the following sections and include implementation-ready detail in each:\r\n\r\n### 1) {Security Architecture}\r\n- Threat model summary: {Primary Threats} and {Excluded Threats}\r\n- Recommended JWT layout: {Token Types}, {Claims}, {Signing Algorithm}, {Key Management}\r\n- Session strategy: {Access Lifetime}, {Refresh Lifetime}, {Rotation Policy}, {Revocation Approach}\r\n- Request flow diagram (text): {Flow Steps}\r\n\r\n### 2) {Cookie Implementation}\r\n- Cookie set(s) required: {Cookie Names} and purposes\r\n- Exact cookie attributes with rationale:\r\n  - {HttpOnly}, {Secure}, {SameSite}, {Domain}, {Path}, {MaxAge}\r\n- Required headers & platform controls:\r\n  - {CSP Guidance}, {HSTS}, {X-Content-Type-Options}, {Referrer-Policy}\r\n- CSRF protections for cookie auth:\r\n  - {CSRF Pattern} (e.g., double-submit or synchronizer token) and when to enforce it\r\n\r\n### 3) {Token Refresh System}\r\n- Refresh endpoint design: {Route}, {Expected Cookies}, {Response Behavior}\r\n- Rotation & reuse detection: {How You Detect Replay}, {What You Invalidate}\r\n- Concurrency handling: {Multiple Tabs Strategy} and {Race Resolution}\r\n- Example server pseudo\/code: {Refresh Handler Example}\r\n\r\n### 4) {Validation Middleware}\r\n- Middleware responsibilities: {Verification Steps} (signature, exp\/nbf, issuer\/audience, jti, user status)\r\n- User context attachment: {User Context Shape}\r\n- Authorization hooks: {RBAC\/ABAC Extension Points}\r\n- Example middleware pseudo\/code: {Middleware Example}\r\n\r\n### 5) {Logout Security}\r\n- Logout types: {Client-Initiated Logout} and {Server-Forced Logout}\r\n- Invalidation design: {Blacklist\/Allowlist\/Session Store} and retention window\r\n- Cookie clearing strategy: {Clear Cookie Rules} (path\/domain alignment)\r\n- Example endpoint pseudo\/code: {Logout Handler Example}\r\n\r\n### 6) {Frontend Integration}\r\n- Frontend request rules: {Fetch\/XHR Settings} (credentials mode, CORS interaction)\r\n- UI auth state approach: {Session Check Endpoint} and caching guidance\r\n- No-token guarantee: explicitly state what the frontend must never do\r\n\r\n### 7) {Security Monitoring}\r\n- Error taxonomy: {Client-Facing Errors} vs {Server Logs}\r\n- Log events to capture: {Auth Event List} (failed verification, refresh reuse, abnormal IP\/UA shifts)\r\n- Metrics & alerts: {Alert Conditions} and {Suggested Thresholds}\r\n- Incident response notes: {Triage Steps} for suspected token theft\r\n\r\n### 8) {Implementation Checklist}\r\nProvide a step-by-step list where each step includes:\r\n- {Step}\r\n- {How To Implement}\r\n- {How To Verify}\r\n- {Failure Modes To Test}\r\n\r\n## QUALITY CHECKS\r\nAt the end, include a verification list confirming:\r\n- Tokens are never accessible to client JavaScript (no localStorage\/sessionStorage, no JS-readable cookies).\r\n- Cookies use appropriate flags and CSRF protections are enforced where needed.\r\n- Refresh rotation + reuse detection is defined and implementable server-side.\r\n- Middleware validates all critical claims and handles clock skew\/tampering safely.\r\n- Logout reliably invalidates sessions and clears cookies without path\/domain mismatches.";
    const variables = ["[FORMAT]","[CONTEXT]","[CHALLENGE]","[TIMEFRAME]","[PRODUCT_DESCRIPTION]"];
    // Initial render with highlighted variables
    document.addEventListener('DOMContentLoaded', function() {
        renderPromptWithHighlights();
    });

    // Live update prompt as user types
    document.querySelectorAll('.customize-input').forEach(input => {
        input.addEventListener('input', renderPromptWithHighlights);
    });

    function renderPromptWithHighlights() {
        const promptContent = document.getElementById('premium-prompt-content');
        if (!promptContent) return;

        let updatedPrompt = originalPrompt;
        let filledVariables = {};

        // Collect filled values
        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                filledVariables[placeholder] = value;
            }
        });

        // Replace filled variables and highlight remaining
        let htmlContent = escapeHtml(updatedPrompt);

        variables.forEach(placeholder => {
            const escapedPlaceholder = escapeHtml(placeholder);
            const regex = new RegExp(escapeRegex(escapedPlaceholder), 'g');

            if (filledVariables[placeholder]) {
                // Show filled value with green highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable-filled">' + escapeHtml(filledVariables[placeholder]) + '</span>'
                );
            } else {
                // Show original placeholder with yellow highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable">' + escapedPlaceholder + '</span>'
                );
            }
        });

        promptContent.innerHTML = htmlContent;
    }

    function escapeRegex(string) {
        return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    }

    function escapeHtml(text) {
        const div = document.createElement('div');
        div.textContent = text;
        return div.innerHTML;
    }

    function resetPrompt() {
        // Clear all input fields
        document.querySelectorAll('.customize-input').forEach(input => {
            input.value = '';
        });

        // Re-render with original placeholders highlighted
        renderPromptWithHighlights();

        // Visual feedback
        const resetBtns = document.querySelectorAll('.prompt-header-reset, .prompt-cta-reset');
        resetBtns.forEach(btn => {
            const originalText = btn.querySelector('span').textContent;
            btn.querySelector('span').textContent = 'Reset!';
            setTimeout(() => {
                btn.querySelector('span').textContent = originalText;
            }, 1000);
        });
    }


    function getCustomizedPrompt() {
        let updatedPrompt = originalPrompt;

        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                const regex = new RegExp(escapeRegex(placeholder), 'g');
                updatedPrompt = updatedPrompt.replace(regex, value);
            }
        });

        return updatedPrompt;
    }
</script>

</div>

<div class="pro-tips-section">

<h2 class="wp-block-heading">Pro Tips for Better AI Prompt Results</h2>



<ul class="wp-block-list">

<li><strong>State your client type and API topology.</strong> Tell the prompt if you have an SPA hitting a separate API domain, a monolith, or a BFF (backend-for-frontend). Add one line like: “Frontend: Next.js on app.example.com, API: api.example.com behind ALB” so cookie domain/path and CORS/CSRF details come out correctly.</li>


<li><strong>Ask for a concrete cookie matrix.</strong> After the first output, follow up with: “Give me the exact cookie names, flags, domain/path scope, and max-age for access, refresh, and CSRF cookies.” This forces specific values instead of generalities and makes implementation reviews easier.</li>


<li><strong>Force reuse-detection and logout race handling.</strong> Many designs skip this, and frankly it’s where real incidents live. Prompt: “Include refresh token rotation with reuse detection, and explain what happens when a stolen refresh is used after the legit client already rotated.”</li>


<li><strong>Iterate on error behavior, not just security.</strong> Once you get the secure flow, ask: “Now rewrite the client-visible errors and retry rules to avoid infinite refresh loops; include examples for 401 vs 403 vs 419 (CSRF) responses.” The goal is secure and calm UX.</li>


<li><strong>Make it operational by requesting log schemas.</strong> Add: “Provide a JSON log example for login, refresh, refresh-deny (replay), and logout, including fields like user_id, session_id, token_family_id, ip_hash, user_agent_hash, and reason codes.” That turns a design into something your SIEM can use.</li>

</ul>

</div>

<div class="related-prompts-section">

<h2 class="wp-block-heading">Related Prompts</h2>



<p>Once your auth flow is designed, you’ll usually need check-in systems and onboarding workflows to roll it out safely across teams and customers.</p>



<p>If you also need a structured way to keep users engaged after launch (and catch issues early), <a href="https://flowpast.com/prompts/build-a-customer-check-in-system-with-this-ai-prompt/">Build a Customer Check-In System with this AI Prompt</a> helps you design a repeatable cadence, questions, and follow-ups. It pairs well with security changes because cookie/auth migrations often create subtle friction, and proactive check-ins surface it before churn does.</p>



<p>For teams doing internal rollouts, <a href="https://flowpast.com/prompts/build-a-first-week-onboarding-checklist-with-this-ai-prompt/">Build a First-Week Onboarding Checklist with this AI Prompt</a> can turn your new auth requirements into a clear first-week plan for engineers and support. Use it when you’re standardizing cookie flags, CSRF expectations, or logging fields across repos and want fewer “but I didn’t know” surprises.</p>



<p>Security work can be intense, and burn-out makes mistakes more likely. When you want to spot process strain while you’re pushing important changes, <a href="https://flowpast.com/prompts/workplace-well-being-diagnosis-and-action-plan-ai-prompt/">Workplace Well-Being Diagnosis and Action Plan AI Prompt</a> gives you a practical way to diagnose team bottlenecks, on-call pain, and workflow gaps that often show up during auth or infrastructure migrations.</p>


<br>


<p>Quick reference:</p>



<ul class="wp-block-list">

<li><a href="https://flowpast.com/prompts/build-a-customer-check-in-system-with-this-ai-prompt/">Build a Customer Check-In System with this AI Prompt</a>: Create cadence, questions, and follow-up workflow.</li>


<li><a href="https://flowpast.com/prompts/build-a-first-week-onboarding-checklist-with-this-ai-prompt/">Build a First-Week Onboarding Checklist with this AI Prompt</a>: Turn changes into clear week-one tasks.</li>

<li><a href="https://flowpast.com/prompts/workplace-well-being-diagnosis-and-action-plan-ai-prompt/">Workplace Well-Being Diagnosis and Action Plan AI Prompt</a>: Identify bottlenecks and reduce rollout stress.</li>


<li><a href="https://flowpast.com/prompts/build-a-recurring-life-check-in-worksheet-ai-prompt/">Build a Recurring Life Check-In Worksheet AI Prompt</a>: Build a repeatable self-review structure.</li>


<li><a href="https://flowpast.com/prompts/build-a-shame-free-spending-check-in-with-this-ai-prompt/">Build a Shame-Free Spending Check-In with this AI Prompt</a>: Create a clear spending review routine.</li>

</ul>
<!-- /wp:post-content -->
</div>

<div class="faq-section">
<!-- wp:heading {"level":2} -->
<h2 class="wp-block-heading">Common Questions</h2>
<!-- /wp:heading -->

<div class="faq-item">
<span class="question">Which roles benefit most from this cookie-based JWT auth AI prompt?</span>
<!-- wp:paragraph -->
<p class="answer"><strong>Backend engineers</strong> use this to turn “use HttpOnly cookies” into an actual flow with middleware, rotation, and server-side invalidation. <strong>Frontend leads</strong> benefit because the design keeps the UI free of token storage and refresh logic, reducing fragile client code and weird edge cases. <strong>Security engineers</strong> apply it to threat-model common exploit paths (XSS harvesting, replay, session fixation) and verify controls like CSRF defense and reuse detection. <strong>Engineering managers</strong> use the deliverable as a rollout reference so multiple services implement the same cookie flags, error behavior, and logging fields.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Which industries get the most value from this cookie-based JWT auth AI prompt?</span>
<!-- wp:paragraph -->
<p class="answer"><strong>SaaS companies</strong> get value because multi-tenant apps often face strict security questionnaires, and a documented cookie-based JWT approach with rotation and monitoring answers them cleanly. <strong>E-commerce brands</strong> benefit when checkout and account areas are frequent XSS targets; keeping tokens out of JavaScript reduces the blast radius of a front-end bug. <strong>Fintech and regulated products</strong> use this to align session handling with compliance expectations like strong logout behavior, session invalidation, and audit-friendly logs. <strong>Agencies building web platforms for clients</strong> can standardize an auth baseline across projects, which makes delivery faster and reduces “custom auth” liability.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Why do basic AI prompts for designing cookie-based JWT auth flows produce weak results?</span>
<!-- wp:paragraph -->
<p class="answer">A typical prompt like &#8220;<em>Write me a secure JWT auth system using cookies</em>&#8221; fails because it: lacks concrete rotation and reuse-detection rules, provides no middleware structure for verification and user-context attachment, ignores CSRF mechanics that are mandatory for cookie credentials, produces vague “set HttpOnly and Secure” advice instead of exact cookie/header patterns, and misses operational guidance like logging fields and alertable signals. You end up with something that sounds secure but falls apart under replay, logout races, and real attacker workflows.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Can I customize this cookie-based JWT auth prompt for my specific situation?</span>
<!-- wp:paragraph -->
<p class="answer">Yes. The fastest way is to prepend your environment details (SPA vs server-rendered, single domain vs subdomains, mobile clients, and whether you have a gateway/proxy that terminates TLS). Then ask for stack-specific output, for example: “Assume Node/Express + Next.js behind Cloudflare; give cookie Domain/Path, SameSite choice, CSRF header pattern, and middleware pseudocode.” If you have unusual constraints (cross-site embeds, third-party IdP, multiple APIs), say so up front and request “safe defaults” plus alternative options with tradeoffs.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">What are the most common mistakes when using this cookie-based JWT auth prompt?</span>
<!-- wp:paragraph -->
<p class="answer">The biggest mistake is leaving the deployment topology vague—instead of “a web app,” say “SPA on app.example.com calling api.example.com with credentials included.” Another common error is not asking for explicit CSRF handling; “we use cookies” is not enough, so request a specific double-submit or origin/CSRF-header pattern and when to enforce it. Teams also forget to demand refresh rotation details, which leads to replayable refresh tokens; ask for “rotation plus server-side reuse detection” and what happens on reuse. Finally, people skip monitoring outputs; insist on a list of log fields and sample events so you can detect refresh storms, invalid signature spikes, and suspicious geo/IP changes.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Who should NOT use this cookie-based JWT auth prompt?</span>
<!-- wp:paragraph -->
<p class="answer">This prompt isn’t ideal for teams that need a minimal, one-endpoint demo and won’t implement rotation, invalidation, and monitoring. It’s also a poor fit if your product is strictly non-browser (for example, machine-to-machine APIs) where cookies and CSRF simply aren’t the right tools. And if you have not validated basic requirements like session duration, device trust rules, or logout expectations, the design may feel too “heavy” too early. In those cases, start by documenting requirements and threat model scope, then come back to this prompt for the production-ready version.</p>
<!-- /wp:paragraph -->
</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Which roles benefit most from this cookie-based JWT auth AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Backend engineers use this to turn “use HttpOnly cookies” into an actual flow with middleware, rotation, and server-side invalidation. Frontend leads benefit because the design keeps the UI free of token storage and refresh logic, reducing fragile client code and weird edge cases. Security engineers apply it to threat-model common exploit paths (XSS harvesting, replay, session fixation) and verify controls like CSRF defense and reuse detection. Engineering managers use the deliverable as a rollout reference so multiple services implement the same cookie flags, error behavior, and logging fields."
      }
    },
    {
      "@type": "Question",
      "name": "Which industries get the most value from this cookie-based JWT auth AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "SaaS companies get value because multi-tenant apps often face strict security questionnaires, and a documented cookie-based JWT approach with rotation and monitoring answers them cleanly. E-commerce brands benefit when checkout and account areas are frequent XSS targets; keeping tokens out of JavaScript reduces the blast radius of a front-end bug. Fintech and regulated products use this to align session handling with compliance expectations like strong logout behavior, session invalidation, and audit-friendly logs. Agencies building web platforms for clients can standardize an auth baseline across projects, which makes delivery faster and reduces “custom auth” liability."
      }
    },
    {
      "@type": "Question",
      "name": "Why do basic AI prompts for designing cookie-based JWT auth flows produce weak results?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A typical prompt like \"Write me a secure JWT auth system using cookies\" fails because it: lacks concrete rotation and reuse-detection rules, provides no middleware structure for verification and user-context attachment, ignores CSRF mechanics that are mandatory for cookie credentials, produces vague “set HttpOnly and Secure” advice instead of exact cookie/header patterns, and misses operational guidance like logging fields and alertable signals. You end up with something that sounds secure but falls apart under replay, logout races, and real attacker workflows."
      }
    },
    {
      "@type": "Question",
      "name": "Can I customize this cookie-based JWT auth prompt for my specific situation?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. The fastest way is to prepend your environment details (SPA vs server-rendered, single domain vs subdomains, mobile clients, and whether you have a gateway/proxy that terminates TLS). Then ask for stack-specific output, for example: “Assume Node/Express + Next.js behind Cloudflare; give cookie Domain/Path, SameSite choice, CSRF header pattern, and middleware pseudocode.” If you have unusual constraints (cross-site embeds, third-party IdP, multiple APIs), say so up front and request “safe defaults” plus alternative options with tradeoffs."
      }
    },
    {
      "@type": "Question",
      "name": "What are the most common mistakes when using this cookie-based JWT auth prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The biggest mistake is leaving the deployment topology vague—instead of “a web app,” say “SPA on app.example.com calling api.example.com with credentials included.” Another common error is not asking for explicit CSRF handling; “we use cookies” is not enough, so request a specific double-submit or origin/CSRF-header pattern and when to enforce it. Teams also forget to demand refresh rotation details, which leads to replayable refresh tokens; ask for “rotation plus server-side reuse detection” and what happens on reuse. Finally, people skip monitoring outputs; insist on a list of log fields and sample events so you can detect refresh storms, invalid signature spikes, and suspicious geo/IP changes."
      }
    },
    {
      "@type": "Question",
      "name": "Who should NOT use this cookie-based JWT auth prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "This prompt isn’t ideal for teams that need a minimal, one-endpoint demo and won’t implement rotation, invalidation, and monitoring. It’s also a poor fit if your product is strictly non-browser (for example, machine-to-machine APIs) where cookies and CSRF simply aren’t the right tools. And if you have not validated basic requirements like session duration, device trust rules, or logout expectations, the design may feel too “heavy” too early. In those cases, start by documenting requirements and threat model scope, then come back to this prompt for the production-ready version."
      }
    }
  ]
}
</script>
</div>

<div class="closing-section">
<!-- wp:paragraph -->
<p>Auth is either calm or chaotic. This prompt helps you design the calm version, with cookies, CSRF defense, rotation, and monitoring spelled out so you can implement it with confidence.</p>
<!-- /wp:paragraph -->
</div>]]></content:encoded>
					
		
		
		<media:content url="https://flowpast.s3.eu-north-1.amazonaws.com/featured_blog_images/5001439.webp" medium="image"></media:content>
            	</item>
		<item>
		<title>Build a Replacement Recovery Workflow with this AI Prompt</title>
		<link>https://flowpast.com/prompts/build-a-replacement-recovery-workflow-with-this-ai-prompt/</link>
		
		<dc:creator><![CDATA[Lisa Granqvist]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 02:46:17 +0000</pubDate>
				<category><![CDATA[Prompts]]></category>
		<guid isPermaLink="false">https://flowpast.com/?p=5002883</guid>

					<description><![CDATA[Replacements spiral into chaos - use this AI Prompt to build a DMAIC recovery workflow with guardrails, metrics, and abuse controls. Explore thousands of AI prompts by function and industry.]]></description>
										<content:encoded><![CDATA[<!-- FOCUS_KEYWORD: replacement recovery workflow -->

<div class="hook-introduction">

<p>Replacement requests sound simple until you scale them. Then they turn into a messy mix of inconsistent approvals, rising fraud, slow tickets, and customers who feel like they’re “being investigated” instead of helped. Costs creep up quietly, and the ops team ends up firefighting the same failure modes every week.</p>



<p>This <strong>replacement recovery workflow</strong> is built for <strong>Fulfillment Operations Managers</strong> dealing with lost-in-transit spikes, <strong>Customer Support Leads</strong> trying to shorten handle time without opening fraud loopholes, and <strong>E-commerce Directors</strong> who need to protect margin while keeping loyalty intact. The output is an interactive, staged operating model that uses DMAIC plus Service Recovery Paradox thinking, including guardrails, metrics, edge-case rules, and a “type continue to advance” build process.</p>

</div>

<div class="what-and-when-section">

<h2 class="wp-block-heading">What Does This AI Prompt Do and When to Use It?</h2>



<table class="solution-results-table three-column" role="presentation" aria-label="What this prompt does, when to use it, and what you get">
 <thead>
    <tr>
      <th scope="col">What This Prompt Does</th>
      <th scope="col">When to Use This Prompt</th>
      <th scope="col">What You&#8217;ll Get</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <ul class="automation-list">
          <li>It restates your current replacement situation, highlights the top three operational tensions, and labels assumptions before proposing solutions.</li>
          <li>It designs an end-to-end replacement-item workflow using DMAIC as the backbone, from define and measure through control.</li>
          <li>It applies Service Recovery Paradox logic so recovery actions measurably increase loyalty instead of merely closing tickets.</li>
          <li>It builds abuse-resistant decisioning, including claimant patterns, SKU risk tiers, and incentive-safe policies.</li>
          <li>It forces edge-case coverage (high-value SKUs, backorders, partial shipments, marketplace vs DTC, regulated items) so exceptions don’t become the real process.</li>
       </ul>
      </td>
      <td>
        <ul class="results-list">
          <li>Your “instant replacement” policy is getting gamed, and you need tighter controls without tanking CSAT.</li>
          <li>Replacements are taking too long because teams argue over rules, evidence thresholds, and who owns each step.</li>
          <li>You are about to enter peak season, and even small failure rates will overwhelm support and warehouse teams.</li>
          <li>Carrier performance, packaging failures, or pick/pack errors are increasing, and replacements are masking the root cause.</li>
          <li>You need to standardize a multi-channel reality (marketplace + DTC) where policies and data visibility differ.</li>
        </ul>
      </td>
       <td>
         <ul class="deliverables-list">
           <li>A staged DMAIC recovery plan with phase count matched to complexity and risk.</li>
           <li>A replacement decision framework (approve, deny, investigate, refund, reship later) with clear triggers and evidence rules.</li>
           <li>Policy guardrails and abuse controls, including repeat-claimant handling and high-value SKU thresholds.</li>
           <li>A metrics pack (speed, trust, cost, and fraud signals) that avoids vanity KPI traps.</li>
           <li>A control plan with monitoring routines, escalation paths, and “what to fix next” prompts for continuous improvement.</li>
         </ul>
       </td>
    </tr>
  </tbody>
</table>

</div>

<div class="prompt-display-section">

<h2 class="wp-block-heading">The Full AI Prompt: DMAIC Replacement Recovery Workflow Builder</h2>



<div class="prompt-viewer-wrapper" id="prompt-section">
    <div class="prompt-comparison-row prompt-premium">
        <!-- Header with buttons -->
        <div class="prompt-row-header">
            <!-- <span class="prompt-row-icon">✨</span> -->
            <span class="prompt-row-title">
                                    Step 1: Customize the prompt with your input
                            </span>
            <div class="prompt-header-buttons">
                                    <button class="prompt-header-btn prompt-header-reset" onclick="resetPrompt()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                                <button class="prompt-header-btn prompt-header-copy-green flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span>Customize and Copy Full Prompt</span>
                </button>
            </div>
        </div>

        <!-- Customize the Prompt Section -->
                    <div class="prompt-customize-section">
                <span class="customize-title">Customize the Prompt</span>
                <p class="customize-subtitle">Fill in the fields below to personalize this prompt for your needs.</p>
                <table class="customize-table">
                    <thead>
                        <tr>
                            <th>Variable</th>
                            <th>What to Enter</th>
                            <th>Customise the prompt</th>
                        </tr>
                    </thead>
                    <tbody>
                                                    <tr>
                                <td class="var-name"><code>[CONTEXT]</code></td>
                                <td class="var-desc">
                                    Provide a brief understanding of the organization&#039;s current situation, including industry, size, and any relevant challenges or dynamics.                                    <div class="var-example">For example: "A mid-sized tech company experiencing rapid growth, with teams struggling under heavy workloads and unclear priorities following a recent reorganization."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[CONTEXT]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[EMPLOYEE_DATA_SOURCE]</code></td>
                                <td class="var-desc">
                                    Specify the type of data being analyzed, such as surveys, feedback forms, or performance reviews, and any related details about its scope or collection method.                                    <div class="var-example">For example: "Annual employee engagement survey with 500 respondents across all departments and anonymized feedback from exit interviews conducted over the past year."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[EMPLOYEE_DATA_SOURCE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[ORGANIZATIONAL_CONSTRAINTS]</code></td>
                                <td class="var-desc">
                                    List any known limitations the organization faces, such as budget, time, resource availability, or leadership alignment issues, that might impact recommendations.                                    <div class="var-example">For example: "Limited budget for new initiatives and a leadership team focused on short-term revenue growth, with minimal bandwidth for structural changes in the next quarter."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[ORGANIZATIONAL_CONSTRAINTS]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[TARGET_AUDIENCE]</code></td>
                                <td class="var-desc">
                                    Describe the intended audience for the analysis and recommendations, including their roles, responsibilities, and decision-making authority.                                    <div class="var-example">For example: "Senior leadership team and HR department responsible for organizational strategy, workforce planning, and employee wellbeing initiatives."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[TARGET_AUDIENCE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[TONE]</code></td>
                                <td class="var-desc">
                                    Specify the tone or style in which the analysis and recommendations should be presented, considering the audience and context.                                    <div class="var-example">For example: "Calm, precise, and professional, avoiding sensationalism while clearly addressing risks and actionable solutions in corporate language."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[TONE]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                            </tbody>
                </table>

                <button class="copy-customized-btn flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span class="copy-customized-text">Customise the prompt now</span>
                </button>
            </div>
        
        <!-- Full Prompt Code Header -->
                    <div class="prompt-code-header">
                <span class="prompt-code-title">
                    Step 2: Copy the Prompt
                </span>
                <div class="prompt-code-buttons">
                    <!-- Reset: Only visible when unlocked -->
                    <button class="prompt-header-btn prompt-header-reset btn-when-unlocked" onclick="resetPrompt()" style="display: none;">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                    <!-- Copy Full Prompt -->
                    <button class="prompt-header-btn prompt-header-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                            <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                        </svg>
                        <span>Copy Full Prompt</span>
                    </button>
                </div>
            </div>
        

        <!-- Prompt Content -->
        <div class="prompt-box prompt-gated-wrapper">
            <!-- Gated: Blurred content -->
            <div class="prompt-gated-content">
                <div class="prompt-header-visible">OBJECTIVE</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PERSONA</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">CONSTRAINTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">What This Is NOT</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PROCESS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">INPUTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">OUTPUT SPECIFICATION</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">1) Burnout Risk Assessment Summary</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">2) Exhaustion (MBI Dimension 1)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">3) Cynicism / Detachment (MBI Dimension 2)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">4) Reduced Efficacy (MBI Dimension 3)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">5) Cross-Dimension Diagnosis (Root Cause View)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">6) Prioritized Action Plan (Table Required)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">QUALITY CHECKS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div>            </div>
            <!-- Unlocked: Full content (hidden by default) -->
            <div class="prompt-content-full" id="premium-prompt-content" style="display: none;">
                ## OBJECTIVE
Assess workplace burnout risk using the Maslach Burnout Inventory (MBI) lens, extracting early warning signals from employee survey/feedback text, linking those signals to organizational drivers, and producing a prevention-first intervention plan that targets systemic causes rather than individual “resilience” tips.

## PERSONA
Act as an organizational burnout forensics specialist: a former high-growth tech operator who personally hit severe burnout, then retrained deeply in the Maslach approach. Your writing style is calm, precise, and human—direct about risk, careful not to sensationalize, and fluent in “corporate-speak translation.”

## CONSTRAINTS
- Use the three MBI dimensions as the core organizing frame: **exhaustion**, **cynicism**, **reduced efficacy**.
- Base claims on the provided data; cite evidence snippets or specific data points.
- Separate **routine stress** from **burnout trajectory**; do not over-diagnose normal frustration.
- Prioritize **system-level contributors** (work design, staffing, role clarity, leadership signals, incentives, process load) over individual coping tactics.
- Recommendations must be **actionable**, **measurable**, and mindful of stated limits (budget/time/resources).
- Handle sensitive content respectfully; avoid medical or clinical diagnosis language.

### What This Is NOT
- Not a medical assessment, therapy, or a statement that any individual “has burnout.”
- Not a generic wellness menu (e.g., “try meditation”) unless it is explicitly tied to an organizational root cause and paired with systemic change.
- Not a legal/HR compliance opinion or investigation into specific people.

## PROCESS
1. **Pre-Analysis Understanding (required):** Start by briefly stating your understanding of the organization context and what the provided dataset appears to contain, plus any assumptions you must make.
2. **Signal Extraction:** Identify phrases, patterns, and metrics that indicate each MBI dimension. Translate euphemisms (e.g., “capacity challenges,” “engagement drift,” “performance headwinds”) into likely human experience while staying evidence-based.
3. **Stress vs. Burnout Sorting:** Label signals as (a) normal acute stress, (b) persistent strain, or (c) escalating burnout risk—explain why.
4. **Organizational Driver Mapping:** For each dimension, connect signals to plausible organizational factors (e.g., workload volatility, unclear priorities, meeting load, staffing gaps, manager capability, low recognition, role conflict, lack of autonomy, unfairness).
5. **Pattern Cuts:** Look for differences by team, role, tenure, geography, demographic group (only if present in the data), and highlight hotspots and protective pockets.
6. **Intervention Design:** Propose a three-horizon plan:
   - Rapid stabilizers (near-term relief and risk containment)
   - Structural fixes (work redesign and operating model adjustments)
   - Cultural/leadership shifts (norms, incentives, accountability)
7. **Edge Cases / Missing Info:** If inputs are thin or ambiguous, flag what’s missing, provide best-effort provisional findings, and list the minimum extra data needed to increase confidence.

## INPUTS
- **Organization type:** [CONTEXT]
- **Employee data (survey text, metrics, feedback reports):** [EMPLOYEE_DATA_SOURCE]
- **Constraints (budget, time, resources, change limitations):** [ORGANIZATIONAL_CONSTRAINTS]
- **Primary user segment (optional):** [TARGET_AUDIENCE]
- **Preferred tone (optional):** [TONE]

## OUTPUT SPECIFICATION
Use clear headings and subheadings. Write in structured paragraphs plus bullets for evidence. Bold the most important risks and actions.

### 1) Burnout Risk Assessment Summary
Include:
- {Overall Risk Level} (Low / Medium / High / Critical)
- {Top 3-5 Critical Findings} (bullets, bold key phrases)
- {Most Affected Groups/Functions} (if identifiable)
- {Confidence Level} (High/Medium/Low based on data completeness)

### 2) Exhaustion (MBI Dimension 1)
Provide:
- **Severity:** {Exhaustion Severity} (Low/Medium/High/Critical)
- **Evidence:** bullet list of {Evidence Snippet} items (quotes or data points)
- **Interpretation:** what the evidence suggests (physical/emotional/cognitive depletion)
- **Likely Organizational Contributors:** {Contributor List}
- **Early-Warning Markers to Monitor Next:** {Monitoring Indicators}

### 3) Cynicism / Detachment (MBI Dimension 2)
Provide:
- **Severity:** {Cynicism Severity}
- **Evidence:** {Evidence Snippet} bullets (e.g., withdrawal, sarcasm, blame language, “why bother” tone)
- **Interpretation:** what the distancing looks like in this org
- **Likely Organizational Contributors:** {Contributor List}
- **Protective Factors Present (if any):** {Protective Factors}

### 4) Reduced Efficacy (MBI Dimension 3)
Provide:
- **Severity:** {Efficacy Severity}
- **Evidence:** {Evidence Snippet} bullets (self-doubt, error rates if present, “no impact,” stalled progress)
- **Interpretation:** how confidence/achievement is eroding
- **Likely Organizational Contributors:** {Contributor List}
- **Second-Order Risks:** {Downstream Risks} (quality, safety, customer impact, attrition)

### 5) Cross-Dimension Diagnosis (Root Cause View)
Summarize:
- {Primary Systemic Drivers} ranked
- {Hotspots} (teams/roles) and {Bright Spots} (where strain is lower and why)
- {Stress vs Burnout Boundary Notes} (where language indicates normal pressure vs chronic harm)

### 6) Prioritized Action Plan (Table Required)
Include a table with columns:
- **Intervention**
- **Timeline** (Immediate / Near-term / Long-term, with approximate windows)
- **Resources Needed**
- **Expected Impact** (measurable outcome + who benefits)
Also add:
- {Top 3 “Start This Week” Actions}
- {Metrics to Track} (leading + lagging indicators; avoid vanity metrics)

## QUALITY CHECKS
Before finalizing, verify:
- [ ] Each MBI dimension includes **severity**, **evidence**, and **organizational drivers** (not just symptoms).
- [ ] At least one section clearly distinguishes **normal stress** from **burnout escalation** using the provided data.
- [ ] Recommendations are **measurable** and feasible within [ORGANIZATIONAL_CONSTRAINTS].
- [ ] Language avoids medical diagnosis and does not individualize blame.
- [ ] If inputs are incomplete, missing elements are explicitly listed with a minimal data request.            </div>
        </div>


    </div>

    <!-- CTA Row - Full width buttons -->
    <div class="prompt-cta-row">
        <button class="prompt-cta-btn prompt-cta-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
            </svg>
            <span class="cta-copy-text">Copy Full Prompt</span>
        </button>
    </div>
</div>

<style>
    /* Gated prompt states */
    .prompt-gated-wrapper {
        position: relative;
    }

    /* When unlocked - show full content, hide gated */
    body.flowpast-unlocked .prompt-gated-wrapper .prompt-gated-content {
        display: none;
    }

    body.flowpast-unlocked .prompt-gated-wrapper .prompt-content-full {
        display: block !important;
    }

    /* Show/hide elements based on unlock state */
    body.flowpast-unlocked .btn-when-unlocked {
        display: inline-flex !important;
    }

    .prompt-viewer-wrapper {
        scroll-margin-top: 250px;
    }

    /* ========================================
   PROMPT VIEWER - MAIN WRAPPER
   ======================================== */
    .prompt-viewer-wrapper {
        margin: 30px 0;
        display: flex;
        flex-direction: column;
        gap: 20px;
    }

    /* ========================================
   PROMPT BOX CONTAINER
   ======================================== */
    .prompt-comparison-row {
        border-radius: 12px;
        overflow: hidden;
        border: 1px solid #e0e0e0;
        background: #fff;
    }

    /* ========================================
   HEADER WITH BUTTONS
   ======================================== */
    .prompt-row-header {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 14px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
        flex-wrap: wrap;
    }

    .prompt-row-icon {
        font-size: 20px;
    }

    .prompt-row-title {
        font-weight: 600;
        font-size: 22px;
        color: #fff !important;
        text-decoration: underline
    }

    .prompt-header-buttons {
        margin-left: auto;
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
    }

    /* Header buttons */
    .prompt-header-btn {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 10px 20px;
        border-radius: 6px;
        font-size: 14px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-header-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-header-copy:hover {
        background: #2a2a2a;
    }

    .prompt-header-copy.copied {
        background: #2e7d32;
    }

    .prompt-header-copy-green {
        background: #04AA6D !important;
        color: #fff !important;
    }

    .prompt-header-copy-green:hover {
        background: #039860 !important;
    }

    .prompt-header-copy-green.copied {
        background: #2e7d32 !important;
    }

    .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-header-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-1px);
    }

    /* ========================================
   PROMPT CONTENT - FULL (NO SCROLL)
   ======================================== */
    .prompt-box {
        background: #ffffff;
    }

    .prompt-content-full {
        padding: 24px;
        margin: 0;
        color: #202124;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.7;
        white-space: pre-wrap;
        word-wrap: break-word;
        /* No scroll - show full content */
        max-height: none;
        overflow: visible;
    }

    /* Highlighted variable in prompt */
    .prompt-variable {
        background: #fff3cd;
        color: #1967d2;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #ffc107;
    }

    .prompt-variable-filled {
        background: #d4edda;
        color: #155724;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #28a745;
    }

    /* ========================================
   GATED CONTENT (NO ACCESS)
   ======================================== */
    .prompt-gated-content {
        padding: 24px;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.8;
        max-height: none;
        overflow: visible;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        cursor: default;
    }

    /* ## headers - larger, black */
    .prompt-header-visible {
        color: #202124;
        font-weight: 600;
        margin: 5px 0 0px 0;
        font-size: 20px;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        text-decoration: underline;
        text-underline-offset: 4px;
    }

    /* ### headers - smaller, black */
    .prompt-header-visible.subheader {
        color: #202124;
        font-weight: 600;
        margin: 5px 0;
        font-size: 18px;
    }

    .prompt-header-visible:first-child {
        margin-top: 0;
    }

    /* ========================================
   LOCKED SECTION BLOCK
   ======================================== */
    .locked-section {
        position: relative;
        margin: 4px 0 8px 0;
        border-radius: 6px;
        overflow: hidden;
        background: linear-gradient(110deg, #e2e8f0 8%, #f1f5f9 18%, #e2e8f0 33%);
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
    }

    .locked-section-bg {
        position: relative;
    }

    .locked-section-lines {
        padding: 8px 12px;
        position: relative;
    }

    .locked-line {
        height: 6px;
        background: rgba(255, 255, 255, 0.6);
        border-radius: 3px;
        margin-bottom: 4px;
        margin-left: 12px;
    }

    .locked-line:last-child {
        margin-bottom: 0;
    }

    .locked-section-icon {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: 10;
        font-size: 24px;
        filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1));
    }

    /* Subheader locked sections - slightly indented */
    /*  .prompt-header-visible.subheader+.locked-section {
        margin-left: 16px;
    } */

    /* ========================================
   COMPATIBILITY BADGES
   ======================================== */
    .prompt-compatibility {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 8px;
        padding: 12px 20px;
        background: #f8f9fa;
        border-top: 1px solid #e0e0e0;
    }

    .compat-label {
        font-size: 13px;
        color: #5f6368;
        font-weight: 500;
    }

    .compat-badge {
        padding: 4px 10px;
        background: #e8f0fe;
        color: #1967d2;
        border-radius: 4px;
        font-size: 12px;
        font-weight: 500;
    }

    /* ========================================
   CTA ROW - FULL WIDTH BUTTONS
   ======================================== */
    .prompt-cta-row {
        display: flex;
        gap: 16px;
        flex-wrap: wrap;
    }

    .prompt-cta-btn {
        flex: 1;
        min-width: 200px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        padding: 16px 24px;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-cta-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-copy:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-copy.copied {
        background: #2e7d32;
    }

    .prompt-cta-reset {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-reset:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-cta-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    /* ========================================
    CUSTOMIZE YOUR PROMPT SECTION
    ======================================== */
    .prompt-customize-section {
        padding: 24px;
        border-bottom: 1px solid #e0e0e0;
        background: #fafbfc;
    }

    .customize-title {
        margin: 0 0 8px 0;
        font-size: 18px;
        font-weight: 700;
        color: #202124;
    }

    .customize-subtitle {
        margin: 0 0 20px 0;
        font-size: 14px;
        color: #5f6368;
    }

    .customize-table {
        width: 100%;
        border-collapse: collapse;
        margin-bottom: 20px;
    }

    .customize-table th {
        text-align: left;
        padding: 12px;
        background: #f1f3f4;
        border: 1px solid #e0e0e0;
        font-size: 13px;
        font-weight: 600;
        color: #202124;
    }

    .customize-table td {
        padding: 12px;
        border: 1px solid #e0e0e0;
        vertical-align: top;
    }

    .customize-table .var-name {
        width: 25%;
        background: #f8f9fa;
    }

    .customize-table .var-name code {
        background: #fff3cd;
        color: #1967d2;
        border: 1px solid #ffc107;
        padding: 4px 8px;
        border-radius: 4px;
        font-size: 12px;
        word-break: break-all;
        font-weight: 600;
    }

    .customize-table .var-desc {
        width: 35%;
        font-size: 13px;
        color: #5f6368;
        line-height: 1.5;
    }

    .customize-table .var-example {
        margin-top: 8px;
        padding: 8px 10px;
        background: #f8f9fa;
        border-left: 3px solid #dadce0;
        font-size: 12px;
        color: #5f6368;
        font-style: italic;
        border-radius: 0 4px 4px 0;
    }

    .customize-table .var-input {
        width: 40%;
    }

    .customize-input {
        width: 100%;
        padding: 10px 12px;
        border: 1px solid #dadce0;
        border-radius: 6px;
        font-size: 13px;
        font-family: inherit;
        resize: vertical;
        transition: border-color 0.2s, box-shadow 0.2s;
    }

    .customize-input:focus {
        outline: none;
        border-color: rgb(5, 152, 98);
        box-shadow: 0 0 0 3px rgba(5, 152, 98, 0.1);
    }

    .customize-input::placeholder {
        color: #9aa0a6;
        font-style: italic;
    }

    .copy-customized-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        width: 100%;
        padding: 16px 24px;
        background: rgb(5, 152, 98);
        color: #fff;
        border: none;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
    }

    .copy-customized-btn:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    .copy-customized-btn.copied {
        background: #2e7d32;
    }

    /* ========================================
    FULL PROMPT CODE HEADER
    ======================================== */
    .prompt-code-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 10px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
    }

    .prompt-code-title {
        font-size: 22px;
        font-weight: 600;
        text-decoration: underline;

    }

    .prompt-code-buttons {
        display: flex;
        gap: 8px;
    }

    .prompt-code-buttons .prompt-header-btn {
        padding: 8px 14px;
        font-size: 13px;
        background: #ffffff;
        color: #202124;
        border: 1px solid #dadce0;
    }

    .prompt-code-buttons .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
        border-color: rgb(5, 152, 98);
    }

    .prompt-code-buttons .prompt-header-btn.prompt-header-access:hover {
        background: rgb(4, 130, 83) !important;
        border-color: rgb(4, 130, 83);
        color: #fff !important;
    }

    .prompt-code-buttons .prompt-header-btn:hover {
        background: #f1f3f4;
    }

    .prompt-code-buttons .prompt-header-copy.copied {
        background: #d4edda;
        color: #155724;
        border-color: #28a745;
    }

    .prompt-header-reset {
        background: #ffffff;
        color: #202124;
    }

    /* ========================================
   RESPONSIVE
   ======================================== */
    @media (max-width: 768px) {
        .prompt-row-header {
            flex-direction: column;
            align-items: flex-start;
            gap: 12px;
        }

        .prompt-header-buttons {
            margin-left: 0;
            width: 100%;
        }

        .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }

        .prompt-cta-row {
            flex-direction: column;
        }

        .prompt-cta-btn {
            width: 100%;
        }

        /* Customize table responsive */
        .customize-table,
        .customize-table thead,
        .customize-table tbody,
        .customize-table tr,
        .customize-table th,
        .customize-table td {
            display: block;
        }

        .customize-table thead {
            display: none;
        }

        .customize-table tr {
            margin-bottom: 16px;
            border: 1px solid #e0e0e0;
            border-radius: 8px;
            overflow: hidden;
        }

        .customize-table td {
            width: 100% !important;
            border: none;
            border-bottom: 1px solid #e0e0e0;
        }

        .customize-table td:last-child {
            border-bottom: none;
        }

        .customize-table .var-name {
            background: #f1f3f4;
            font-weight: 600;
        }

        .prompt-code-header {
            flex-direction: column;
            gap: 12px;
            align-items: flex-start;
        }

        .prompt-code-buttons {
            width: 100%;
        }

        .prompt-code-buttons .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }
    }
</style>

<script>
    function handlePromptCopy() {
        // Check if unlocked via cookie
        if (typeof window.flowpastIsUnlocked === 'function' && !window.flowpastIsUnlocked()) {
            // Show email popup
            if (typeof window.flowpastShowEmailPopup === 'function') {
                window.flowpastShowEmailPopup('prompt');
            }
            return;
        }

        // Copy the customized prompt (with filled variables)
        const customizedPrompt = getCustomizedPrompt();
        const copyButtons = document.querySelectorAll('.prompt-header-copy, .prompt-header-copy-green, .prompt-cta-copy, .copy-customized-btn');

        navigator.clipboard.writeText(customizedPrompt).then(() => {
            copyButtons.forEach(btn => {
                btn.classList.add('copied');
                const textSpan = btn.querySelector('span');
                if (textSpan) textSpan.textContent = 'Copied!';
            });

            setTimeout(() => {
                copyButtons.forEach(btn => {
                    btn.classList.remove('copied');
                    const textSpan = btn.querySelector('span');
                    if (textSpan) textSpan.textContent = 'Copy Full Prompt';
                });
            }, 2000);
        }).catch(err => {
            console.error('Failed to copy:', err);
        });
    }

    // Store original prompt for customization
    const originalPrompt = "## OBJECTIVE\r\nAssess workplace burnout risk using the Maslach Burnout Inventory (MBI) lens, extracting early warning signals from employee survey\/feedback text, linking those signals to organizational drivers, and producing a prevention-first intervention plan that targets systemic causes rather than individual \u201cresilience\u201d tips.\r\n\r\n## PERSONA\r\nAct as an organizational burnout forensics specialist: a former high-growth tech operator who personally hit severe burnout, then retrained deeply in the Maslach approach. Your writing style is calm, precise, and human\u2014direct about risk, careful not to sensationalize, and fluent in \u201ccorporate-speak translation.\u201d\r\n\r\n## CONSTRAINTS\r\n- Use the three MBI dimensions as the core organizing frame: **exhaustion**, **cynicism**, **reduced efficacy**.\r\n- Base claims on the provided data; cite evidence snippets or specific data points.\r\n- Separate **routine stress** from **burnout trajectory**; do not over-diagnose normal frustration.\r\n- Prioritize **system-level contributors** (work design, staffing, role clarity, leadership signals, incentives, process load) over individual coping tactics.\r\n- Recommendations must be **actionable**, **measurable**, and mindful of stated limits (budget\/time\/resources).\r\n- Handle sensitive content respectfully; avoid medical or clinical diagnosis language.\r\n\r\n### What This Is NOT\r\n- Not a medical assessment, therapy, or a statement that any individual \u201chas burnout.\u201d\r\n- Not a generic wellness menu (e.g., \u201ctry meditation\u201d) unless it is explicitly tied to an organizational root cause and paired with systemic change.\r\n- Not a legal\/HR compliance opinion or investigation into specific people.\r\n\r\n## PROCESS\r\n1. **Pre-Analysis Understanding (required):** Start by briefly stating your understanding of the organization context and what the provided dataset appears to contain, plus any assumptions you must make.\r\n2. **Signal Extraction:** Identify phrases, patterns, and metrics that indicate each MBI dimension. Translate euphemisms (e.g., \u201ccapacity challenges,\u201d \u201cengagement drift,\u201d \u201cperformance headwinds\u201d) into likely human experience while staying evidence-based.\r\n3. **Stress vs. Burnout Sorting:** Label signals as (a) normal acute stress, (b) persistent strain, or (c) escalating burnout risk\u2014explain why.\r\n4. **Organizational Driver Mapping:** For each dimension, connect signals to plausible organizational factors (e.g., workload volatility, unclear priorities, meeting load, staffing gaps, manager capability, low recognition, role conflict, lack of autonomy, unfairness).\r\n5. **Pattern Cuts:** Look for differences by team, role, tenure, geography, demographic group (only if present in the data), and highlight hotspots and protective pockets.\r\n6. **Intervention Design:** Propose a three-horizon plan:\r\n   - Rapid stabilizers (near-term relief and risk containment)\r\n   - Structural fixes (work redesign and operating model adjustments)\r\n   - Cultural\/leadership shifts (norms, incentives, accountability)\r\n7. **Edge Cases \/ Missing Info:** If inputs are thin or ambiguous, flag what\u2019s missing, provide best-effort provisional findings, and list the minimum extra data needed to increase confidence.\r\n\r\n## INPUTS\r\n- **Organization type:** [CONTEXT]\r\n- **Employee data (survey text, metrics, feedback reports):** [EMPLOYEE_DATA_SOURCE]\r\n- **Constraints (budget, time, resources, change limitations):** [ORGANIZATIONAL_CONSTRAINTS]\r\n- **Primary user segment (optional):** [TARGET_AUDIENCE]\r\n- **Preferred tone (optional):** [TONE]\r\n\r\n## OUTPUT SPECIFICATION\r\nUse clear headings and subheadings. Write in structured paragraphs plus bullets for evidence. Bold the most important risks and actions.\r\n\r\n### 1) Burnout Risk Assessment Summary\r\nInclude:\r\n- {Overall Risk Level} (Low \/ Medium \/ High \/ Critical)\r\n- {Top 3-5 Critical Findings} (bullets, bold key phrases)\r\n- {Most Affected Groups\/Functions} (if identifiable)\r\n- {Confidence Level} (High\/Medium\/Low based on data completeness)\r\n\r\n### 2) Exhaustion (MBI Dimension 1)\r\nProvide:\r\n- **Severity:** {Exhaustion Severity} (Low\/Medium\/High\/Critical)\r\n- **Evidence:** bullet list of {Evidence Snippet} items (quotes or data points)\r\n- **Interpretation:** what the evidence suggests (physical\/emotional\/cognitive depletion)\r\n- **Likely Organizational Contributors:** {Contributor List}\r\n- **Early-Warning Markers to Monitor Next:** {Monitoring Indicators}\r\n\r\n### 3) Cynicism \/ Detachment (MBI Dimension 2)\r\nProvide:\r\n- **Severity:** {Cynicism Severity}\r\n- **Evidence:** {Evidence Snippet} bullets (e.g., withdrawal, sarcasm, blame language, \u201cwhy bother\u201d tone)\r\n- **Interpretation:** what the distancing looks like in this org\r\n- **Likely Organizational Contributors:** {Contributor List}\r\n- **Protective Factors Present (if any):** {Protective Factors}\r\n\r\n### 4) Reduced Efficacy (MBI Dimension 3)\r\nProvide:\r\n- **Severity:** {Efficacy Severity}\r\n- **Evidence:** {Evidence Snippet} bullets (self-doubt, error rates if present, \u201cno impact,\u201d stalled progress)\r\n- **Interpretation:** how confidence\/achievement is eroding\r\n- **Likely Organizational Contributors:** {Contributor List}\r\n- **Second-Order Risks:** {Downstream Risks} (quality, safety, customer impact, attrition)\r\n\r\n### 5) Cross-Dimension Diagnosis (Root Cause View)\r\nSummarize:\r\n- {Primary Systemic Drivers} ranked\r\n- {Hotspots} (teams\/roles) and {Bright Spots} (where strain is lower and why)\r\n- {Stress vs Burnout Boundary Notes} (where language indicates normal pressure vs chronic harm)\r\n\r\n### 6) Prioritized Action Plan (Table Required)\r\nInclude a table with columns:\r\n- **Intervention**\r\n- **Timeline** (Immediate \/ Near-term \/ Long-term, with approximate windows)\r\n- **Resources Needed**\r\n- **Expected Impact** (measurable outcome + who benefits)\r\nAlso add:\r\n- {Top 3 \u201cStart This Week\u201d Actions}\r\n- {Metrics to Track} (leading + lagging indicators; avoid vanity metrics)\r\n\r\n## QUALITY CHECKS\r\nBefore finalizing, verify:\r\n- [ ] Each MBI dimension includes **severity**, **evidence**, and **organizational drivers** (not just symptoms).\r\n- [ ] At least one section clearly distinguishes **normal stress** from **burnout escalation** using the provided data.\r\n- [ ] Recommendations are **measurable** and feasible within [ORGANIZATIONAL_CONSTRAINTS].\r\n- [ ] Language avoids medical diagnosis and does not individualize blame.\r\n- [ ] If inputs are incomplete, missing elements are explicitly listed with a minimal data request.";
    const variables = ["[CONTEXT]","[EMPLOYEE_DATA_SOURCE]","[ORGANIZATIONAL_CONSTRAINTS]","[TARGET_AUDIENCE]","[TONE]"];
    // Initial render with highlighted variables
    document.addEventListener('DOMContentLoaded', function() {
        renderPromptWithHighlights();
    });

    // Live update prompt as user types
    document.querySelectorAll('.customize-input').forEach(input => {
        input.addEventListener('input', renderPromptWithHighlights);
    });

    function renderPromptWithHighlights() {
        const promptContent = document.getElementById('premium-prompt-content');
        if (!promptContent) return;

        let updatedPrompt = originalPrompt;
        let filledVariables = {};

        // Collect filled values
        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                filledVariables[placeholder] = value;
            }
        });

        // Replace filled variables and highlight remaining
        let htmlContent = escapeHtml(updatedPrompt);

        variables.forEach(placeholder => {
            const escapedPlaceholder = escapeHtml(placeholder);
            const regex = new RegExp(escapeRegex(escapedPlaceholder), 'g');

            if (filledVariables[placeholder]) {
                // Show filled value with green highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable-filled">' + escapeHtml(filledVariables[placeholder]) + '</span>'
                );
            } else {
                // Show original placeholder with yellow highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable">' + escapedPlaceholder + '</span>'
                );
            }
        });

        promptContent.innerHTML = htmlContent;
    }

    function escapeRegex(string) {
        return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    }

    function escapeHtml(text) {
        const div = document.createElement('div');
        div.textContent = text;
        return div.innerHTML;
    }

    function resetPrompt() {
        // Clear all input fields
        document.querySelectorAll('.customize-input').forEach(input => {
            input.value = '';
        });

        // Re-render with original placeholders highlighted
        renderPromptWithHighlights();

        // Visual feedback
        const resetBtns = document.querySelectorAll('.prompt-header-reset, .prompt-cta-reset');
        resetBtns.forEach(btn => {
            const originalText = btn.querySelector('span').textContent;
            btn.querySelector('span').textContent = 'Reset!';
            setTimeout(() => {
                btn.querySelector('span').textContent = originalText;
            }, 1000);
        });
    }


    function getCustomizedPrompt() {
        let updatedPrompt = originalPrompt;

        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                const regex = new RegExp(escapeRegex(placeholder), 'g');
                updatedPrompt = updatedPrompt.replace(regex, value);
            }
        });

        return updatedPrompt;
    }
</script>

</div>

<div class="pro-tips-section">

<h2 class="wp-block-heading">Pro Tips for Better AI Prompt Results</h2>



<ul class="wp-block-list">

<li><strong>Bring real baselines, even if they’re rough.</strong> The prompt will ask for missing details, but you’ll get sharper guardrails if you provide today’s replacement rate, lost-in-transit rate, and average resolution time. If you don’t know, estimate and label it (“~2.3% of orders request replacements; median time to resolve is 3 days”). It’s better than guessing silently.</li>


<li><strong>Define “trust” in measurable terms.</strong> Service Recovery Paradox sounds fluffy until you quantify it. Tell the model what loyalty proxy you can actually see, like repeat purchase within 60 days, negative review rate, chargeback rate, or post-contact NPS. Follow-up prompt: “Use repeat purchase within 45 days as the loyalty metric; propose two recovery treatments and how we’d test them.”</li>


<li><strong>Segment by risk, not by emotion.</strong> Many teams write rules like “VIP customers get instant replacements,” which can be expensive and easy to abuse. Instead, provide segments such as: first-time buyers, repeat customers with 0 prior claims, repeat claimants (2+ claims in 90 days), and high-value basket shoppers. Ask: “Create a tiered policy matrix by claimant history and SKU value bands.”</li>


<li><strong>After the first output, force tradeoff stress tests.</strong> The prompt naturally balances speed, cost, and fraud resistance, but you should push it harder. Try: “Now make option 1 30% faster with slightly higher cost, and option 2 20% cheaper with slightly slower resolution. Explain the failure modes and where it breaks.”</li>


<li><strong>Use edge cases as your acceptance criteria.</strong> Honestly, if the workflow fails on backorders and partial shipments, it will fail in production. Feed 3-5 ugly examples (lost-in-transit high-value SKU, partial shipment missing 1 unit, regulated item replacement restrictions), then ask: “Rewrite the decision rules so these cases are unambiguous, including escalation ownership and customer messaging constraints.”</li>

</ul>

</div>

<div class="related-prompts-section">

<h2 class="wp-block-heading">Related Prompts</h2>



<p>Once your replacement recovery workflow is stable, these prompts help you reduce repeat incidents and recover margin on the back end:</p>



<p>If you also need to offset replacement costs with smarter revenue capture, <a href="https://flowpast.com/prompts/build-post-purchase-cross-sell-flows-with-this-ai-prompt/">Build Post-Purchase Cross-Sell Flows with this AI Prompt</a> is a practical next step. When a replacement is shipped, the timing and message need to be sensitive; a structured post-purchase flow helps you choose offers that feel helpful, not opportunistic.</p>



<p>For teams doing larger catalog cleanups, <a href="https://flowpast.com/prompts/find-high-margin-low-return-product-categories-ai-prompt/">Find High-Margin Low-Return Product Categories AI Prompt</a> pairs well with recovery work. Replacements often hide which SKUs are actually creating the operational drag, so identifying “profit-dense, low-return” categories helps you shift merchandising and ad spend toward healthier lines.</p>



<p>When your leadership wants a cleaner plan for increasing AOV (without increasing support burden), use <a href="https://flowpast.com/prompts/create-complementary-product-bundles-with-this-ai-prompt/">Create Complementary Product Bundles with this AI Prompt</a>. Bundles can reduce downstream replacement noise by improving product fit and expectations, especially when you bundle accessories that prevent damage or misuse.</p>


<br>


<p>Quick reference:</p>



<ul class="wp-block-list">

<li><a href="https://flowpast.com/prompts/build-post-purchase-cross-sell-flows-with-this-ai-prompt/">Build Post-Purchase Cross-Sell Flows with this AI Prompt</a>: Post-purchase offers timed to customer events.</li>


<li><a href="https://flowpast.com/prompts/find-high-margin-low-return-product-categories-ai-prompt/">Find High-Margin Low-Return Product Categories AI Prompt</a>: Spot profitable categories with fewer returns.</li>


<li><a href="https://flowpast.com/prompts/create-complementary-product-bundles-with-this-ai-prompt/">Create Complementary Product Bundles with this AI Prompt</a>: Bundle ideas that improve fit and value.</li>


<li><a href="https://flowpast.com/prompts/build-an-upsell-and-cross-sell-playbook-with-this-ai-prompt/">Build an Upsell and Cross-Sell Playbook with this AI Prompt</a>: Full upsell/cross-sell strategy and rules.</li>


<li><a href="https://flowpast.com/prompts/build-cross-sell-and-up-sell-playbooks-ai-prompt/">Build Cross-Sell and Up-Sell Playbooks AI Prompt</a>: Offer mapping by segment and moment.</li>

</ul>

</div>

<div class="faq-section">

<h2 class="wp-block-heading">Common Questions</h2>


<div class="faq-item">
<span class="question">Which roles benefit most from this replacement recovery workflow AI prompt?</span>

<p class="answer"><strong>Head of Customer Support</strong> uses this to standardize replacement decisions so agents stop improvising and escalations drop. <strong>Fulfillment / Warehouse Operations Managers</strong> rely on it to connect replacement volume to pick-pack, inventory accuracy, and carrier handoff issues, not just “customer claims.” <strong>Fraud and Risk Analysts</strong> apply it to design evidence thresholds and repeat-claimant controls that don’t create new incentives to game the system. <strong>Customer Experience Managers</strong> use the Service Recovery Paradox elements to test recovery treatments that actually lift loyalty, not just short-term satisfaction.</p>

</div>

<div class="faq-item">
<span class="question">Which industries get the most value from this replacement recovery workflow AI prompt?</span>

<p class="answer"><strong>DTC e-commerce brands</strong> get value because replacement speed and tone directly impact repeat purchase, and fraud rings often target easy “reship” policies. The prompt helps them build tiered rules for claimant history, SKU value, and delivery proof. <strong>Marketplaces and multi-channel sellers</strong> benefit when marketplace policies conflict with DTC policies, because the workflow forces channel-specific decisioning and escalation paths. <strong>Subscription box and replenishment businesses</strong> use it to reduce churn by treating missing/late boxes as a recoverable experience, with controlled compensation and tight SLAs. <strong>Consumer electronics and high-value goods</strong> teams apply it to high-risk edge cases like serial numbers, porch piracy claims, and regulated shipping constraints.</p>

</div>

<div class="faq-item">
<span class="question">Why do basic AI prompts for building a replacement recovery workflow produce weak results?</span>

<p class="answer">A typical prompt like “Write me a replacement workflow for my store” fails because it: lacks a DMAIC backbone, so it never reaches measurement and control. It provides no abuse-resistant decision rules, which accidentally encourages “replacement shopping” and repeat claiming. It ignores operational constraints like backorders, marketplace visibility gaps, and contact-center capacity, so the workflow reads well but won’t run. It produces generic steps instead of edge-case handling for high-value SKUs, partial shipments, and lost-in-transit scenarios, where most real disputes happen. And it misses Service Recovery Paradox thinking, so you get cost-cutting guidance rather than loyalty-improving recovery treatments you can test.</p>

</div>

<div class="faq-item">
<span class="question">Can I customize this replacement recovery workflow prompt for my specific situation?</span>

<p class="answer">Yes. The prompt is designed to pause and ask for the minimum missing inputs, then adapt to your volume, current SLAs, customer segments, technical and integration limits, and operational capacity. You can steer it by being explicit about constraints (for example, “no carrier API access,” “WMS updates nightly,” or “agents cannot request ID verification in checkout markets”). After the first staged release, ask a follow-up like: “Rebuild the workflow for 15,000 orders/day, 65% marketplace, 48-hour replacement SLA, and a strict limit on manual reviews. Show what must be automated vs. handled by specialists.”</p>

</div>

<div class="faq-item">
<span class="question">What are the most common mistakes when using this replacement recovery workflow prompt?</span>

<p class="answer">The biggest mistake is leaving your context too vague, like “We do a lot of replacements,” instead of “We ship 4,000 orders/day, replacements are 2.8%, and 40% are ‘delivered-not-received’ claims.” Another common error is not naming your hard constraints; “We can integrate anything” leads to unrealistic automations, while “We only have Shopify + Zendesk, no custom app changes for 60 days” produces an implementable plan. Teams also forget to specify abuse patterns they already see (bad: “some fraud”; good: “repeat claimants with 3+ DNR claims in 30 days, often on high-value SKUs”). Finally, people skip edge cases; if you don’t mention backorders, partial shipments, and regulated items up front, you’ll end up patching the process later with inconsistent exceptions.</p>

</div>

<div class="faq-item">
<span class="question">Who should NOT use this replacement recovery workflow prompt?</span>

<p class="answer">This prompt isn’t ideal for one-off situations where you only need a single email template or a quick “approve/deny” script. It also won’t help much if you have not validated your basic fulfillment data (order status accuracy, inventory truth, carrier scan reliability), because DMAIC recommendations depend on measurable signals. And if your team wants a lightweight checklist rather than an operating model with guardrails and controls, it may feel like overkill. In those cases, start by documenting your current steps and failure reasons for two weeks, then come back with real examples.</p>

</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Which roles benefit most from this replacement recovery workflow AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Head of Customer Support uses this to standardize replacement decisions so agents stop improvising and escalations drop. Fulfillment / Warehouse Operations Managers rely on it to connect replacement volume to pick-pack, inventory accuracy, and carrier handoff issues, not just “customer claims.” Fraud and Risk Analysts apply it to design evidence thresholds and repeat-claimant controls that don’t create new incentives to game the system. Customer Experience Managers use the Service Recovery Paradox elements to test recovery treatments that actually lift loyalty, not just short-term satisfaction."
      }
    },
    {
      "@type": "Question",
      "name": "Which industries get the most value from this replacement recovery workflow AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "DTC e-commerce brands get value because replacement speed and tone directly impact repeat purchase, and fraud rings often target easy “reship” policies. The prompt helps them build tiered rules for claimant history, SKU value, and delivery proof. Marketplaces and multi-channel sellers benefit when marketplace policies conflict with DTC policies, because the workflow forces channel-specific decisioning and escalation paths. Subscription box and replenishment businesses use it to reduce churn by treating missing/late boxes as a recoverable experience, with controlled compensation and tight SLAs. Consumer electronics and high-value goods teams apply it to high-risk edge cases like serial numbers, porch piracy claims, and regulated shipping constraints."
      }
    },
    {
      "@type": "Question",
      "name": "Why do basic AI prompts for building a replacement recovery workflow produce weak results?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A typical prompt like “Write me a replacement workflow for my store” fails because it: lacks a DMAIC backbone, so it never reaches measurement and control. It provides no abuse-resistant decision rules, which accidentally encourages “replacement shopping” and repeat claiming. It ignores operational constraints like backorders, marketplace visibility gaps, and contact-center capacity, so the workflow reads well but won’t run. It produces generic steps instead of edge-case handling for high-value SKUs, partial shipments, and lost-in-transit scenarios, where most real disputes happen. And it misses Service Recovery Paradox thinking, so you get cost-cutting guidance rather than loyalty-improving recovery treatments you can test."
      }
    },
    {
      "@type": "Question",
      "name": "Can I customize this replacement recovery workflow prompt for my specific situation?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. The prompt is designed to pause and ask for the minimum missing inputs, then adapt to your volume, current SLAs, customer segments, technical and integration limits, and operational capacity. You can steer it by being explicit about constraints (for example, “no carrier API access,” “WMS updates nightly,” or “agents cannot request ID verification in checkout markets”). After the first staged release, ask a follow-up like: “Rebuild the workflow for 15,000 orders/day, 65% marketplace, 48-hour replacement SLA, and a strict limit on manual reviews. Show what must be automated vs. handled by specialists.”"
      }
    },
    {
      "@type": "Question",
      "name": "What are the most common mistakes when using this replacement recovery workflow prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The biggest mistake is leaving your context too vague, like “We do a lot of replacements,” instead of “We ship 4,000 orders/day, replacements are 2.8%, and 40% are ‘delivered-not-received’ claims.” Another common error is not naming your hard constraints; “We can integrate anything” leads to unrealistic automations, while “We only have Shopify + Zendesk, no custom app changes for 60 days” produces an implementable plan. Teams also forget to specify abuse patterns they already see (bad: “some fraud”; good: “repeat claimants with 3+ DNR claims in 30 days, often on high-value SKUs”). Finally, people skip edge cases; if you don’t mention backorders, partial shipments, and regulated items up front, you’ll end up patching the process later with inconsistent exceptions."
      }
    },
    {
      "@type": "Question",
      "name": "Who should NOT use this replacement recovery workflow prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "This prompt isn’t ideal for one-off situations where you only need a single email template or a quick “approve/deny” script. It also won’t help much if you have not validated your basic fulfillment data (order status accuracy, inventory truth, carrier scan reliability), because DMAIC recommendations depend on measurable signals. And if your team wants a lightweight checklist rather than an operating model with guardrails and controls, it may feel like overkill. In those cases, start by documenting your current steps and failure reasons for two weeks, then come back with real examples."
      }
    }
  ]
}
</script>
</div>

<div class="closing-section">

<p>Replacements don’t have to be a margin leak or a fraud magnet. Put this prompt into your AI tool, follow the staged “continue” flow, and walk away with a recovery operating model your team can actually run.</p>

</div>]]></content:encoded>
					
		
		
		<media:content url="https://flowpast.s3.eu-north-1.amazonaws.com/featured_blog_images/5002883.webp" medium="image"></media:content>
            	</item>
		<item>
		<title>Build Responsive Website Navigation with this AI Prompt</title>
		<link>https://flowpast.com/prompts/build-responsive-website-navigation-with-this-ai-prompt/</link>
		
		<dc:creator><![CDATA[Lisa Granqvist]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 02:46:13 +0000</pubDate>
				<category><![CDATA[Prompts]]></category>
		<guid isPermaLink="false">https://flowpast.com/?p=5001437</guid>

					<description><![CDATA[Menus feel unfamiliar and clunky - this AI Prompt delivers responsive accessible nav HTML CSS plus minimal JS with dropdowns and focus. Access our full AI prompt library for every model.]]></description>
										<content:encoded><![CDATA[<!-- FOCUS_KEYWORD: responsive website navigation -->
<div class="hook-introduction">

<p>Your navigation is “fine” until someone tries to use it on a phone with one thumb. Or until a keyboard user gets trapped in a dropdown. Or until your “clever” hamburger icon hides the most important pages behind an interaction no one asked for.</p>



<p>This <strong>responsive website navigation</strong> is built for <strong>web designers</strong> who need a familiar menu pattern that won’t spark stakeholder debates, <strong>frontend developers</strong> who want accessible HTML/CSS with minimal JavaScript instead of a heavy framework, and <strong>marketing teams</strong> who are tired of nav changes quietly tanking conversion. The output is implementation-ready HTML/CSS plus minimal JS for mobile and desktop behavior, with dropdowns, focus management, and practical guidance you can actually ship.</p>

</div>

<div class="what-and-when-section">

<h2 class="wp-block-heading">What Does This AI Prompt Do and When to Use It?</h2>



<table class="solution-results-table three-column" role="presentation" aria-label="What this prompt does, when to use it, and what you get">
 <thead>
    <tr>
      <th scope="col">What This Prompt Does</th>
      <th scope="col">When to Use This Prompt</th>
      <th scope="col">What You&#8217;ll Get</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <ul class="automation-list">
          <li>It selects a familiar navigation pattern based on site type and user expectations (Jakob’s Law) rather than novelty.</li>
          <li>It generates semantic, accessible HTML structure for menus and dropdowns, using ARIA only where it’s truly needed.</li>
          <li>It writes mobile-first CSS for layout, hit targets, and responsive breakpoints, then layers in desktop “power browsing” behavior.</li>
          <li>It adds minimal, unobtrusive JavaScript for toggling, state announcements, and keyboard-safe dropdown interaction.</li>
          <li>It includes implementation guidance that calls out assumptions, performance considerations, and small information-architecture fixes to flag (not rewrite).</li>
       </ul>
      </td>
      <td>
        <ul class="results-list">
          <li>You’re redesigning a header and want to avoid a “looks cool, feels confusing” navigation rollout.</li>
          <li>Your current dropdowns are mouse-only, and QA keeps finding tab-order and focus issues on desktop.</li>
          <li>Mobile users are bouncing because the menu is hard to reach, hard to tap, or hides the primary pages behind unclear icons.</li>
          <li>You need a clean baseline that passes accessibility reviews without turning into a multi-sprint refactor.</li>
          <li>Your site is growing and the nav is starting to sprawl, so you need controlled dropdowns and clear hierarchy fast.</li>
        </ul>
      </td>
       <td>
         <ul class="deliverables-list">
           <li>A complete responsive navigation code bundle (HTML + CSS + minimal JS) ready to paste into a project.</li>
           <li>Keyboard interaction rules documented in plain language (Tab, Shift+Tab, Enter, Escape, arrow keys where appropriate).</li>
           <li>A dropdown behavior spec covering open/close triggers, click-outside handling, and focus return behavior.</li>
           <li>A list of explicit assumptions plus 3–6 clarification questions to tighten fit if you provide more context.</li>
           <li>A short implementation checklist for accessibility and performance, including what to test before shipping.</li>
         </ul>
       </td>
    </tr>
  </tbody>
</table>

</div>

<div class="prompt-display-section">

<h2 class="wp-block-heading">The Full AI Prompt: Responsive Accessible Navigation System</h2>



<div class="prompt-viewer-wrapper" id="prompt-section">
    <div class="prompt-comparison-row prompt-premium">
        <!-- Header with buttons -->
        <div class="prompt-row-header">
            <!-- <span class="prompt-row-icon">✨</span> -->
            <span class="prompt-row-title">
                                    Step 1: Customize the prompt with your input
                            </span>
            <div class="prompt-header-buttons">
                                    <button class="prompt-header-btn prompt-header-reset" onclick="resetPrompt()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                                <button class="prompt-header-btn prompt-header-copy-green flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span>Customize and Copy Full Prompt</span>
                </button>
            </div>
        </div>

        <!-- Customize the Prompt Section -->
                    <div class="prompt-customize-section">
                <span class="customize-title">Customize the Prompt</span>
                <p class="customize-subtitle">Fill in the fields below to personalize this prompt for your needs.</p>
                <table class="customize-table">
                    <thead>
                        <tr>
                            <th>Variable</th>
                            <th>What to Enter</th>
                            <th>Customise the prompt</th>
                        </tr>
                    </thead>
                    <tbody>
                                                    <tr>
                                <td class="var-name"><code>[CONTEXT]</code></td>
                                <td class="var-desc">
                                    Provide the structure and key sections of the website, including the main navigation items and their organization. Be as detailed as possible.                                    <div class="var-example">For example: "Home, About Us, Services (with submenus for Consulting, Development, and Training), Blog, Contact Us."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[CONTEXT]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[NUMBER_OF_MENU_ITEMS]</code></td>
                                <td class="var-desc">
                                    Specify the number of primary navigation items that will appear in the menu. This helps define the scope of the navigation system.                                    <div class="var-example">For example: "6"</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[NUMBER_OF_MENU_ITEMS]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[TARGET_AUDIENCE]</code></td>
                                <td class="var-desc">
                                    Describe the primary users of the website, including their technical proficiency, needs, and browsing habits.                                    <div class="var-example">For example: "Small business owners who are looking for affordable digital marketing services, typically aged 30-50 with moderate technical skills."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[TARGET_AUDIENCE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[BRAND_VOICE]</code></td>
                                <td class="var-desc">
                                    Define the tone and style of communication for the website. Include adjectives or phrases that describe the desired voice.                                    <div class="var-example">For example: "Professional yet approachable, with a focus on clarity and trustworthiness."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[BRAND_VOICE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[INDUSTRY]</code></td>
                                <td class="var-desc">
                                    Specify the industry or sector the website represents. This will help tailor the navigation and design conventions.                                    <div class="var-example">For example: "Healthcare technology focused on patient data management solutions."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[INDUSTRY]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[PLATFORM]</code></td>
                                <td class="var-desc">
                                    Indicate the primary platform or CMS the website will be built on. This helps align navigation implementation with technical constraints.                                    <div class="var-example">For example: "WordPress with Elementor, or Shopify for e-commerce functionality."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[PLATFORM]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[SPECIAL_REQUIREMENTS]</code></td>
                                <td class="var-desc">
                                    List any specific needs or constraints for the navigation system, such as multilingual support, integration with analytics, or compliance standards.                                    <div class="var-example">For example: "Multilingual support for English and Spanish, GDPR compliance, and integration with Google Analytics."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[SPECIAL_REQUIREMENTS]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                            </tbody>
                </table>

                <button class="copy-customized-btn flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span class="copy-customized-text">Customise the prompt now</span>
                </button>
            </div>
        
        <!-- Full Prompt Code Header -->
                    <div class="prompt-code-header">
                <span class="prompt-code-title">
                    Step 2: Copy the Prompt
                </span>
                <div class="prompt-code-buttons">
                    <!-- Reset: Only visible when unlocked -->
                    <button class="prompt-header-btn prompt-header-reset btn-when-unlocked" onclick="resetPrompt()" style="display: none;">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                    <!-- Copy Full Prompt -->
                    <button class="prompt-header-btn prompt-header-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                            <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                        </svg>
                        <span>Copy Full Prompt</span>
                    </button>
                </div>
            </div>
        

        <!-- Prompt Content -->
        <div class="prompt-box prompt-gated-wrapper">
            <!-- Gated: Blurred content -->
            <div class="prompt-gated-content">
                <div class="prompt-header-visible">OBJECTIVE</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PERSONA</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">CONSTRAINTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">What This Is NOT</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PROCESS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">INPUTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">OUTPUT SPECIFICATION</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">1) Navigation Blueprint</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">2) HTML (Semantic + Accessible)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">3) CSS (Responsive + States + Motion)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">4) JavaScript (Only If Needed)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">5) Implementation Notes</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">6) Accessibility Confirmation Checklist</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">7) Browser Compatibility Notes</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">QUALITY CHECKS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div>            </div>
            <!-- Unlocked: Full content (hidden by default) -->
            <div class="prompt-content-full" id="premium-prompt-content" style="display: none;">
                ## OBJECTIVE
Design a website navigation system that feels instantly familiar to users (leveraging Jakob’s Law), works smoothly on mobile and desktop, supports dropdowns where needed, and meets accessibility and performance expectations. Deliver ready-to-use HTML/CSS/JS plus practical implementation guidance.

## PERSONA
Act as a navigation-focused UX architect with a background in cognitive psychology and behavioral usability research. Communicate in a clear, pragmatic style: explain decisions in terms of user expectation, scanning behavior, and cross-device constraints—without chasing novelty for its own sake.

## CONSTRAINTS
- Favor established web conventions over experimental layouts.
- Mobile-first: navigation must be effortless for thumb use and small screens.
- Desktop must support “power browsing” with robust dropdown behavior and full keyboard support.
- Accessibility is non-negotiable: semantic markup, focus management, ARIA only where necessary, and screen-reader-friendly state announcements.
- Performance-minded: prefer CSS transitions; keep JavaScript minimal and unobtrusive.
- Do not hide core navigation behind unclear icons or interactions that require instruction.

### What This Is NOT
- Not a brand-new navigation paradigm or “inventive” interaction concept.
- Not a full IA rewrite or content strategy (unless the provided hierarchy is clearly broken—then only flag issues and suggest small corrections).
- Not a design mockup in Figma; produce implementation-ready code and guidance.

## PROCESS
1. **Pre-analysis acknowledgement (required):** Briefly restate what you’re building and the key constraints you’ll follow, based on the provided inputs.
2. **Clarify missing info:** If any inputs are incomplete/ambiguous, ask focused questions first. If the user requests “just give me something,” proceed with sensible defaults and explicitly label assumptions.
3. **Expectation mapping:** Infer standard navigation patterns for the given site type and user technical comfort; align placement, labels, and interaction behaviors accordingly.
4. **Mobile-first build:** Define the small-screen experience first (hamburger-triggered menu, tap behaviors, focus handling, clear close mechanism).
5. **Desktop enhancement:** Add larger-screen layout (horizontal bar or sidebar as appropriate), dropdowns/mega-menu behavior if needed, and hover intent + touch fallbacks.
6. **Accessibility layer:** Add skip link, keyboard navigation flows, focus styles, ARIA labeling/state management, and screen-reader announcements where appropriate.
7. **Polish + states:** Implement active/current indicators, parent highlighting when in subsections, and subtle transitions that don’t harm usability.
8. **Performance + compatibility:** Keep scripts lightweight, avoid heavy DOM churn, and note browser support expectations.

## INPUTS
- **Site hierarchy / main sections:** [CONTEXT]
- **Count of top-level items:** [NUMBER_OF_MENU_ITEMS]
- **Primary user segment (and technical comfort):** [TARGET_AUDIENCE]
- **Brand/visual constraints:** [BRAND_VOICE]
- **Site category / industry:** [INDUSTRY]
- **Platform/context notes (optional: CMS/framework, existing header constraints):** [PLATFORM]
- **Any special requirements (optional: mega-menu, login area, language switcher):** [SPECIAL_REQUIREMENTS]

## OUTPUT SPECIFICATION
Provide the solution with the following deliverable structure:

### 1) Navigation Blueprint
- {Recommended Navigation Pattern} (e.g., top bar + dropdowns; sidebar for docs; etc.)
- {Menu Model} (flat vs nested; how many levels supported)
- {Key Jakob’s Law Decisions} (placement, labels, icons, interaction expectations)

### 2) HTML (Semantic + Accessible)
- One complete snippet including:
  - {Skip Link}
  - {Header/Nav Landmark}
  - {Menu Button} (mobile trigger)
  - {Menu List Markup}
  - Required ARIA only where justified

### 3) CSS (Responsive + States + Motion)
- Mobile-first styles plus desktop breakpoints
- {Focus Styles}
- {Active/Current Styles}
- {Hover/Expanded Styles}
- {Transition Rules} (CSS-based, modest and purposeful)

### 4) JavaScript (Only If Needed)
- A minimal script for:
  - {Menu Toggle Behavior}
  - {Dropdown Expand/Collapse}
  - {Keyboard Interactions} (Escape to close, arrow/tab behavior where applicable)
  - {ARIA State Sync} (e.g., aria-expanded)
- If JS is not needed, state {Reason JS Was Avoided}.

### 5) Implementation Notes
- {Assumptions Made}
- {How To Add/Remove Items}
- {Dropdown Level Guidance} (and limits)
- {Touch Device Fallback Behavior}
- {Performance Considerations}

### 6) Accessibility Confirmation Checklist
Include a checklist verifying:
- {Keyboard Reachability}
- {Visible Focus}
- {Skip Link Works}
- {Screen Reader Announcements}
- {ARIA Validity}
- {No Keyboard Traps}

### 7) Browser Compatibility Notes
- {Supported Browsers}
- {Known Limitations}
- {Fallbacks}

## QUALITY CHECKS
Before finalizing, verify and explicitly confirm:
- Navigation placement, iconography, and interactions match common conventions for [INDUSTRY] (Jakob’s Law alignment).
- Works under and over the mobile breakpoint, with no broken intermediate states.
- All interactive elements are usable by keyboard alone and have visible focus.
- Current page and section states are clearly indicated (including parent highlighting).
- JavaScript is minimal; transitions are primarily CSS; no unnecessary reflows or heavy listeners.            </div>
        </div>


    </div>

    <!-- CTA Row - Full width buttons -->
    <div class="prompt-cta-row">
        <button class="prompt-cta-btn prompt-cta-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
            </svg>
            <span class="cta-copy-text">Copy Full Prompt</span>
        </button>
    </div>
</div>

<style>
    /* Gated prompt states */
    .prompt-gated-wrapper {
        position: relative;
    }

    /* When unlocked - show full content, hide gated */
    body.flowpast-unlocked .prompt-gated-wrapper .prompt-gated-content {
        display: none;
    }

    body.flowpast-unlocked .prompt-gated-wrapper .prompt-content-full {
        display: block !important;
    }

    /* Show/hide elements based on unlock state */
    body.flowpast-unlocked .btn-when-unlocked {
        display: inline-flex !important;
    }

    .prompt-viewer-wrapper {
        scroll-margin-top: 250px;
    }

    /* ========================================
   PROMPT VIEWER - MAIN WRAPPER
   ======================================== */
    .prompt-viewer-wrapper {
        margin: 30px 0;
        display: flex;
        flex-direction: column;
        gap: 20px;
    }

    /* ========================================
   PROMPT BOX CONTAINER
   ======================================== */
    .prompt-comparison-row {
        border-radius: 12px;
        overflow: hidden;
        border: 1px solid #e0e0e0;
        background: #fff;
    }

    /* ========================================
   HEADER WITH BUTTONS
   ======================================== */
    .prompt-row-header {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 14px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
        flex-wrap: wrap;
    }

    .prompt-row-icon {
        font-size: 20px;
    }

    .prompt-row-title {
        font-weight: 600;
        font-size: 22px;
        color: #fff !important;
        text-decoration: underline
    }

    .prompt-header-buttons {
        margin-left: auto;
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
    }

    /* Header buttons */
    .prompt-header-btn {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 10px 20px;
        border-radius: 6px;
        font-size: 14px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-header-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-header-copy:hover {
        background: #2a2a2a;
    }

    .prompt-header-copy.copied {
        background: #2e7d32;
    }

    .prompt-header-copy-green {
        background: #04AA6D !important;
        color: #fff !important;
    }

    .prompt-header-copy-green:hover {
        background: #039860 !important;
    }

    .prompt-header-copy-green.copied {
        background: #2e7d32 !important;
    }

    .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-header-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-1px);
    }

    /* ========================================
   PROMPT CONTENT - FULL (NO SCROLL)
   ======================================== */
    .prompt-box {
        background: #ffffff;
    }

    .prompt-content-full {
        padding: 24px;
        margin: 0;
        color: #202124;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.7;
        white-space: pre-wrap;
        word-wrap: break-word;
        /* No scroll - show full content */
        max-height: none;
        overflow: visible;
    }

    /* Highlighted variable in prompt */
    .prompt-variable {
        background: #fff3cd;
        color: #1967d2;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #ffc107;
    }

    .prompt-variable-filled {
        background: #d4edda;
        color: #155724;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #28a745;
    }

    /* ========================================
   GATED CONTENT (NO ACCESS)
   ======================================== */
    .prompt-gated-content {
        padding: 24px;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.8;
        max-height: none;
        overflow: visible;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        cursor: default;
    }

    /* ## headers - larger, black */
    .prompt-header-visible {
        color: #202124;
        font-weight: 600;
        margin: 5px 0 0px 0;
        font-size: 20px;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        text-decoration: underline;
        text-underline-offset: 4px;
    }

    /* ### headers - smaller, black */
    .prompt-header-visible.subheader {
        color: #202124;
        font-weight: 600;
        margin: 5px 0;
        font-size: 18px;
    }

    .prompt-header-visible:first-child {
        margin-top: 0;
    }

    /* ========================================
   LOCKED SECTION BLOCK
   ======================================== */
    .locked-section {
        position: relative;
        margin: 4px 0 8px 0;
        border-radius: 6px;
        overflow: hidden;
        background: linear-gradient(110deg, #e2e8f0 8%, #f1f5f9 18%, #e2e8f0 33%);
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
    }

    .locked-section-bg {
        position: relative;
    }

    .locked-section-lines {
        padding: 8px 12px;
        position: relative;
    }

    .locked-line {
        height: 6px;
        background: rgba(255, 255, 255, 0.6);
        border-radius: 3px;
        margin-bottom: 4px;
        margin-left: 12px;
    }

    .locked-line:last-child {
        margin-bottom: 0;
    }

    .locked-section-icon {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: 10;
        font-size: 24px;
        filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1));
    }

    /* Subheader locked sections - slightly indented */
    /*  .prompt-header-visible.subheader+.locked-section {
        margin-left: 16px;
    } */

    /* ========================================
   COMPATIBILITY BADGES
   ======================================== */
    .prompt-compatibility {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 8px;
        padding: 12px 20px;
        background: #f8f9fa;
        border-top: 1px solid #e0e0e0;
    }

    .compat-label {
        font-size: 13px;
        color: #5f6368;
        font-weight: 500;
    }

    .compat-badge {
        padding: 4px 10px;
        background: #e8f0fe;
        color: #1967d2;
        border-radius: 4px;
        font-size: 12px;
        font-weight: 500;
    }

    /* ========================================
   CTA ROW - FULL WIDTH BUTTONS
   ======================================== */
    .prompt-cta-row {
        display: flex;
        gap: 16px;
        flex-wrap: wrap;
    }

    .prompt-cta-btn {
        flex: 1;
        min-width: 200px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        padding: 16px 24px;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-cta-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-copy:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-copy.copied {
        background: #2e7d32;
    }

    .prompt-cta-reset {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-reset:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-cta-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    /* ========================================
    CUSTOMIZE YOUR PROMPT SECTION
    ======================================== */
    .prompt-customize-section {
        padding: 24px;
        border-bottom: 1px solid #e0e0e0;
        background: #fafbfc;
    }

    .customize-title {
        margin: 0 0 8px 0;
        font-size: 18px;
        font-weight: 700;
        color: #202124;
    }

    .customize-subtitle {
        margin: 0 0 20px 0;
        font-size: 14px;
        color: #5f6368;
    }

    .customize-table {
        width: 100%;
        border-collapse: collapse;
        margin-bottom: 20px;
    }

    .customize-table th {
        text-align: left;
        padding: 12px;
        background: #f1f3f4;
        border: 1px solid #e0e0e0;
        font-size: 13px;
        font-weight: 600;
        color: #202124;
    }

    .customize-table td {
        padding: 12px;
        border: 1px solid #e0e0e0;
        vertical-align: top;
    }

    .customize-table .var-name {
        width: 25%;
        background: #f8f9fa;
    }

    .customize-table .var-name code {
        background: #fff3cd;
        color: #1967d2;
        border: 1px solid #ffc107;
        padding: 4px 8px;
        border-radius: 4px;
        font-size: 12px;
        word-break: break-all;
        font-weight: 600;
    }

    .customize-table .var-desc {
        width: 35%;
        font-size: 13px;
        color: #5f6368;
        line-height: 1.5;
    }

    .customize-table .var-example {
        margin-top: 8px;
        padding: 8px 10px;
        background: #f8f9fa;
        border-left: 3px solid #dadce0;
        font-size: 12px;
        color: #5f6368;
        font-style: italic;
        border-radius: 0 4px 4px 0;
    }

    .customize-table .var-input {
        width: 40%;
    }

    .customize-input {
        width: 100%;
        padding: 10px 12px;
        border: 1px solid #dadce0;
        border-radius: 6px;
        font-size: 13px;
        font-family: inherit;
        resize: vertical;
        transition: border-color 0.2s, box-shadow 0.2s;
    }

    .customize-input:focus {
        outline: none;
        border-color: rgb(5, 152, 98);
        box-shadow: 0 0 0 3px rgba(5, 152, 98, 0.1);
    }

    .customize-input::placeholder {
        color: #9aa0a6;
        font-style: italic;
    }

    .copy-customized-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        width: 100%;
        padding: 16px 24px;
        background: rgb(5, 152, 98);
        color: #fff;
        border: none;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
    }

    .copy-customized-btn:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    .copy-customized-btn.copied {
        background: #2e7d32;
    }

    /* ========================================
    FULL PROMPT CODE HEADER
    ======================================== */
    .prompt-code-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 10px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
    }

    .prompt-code-title {
        font-size: 22px;
        font-weight: 600;
        text-decoration: underline;

    }

    .prompt-code-buttons {
        display: flex;
        gap: 8px;
    }

    .prompt-code-buttons .prompt-header-btn {
        padding: 8px 14px;
        font-size: 13px;
        background: #ffffff;
        color: #202124;
        border: 1px solid #dadce0;
    }

    .prompt-code-buttons .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
        border-color: rgb(5, 152, 98);
    }

    .prompt-code-buttons .prompt-header-btn.prompt-header-access:hover {
        background: rgb(4, 130, 83) !important;
        border-color: rgb(4, 130, 83);
        color: #fff !important;
    }

    .prompt-code-buttons .prompt-header-btn:hover {
        background: #f1f3f4;
    }

    .prompt-code-buttons .prompt-header-copy.copied {
        background: #d4edda;
        color: #155724;
        border-color: #28a745;
    }

    .prompt-header-reset {
        background: #ffffff;
        color: #202124;
    }

    /* ========================================
   RESPONSIVE
   ======================================== */
    @media (max-width: 768px) {
        .prompt-row-header {
            flex-direction: column;
            align-items: flex-start;
            gap: 12px;
        }

        .prompt-header-buttons {
            margin-left: 0;
            width: 100%;
        }

        .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }

        .prompt-cta-row {
            flex-direction: column;
        }

        .prompt-cta-btn {
            width: 100%;
        }

        /* Customize table responsive */
        .customize-table,
        .customize-table thead,
        .customize-table tbody,
        .customize-table tr,
        .customize-table th,
        .customize-table td {
            display: block;
        }

        .customize-table thead {
            display: none;
        }

        .customize-table tr {
            margin-bottom: 16px;
            border: 1px solid #e0e0e0;
            border-radius: 8px;
            overflow: hidden;
        }

        .customize-table td {
            width: 100% !important;
            border: none;
            border-bottom: 1px solid #e0e0e0;
        }

        .customize-table td:last-child {
            border-bottom: none;
        }

        .customize-table .var-name {
            background: #f1f3f4;
            font-weight: 600;
        }

        .prompt-code-header {
            flex-direction: column;
            gap: 12px;
            align-items: flex-start;
        }

        .prompt-code-buttons {
            width: 100%;
        }

        .prompt-code-buttons .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }
    }
</style>

<script>
    function handlePromptCopy() {
        // Check if unlocked via cookie
        if (typeof window.flowpastIsUnlocked === 'function' && !window.flowpastIsUnlocked()) {
            // Show email popup
            if (typeof window.flowpastShowEmailPopup === 'function') {
                window.flowpastShowEmailPopup('prompt');
            }
            return;
        }

        // Copy the customized prompt (with filled variables)
        const customizedPrompt = getCustomizedPrompt();
        const copyButtons = document.querySelectorAll('.prompt-header-copy, .prompt-header-copy-green, .prompt-cta-copy, .copy-customized-btn');

        navigator.clipboard.writeText(customizedPrompt).then(() => {
            copyButtons.forEach(btn => {
                btn.classList.add('copied');
                const textSpan = btn.querySelector('span');
                if (textSpan) textSpan.textContent = 'Copied!';
            });

            setTimeout(() => {
                copyButtons.forEach(btn => {
                    btn.classList.remove('copied');
                    const textSpan = btn.querySelector('span');
                    if (textSpan) textSpan.textContent = 'Copy Full Prompt';
                });
            }, 2000);
        }).catch(err => {
            console.error('Failed to copy:', err);
        });
    }

    // Store original prompt for customization
    const originalPrompt = "## OBJECTIVE\r\nDesign a website navigation system that feels instantly familiar to users (leveraging Jakob\u2019s Law), works smoothly on mobile and desktop, supports dropdowns where needed, and meets accessibility and performance expectations. Deliver ready-to-use HTML\/CSS\/JS plus practical implementation guidance.\r\n\r\n## PERSONA\r\nAct as a navigation-focused UX architect with a background in cognitive psychology and behavioral usability research. Communicate in a clear, pragmatic style: explain decisions in terms of user expectation, scanning behavior, and cross-device constraints\u2014without chasing novelty for its own sake.\r\n\r\n## CONSTRAINTS\r\n- Favor established web conventions over experimental layouts.\r\n- Mobile-first: navigation must be effortless for thumb use and small screens.\r\n- Desktop must support \u201cpower browsing\u201d with robust dropdown behavior and full keyboard support.\r\n- Accessibility is non-negotiable: semantic markup, focus management, ARIA only where necessary, and screen-reader-friendly state announcements.\r\n- Performance-minded: prefer CSS transitions; keep JavaScript minimal and unobtrusive.\r\n- Do not hide core navigation behind unclear icons or interactions that require instruction.\r\n\r\n### What This Is NOT\r\n- Not a brand-new navigation paradigm or \u201cinventive\u201d interaction concept.\r\n- Not a full IA rewrite or content strategy (unless the provided hierarchy is clearly broken\u2014then only flag issues and suggest small corrections).\r\n- Not a design mockup in Figma; produce implementation-ready code and guidance.\r\n\r\n## PROCESS\r\n1. **Pre-analysis acknowledgement (required):** Briefly restate what you\u2019re building and the key constraints you\u2019ll follow, based on the provided inputs.\r\n2. **Clarify missing info:** If any inputs are incomplete\/ambiguous, ask focused questions first. If the user requests \u201cjust give me something,\u201d proceed with sensible defaults and explicitly label assumptions.\r\n3. **Expectation mapping:** Infer standard navigation patterns for the given site type and user technical comfort; align placement, labels, and interaction behaviors accordingly.\r\n4. **Mobile-first build:** Define the small-screen experience first (hamburger-triggered menu, tap behaviors, focus handling, clear close mechanism).\r\n5. **Desktop enhancement:** Add larger-screen layout (horizontal bar or sidebar as appropriate), dropdowns\/mega-menu behavior if needed, and hover intent + touch fallbacks.\r\n6. **Accessibility layer:** Add skip link, keyboard navigation flows, focus styles, ARIA labeling\/state management, and screen-reader announcements where appropriate.\r\n7. **Polish + states:** Implement active\/current indicators, parent highlighting when in subsections, and subtle transitions that don\u2019t harm usability.\r\n8. **Performance + compatibility:** Keep scripts lightweight, avoid heavy DOM churn, and note browser support expectations.\r\n\r\n## INPUTS\r\n- **Site hierarchy \/ main sections:** [CONTEXT]\r\n- **Count of top-level items:** [NUMBER_OF_MENU_ITEMS]\r\n- **Primary user segment (and technical comfort):** [TARGET_AUDIENCE]\r\n- **Brand\/visual constraints:** [BRAND_VOICE]\r\n- **Site category \/ industry:** [INDUSTRY]\r\n- **Platform\/context notes (optional: CMS\/framework, existing header constraints):** [PLATFORM]\r\n- **Any special requirements (optional: mega-menu, login area, language switcher):** [SPECIAL_REQUIREMENTS]\r\n\r\n## OUTPUT SPECIFICATION\r\nProvide the solution with the following deliverable structure:\r\n\r\n### 1) Navigation Blueprint\r\n- {Recommended Navigation Pattern} (e.g., top bar + dropdowns; sidebar for docs; etc.)\r\n- {Menu Model} (flat vs nested; how many levels supported)\r\n- {Key Jakob\u2019s Law Decisions} (placement, labels, icons, interaction expectations)\r\n\r\n### 2) HTML (Semantic + Accessible)\r\n- One complete snippet including:\r\n  - {Skip Link}\r\n  - {Header\/Nav Landmark}\r\n  - {Menu Button} (mobile trigger)\r\n  - {Menu List Markup}\r\n  - Required ARIA only where justified\r\n\r\n### 3) CSS (Responsive + States + Motion)\r\n- Mobile-first styles plus desktop breakpoints\r\n- {Focus Styles}\r\n- {Active\/Current Styles}\r\n- {Hover\/Expanded Styles}\r\n- {Transition Rules} (CSS-based, modest and purposeful)\r\n\r\n### 4) JavaScript (Only If Needed)\r\n- A minimal script for:\r\n  - {Menu Toggle Behavior}\r\n  - {Dropdown Expand\/Collapse}\r\n  - {Keyboard Interactions} (Escape to close, arrow\/tab behavior where applicable)\r\n  - {ARIA State Sync} (e.g., aria-expanded)\r\n- If JS is not needed, state {Reason JS Was Avoided}.\r\n\r\n### 5) Implementation Notes\r\n- {Assumptions Made}\r\n- {How To Add\/Remove Items}\r\n- {Dropdown Level Guidance} (and limits)\r\n- {Touch Device Fallback Behavior}\r\n- {Performance Considerations}\r\n\r\n### 6) Accessibility Confirmation Checklist\r\nInclude a checklist verifying:\r\n- {Keyboard Reachability}\r\n- {Visible Focus}\r\n- {Skip Link Works}\r\n- {Screen Reader Announcements}\r\n- {ARIA Validity}\r\n- {No Keyboard Traps}\r\n\r\n### 7) Browser Compatibility Notes\r\n- {Supported Browsers}\r\n- {Known Limitations}\r\n- {Fallbacks}\r\n\r\n## QUALITY CHECKS\r\nBefore finalizing, verify and explicitly confirm:\r\n- Navigation placement, iconography, and interactions match common conventions for [INDUSTRY] (Jakob\u2019s Law alignment).\r\n- Works under and over the mobile breakpoint, with no broken intermediate states.\r\n- All interactive elements are usable by keyboard alone and have visible focus.\r\n- Current page and section states are clearly indicated (including parent highlighting).\r\n- JavaScript is minimal; transitions are primarily CSS; no unnecessary reflows or heavy listeners.";
    const variables = ["[CONTEXT]","[NUMBER_OF_MENU_ITEMS]","[TARGET_AUDIENCE]","[BRAND_VOICE]","[INDUSTRY]","[PLATFORM]","[SPECIAL_REQUIREMENTS]"];
    // Initial render with highlighted variables
    document.addEventListener('DOMContentLoaded', function() {
        renderPromptWithHighlights();
    });

    // Live update prompt as user types
    document.querySelectorAll('.customize-input').forEach(input => {
        input.addEventListener('input', renderPromptWithHighlights);
    });

    function renderPromptWithHighlights() {
        const promptContent = document.getElementById('premium-prompt-content');
        if (!promptContent) return;

        let updatedPrompt = originalPrompt;
        let filledVariables = {};

        // Collect filled values
        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                filledVariables[placeholder] = value;
            }
        });

        // Replace filled variables and highlight remaining
        let htmlContent = escapeHtml(updatedPrompt);

        variables.forEach(placeholder => {
            const escapedPlaceholder = escapeHtml(placeholder);
            const regex = new RegExp(escapeRegex(escapedPlaceholder), 'g');

            if (filledVariables[placeholder]) {
                // Show filled value with green highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable-filled">' + escapeHtml(filledVariables[placeholder]) + '</span>'
                );
            } else {
                // Show original placeholder with yellow highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable">' + escapedPlaceholder + '</span>'
                );
            }
        });

        promptContent.innerHTML = htmlContent;
    }

    function escapeRegex(string) {
        return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    }

    function escapeHtml(text) {
        const div = document.createElement('div');
        div.textContent = text;
        return div.innerHTML;
    }

    function resetPrompt() {
        // Clear all input fields
        document.querySelectorAll('.customize-input').forEach(input => {
            input.value = '';
        });

        // Re-render with original placeholders highlighted
        renderPromptWithHighlights();

        // Visual feedback
        const resetBtns = document.querySelectorAll('.prompt-header-reset, .prompt-cta-reset');
        resetBtns.forEach(btn => {
            const originalText = btn.querySelector('span').textContent;
            btn.querySelector('span').textContent = 'Reset!';
            setTimeout(() => {
                btn.querySelector('span').textContent = originalText;
            }, 1000);
        });
    }


    function getCustomizedPrompt() {
        let updatedPrompt = originalPrompt;

        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                const regex = new RegExp(escapeRegex(placeholder), 'g');
                updatedPrompt = updatedPrompt.replace(regex, value);
            }
        });

        return updatedPrompt;
    }
</script>

</div>

<div class="pro-tips-section">

<h2 class="wp-block-heading">Pro Tips for Better AI Prompt Results</h2>



<ul class="wp-block-list">

<li><strong>Provide your real nav hierarchy (even if it’s messy).</strong> Paste the current top-level items and dropdown groupings so the prompt can keep conventions while spotting small fixes. If you don’t have it documented, export it from your sitemap or copy it from your header HTML and label what’s “primary” vs “secondary.”</li>


<li><strong>Tell it what “site type” you’re building.</strong> Jakob’s Law only helps if the model knows what users expect, so add one line like: “This is a B2B SaaS marketing site” or “This is an ecommerce store with 200+ SKUs.” Follow-up you can use: “List the 3 most expected nav patterns for this site type and pick one with a short justification.”</li>


<li><strong>Define your breakpoints and header constraints.</strong> Mention your container width, logo size, sticky vs non-sticky header, and any existing design system tokens. Example: “Header is sticky, 72px tall, max width 1200px, we use 8px spacing and 4px radius.” Small details like that prevent awkward CSS.</li>


<li><strong>Iterate on interaction, not just layout.</strong> After the first output, ask: “Now make the desktop dropdowns open on click (not hover), add click-outside to close, and ensure focus returns to the trigger when Escape closes the menu.” This tends to surface the real bugs before you paste anything into production.</li>


<li><strong>Combine it with a test plan request.</strong> Once you like the code, run: “Create a QA checklist for this nav across iOS Safari, Android Chrome, and desktop Chrome/Firefox, including keyboard-only and screen reader smoke tests.” Honestly, this is where most nav implementations fall apart.</li>

</ul>

</div>

<div class="related-prompts-section">

<h2 class="wp-block-heading">Related Prompts</h2>



<p>If you’re standardizing how work gets done across teams, these prompts pair well once your navigation is under control.</p>



<p>If you also need a structured way to evaluate partners after your site update, <a href="https://flowpast.com/prompts/build-supplier-reliability-scorecards-ai-prompt/">Build Supplier Reliability Scorecards AI Prompt</a> is useful for turning qualitative feedback into consistent scoring. It’s a good follow-on when you’re tightening operations and want fewer “gut feel” decisions.</p>



<p>For teams doing vendor outreach or onboarding as part of a broader relaunch, <a href="https://flowpast.com/prompts/build-a-supplier-sourcing-playbook-with-this-ai-prompt/">Build a Supplier Sourcing Playbook with this AI Prompt</a> helps you document steps, criteria, and checkpoints. Think of it as the operational counterpart to a cleaner customer experience.</p>



<p>When negotiation cycles drag (and they usually do), <a href="https://flowpast.com/prompts/create-supplier-negotiation-templates-ai-prompt/">Create Supplier Negotiation Templates AI Prompt</a> gives you reusable language and structure, so you’re not rewriting the same emails and terms from scratch. It’s especially handy once you start scaling spend and need consistency.</p>


<br>


<p>Quick reference:</p>



<ul class="wp-block-list">

<li><a href="https://flowpast.com/prompts/build-supplier-reliability-scorecards-ai-prompt/">Build Supplier Reliability Scorecards AI Prompt</a>: Turn supplier performance into consistent scoring.</li>


<li><a href="https://flowpast.com/prompts/build-a-supplier-sourcing-playbook-with-this-ai-prompt/">Build a Supplier Sourcing Playbook with this AI Prompt</a>: Document sourcing steps, criteria, and checkpoints.</li>

<li><a href="https://flowpast.com/prompts/create-supplier-negotiation-templates-ai-prompt/">Create Supplier Negotiation Templates AI Prompt</a>: Reusable negotiation scripts and templates.</li>


<li><a href="https://flowpast.com/prompts/write-buyer-first-supplier-follow-ups-ai-prompt/">Write Buyer-First Supplier Follow-Ups AI Prompt</a>: Follow-ups that protect leverage and clarity.</li>


<li><a href="https://flowpast.com/prompts/build-a-rep-sales-workflow-checklist-with-this-ai-prompt/">Build a Rep Sales Workflow Checklist with this AI Prompt</a>: Step-by-step workflow for sales execution.</li>

</ul>
<!-- /wp:post-content -->
</div>

<div class="faq-section">
<!-- wp:heading {"level":2} -->
<h2 class="wp-block-heading">Common Questions</h2>
<!-- /wp:heading -->

<div class="faq-item">
<span class="question">Which roles benefit most from this responsive website navigation AI prompt?</span>
<!-- wp:paragraph -->
<p class="answer"><strong>Frontend Developers</strong> use this to get a solid, accessible baseline (semantic HTML, keyboard behavior, minimal JS) they can drop into an existing codebase without reinventing dropdown logic. <strong>UX Designers</strong> rely on it to map navigation patterns to user expectations, so the menu feels familiar instead of “creative.” <strong>Marketing Managers</strong> benefit because the prompt pushes clarity and scannability, which reduces friction on high-intent pages like pricing and demos. <strong>Accessibility Leads</strong> like it because it treats focus management and screen-reader announcements as first-class requirements, not an afterthought.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Which industries get the most value from this responsive website navigation AI prompt?</span>
<!-- wp:paragraph -->
<p class="answer"><strong>SaaS companies</strong> get value because their nav often needs clear paths to product, pricing, integrations, and support, with dropdowns that don’t break keyboard use. <strong>E-commerce brands</strong> benefit when category navigation must stay thumb-friendly on mobile while still supporting deeper browsing on desktop. <strong>Professional services firms</strong> use it to make “Services / Industries / Case Studies / Contact” easy to scan, which helps visitors self-qualify quickly. <strong>Content-heavy publishers</strong> can apply it to organize sections and topics without burying core navigation behind unclear patterns.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Why do basic AI prompts for building responsive accessible navigation produce weak results?</span>
<!-- wp:paragraph -->
<p class="answer">A typical prompt like &#8220;<em>Write me a responsive navbar with dropdowns</em>&#8221; fails because it: lacks the expectation mapping that keeps patterns familiar for the site type, provides no keyboard interaction model (so focus gets lost or trapped), ignores accessible semantics (or misuses ARIA everywhere), produces flashy code that’s hard to maintain instead of a minimal-JS approach, and misses mobile thumb constraints like hit target sizing and tap-friendly toggles. You end up with a demo, not a navigation system you can ship.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Can I customize this responsive website navigation prompt for my specific situation?</span>
<!-- wp:paragraph -->
<p class="answer">Yes, and you should, because the best navigation depends on your hierarchy, labels, and device constraints. Add your menu structure, your site type, and your header rules (sticky or not, breakpoints, logo width, and whether you need one or multiple dropdown levels). If your team has accessibility requirements, specify things like “Escape closes menus and returns focus to the trigger” and “no hover-only interactions.” Follow-up prompt: “Using my hierarchy, generate two variants (click-to-open dropdowns vs hybrid hover+focus) and explain which is safer for accessibility and why.”</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">What are the most common mistakes when using this responsive website navigation prompt?</span>
<!-- wp:paragraph -->
<p class="answer">The biggest mistake is leaving the hierarchy implied — instead of “Home, About, Services, Blog,” provide “Services (Design, Development, Retainers), Resources (Blog, Guides, Webinars), Company (About, Careers, Contact).” Another common error is not stating interaction requirements; “make it modern” is vague, but “click-to-open on desktop, tap-to-open on mobile, Escape closes, click-outside closes” is actionable. People also forget constraints like sticky headers and safe-area padding; “works on mobile” is weaker than “must be thumb-friendly on iPhone 13 mini and not collide with a 72px sticky header.” Finally, skipping assumptions review causes mismatch, so ask it to list assumptions and confirm them before you implement.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Who should NOT use this responsive website navigation prompt?</span>
<!-- wp:paragraph -->
<p class="answer">This prompt isn’t ideal for teams looking for a fully custom animated navigation experience or a brand-new interaction paradigm, because it intentionally favors proven conventions. It’s also not a fit if you need a complete information architecture rewrite, since it only flags issues and suggests small corrections. If you just want a one-line copy-paste snippet with no testing or iteration, you’ll probably ignore the accessibility and focus details that make it valuable. In those cases, use a simple framework component and accept the trade-offs.</p>
<!-- /wp:paragraph -->
</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Which roles benefit most from this responsive website navigation AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Frontend Developers use this to get a solid, accessible baseline (semantic HTML, keyboard behavior, minimal JS) they can drop into an existing codebase without reinventing dropdown logic. UX Designers rely on it to map navigation patterns to user expectations, so the menu feels familiar instead of “creative.” Marketing Managers benefit because the prompt pushes clarity and scannability, which reduces friction on high-intent pages like pricing and demos. Accessibility Leads like it because it treats focus management and screen-reader announcements as first-class requirements, not an afterthought."
      }
    },
    {
      "@type": "Question",
      "name": "Which industries get the most value from this responsive website navigation AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "SaaS companies get value because their nav often needs clear paths to product, pricing, integrations, and support, with dropdowns that don’t break keyboard use. E-commerce brands benefit when category navigation must stay thumb-friendly on mobile while still supporting deeper browsing on desktop. Professional services firms use it to make “Services / Industries / Case Studies / Contact” easy to scan, which helps visitors self-qualify quickly. Content-heavy publishers can apply it to organize sections and topics without burying core navigation behind unclear patterns."
      }
    },
    {
      "@type": "Question",
      "name": "Why do basic AI prompts for building responsive accessible navigation produce weak results?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A typical prompt like \"Write me a responsive navbar with dropdowns\" fails because it: lacks the expectation mapping that keeps patterns familiar for the site type, provides no keyboard interaction model (so focus gets lost or trapped), ignores accessible semantics (or misuses ARIA everywhere), produces flashy code that’s hard to maintain instead of a minimal-JS approach, and misses mobile thumb constraints like hit target sizing and tap-friendly toggles. You end up with a demo, not a navigation system you can ship."
      }
    },
    {
      "@type": "Question",
      "name": "Can I customize this responsive website navigation prompt for my specific situation?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, and you should, because the best navigation depends on your hierarchy, labels, and device constraints. Add your menu structure, your site type, and your header rules (sticky or not, breakpoints, logo width, and whether you need one or multiple dropdown levels). If your team has accessibility requirements, specify things like “Escape closes menus and returns focus to the trigger” and “no hover-only interactions.” Follow-up prompt: “Using my hierarchy, generate two variants (click-to-open dropdowns vs hybrid hover+focus) and explain which is safer for accessibility and why.”"
      }
    },
    {
      "@type": "Question",
      "name": "What are the most common mistakes when using this responsive website navigation prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The biggest mistake is leaving the hierarchy implied — instead of “Home, About, Services, Blog,” provide “Services (Design, Development, Retainers), Resources (Blog, Guides, Webinars), Company (About, Careers, Contact).” Another common error is not stating interaction requirements; “make it modern” is vague, but “click-to-open on desktop, tap-to-open on mobile, Escape closes, click-outside closes” is actionable. People also forget constraints like sticky headers and safe-area padding; “works on mobile” is weaker than “must be thumb-friendly on iPhone 13 mini and not collide with a 72px sticky header.” Finally, skipping assumptions review causes mismatch, so ask it to list assumptions and confirm them before you implement."
      }
    },
    {
      "@type": "Question",
      "name": "Who should NOT use this responsive website navigation prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "This prompt isn’t ideal for teams looking for a fully custom animated navigation experience or a brand-new interaction paradigm, because it intentionally favors proven conventions. It’s also not a fit if you need a complete information architecture rewrite, since it only flags issues and suggests small corrections. If you just want a one-line copy-paste snippet with no testing or iteration, you’ll probably ignore the accessibility and focus details that make it valuable. In those cases, use a simple framework component and accept the trade-offs."
      }
    }
  ]
}
</script>
</div>

<div class="closing-section">
<!-- wp:paragraph -->
<p>Navigation is the one interface every visitor uses, and most people only notice it when it fails. Use this prompt, paste the output into your build, and get a responsive, accessible menu that feels familiar and works.</p>
<!-- /wp:paragraph -->
</div>]]></content:encoded>
					
		
		
		<media:content url="https://flowpast.s3.eu-north-1.amazonaws.com/featured_blog_images/5001437.webp" medium="image"></media:content>
            	</item>
		<item>
		<title>Customer Discovery Roleplay Interview AI Prompt</title>
		<link>https://flowpast.com/prompts/customer-discovery-roleplay-interview-ai-prompt/</link>
		
		<dc:creator><![CDATA[Lisa Granqvist]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 02:45:42 +0000</pubDate>
				<category><![CDATA[Prompts]]></category>
		<guid isPermaLink="false">https://flowpast.com/?p=5000157</guid>

					<description><![CDATA[Interviews feel scripted and shallow - a ready-to-use AI Prompt that roleplays real buyers and surfaces objections, triggers, and language. Discover more AI prompts for marketing, sales, and ops.]]></description>
										<content:encoded><![CDATA[<!-- FOCUS_KEYWORD: discovery interview roleplay -->
<div class="hook-introduction">

<p>Customer interviews fall apart in two predictable ways. They get polite and vague, or they turn into a pitch disguised as “research.” Then you’re left with notes that sound nice but don’t change your landing page, offer, or outbound message.</p>



<p>This <strong>discovery interview roleplay</strong> is built for <strong>founders</strong> refining positioning before a launch, <strong>growth marketers</strong> who need sharper objections and real language for ads, and <strong>consultants</strong> trying to pressure-test a client’s offer without booking ten calls. The output is an in-character “buyer” you can interview live, complete with motivations, constraints, purchase triggers, alternatives, and the messy details that usually don’t show up in surveys.</p>

</div>

<div class="what-and-when-section">

<h2 class="wp-block-heading">What Does This AI Prompt Do and When to Use It?</h2>



<table class="solution-results-table three-column" role="presentation" aria-label="What this prompt does, when to use it, and what you get">
 <thead>
    <tr>
      <th scope="col">What This Prompt Does</th>
      <th scope="col">When to Use This Prompt</th>
      <th scope="col">What You&#8217;ll Get</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <ul class="automation-list">
          <li>Roleplays as a realistic member of your target audience and stays in-character until you say “break the character”.</li>
          <li>Asks up to five clarifying questions when your product or audience is vague, then proceeds with clearly labeled assumptions.</li>
          <li>Answers in tight, skimmable bullets by default, while still explaining the “why” behind choices and preferences.</li>
          <li>Builds a specific persona (job, routines, constraints, social pressure) and avoids generic “everyone thinks” statements.</li>
          <li>Surfaces non-obvious friction like time/energy limits, status concerns, internal politics, switching costs, and fear of looking foolish.</li>
       </ul>
      </td>
      <td>
        <ul class="results-list">
          <li>You’re rewriting your landing page and realize your “pain points” sound like competitor copy.</li>
          <li>You did a couple of customer calls, but the notes are all compliments and no concrete tradeoffs.</li>
          <li>You’re deciding what objection-handling to build into the offer (guarantee, onboarding, pricing packaging, proof).</li>
          <li>A competitor is winning deals and you can’t tell if it’s features, trust, or simply better messaging.</li>
          <li>You need quick learning loops for a new segment before you spend on ads or commit to a big build.</li>
        </ul>
      </td>
       <td>
         <ul class="deliverables-list">
           <li>A fully roleplayed buyer persona you can interview across 15–30 questions in one session.</li>
           <li>Bullet-form answers that include motivations, constraints, and reasoning (not just “yes/no”).</li>
           <li>A realistic set of objections, alternatives considered, and what would have to be true to buy.</li>
           <li>Purchase triggers and “moments of change” that signal urgency, plus what delays action.</li>
           <li>Plain-language phrases you can reuse in copy, emails, and call scripts, including uncomfortable wording people actually use.</li>
         </ul>
       </td>
    </tr>
  </tbody>
</table>

</div>

<div class="prompt-display-section">

<h2 class="wp-block-heading">The Full AI Prompt: Customer Discovery Roleplay Interview</h2>



<div class="prompt-viewer-wrapper" id="prompt-section">
    <div class="prompt-comparison-row prompt-premium">
        <!-- Header with buttons -->
        <div class="prompt-row-header">
            <!-- <span class="prompt-row-icon">✨</span> -->
            <span class="prompt-row-title">
                                    Step 1: Customize the prompt with your input
                            </span>
            <div class="prompt-header-buttons">
                                    <button class="prompt-header-btn prompt-header-reset" onclick="resetPrompt()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                                <button class="prompt-header-btn prompt-header-copy-green flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span>Customize and Copy Full Prompt</span>
                </button>
            </div>
        </div>

        <!-- Customize the Prompt Section -->
                    <div class="prompt-customize-section">
                <span class="customize-title">Customize the Prompt</span>
                <p class="customize-subtitle">Fill in the fields below to personalize this prompt for your needs.</p>
                <table class="customize-table">
                    <thead>
                        <tr>
                            <th>Variable</th>
                            <th>What to Enter</th>
                            <th>Customise the prompt</th>
                        </tr>
                    </thead>
                    <tbody>
                                                    <tr>
                                <td class="var-name"><code>[TARGET_AUDIENCE]</code></td>
                                <td class="var-desc">
                                    Describe the specific group of people your business or product serves, including their demographics, roles, challenges, and key characteristics.                                    <div class="var-example">For example: "Freelance graphic designers aged 25-40 who struggle with client acquisition and time management, often working remotely or from co-working spaces."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[TARGET_AUDIENCE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[PRODUCT_DESCRIPTION]</code></td>
                                <td class="var-desc">
                                    Provide a concise summary of your product or service, including its purpose, key features, and benefits.                                    <div class="var-example">For example: "A project management tool designed for small creative teams to streamline collaboration and meet deadlines with ease."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[PRODUCT_DESCRIPTION]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[INDUSTRY]</code></td>
                                <td class="var-desc">
                                    Specify the industry or sector your business or product is targeting. This helps tailor the persona to the relevant context.                                    <div class="var-example">For example: "E-commerce, focusing on sustainable fashion brands."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[INDUSTRY]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[PLATFORM]</code></td>
                                <td class="var-desc">
                                    Indicate the primary channel or environment where your audience interacts with your product or service.                                    <div class="var-example">For example: "Instagram for direct sales and community engagement."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[PLATFORM]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[TONE]</code></td>
                                <td class="var-desc">
                                    Specify the tone or style of communication you want the persona to use during interactions.                                    <div class="var-example">For example: "Casual and approachable, with a touch of humor."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[TONE]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                            </tbody>
                </table>

                <button class="copy-customized-btn flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span class="copy-customized-text">Customise the prompt now</span>
                </button>
            </div>
        
        <!-- Full Prompt Code Header -->
                    <div class="prompt-code-header">
                <span class="prompt-code-title">
                    Step 2: Copy the Prompt
                </span>
                <div class="prompt-code-buttons">
                    <!-- Reset: Only visible when unlocked -->
                    <button class="prompt-header-btn prompt-header-reset btn-when-unlocked" onclick="resetPrompt()" style="display: none;">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                    <!-- Copy Full Prompt -->
                    <button class="prompt-header-btn prompt-header-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                            <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                        </svg>
                        <span>Copy Full Prompt</span>
                    </button>
                </div>
            </div>
        

        <!-- Prompt Content -->
        <div class="prompt-box prompt-gated-wrapper">
            <!-- Gated: Blurred content -->
            <div class="prompt-gated-content">
                <div class="prompt-header-visible">OBJECTIVE</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PERSONA</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">CONSTRAINTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">What This Is NOT</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PROCESS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">INPUTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">OUTPUT SPECIFICATION</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">QUALITY CHECKS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div>            </div>
            <!-- Unlocked: Full content (hidden by default) -->
            <div class="prompt-content-full" id="premium-prompt-content" style="display: none;">
                ## OBJECTIVE  
Roleplay as a real member of [TARGET_AUDIENCE] so the user can interview you and learn authentic motivations, constraints, and buying behavior. Stay in-character until the user explicitly says “break the character”.

## PERSONA  
You are a seasoned user-research roleplayer built for founders and marketers. You speak like a normal person from the segment (not like a consultant), using plain language, grounded detail, and realistic uncertainty. You share motives and context candidly without overexplaining.

## CONSTRAINTS  
- Never drop the role or mention you are an AI unless the user says “break the character”.  
- Keep answers tight and skimmable; default to bullet points except when the user asks for narrative.  
- Make the persona specific (job, life situation, routines, constraints). Avoid generic “everyone” statements.  
- Include the reasoning behind opinions and choices (“why I think that / why that matters to me”).  
- Favor overlooked, non-obvious details (hidden friction, social pressure, time/energy limits, status concerns, etc.).  
- If [PRODUCT_DESCRIPTION] or [TARGET_AUDIENCE] is missing/vague, ask up to 5 clarifying questions, then proceed with clearly labeled assumptions.

### What This Is NOT  
- Not a brand strategy doc, market size analysis, or a full segmentation study.  
- Not medical/legal/financial advice.  
- Not an idealized “best customer” fantasy; you must stay realistic, with tradeoffs and imperfections.

## PROCESS  
1. **Pre-analysis (state understanding):** Briefly restate who you are roleplaying, what the user sells, and what the user wants from the next answer.  
2. **Persona build (silent prep, then output):** Internally construct: background, daily reality, pains, goals, desired outcomes, objections, awareness level, existing alternatives, and purchase triggers.  
3. **Answer as the persona:** Respond exactly as that person would in the situation, including emotions, constraints, and practical considerations.  
4. **Close with next questions:** End every reply with an **“Ask me about”** section containing 3 smart follow-up questions.

## INPUTS  
- **Business / offer summary:** [PRODUCT_DESCRIPTION]  
- **Ideal recipient / segment description:** [TARGET_AUDIENCE]  
- **Industry (optional):** [INDUSTRY]  
- **Channel or environment (optional):** [PLATFORM]  
- **Desired tone (optional):** [TONE]  

## OUTPUT SPECIFICATION  
When the user asks for a story (or other narrative), provide:

- **Pre-analysis:** 2–4 lines confirming your understanding and any assumptions.  
- **Story:** exactly **3 paragraphs**, written in first person as the persona, covering:
  - Paragraph 1: {Background Snapshot} (work + life context)  
  - Paragraph 2: {Current Friction} (problems, consequences, emotions, what you’ve tried)  
  - Paragraph 3: {Desired Change} (goals, what “better” looks like, what would make you take action)  
- **Skimmable add-on bullets:**  
  - {Top 3 Problems}  
  - {Top 3 Goals}  
  - {Top 3 Objections} with the “why” behind each  
  - {Typical Buying Triggers}  
- **Ask me about:** 3 suggested next questions.

## QUALITY CHECKS  
Before sending, verify:  
- You stayed in-character and did not reference being an AI.  
- The persona is concrete (specific job, routines, constraints, and context).  
- You included clear “why” reasoning, not just conclusions.  
- You surfaced at least 2 non-obvious insights (hidden friction, social dynamics, etc.).  
- You ended with **“Ask me about”** and exactly 3 follow-up questions.            </div>
        </div>


    </div>

    <!-- CTA Row - Full width buttons -->
    <div class="prompt-cta-row">
        <button class="prompt-cta-btn prompt-cta-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
            </svg>
            <span class="cta-copy-text">Copy Full Prompt</span>
        </button>
    </div>
</div>

<style>
    /* Gated prompt states */
    .prompt-gated-wrapper {
        position: relative;
    }

    /* When unlocked - show full content, hide gated */
    body.flowpast-unlocked .prompt-gated-wrapper .prompt-gated-content {
        display: none;
    }

    body.flowpast-unlocked .prompt-gated-wrapper .prompt-content-full {
        display: block !important;
    }

    /* Show/hide elements based on unlock state */
    body.flowpast-unlocked .btn-when-unlocked {
        display: inline-flex !important;
    }

    .prompt-viewer-wrapper {
        scroll-margin-top: 250px;
    }

    /* ========================================
   PROMPT VIEWER - MAIN WRAPPER
   ======================================== */
    .prompt-viewer-wrapper {
        margin: 30px 0;
        display: flex;
        flex-direction: column;
        gap: 20px;
    }

    /* ========================================
   PROMPT BOX CONTAINER
   ======================================== */
    .prompt-comparison-row {
        border-radius: 12px;
        overflow: hidden;
        border: 1px solid #e0e0e0;
        background: #fff;
    }

    /* ========================================
   HEADER WITH BUTTONS
   ======================================== */
    .prompt-row-header {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 14px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
        flex-wrap: wrap;
    }

    .prompt-row-icon {
        font-size: 20px;
    }

    .prompt-row-title {
        font-weight: 600;
        font-size: 22px;
        color: #fff !important;
        text-decoration: underline
    }

    .prompt-header-buttons {
        margin-left: auto;
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
    }

    /* Header buttons */
    .prompt-header-btn {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 10px 20px;
        border-radius: 6px;
        font-size: 14px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-header-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-header-copy:hover {
        background: #2a2a2a;
    }

    .prompt-header-copy.copied {
        background: #2e7d32;
    }

    .prompt-header-copy-green {
        background: #04AA6D !important;
        color: #fff !important;
    }

    .prompt-header-copy-green:hover {
        background: #039860 !important;
    }

    .prompt-header-copy-green.copied {
        background: #2e7d32 !important;
    }

    .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-header-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-1px);
    }

    /* ========================================
   PROMPT CONTENT - FULL (NO SCROLL)
   ======================================== */
    .prompt-box {
        background: #ffffff;
    }

    .prompt-content-full {
        padding: 24px;
        margin: 0;
        color: #202124;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.7;
        white-space: pre-wrap;
        word-wrap: break-word;
        /* No scroll - show full content */
        max-height: none;
        overflow: visible;
    }

    /* Highlighted variable in prompt */
    .prompt-variable {
        background: #fff3cd;
        color: #1967d2;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #ffc107;
    }

    .prompt-variable-filled {
        background: #d4edda;
        color: #155724;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #28a745;
    }

    /* ========================================
   GATED CONTENT (NO ACCESS)
   ======================================== */
    .prompt-gated-content {
        padding: 24px;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.8;
        max-height: none;
        overflow: visible;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        cursor: default;
    }

    /* ## headers - larger, black */
    .prompt-header-visible {
        color: #202124;
        font-weight: 600;
        margin: 5px 0 0px 0;
        font-size: 20px;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        text-decoration: underline;
        text-underline-offset: 4px;
    }

    /* ### headers - smaller, black */
    .prompt-header-visible.subheader {
        color: #202124;
        font-weight: 600;
        margin: 5px 0;
        font-size: 18px;
    }

    .prompt-header-visible:first-child {
        margin-top: 0;
    }

    /* ========================================
   LOCKED SECTION BLOCK
   ======================================== */
    .locked-section {
        position: relative;
        margin: 4px 0 8px 0;
        border-radius: 6px;
        overflow: hidden;
        background: linear-gradient(110deg, #e2e8f0 8%, #f1f5f9 18%, #e2e8f0 33%);
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
    }

    .locked-section-bg {
        position: relative;
    }

    .locked-section-lines {
        padding: 8px 12px;
        position: relative;
    }

    .locked-line {
        height: 6px;
        background: rgba(255, 255, 255, 0.6);
        border-radius: 3px;
        margin-bottom: 4px;
        margin-left: 12px;
    }

    .locked-line:last-child {
        margin-bottom: 0;
    }

    .locked-section-icon {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: 10;
        font-size: 24px;
        filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1));
    }

    /* Subheader locked sections - slightly indented */
    /*  .prompt-header-visible.subheader+.locked-section {
        margin-left: 16px;
    } */

    /* ========================================
   COMPATIBILITY BADGES
   ======================================== */
    .prompt-compatibility {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 8px;
        padding: 12px 20px;
        background: #f8f9fa;
        border-top: 1px solid #e0e0e0;
    }

    .compat-label {
        font-size: 13px;
        color: #5f6368;
        font-weight: 500;
    }

    .compat-badge {
        padding: 4px 10px;
        background: #e8f0fe;
        color: #1967d2;
        border-radius: 4px;
        font-size: 12px;
        font-weight: 500;
    }

    /* ========================================
   CTA ROW - FULL WIDTH BUTTONS
   ======================================== */
    .prompt-cta-row {
        display: flex;
        gap: 16px;
        flex-wrap: wrap;
    }

    .prompt-cta-btn {
        flex: 1;
        min-width: 200px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        padding: 16px 24px;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-cta-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-copy:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-copy.copied {
        background: #2e7d32;
    }

    .prompt-cta-reset {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-reset:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-cta-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    /* ========================================
    CUSTOMIZE YOUR PROMPT SECTION
    ======================================== */
    .prompt-customize-section {
        padding: 24px;
        border-bottom: 1px solid #e0e0e0;
        background: #fafbfc;
    }

    .customize-title {
        margin: 0 0 8px 0;
        font-size: 18px;
        font-weight: 700;
        color: #202124;
    }

    .customize-subtitle {
        margin: 0 0 20px 0;
        font-size: 14px;
        color: #5f6368;
    }

    .customize-table {
        width: 100%;
        border-collapse: collapse;
        margin-bottom: 20px;
    }

    .customize-table th {
        text-align: left;
        padding: 12px;
        background: #f1f3f4;
        border: 1px solid #e0e0e0;
        font-size: 13px;
        font-weight: 600;
        color: #202124;
    }

    .customize-table td {
        padding: 12px;
        border: 1px solid #e0e0e0;
        vertical-align: top;
    }

    .customize-table .var-name {
        width: 25%;
        background: #f8f9fa;
    }

    .customize-table .var-name code {
        background: #fff3cd;
        color: #1967d2;
        border: 1px solid #ffc107;
        padding: 4px 8px;
        border-radius: 4px;
        font-size: 12px;
        word-break: break-all;
        font-weight: 600;
    }

    .customize-table .var-desc {
        width: 35%;
        font-size: 13px;
        color: #5f6368;
        line-height: 1.5;
    }

    .customize-table .var-example {
        margin-top: 8px;
        padding: 8px 10px;
        background: #f8f9fa;
        border-left: 3px solid #dadce0;
        font-size: 12px;
        color: #5f6368;
        font-style: italic;
        border-radius: 0 4px 4px 0;
    }

    .customize-table .var-input {
        width: 40%;
    }

    .customize-input {
        width: 100%;
        padding: 10px 12px;
        border: 1px solid #dadce0;
        border-radius: 6px;
        font-size: 13px;
        font-family: inherit;
        resize: vertical;
        transition: border-color 0.2s, box-shadow 0.2s;
    }

    .customize-input:focus {
        outline: none;
        border-color: rgb(5, 152, 98);
        box-shadow: 0 0 0 3px rgba(5, 152, 98, 0.1);
    }

    .customize-input::placeholder {
        color: #9aa0a6;
        font-style: italic;
    }

    .copy-customized-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        width: 100%;
        padding: 16px 24px;
        background: rgb(5, 152, 98);
        color: #fff;
        border: none;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
    }

    .copy-customized-btn:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    .copy-customized-btn.copied {
        background: #2e7d32;
    }

    /* ========================================
    FULL PROMPT CODE HEADER
    ======================================== */
    .prompt-code-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 10px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
    }

    .prompt-code-title {
        font-size: 22px;
        font-weight: 600;
        text-decoration: underline;

    }

    .prompt-code-buttons {
        display: flex;
        gap: 8px;
    }

    .prompt-code-buttons .prompt-header-btn {
        padding: 8px 14px;
        font-size: 13px;
        background: #ffffff;
        color: #202124;
        border: 1px solid #dadce0;
    }

    .prompt-code-buttons .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
        border-color: rgb(5, 152, 98);
    }

    .prompt-code-buttons .prompt-header-btn.prompt-header-access:hover {
        background: rgb(4, 130, 83) !important;
        border-color: rgb(4, 130, 83);
        color: #fff !important;
    }

    .prompt-code-buttons .prompt-header-btn:hover {
        background: #f1f3f4;
    }

    .prompt-code-buttons .prompt-header-copy.copied {
        background: #d4edda;
        color: #155724;
        border-color: #28a745;
    }

    .prompt-header-reset {
        background: #ffffff;
        color: #202124;
    }

    /* ========================================
   RESPONSIVE
   ======================================== */
    @media (max-width: 768px) {
        .prompt-row-header {
            flex-direction: column;
            align-items: flex-start;
            gap: 12px;
        }

        .prompt-header-buttons {
            margin-left: 0;
            width: 100%;
        }

        .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }

        .prompt-cta-row {
            flex-direction: column;
        }

        .prompt-cta-btn {
            width: 100%;
        }

        /* Customize table responsive */
        .customize-table,
        .customize-table thead,
        .customize-table tbody,
        .customize-table tr,
        .customize-table th,
        .customize-table td {
            display: block;
        }

        .customize-table thead {
            display: none;
        }

        .customize-table tr {
            margin-bottom: 16px;
            border: 1px solid #e0e0e0;
            border-radius: 8px;
            overflow: hidden;
        }

        .customize-table td {
            width: 100% !important;
            border: none;
            border-bottom: 1px solid #e0e0e0;
        }

        .customize-table td:last-child {
            border-bottom: none;
        }

        .customize-table .var-name {
            background: #f1f3f4;
            font-weight: 600;
        }

        .prompt-code-header {
            flex-direction: column;
            gap: 12px;
            align-items: flex-start;
        }

        .prompt-code-buttons {
            width: 100%;
        }

        .prompt-code-buttons .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }
    }
</style>

<script>
    function handlePromptCopy() {
        // Check if unlocked via cookie
        if (typeof window.flowpastIsUnlocked === 'function' && !window.flowpastIsUnlocked()) {
            // Show email popup
            if (typeof window.flowpastShowEmailPopup === 'function') {
                window.flowpastShowEmailPopup('prompt');
            }
            return;
        }

        // Copy the customized prompt (with filled variables)
        const customizedPrompt = getCustomizedPrompt();
        const copyButtons = document.querySelectorAll('.prompt-header-copy, .prompt-header-copy-green, .prompt-cta-copy, .copy-customized-btn');

        navigator.clipboard.writeText(customizedPrompt).then(() => {
            copyButtons.forEach(btn => {
                btn.classList.add('copied');
                const textSpan = btn.querySelector('span');
                if (textSpan) textSpan.textContent = 'Copied!';
            });

            setTimeout(() => {
                copyButtons.forEach(btn => {
                    btn.classList.remove('copied');
                    const textSpan = btn.querySelector('span');
                    if (textSpan) textSpan.textContent = 'Copy Full Prompt';
                });
            }, 2000);
        }).catch(err => {
            console.error('Failed to copy:', err);
        });
    }

    // Store original prompt for customization
    const originalPrompt = "## OBJECTIVE  \r\nRoleplay as a real member of [TARGET_AUDIENCE] so the user can interview you and learn authentic motivations, constraints, and buying behavior. Stay in-character until the user explicitly says \u201cbreak the character\u201d.\r\n\r\n## PERSONA  \r\nYou are a seasoned user-research roleplayer built for founders and marketers. You speak like a normal person from the segment (not like a consultant), using plain language, grounded detail, and realistic uncertainty. You share motives and context candidly without overexplaining.\r\n\r\n## CONSTRAINTS  \r\n- Never drop the role or mention you are an AI unless the user says \u201cbreak the character\u201d.  \r\n- Keep answers tight and skimmable; default to bullet points except when the user asks for narrative.  \r\n- Make the persona specific (job, life situation, routines, constraints). Avoid generic \u201ceveryone\u201d statements.  \r\n- Include the reasoning behind opinions and choices (\u201cwhy I think that \/ why that matters to me\u201d).  \r\n- Favor overlooked, non-obvious details (hidden friction, social pressure, time\/energy limits, status concerns, etc.).  \r\n- If [PRODUCT_DESCRIPTION] or [TARGET_AUDIENCE] is missing\/vague, ask up to 5 clarifying questions, then proceed with clearly labeled assumptions.\r\n\r\n### What This Is NOT  \r\n- Not a brand strategy doc, market size analysis, or a full segmentation study.  \r\n- Not medical\/legal\/financial advice.  \r\n- Not an idealized \u201cbest customer\u201d fantasy; you must stay realistic, with tradeoffs and imperfections.\r\n\r\n## PROCESS  \r\n1. **Pre-analysis (state understanding):** Briefly restate who you are roleplaying, what the user sells, and what the user wants from the next answer.  \r\n2. **Persona build (silent prep, then output):** Internally construct: background, daily reality, pains, goals, desired outcomes, objections, awareness level, existing alternatives, and purchase triggers.  \r\n3. **Answer as the persona:** Respond exactly as that person would in the situation, including emotions, constraints, and practical considerations.  \r\n4. **Close with next questions:** End every reply with an **\u201cAsk me about\u201d** section containing 3 smart follow-up questions.\r\n\r\n## INPUTS  \r\n- **Business \/ offer summary:** [PRODUCT_DESCRIPTION]  \r\n- **Ideal recipient \/ segment description:** [TARGET_AUDIENCE]  \r\n- **Industry (optional):** [INDUSTRY]  \r\n- **Channel or environment (optional):** [PLATFORM]  \r\n- **Desired tone (optional):** [TONE]  \r\n\r\n## OUTPUT SPECIFICATION  \r\nWhen the user asks for a story (or other narrative), provide:\r\n\r\n- **Pre-analysis:** 2\u20134 lines confirming your understanding and any assumptions.  \r\n- **Story:** exactly **3 paragraphs**, written in first person as the persona, covering:\r\n  - Paragraph 1: {Background Snapshot} (work + life context)  \r\n  - Paragraph 2: {Current Friction} (problems, consequences, emotions, what you\u2019ve tried)  \r\n  - Paragraph 3: {Desired Change} (goals, what \u201cbetter\u201d looks like, what would make you take action)  \r\n- **Skimmable add-on bullets:**  \r\n  - {Top 3 Problems}  \r\n  - {Top 3 Goals}  \r\n  - {Top 3 Objections} with the \u201cwhy\u201d behind each  \r\n  - {Typical Buying Triggers}  \r\n- **Ask me about:** 3 suggested next questions.\r\n\r\n## QUALITY CHECKS  \r\nBefore sending, verify:  \r\n- You stayed in-character and did not reference being an AI.  \r\n- The persona is concrete (specific job, routines, constraints, and context).  \r\n- You included clear \u201cwhy\u201d reasoning, not just conclusions.  \r\n- You surfaced at least 2 non-obvious insights (hidden friction, social dynamics, etc.).  \r\n- You ended with **\u201cAsk me about\u201d** and exactly 3 follow-up questions.";
    const variables = ["[TARGET_AUDIENCE]","[PRODUCT_DESCRIPTION]","[INDUSTRY]","[PLATFORM]","[TONE]"];
    // Initial render with highlighted variables
    document.addEventListener('DOMContentLoaded', function() {
        renderPromptWithHighlights();
    });

    // Live update prompt as user types
    document.querySelectorAll('.customize-input').forEach(input => {
        input.addEventListener('input', renderPromptWithHighlights);
    });

    function renderPromptWithHighlights() {
        const promptContent = document.getElementById('premium-prompt-content');
        if (!promptContent) return;

        let updatedPrompt = originalPrompt;
        let filledVariables = {};

        // Collect filled values
        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                filledVariables[placeholder] = value;
            }
        });

        // Replace filled variables and highlight remaining
        let htmlContent = escapeHtml(updatedPrompt);

        variables.forEach(placeholder => {
            const escapedPlaceholder = escapeHtml(placeholder);
            const regex = new RegExp(escapeRegex(escapedPlaceholder), 'g');

            if (filledVariables[placeholder]) {
                // Show filled value with green highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable-filled">' + escapeHtml(filledVariables[placeholder]) + '</span>'
                );
            } else {
                // Show original placeholder with yellow highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable">' + escapedPlaceholder + '</span>'
                );
            }
        });

        promptContent.innerHTML = htmlContent;
    }

    function escapeRegex(string) {
        return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    }

    function escapeHtml(text) {
        const div = document.createElement('div');
        div.textContent = text;
        return div.innerHTML;
    }

    function resetPrompt() {
        // Clear all input fields
        document.querySelectorAll('.customize-input').forEach(input => {
            input.value = '';
        });

        // Re-render with original placeholders highlighted
        renderPromptWithHighlights();

        // Visual feedback
        const resetBtns = document.querySelectorAll('.prompt-header-reset, .prompt-cta-reset');
        resetBtns.forEach(btn => {
            const originalText = btn.querySelector('span').textContent;
            btn.querySelector('span').textContent = 'Reset!';
            setTimeout(() => {
                btn.querySelector('span').textContent = originalText;
            }, 1000);
        });
    }


    function getCustomizedPrompt() {
        let updatedPrompt = originalPrompt;

        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                const regex = new RegExp(escapeRegex(placeholder), 'g');
                updatedPrompt = updatedPrompt.replace(regex, value);
            }
        });

        return updatedPrompt;
    }
</script>

</div>

<div class="pro-tips-section">

<h2 class="wp-block-heading">Pro Tips for Better AI Prompt Results</h2>



<ul class="wp-block-list">

<li><strong>Start with a sharp “who” and “what changed”.</strong> Before you ask feature questions, anchor the roleplay in a life situation. Try: “You’re a payroll manager at a 60-person construction company; last month two late checks caused a real mess. What happened, and what did you do first?” Specific context forces better constraints and more believable answers.</li>


<li><strong>Interview for alternatives, not opinions.</strong> “Would you pay for this?” is a trap. Ask: “What have you tried instead in the last 30 days, and why didn’t it stick?” Then follow with: “What did it cost you in time, stress, or reputation?” You’ll get switching costs and real competitive intel.</li>

<li><strong>Push on the uncomfortable details.</strong> The prompt is designed to reveal hidden friction, so use it. Ask: “What would you be embarrassed to admit about this problem?” or “Who would judge you for buying the ‘wrong’ solution?” Honestly, this is where the best copy comes from.</li>


<li><strong>Run controlled iterations.</strong> After the first roleplay, keep the same product but change one variable in your next instruction. For example: “Same persona, but you’re extremely budget-constrained this quarter,” or “Same persona, but you’ve been burned by a vendor before.” Then ask: “Now revisit your top objections and what proof you’d need.”</li>


<li><strong>Turn answers into assets immediately.</strong> Don’t stop at insight. Use follow-ups like: “List 10 exact phrases you’d use when describing this problem to a coworker,” and then “Rewrite those as 10 headline options and 10 ad hooks, keeping the same voice.” If you’re also polishing product UX, pairing this with microcopy work can help; the loading microcopy prompts are useful when you need interface language to match the persona’s tone (for example: https://flowpast.com/prompts/write-loading-microcopy-messages-ai-prompt/).</li>

</div>

<div class="related-prompts-section">

<h2 class="wp-block-heading">Related Prompts</h2>



<p>Once you’ve captured real buyer language from the roleplay, these prompts help you apply it to product UX and in-app moments.</p>



<p>If you also need UI text that sounds like your newly discovered customer voice, <a href="https://flowpast.com/prompts/write-loading-microcopy-messages-ai-prompt/">Write Loading Microcopy Messages AI Prompt</a> is a practical next step. It’s especially helpful when your roleplay reveals impatience triggers (anxiety about “is it working?”) and you want loading states that reduce doubt.</p>



<p>For teams doing experiments around retention, <a href="https://flowpast.com/prompts/ai-prompt-to-write-hidden-unicode-loading-microcopy/">AI Prompt to Write Hidden Unicode Loading Microcopy</a> can support nuanced, less intrusive status messaging. Use it when the roleplay shows users hate clutter, yet still want reassurance during waits.</p>



<p>When your product is web-based and you want implementation-ready copy alongside the customer language you collected, <a href="https://flowpast.com/prompts/write-javascript-loading-microcopy-with-this-ai-prompt/">Write JavaScript Loading Microcopy with this AI Prompt</a> pairs well. It’s a clean way to turn “customers feel stuck” insight into better UI states without inventing tone from scratch.</p>


<br>


<p>Quick reference:</p>



<ul class="wp-block-list">

<li><a href="https://flowpast.com/prompts/write-loading-microcopy-messages-ai-prompt/">Write Loading Microcopy Messages AI Prompt</a>: On-brand loading messages for better UX.</li>


<li><a href="https://flowpast.com/prompts/ai-prompt-to-write-hidden-unicode-loading-microcopy/">AI Prompt to Write Hidden Unicode Loading Microcopy</a>: Subtle status text with lighter UI footprint.</li>


<li><a href="https://flowpast.com/prompts/write-javascript-loading-microcopy-with-this-ai-prompt/">Write JavaScript Loading Microcopy with this AI Prompt</a>: JS-ready loading copy for web apps.</li>

<li><a href="https://flowpast.com/prompts/write-f-loading-status-microcopy-ai-prompt/">Write F# Loading Status Microcopy AI Prompt</a>: Status microcopy patterns for F# apps.</li>

<li><a href="https://flowpast.com/prompts/write-javascript-loading-status-microcopy-ai-prompt/">Write JavaScript Loading Status Microcopy AI Prompt</a>: Loading status lines tailored to JS products.</li>
<!-- /wp:post-content -->
</div>

<div class="faq-section">
<!-- wp:heading {"level":2} -->
<h2 class="wp-block-heading">Common Questions</h2>
<!-- /wp:heading -->

<div class="faq-item">
<span class="question">Which roles benefit most from this discovery interview roleplay AI prompt?</span>
<!-- wp:paragraph -->
<p class="answer"><strong>Founders and product leads</strong> use it to pressure-test positioning before they lock in a roadmap, because it forces realistic constraints and tradeoffs. <strong>Demand gen and growth marketers</strong> rely on it to pull objection language and “why now” triggers that improve ads, landing pages, and retargeting. <strong>Sales managers</strong> use it to rehearse discovery questions and identify the real “do nothing” alternative that stalls deals. <strong>Consultants and agencies</strong> apply it when a client cannot get enough customer calls scheduled, but still needs credible voice-of-customer inputs for messaging.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Which industries get the most value from this discovery interview roleplay AI prompt?</span>
<!-- wp:paragraph -->
<p class="answer"><strong>B2B SaaS</strong> teams get value because the roleplay can mimic stakeholders, internal approvals, switching costs, and the “risk of choosing wrong” that blocks trials from converting. <strong>E-commerce and DTC</strong> operators use it to uncover hesitation drivers (shipping anxiety, trust, social proof needs) and the phrases buyers use when comparing bundles or subscriptions. <strong>Professional services</strong> firms (agencies, accounting, legal ops) benefit when the prompt surfaces how prospects judge credibility, what “good work” means to them, and what makes them avoid onboarding. <strong>Marketplaces and platforms</strong> use it to simulate two-sided friction, like why suppliers churn or why demand users won’t create an account yet.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Why do basic AI prompts for customer discovery interviews produce weak results?</span>
<!-- wp:paragraph -->
<p class="answer">A typical prompt like “<em>Write me a customer interview for my business</em>” fails because it: lacks a strict in-character constraint (so the model slips into generic advice), provides no persona specificity (job, routines, pressures), ignores alternatives and switching costs (the real decision drivers), produces flattering answers instead of realistic uncertainty and objections, and misses the “reasoning behind opinions” that tells you what to change in your offer. This prompt forces a believable role, tight responses, and explicit tradeoffs, which is what makes the insights usable.</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Can I customize this discovery interview roleplay prompt for my specific situation?</span>
<!-- wp:paragraph -->
<p class="answer">Yes, and you do it through what you tell the roleplay to embody: your target audience and your product description. If you’re vague, the prompt will ask up to five clarifying questions, which is useful, but you’ll get better results if you specify segment, context, and constraints (budget, timeline, existing tools, and what recently changed). A strong way to customize is to add one “scenario anchor,” like “you’re buying for a team of 12” or “you’ve tried two tools and churned.” Follow-up prompt to use after a few answers: “Stay in character. List your top 5 objections ranked by deal-killing severity, and for each one, tell me what proof would reduce it.”</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">What are the most common mistakes when using this discovery interview roleplay prompt?</span>
<!-- wp:paragraph -->
<p class="answer">The biggest mistake is leaving the target audience too vague; instead of “small business owners,” try “owner-operators of 5–15 person home services companies doing $30–80K/month who answer the phone themselves.” Another common error is providing a fuzzy product description, like “an app that helps with productivity,” versus “a Chrome extension that summarizes client emails into next actions and drafts replies in your tone.” People also skip constraints; “any budget” produces fantasy buying, while “must be under $200/month and set up in one afternoon” forces realistic tradeoffs. Finally, many users don’t push on alternatives, so add questions like “What did you try before, and what made you quit?”</p>
<!-- /wp:paragraph -->
</div>

<div class="faq-item">
<span class="question">Who should NOT use this discovery interview roleplay prompt?</span>
<!-- wp:paragraph -->
<p class="answer">This prompt isn’t ideal for teams that need statistically reliable market research, for regulated decisions that require expert advice, or for one-off projects where you will not iterate on the persona and questions. It’s a qualitative thinking tool, not evidence that your market is “proven.” If you need validation, use it to draft hypotheses, then confirm them with real calls, surveys, or product data.</p>
<!-- /wp:paragraph -->
</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Which roles benefit most from this discovery interview roleplay AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Founders and product leads use it to pressure-test positioning before they lock in a roadmap, because it forces realistic constraints and tradeoffs. Demand gen and growth marketers rely on it to pull objection language and “why now” triggers that improve ads, landing pages, and retargeting. Sales managers use it to rehearse discovery questions and identify the real “do nothing” alternative that stalls deals. Consultants and agencies apply it when a client cannot get enough customer calls scheduled, but still needs credible voice-of-customer inputs for messaging."
      }
    },
    {
      "@type": "Question",
      "name": "Which industries get the most value from this discovery interview roleplay AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "B2B SaaS teams get value because the roleplay can mimic stakeholders, internal approvals, switching costs, and the “risk of choosing wrong” that blocks trials from converting. E-commerce and DTC operators use it to uncover hesitation drivers (shipping anxiety, trust, social proof needs) and the phrases buyers use when comparing bundles or subscriptions. Professional services firms (agencies, accounting, legal ops) benefit when the prompt surfaces how prospects judge credibility, what “good work” means to them, and what makes them avoid onboarding. Marketplaces and platforms use it to simulate two-sided friction, like why suppliers churn or why demand users won’t create an account yet."
      }
    },
    {
      "@type": "Question",
      "name": "Why do basic AI prompts for customer discovery interviews produce weak results?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A typical prompt like “Write me a customer interview for my business” fails because it: lacks a strict in-character constraint (so the model slips into generic advice), provides no persona specificity (job, routines, pressures), ignores alternatives and switching costs (the real decision drivers), produces flattering answers instead of realistic uncertainty and objections, and misses the “reasoning behind opinions” that tells you what to change in your offer. This prompt forces a believable role, tight responses, and explicit tradeoffs, which is what makes the insights usable."
      }
    },
    {
      "@type": "Question",
      "name": "Can I customize this discovery interview roleplay prompt for my specific situation?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, and you do it through what you tell the roleplay to embody: your target audience and your product description. If you’re vague, the prompt will ask up to five clarifying questions, which is useful, but you’ll get better results if you specify segment, context, and constraints (budget, timeline, existing tools, and what recently changed). A strong way to customize is to add one “scenario anchor,” like “you’re buying for a team of 12” or “you’ve tried two tools and churned.” Follow-up prompt to use after a few answers: “Stay in character. List your top 5 objections ranked by deal-killing severity, and for each one, tell me what proof would reduce it.”"
      }
    },
    {
      "@type": "Question",
      "name": "What are the most common mistakes when using this discovery interview roleplay prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The biggest mistake is leaving the target audience too vague; instead of “small business owners,” try “owner-operators of 5–15 person home services companies doing $30–80K/month who answer the phone themselves.” Another common error is providing a fuzzy product description, like “an app that helps with productivity,” versus “a Chrome extension that summarizes client emails into next actions and drafts replies in your tone.” People also skip constraints; “any budget” produces fantasy buying, while “must be under $200/month and set up in one afternoon” forces realistic tradeoffs. Finally, many users don’t push on alternatives, so add questions like “What did you try before, and what made you quit?”"
      }
    },
    {
      "@type": "Question",
      "name": "Who should NOT use this discovery interview roleplay prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "This prompt isn’t ideal for teams that need statistically reliable market research, for regulated decisions that require expert advice, or for one-off projects where you will not iterate on the persona and questions. It’s a qualitative thinking tool, not evidence that your market is “proven.” If you need validation, use it to draft hypotheses, then confirm them with real calls, surveys, or product data."
      }
    }
  ]
}
</script>
</div>

<div class="closing-section">
<!-- wp:paragraph -->
<p>Good discovery isn’t about “more questions.” It’s about getting real answers you can use. Paste the prompt into your AI tool, run a focused interview, and turn the language you hear into better positioning and cleaner decisions.</p>
<!-- /wp:paragraph -->
</div>]]></content:encoded>
					
		
		
		<media:content url="https://flowpast.s3.eu-north-1.amazonaws.com/featured_blog_images/5000157.webp" medium="image"></media:content>
            	</item>
		<item>
		<title>Build an Accessible FAQ Accordion with this AI Prompt</title>
		<link>https://flowpast.com/prompts/build-an-accessible-faq-accordion-with-this-ai-prompt/</link>
		
		<dc:creator><![CDATA[Lisa Granqvist]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 02:43:05 +0000</pubDate>
				<category><![CDATA[Prompts]]></category>
		<guid isPermaLink="false">https://flowpast.com/?p=5001434</guid>

					<description><![CDATA[FAQ pages overwhelm users - use this AI Prompt to generate a calm WCAG-ready accordion with semantic HTML, CSS, and QA notes. Thousands of ready-to-use AI prompts for all models.]]></description>
										<content:encoded><![CDATA[<!-- FOCUS_KEYWORD: accessible FAQ accordion -->
<div class="hook-introduction">

<p>Most FAQ pages try to help, then accidentally do the opposite. Users hit a wall of text, lose their place, and bounce. And if the interaction isn’t accessible, you’re quietly locking people out while adding support load.</p>



<p>This <strong>accessible FAQ accordion</strong> is built for <strong>UX/UI designers</strong> who need a calm, low-clutter disclosure pattern, <strong>front-end developers</strong> shipping semantic HTML that still works without JavaScript, and <strong>customer support leads</strong> turning repetitive questions into a self-serve experience without creating new accessibility issues. The output is a production-ready accordion pattern (HTML, CSS, and guidance) designed to scale to dozens of Q&amp;As, with WCAG-minded interaction notes and QA checks.</p>

</div>

<div class="what-and-when-section">

<h2 class="wp-block-heading">What Does This AI Prompt Do and When to Use It?</h2>



<table class="solution-results-table three-column" role="presentation" aria-label="What this prompt does, when to use it, and what you get">
 <thead>
    <tr>
      <th scope="col">What This Prompt Does</th>
      <th scope="col">When to Use This Prompt</th>
      <th scope="col">What You&#8217;ll Get</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <ul class="automation-list">
          <li>It designs an accessible accordion interface using semantic HTML that functions even when JavaScript is unavailable.</li>
          <li>It applies a progressive-disclosure structure that reduces mental clutter by revealing only what a user asks to see.</li>
          <li>It specifies keyboard-operable interaction behaviors and clear state communication for screen readers.</li>
          <li>It generates CSS guidance that respects <code>prefers-reduced-motion</code>, contrast requirements, and 44×44 touch targets.</li>
          <li>It includes a calm, implementation-oriented pre-analysis that calls out ambiguities and documents assumptions before outputting code.</li>
       </ul>
      </td>
      <td>
        <ul class="results-list">
          <li>You have an FAQ that keeps growing and the current page is turning into an unreadable scroll-fest.</li>
          <li>Your team needs an accordion, but you can’t depend on JavaScript for core expand/collapse behavior.</li>
          <li>You’re about to launch a help center or product marketing page and want WCAG-minded interaction from day one.</li>
          <li>Support tickets keep repeating the same questions, yet you’re wary of publishing an FAQ that frustrates keyboard or screen reader users.</li>
          <li>You’re standardizing UI patterns across a design system and need a disclosure component that scales to dozens of entries.</li>
        </ul>
      </td>
       <td>
         <ul class="deliverables-list">
           <li>A complete accordion component draft using <code>&lt;details&gt;&lt;summary&gt;</code> (plus notes on when to enhance with ARIA).</li>
           <li>A CSS package outline covering focus states, contrast-safe interactive colors, reduced motion, and spacing for comfortable scanning.</li>
           <li>A recommended interaction model choice (single-open or multiple-open) with behavior notes you can hand to engineering.</li>
           <li>A category navigation approach using <code>&lt;nav&gt;</code> and appropriate labeling when your FAQ exceeds 10 questions.</li>
           <li>A practical QA checklist that testers can run with keyboard-only and screen reader expectations in mind.</li>
         </ul>
       </td>
    </tr>
  </tbody>
</table>

</div>

<div class="prompt-display-section">

<h2 class="wp-block-heading">The Full AI Prompt: WCAG-Ready FAQ Accordion (No-JS Core)</h2>



<div class="prompt-viewer-wrapper" id="prompt-section">
    <div class="prompt-comparison-row prompt-premium">
        <!-- Header with buttons -->
        <div class="prompt-row-header">
            <!-- <span class="prompt-row-icon">✨</span> -->
            <span class="prompt-row-title">
                                    Step 1: Customize the prompt with your input
                            </span>
            <div class="prompt-header-buttons">
                                    <button class="prompt-header-btn prompt-header-reset" onclick="resetPrompt()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                                <button class="prompt-header-btn prompt-header-copy-green flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span>Customize and Copy Full Prompt</span>
                </button>
            </div>
        </div>

        <!-- Customize the Prompt Section -->
                    <div class="prompt-customize-section">
                <span class="customize-title">Customize the Prompt</span>
                <p class="customize-subtitle">Fill in the fields below to personalize this prompt for your needs.</p>
                <table class="customize-table">
                    <thead>
                        <tr>
                            <th>Variable</th>
                            <th>What to Enter</th>
                            <th>Customise the prompt</th>
                        </tr>
                    </thead>
                    <tbody>
                                                    <tr>
                                <td class="var-name"><code>[FAQ_CONTENT]</code></td>
                                <td class="var-desc">
                                    Provide the list of questions and answers to be included in the FAQ interface. Include complete text for both questions and their corresponding answers.                                    <div class="var-example">For example: "Q: What is WCAG? A: WCAG stands for Web Content Accessibility Guidelines, which are standards for making web content accessible to people with disabilities."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[FAQ_CONTENT]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[INTERACTION_MODE]</code></td>
                                <td class="var-desc">
                                    Specify whether the FAQ interface should allow multiple questions to be open at the same time (multiple-open) or limit it to one question open at a time (single-open).                                    <div class="var-example">For example: "multiple-open"</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[INTERACTION_MODE]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[CATEGORY_NAMES]</code></td>
                                <td class="var-desc">
                                    List the names of categories to organize the FAQ questions if applicable. Use short, descriptive names relevant to the content.                                    <div class="var-example">For example: "Accessibility Basics, Interaction Design, WCAG Guidelines"</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[CATEGORY_NAMES]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[BRAND_VOICE]</code></td>
                                <td class="var-desc">
                                    Describe the tone and style of communication that should be used in the FAQ content. Include any specific traits like professionalism, simplicity, or friendliness.                                    <div class="var-example">For example: "Calm, professional, and implementation-focused with an emphasis on accessibility and inclusiveness."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[BRAND_VOICE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[CONTEXT]</code></td>
                                <td class="var-desc">
                                    Explain the purpose and background of the FAQ interface, including the target audience and specific goals it aims to achieve.                                    <div class="var-example">For example: "The FAQ interface is designed for accessibility-first UI architects who need a scalable, WCAG-compliant solution for organizing and presenting Q&amp;As effectively."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[CONTEXT]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                            </tbody>
                </table>

                <button class="copy-customized-btn flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span class="copy-customized-text">Customise the prompt now</span>
                </button>
            </div>
        
        <!-- Full Prompt Code Header -->
                    <div class="prompt-code-header">
                <span class="prompt-code-title">
                    Step 2: Copy the Prompt
                </span>
                <div class="prompt-code-buttons">
                    <!-- Reset: Only visible when unlocked -->
                    <button class="prompt-header-btn prompt-header-reset btn-when-unlocked" onclick="resetPrompt()" style="display: none;">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                    <!-- Copy Full Prompt -->
                    <button class="prompt-header-btn prompt-header-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                            <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                        </svg>
                        <span>Copy Full Prompt</span>
                    </button>
                </div>
            </div>
        

        <!-- Prompt Content -->
        <div class="prompt-box prompt-gated-wrapper">
            <!-- Gated: Blurred content -->
            <div class="prompt-gated-content">
                <div class="prompt-header-visible">OBJECTIVE</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PERSONA</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">CONSTRAINTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PROCESS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">Edge case handling</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">What This Is NOT</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">INPUTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">OUTPUT SPECIFICATION</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">QUALITY CHECKS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div>            </div>
            <!-- Unlocked: Full content (hidden by default) -->
            <div class="prompt-content-full" id="premium-prompt-content" style="display: none;">
                ## OBJECTIVE
Create an FAQ interface that reduces mental clutter through progressive disclosure while meeting WCAG expectations. Deliver a production-ready, accessible accordion pattern that can scale to dozens of Q&amp;As, optionally organized into categories, without depending on JavaScript for core expand/collapse behavior.

## PERSONA
You are an accessibility-first UI architect with a background in cognitive psychology. You design with strict respect for attention limits, stress reduction, and inclusive interaction—treating information architecture as a user-care practice. Your writing is practical, implementation-oriented, and calm.

## CONSTRAINTS
- Use semantic HTML that works even if JavaScript is unavailable.
- Accordion must be fully operable by keyboard using standard, predictable behaviors.
- Any visual “open/closed” cue must have an equivalent non-visual cue.
- Motion must honor `prefers-reduced-motion`.
- If categories are used, they must be implemented with `&lt;nav&gt;` and appropriate ARIA labeling.
- Maintain a low-overload experience: reveal only what’s needed, when it’s needed.
- Interactive colors must meet WCAG AA contrast.
- Touch targets must be at least 44×44 CSS pixels.
- Support screen reader clarity, including understandable state communication.
- Respect the chosen interaction model: single-open or multiple-open.

## PROCESS
1. **Pre-analysis (state your understanding first):**
   - Summarize what you received (volume, categories, interaction mode).
   - Call out any ambiguities or missing inputs and list assumptions you will use if not clarified.

2. **Content structuring:**
   - Review the Q&amp;As and propose a clean grouping strategy (by theme, user journey stage, or intent).
   - If the question count exceeds 10, propose and apply a categorization approach (and map each Q&amp;A to a category).

3. **Component architecture:**
   - Prefer `&lt;details&gt;&lt;summary&gt;` for native, no-JS disclosure where possible.
   - If you introduce ARIA enhancements, do so minimally and correctly (avoid redundant roles on native elements).

4. **Interaction model decision:**
   - Implement **multiple-open** by default with native behavior.
   - If **single-open** is requested, explain that enforcing “only one open at a time” typically requires JavaScript; provide:
     - A no-JS baseline that remains accessible, and
     - An optional progressive enhancement snippet (clearly marked) that adds single-open enforcement without breaking the baseline.

5. **Accessibility + calm UI layer:**
   - Apply a sensible heading outline (e.g., page section title + category headings + question headings).
   - Ensure strong focus visibility and logical tab order.
   - Provide clear open/closed indicators that don’t rely on color alone.
   - Add reduced-motion-safe transitions.
   - Ensure tap target sizing, spacing, and readable line lengths.

6. **Deliver code + guidance:**
   - Provide complete HTML with embedded CSS.
   - Add thorough comments that justify accessibility and cognitive-load choices.
   - Follow with a short implementation guide covering keyboard behavior and screen reader expectations.

### Edge case handling
- If **[FAQ_CONTENT]** is empty or not in a parsable format, ask for a sample of 3–5 Q&amp;As and show a working template using placeholders.
- If **[INTERACTION_MODE]** is missing, default to multiple-open and explain why.
- If **[CATEGORY_NAMES]** are provided but don’t match the number/shape of questions, propose a corrected set and show the mapping.
- If **[BRAND_VOICE]** conflicts with accessibility clarity (e.g., overly vague labels), prioritize clarity and note the adjustment.

### What This Is NOT
- Not a full design system or a complete site layout.
- Not a JavaScript-heavy widget; any scripting must be optional and progressive.
- Not a substitute for real assistive-technology testing; you will provide a test checklist, not certify compliance.

## INPUTS
- **FAQ questions and answers (raw text or structured list):** [FAQ_CONTENT]
- **Preferred interaction mode (single or multiple open):** [INTERACTION_MODE]
- **Category names (optional; used when many questions exist):** [CATEGORY_NAMES]
- **Platform/context notes (optional: framework, CMS, constraints):** [CONTEXT]
- **Tone/style preferences (optional):** [BRAND_VOICE]

## OUTPUT SPECIFICATION
Use clear markdown section headers and deliver, in this order:

1. **Understanding &amp; Assumptions**
   - {Summary Of Inputs}
   - {Detected Count And Grouping Notes}
   - {Assumptions And Clarifications Needed}

2. **Information Architecture Plan**
   - {Grouping Strategy}
   - {Category Map} (only if categories apply)

3. **HTML (Complete)**
   - Provide a single, complete HTML block containing:
     - A wrapping landmark for the FAQ section
     - Category navigation when applicable
     - Accordion items implemented primarily with `&lt;details&gt;&lt;summary&gt;`
   - Include code comments explaining decisions.

4. **CSS (Embedded)**
   - Include styles that cover:
     - Focus states
     - Contrast-safe color choices
     - Touch target sizing (44×44 minimum)
     - Open/closed indicator styling
     - `prefers-reduced-motion` handling
   - Include code comments explaining decisions.

5. **Optional Progressive Enhancement (Only if needed)**
   - {Enhancement Goal}
   - {Minimal JS Snippet} (only if enforcing single-open)
   - {How It Preserves Accessibility}

6. **Implementation Notes**
   - {Keyboard Interaction Guide}
   - {Screen Reader Expectations}
   - {Testing Checklist}

## QUALITY CHECKS
Before finalizing, verify and explicitly confirm:
- Headings form a logical outline and do not skip levels without reason.
- Accordion is usable with keyboard alone (Tab + Enter/Space), and focus is always visible.
- Non-visual users get equivalent state information (open/closed) without relying on icons alone.
- Motion effects are disabled or minimized under `prefers-reduced-motion`.
- All interactive elements meet 44×44 sizing and WCAG AA contrast targets.            </div>
        </div>


    </div>

    <!-- CTA Row - Full width buttons -->
    <div class="prompt-cta-row">
        <button class="prompt-cta-btn prompt-cta-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
            </svg>
            <span class="cta-copy-text">Copy Full Prompt</span>
        </button>
    </div>
</div>

<style>
    /* Gated prompt states */
    .prompt-gated-wrapper {
        position: relative;
    }

    /* When unlocked - show full content, hide gated */
    body.flowpast-unlocked .prompt-gated-wrapper .prompt-gated-content {
        display: none;
    }

    body.flowpast-unlocked .prompt-gated-wrapper .prompt-content-full {
        display: block !important;
    }

    /* Show/hide elements based on unlock state */
    body.flowpast-unlocked .btn-when-unlocked {
        display: inline-flex !important;
    }

    .prompt-viewer-wrapper {
        scroll-margin-top: 250px;
    }

    /* ========================================
   PROMPT VIEWER - MAIN WRAPPER
   ======================================== */
    .prompt-viewer-wrapper {
        margin: 30px 0;
        display: flex;
        flex-direction: column;
        gap: 20px;
    }

    /* ========================================
   PROMPT BOX CONTAINER
   ======================================== */
    .prompt-comparison-row {
        border-radius: 12px;
        overflow: hidden;
        border: 1px solid #e0e0e0;
        background: #fff;
    }

    /* ========================================
   HEADER WITH BUTTONS
   ======================================== */
    .prompt-row-header {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 14px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
        flex-wrap: wrap;
    }

    .prompt-row-icon {
        font-size: 20px;
    }

    .prompt-row-title {
        font-weight: 600;
        font-size: 22px;
        color: #fff !important;
        text-decoration: underline
    }

    .prompt-header-buttons {
        margin-left: auto;
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
    }

    /* Header buttons */
    .prompt-header-btn {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 10px 20px;
        border-radius: 6px;
        font-size: 14px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-header-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-header-copy:hover {
        background: #2a2a2a;
    }

    .prompt-header-copy.copied {
        background: #2e7d32;
    }

    .prompt-header-copy-green {
        background: #04AA6D !important;
        color: #fff !important;
    }

    .prompt-header-copy-green:hover {
        background: #039860 !important;
    }

    .prompt-header-copy-green.copied {
        background: #2e7d32 !important;
    }

    .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-header-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-1px);
    }

    /* ========================================
   PROMPT CONTENT - FULL (NO SCROLL)
   ======================================== */
    .prompt-box {
        background: #ffffff;
    }

    .prompt-content-full {
        padding: 24px;
        margin: 0;
        color: #202124;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.7;
        white-space: pre-wrap;
        word-wrap: break-word;
        /* No scroll - show full content */
        max-height: none;
        overflow: visible;
    }

    /* Highlighted variable in prompt */
    .prompt-variable {
        background: #fff3cd;
        color: #1967d2;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #ffc107;
    }

    .prompt-variable-filled {
        background: #d4edda;
        color: #155724;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #28a745;
    }

    /* ========================================
   GATED CONTENT (NO ACCESS)
   ======================================== */
    .prompt-gated-content {
        padding: 24px;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.8;
        max-height: none;
        overflow: visible;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        cursor: default;
    }

    /* ## headers - larger, black */
    .prompt-header-visible {
        color: #202124;
        font-weight: 600;
        margin: 5px 0 0px 0;
        font-size: 20px;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        text-decoration: underline;
        text-underline-offset: 4px;
    }

    /* ### headers - smaller, black */
    .prompt-header-visible.subheader {
        color: #202124;
        font-weight: 600;
        margin: 5px 0;
        font-size: 18px;
    }

    .prompt-header-visible:first-child {
        margin-top: 0;
    }

    /* ========================================
   LOCKED SECTION BLOCK
   ======================================== */
    .locked-section {
        position: relative;
        margin: 4px 0 8px 0;
        border-radius: 6px;
        overflow: hidden;
        background: linear-gradient(110deg, #e2e8f0 8%, #f1f5f9 18%, #e2e8f0 33%);
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
    }

    .locked-section-bg {
        position: relative;
    }

    .locked-section-lines {
        padding: 8px 12px;
        position: relative;
    }

    .locked-line {
        height: 6px;
        background: rgba(255, 255, 255, 0.6);
        border-radius: 3px;
        margin-bottom: 4px;
        margin-left: 12px;
    }

    .locked-line:last-child {
        margin-bottom: 0;
    }

    .locked-section-icon {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: 10;
        font-size: 24px;
        filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1));
    }

    /* Subheader locked sections - slightly indented */
    /*  .prompt-header-visible.subheader+.locked-section {
        margin-left: 16px;
    } */

    /* ========================================
   COMPATIBILITY BADGES
   ======================================== */
    .prompt-compatibility {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 8px;
        padding: 12px 20px;
        background: #f8f9fa;
        border-top: 1px solid #e0e0e0;
    }

    .compat-label {
        font-size: 13px;
        color: #5f6368;
        font-weight: 500;
    }

    .compat-badge {
        padding: 4px 10px;
        background: #e8f0fe;
        color: #1967d2;
        border-radius: 4px;
        font-size: 12px;
        font-weight: 500;
    }

    /* ========================================
   CTA ROW - FULL WIDTH BUTTONS
   ======================================== */
    .prompt-cta-row {
        display: flex;
        gap: 16px;
        flex-wrap: wrap;
    }

    .prompt-cta-btn {
        flex: 1;
        min-width: 200px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        padding: 16px 24px;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-cta-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-copy:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-copy.copied {
        background: #2e7d32;
    }

    .prompt-cta-reset {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-reset:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-cta-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    /* ========================================
    CUSTOMIZE YOUR PROMPT SECTION
    ======================================== */
    .prompt-customize-section {
        padding: 24px;
        border-bottom: 1px solid #e0e0e0;
        background: #fafbfc;
    }

    .customize-title {
        margin: 0 0 8px 0;
        font-size: 18px;
        font-weight: 700;
        color: #202124;
    }

    .customize-subtitle {
        margin: 0 0 20px 0;
        font-size: 14px;
        color: #5f6368;
    }

    .customize-table {
        width: 100%;
        border-collapse: collapse;
        margin-bottom: 20px;
    }

    .customize-table th {
        text-align: left;
        padding: 12px;
        background: #f1f3f4;
        border: 1px solid #e0e0e0;
        font-size: 13px;
        font-weight: 600;
        color: #202124;
    }

    .customize-table td {
        padding: 12px;
        border: 1px solid #e0e0e0;
        vertical-align: top;
    }

    .customize-table .var-name {
        width: 25%;
        background: #f8f9fa;
    }

    .customize-table .var-name code {
        background: #fff3cd;
        color: #1967d2;
        border: 1px solid #ffc107;
        padding: 4px 8px;
        border-radius: 4px;
        font-size: 12px;
        word-break: break-all;
        font-weight: 600;
    }

    .customize-table .var-desc {
        width: 35%;
        font-size: 13px;
        color: #5f6368;
        line-height: 1.5;
    }

    .customize-table .var-example {
        margin-top: 8px;
        padding: 8px 10px;
        background: #f8f9fa;
        border-left: 3px solid #dadce0;
        font-size: 12px;
        color: #5f6368;
        font-style: italic;
        border-radius: 0 4px 4px 0;
    }

    .customize-table .var-input {
        width: 40%;
    }

    .customize-input {
        width: 100%;
        padding: 10px 12px;
        border: 1px solid #dadce0;
        border-radius: 6px;
        font-size: 13px;
        font-family: inherit;
        resize: vertical;
        transition: border-color 0.2s, box-shadow 0.2s;
    }

    .customize-input:focus {
        outline: none;
        border-color: rgb(5, 152, 98);
        box-shadow: 0 0 0 3px rgba(5, 152, 98, 0.1);
    }

    .customize-input::placeholder {
        color: #9aa0a6;
        font-style: italic;
    }

    .copy-customized-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        width: 100%;
        padding: 16px 24px;
        background: rgb(5, 152, 98);
        color: #fff;
        border: none;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
    }

    .copy-customized-btn:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    .copy-customized-btn.copied {
        background: #2e7d32;
    }

    /* ========================================
    FULL PROMPT CODE HEADER
    ======================================== */
    .prompt-code-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 10px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
    }

    .prompt-code-title {
        font-size: 22px;
        font-weight: 600;
        text-decoration: underline;

    }

    .prompt-code-buttons {
        display: flex;
        gap: 8px;
    }

    .prompt-code-buttons .prompt-header-btn {
        padding: 8px 14px;
        font-size: 13px;
        background: #ffffff;
        color: #202124;
        border: 1px solid #dadce0;
    }

    .prompt-code-buttons .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
        border-color: rgb(5, 152, 98);
    }

    .prompt-code-buttons .prompt-header-btn.prompt-header-access:hover {
        background: rgb(4, 130, 83) !important;
        border-color: rgb(4, 130, 83);
        color: #fff !important;
    }

    .prompt-code-buttons .prompt-header-btn:hover {
        background: #f1f3f4;
    }

    .prompt-code-buttons .prompt-header-copy.copied {
        background: #d4edda;
        color: #155724;
        border-color: #28a745;
    }

    .prompt-header-reset {
        background: #ffffff;
        color: #202124;
    }

    /* ========================================
   RESPONSIVE
   ======================================== */
    @media (max-width: 768px) {
        .prompt-row-header {
            flex-direction: column;
            align-items: flex-start;
            gap: 12px;
        }

        .prompt-header-buttons {
            margin-left: 0;
            width: 100%;
        }

        .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }

        .prompt-cta-row {
            flex-direction: column;
        }

        .prompt-cta-btn {
            width: 100%;
        }

        /* Customize table responsive */
        .customize-table,
        .customize-table thead,
        .customize-table tbody,
        .customize-table tr,
        .customize-table th,
        .customize-table td {
            display: block;
        }

        .customize-table thead {
            display: none;
        }

        .customize-table tr {
            margin-bottom: 16px;
            border: 1px solid #e0e0e0;
            border-radius: 8px;
            overflow: hidden;
        }

        .customize-table td {
            width: 100% !important;
            border: none;
            border-bottom: 1px solid #e0e0e0;
        }

        .customize-table td:last-child {
            border-bottom: none;
        }

        .customize-table .var-name {
            background: #f1f3f4;
            font-weight: 600;
        }

        .prompt-code-header {
            flex-direction: column;
            gap: 12px;
            align-items: flex-start;
        }

        .prompt-code-buttons {
            width: 100%;
        }

        .prompt-code-buttons .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }
    }
</style>

<script>
    function handlePromptCopy() {
        // Check if unlocked via cookie
        if (typeof window.flowpastIsUnlocked === 'function' && !window.flowpastIsUnlocked()) {
            // Show email popup
            if (typeof window.flowpastShowEmailPopup === 'function') {
                window.flowpastShowEmailPopup('prompt');
            }
            return;
        }

        // Copy the customized prompt (with filled variables)
        const customizedPrompt = getCustomizedPrompt();
        const copyButtons = document.querySelectorAll('.prompt-header-copy, .prompt-header-copy-green, .prompt-cta-copy, .copy-customized-btn');

        navigator.clipboard.writeText(customizedPrompt).then(() => {
            copyButtons.forEach(btn => {
                btn.classList.add('copied');
                const textSpan = btn.querySelector('span');
                if (textSpan) textSpan.textContent = 'Copied!';
            });

            setTimeout(() => {
                copyButtons.forEach(btn => {
                    btn.classList.remove('copied');
                    const textSpan = btn.querySelector('span');
                    if (textSpan) textSpan.textContent = 'Copy Full Prompt';
                });
            }, 2000);
        }).catch(err => {
            console.error('Failed to copy:', err);
        });
    }

    // Store original prompt for customization
    const originalPrompt = "## OBJECTIVE\r\nCreate an FAQ interface that reduces mental clutter through progressive disclosure while meeting WCAG expectations. Deliver a production-ready, accessible accordion pattern that can scale to dozens of Q&As, optionally organized into categories, without depending on JavaScript for core expand\/collapse behavior.\r\n\r\n## PERSONA\r\nYou are an accessibility-first UI architect with a background in cognitive psychology. You design with strict respect for attention limits, stress reduction, and inclusive interaction\u2014treating information architecture as a user-care practice. Your writing is practical, implementation-oriented, and calm.\r\n\r\n## CONSTRAINTS\r\n- Use semantic HTML that works even if JavaScript is unavailable.\r\n- Accordion must be fully operable by keyboard using standard, predictable behaviors.\r\n- Any visual \u201copen\/closed\u201d cue must have an equivalent non-visual cue.\r\n- Motion must honor `prefers-reduced-motion`.\r\n- If categories are used, they must be implemented with `<nav>` and appropriate ARIA labeling.\r\n- Maintain a low-overload experience: reveal only what\u2019s needed, when it\u2019s needed.\r\n- Interactive colors must meet WCAG AA contrast.\r\n- Touch targets must be at least 44\u00d744 CSS pixels.\r\n- Support screen reader clarity, including understandable state communication.\r\n- Respect the chosen interaction model: single-open or multiple-open.\r\n\r\n## PROCESS\r\n1. **Pre-analysis (state your understanding first):**\r\n   - Summarize what you received (volume, categories, interaction mode).\r\n   - Call out any ambiguities or missing inputs and list assumptions you will use if not clarified.\r\n\r\n2. **Content structuring:**\r\n   - Review the Q&As and propose a clean grouping strategy (by theme, user journey stage, or intent).\r\n   - If the question count exceeds 10, propose and apply a categorization approach (and map each Q&A to a category).\r\n\r\n3. **Component architecture:**\r\n   - Prefer `<details><summary>` for native, no-JS disclosure where possible.\r\n   - If you introduce ARIA enhancements, do so minimally and correctly (avoid redundant roles on native elements).\r\n\r\n4. **Interaction model decision:**\r\n   - Implement **multiple-open** by default with native behavior.\r\n   - If **single-open** is requested, explain that enforcing \u201conly one open at a time\u201d typically requires JavaScript; provide:\r\n     - A no-JS baseline that remains accessible, and\r\n     - An optional progressive enhancement snippet (clearly marked) that adds single-open enforcement without breaking the baseline.\r\n\r\n5. **Accessibility + calm UI layer:**\r\n   - Apply a sensible heading outline (e.g., page section title + category headings + question headings).\r\n   - Ensure strong focus visibility and logical tab order.\r\n   - Provide clear open\/closed indicators that don\u2019t rely on color alone.\r\n   - Add reduced-motion-safe transitions.\r\n   - Ensure tap target sizing, spacing, and readable line lengths.\r\n\r\n6. **Deliver code + guidance:**\r\n   - Provide complete HTML with embedded CSS.\r\n   - Add thorough comments that justify accessibility and cognitive-load choices.\r\n   - Follow with a short implementation guide covering keyboard behavior and screen reader expectations.\r\n\r\n### Edge case handling\r\n- If **[FAQ_CONTENT]** is empty or not in a parsable format, ask for a sample of 3\u20135 Q&As and show a working template using placeholders.\r\n- If **[INTERACTION_MODE]** is missing, default to multiple-open and explain why.\r\n- If **[CATEGORY_NAMES]** are provided but don\u2019t match the number\/shape of questions, propose a corrected set and show the mapping.\r\n- If **[BRAND_VOICE]** conflicts with accessibility clarity (e.g., overly vague labels), prioritize clarity and note the adjustment.\r\n\r\n### What This Is NOT\r\n- Not a full design system or a complete site layout.\r\n- Not a JavaScript-heavy widget; any scripting must be optional and progressive.\r\n- Not a substitute for real assistive-technology testing; you will provide a test checklist, not certify compliance.\r\n\r\n## INPUTS\r\n- **FAQ questions and answers (raw text or structured list):** [FAQ_CONTENT]\r\n- **Preferred interaction mode (single or multiple open):** [INTERACTION_MODE]\r\n- **Category names (optional; used when many questions exist):** [CATEGORY_NAMES]\r\n- **Platform\/context notes (optional: framework, CMS, constraints):** [CONTEXT]\r\n- **Tone\/style preferences (optional):** [BRAND_VOICE]\r\n\r\n## OUTPUT SPECIFICATION\r\nUse clear markdown section headers and deliver, in this order:\r\n\r\n1. **Understanding & Assumptions**\r\n   - {Summary Of Inputs}\r\n   - {Detected Count And Grouping Notes}\r\n   - {Assumptions And Clarifications Needed}\r\n\r\n2. **Information Architecture Plan**\r\n   - {Grouping Strategy}\r\n   - {Category Map} (only if categories apply)\r\n\r\n3. **HTML (Complete)**\r\n   - Provide a single, complete HTML block containing:\r\n     - A wrapping landmark for the FAQ section\r\n     - Category navigation when applicable\r\n     - Accordion items implemented primarily with `<details><summary>`\r\n   - Include code comments explaining decisions.\r\n\r\n4. **CSS (Embedded)**\r\n   - Include styles that cover:\r\n     - Focus states\r\n     - Contrast-safe color choices\r\n     - Touch target sizing (44\u00d744 minimum)\r\n     - Open\/closed indicator styling\r\n     - `prefers-reduced-motion` handling\r\n   - Include code comments explaining decisions.\r\n\r\n5. **Optional Progressive Enhancement (Only if needed)**\r\n   - {Enhancement Goal}\r\n   - {Minimal JS Snippet} (only if enforcing single-open)\r\n   - {How It Preserves Accessibility}\r\n\r\n6. **Implementation Notes**\r\n   - {Keyboard Interaction Guide}\r\n   - {Screen Reader Expectations}\r\n   - {Testing Checklist}\r\n\r\n## QUALITY CHECKS\r\nBefore finalizing, verify and explicitly confirm:\r\n- Headings form a logical outline and do not skip levels without reason.\r\n- Accordion is usable with keyboard alone (Tab + Enter\/Space), and focus is always visible.\r\n- Non-visual users get equivalent state information (open\/closed) without relying on icons alone.\r\n- Motion effects are disabled or minimized under `prefers-reduced-motion`.\r\n- All interactive elements meet 44\u00d744 sizing and WCAG AA contrast targets.";
    const variables = ["[FAQ_CONTENT]","[INTERACTION_MODE]","[CATEGORY_NAMES]","[BRAND_VOICE]","[CONTEXT]"];
    // Initial render with highlighted variables
    document.addEventListener('DOMContentLoaded', function() {
        renderPromptWithHighlights();
    });

    // Live update prompt as user types
    document.querySelectorAll('.customize-input').forEach(input => {
        input.addEventListener('input', renderPromptWithHighlights);
    });

    function renderPromptWithHighlights() {
        const promptContent = document.getElementById('premium-prompt-content');
        if (!promptContent) return;

        let updatedPrompt = originalPrompt;
        let filledVariables = {};

        // Collect filled values
        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                filledVariables[placeholder] = value;
            }
        });

        // Replace filled variables and highlight remaining
        let htmlContent = escapeHtml(updatedPrompt);

        variables.forEach(placeholder => {
            const escapedPlaceholder = escapeHtml(placeholder);
            const regex = new RegExp(escapeRegex(escapedPlaceholder), 'g');

            if (filledVariables[placeholder]) {
                // Show filled value with green highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable-filled">' + escapeHtml(filledVariables[placeholder]) + '</span>'
                );
            } else {
                // Show original placeholder with yellow highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable">' + escapedPlaceholder + '</span>'
                );
            }
        });

        promptContent.innerHTML = htmlContent;
    }

    function escapeRegex(string) {
        return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    }

    function escapeHtml(text) {
        const div = document.createElement('div');
        div.textContent = text;
        return div.innerHTML;
    }

    function resetPrompt() {
        // Clear all input fields
        document.querySelectorAll('.customize-input').forEach(input => {
            input.value = '';
        });

        // Re-render with original placeholders highlighted
        renderPromptWithHighlights();

        // Visual feedback
        const resetBtns = document.querySelectorAll('.prompt-header-reset, .prompt-cta-reset');
        resetBtns.forEach(btn => {
            const originalText = btn.querySelector('span').textContent;
            btn.querySelector('span').textContent = 'Reset!';
            setTimeout(() => {
                btn.querySelector('span').textContent = originalText;
            }, 1000);
        });
    }


    function getCustomizedPrompt() {
        let updatedPrompt = originalPrompt;

        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                const regex = new RegExp(escapeRegex(placeholder), 'g');
                updatedPrompt = updatedPrompt.replace(regex, value);
            }
        });

        return updatedPrompt;
    }
</script>

</div>

<div class="pro-tips-section">

<h2 class="wp-block-heading">Pro Tips for Better AI Prompt Results</h2>



<ul class="wp-block-list">

<li><strong>Decide your interaction model upfront.</strong> Tell the model “single-open” if you want one answer visible at a time (great for short, high-volume FAQs). Prefer “multiple-open” when users often compare answers. Follow-up prompt: “Use a single-open model, and explain how state is communicated to screen readers.”</li>


<li><strong>Give it real content, not placeholders.</strong> Even 8–12 actual questions changes the grouping and labeling suggestions dramatically. If you’re not ready, paste your top ticket drivers from support and say: “These are copied from real conversations; keep the language plain and reassuring.”</li>


<li><strong>Ask for the “no-JS baseline” first.</strong> The prompt is designed to avoid JavaScript for core behavior, so lean into that. Then iterate with: “Now add optional progressive enhancement with JavaScript, but keep the same semantic HTML as the source of truth.”</li>


<li><strong>Force concrete accessibility acceptance criteria.</strong> After the first output, ask: “List 10 test steps a QA person can run using only a keyboard and a screen reader, and include expected results.” You’ll get checks like focus visibility, summary toggle predictability, and state announcements that are easy to verify.</li>


<li><strong>Combine it with your support voice and escalation rules.</strong> If your FAQ must match how agents write, pair this with a support-writing prompt and keep tone consistent. A useful follow-up: “Rewrite each answer to be under 70 words, include one next step, and avoid blamey language.” For response style, you can also reference your existing support patterns from a playbook.</li>

</ul>

</div>

<div class="related-prompts-section">

<h2 class="wp-block-heading">Related Prompts</h2>



<p>Once your FAQ accordion is accessible and calm, these prompts help you fill it with better answers and keep support consistent.</p>



<p>If you also need polished, on-brand answers for each FAQ entry, <a href="https://flowpast.com/prompts/write-customer-support-replies-with-this-ai-prompt/">Write Customer Support Replies with this AI Prompt</a> is a strong companion. Use it when your current FAQ content sounds like internal notes, or when you want short responses that still defuse frustration and set expectations clearly.</p>



<p>For teams doing live chat, phone, or onboarding calls, <a href="https://flowpast.com/prompts/create-customer-support-talk-tracks-with-this-ai-prompt/">Create Customer Support Talk Tracks with this AI Prompt</a> helps you standardize how people explain the same policies your FAQ covers. It’s especially helpful when your accordion answers need to align with what agents say in the moment.</p>



<p>When your FAQ is just one piece of a larger service experience, <a href="https://flowpast.com/prompts/build-a-customer-support-playbook-with-this-ai-prompt/">Build a Customer Support Playbook with this AI Prompt</a> gives you the rules, tone, and escalation paths that keep everything consistent. That consistency matters, honestly, because an accessible FAQ still fails if it contradicts your support team’s real process.</p>


<br>


<p>Quick reference:</p>



<ul class="wp-block-list">

<li><a href="https://flowpast.com/prompts/write-customer-support-replies-with-this-ai-prompt/">Write Customer Support Replies with this AI Prompt</a>: Turn FAQs into clear, friendly answers.</li>


<li><a href="https://flowpast.com/prompts/create-customer-support-talk-tracks-with-this-ai-prompt/">Create Customer Support Talk Tracks with this AI Prompt</a>: Consistent scripts for calls and chat.</li>


<li><a href="https://flowpast.com/prompts/build-a-customer-support-playbook-with-this-ai-prompt/">Build a Customer Support Playbook with this AI Prompt</a>: Policies, tone, and escalation rules.</li>


<li><a href="https://flowpast.com/prompts/create-a-customer-support-playbook-with-this-ai-prompt/">Create a Customer Support Playbook with this AI Prompt</a>: A structured playbook you can refine.</li>


<li><a href="https://flowpast.com/prompts/write-customer-support-replies-with-this-ai-prompt/">Write Customer Support Replies with this AI Prompt</a>: Improve consistency across repeated questions.</li>

</ul>

</div>

<div class="faq-section">

<h2 class="wp-block-heading">Common Questions</h2>


<div class="faq-item">
<span class="question">Which roles benefit most from this accessible FAQ accordion AI prompt?</span>

<p class="answer"><strong>Front-end Developers</strong> use this to ship an accordion that works without JavaScript and still behaves predictably for keyboard users. <strong>UX/UI Designers</strong> rely on it to reduce cognitive load through progressive disclosure, while keeping interaction cues available for both visual and non-visual users. <strong>Accessibility Specialists</strong> apply it to get a solid semantic baseline, including focus states, reduced-motion handling, and screen reader clarity. <strong>Support Operations Managers</strong> benefit when they need a scalable FAQ structure that deflects repetitive tickets without creating new usability barriers.</p>

</div>

<div class="faq-item">
<span class="question">Which industries get the most value from this accessible FAQ accordion AI prompt?</span>

<p class="answer"><strong>SaaS companies</strong> use it for onboarding and billing FAQs where users are stressed and scanning for one precise answer; an accessible accordion keeps the page from becoming a scrolling manual. <strong>E-commerce brands</strong> apply it to shipping, returns, and sizing questions, where clear states and big touch targets matter on mobile. <strong>Financial services and insurance</strong> teams benefit because compliance-heavy FAQs can be long, and progressive disclosure helps users navigate without getting overwhelmed. <strong>Healthcare and telehealth providers</strong> use it for patient instructions and privacy questions where accessibility and calm interaction patterns are non-negotiable.</p>

</div>

<div class="faq-item">
<span class="question">Why do basic AI prompts for building an accessible FAQ accordion produce weak results?</span>

<p class="answer">A typical prompt like “<em>Write me an FAQ accordion in HTML/CSS</em>” fails because it: lacks a no-JavaScript semantic baseline (so the core interaction breaks or becomes fragile), provides no keyboard behavior expectations beyond “click,” ignores screen reader state communication, produces stylish motion without honoring <code>prefers-reduced-motion</code>, and misses practical constraints like 44×44 touch targets and WCAG AA contrast for interactive colors. It also rarely includes QA notes, so teams ship something that “works on my machine” but collapses in real assistive-tech testing.</p>

</div>

<div class="faq-item">
<span class="question">Can I customize this accessible FAQ accordion prompt for my specific situation?</span>

<p class="answer">Yes. You can customize it by supplying your actual Q&amp;As (and any categories you already use), plus your preferred interaction model (single-open or multiple-open) and any brand constraints like color tokens or spacing rules. If you expect more than 10 questions, explicitly ask it to propose categories and map each Q&amp;A into a labeled <code>&lt;nav&gt;</code> structure. A helpful follow-up is: “Use my design tokens, keep contrast at WCAG AA, and output a QA checklist for keyboard-only and screen reader testing.”</p>

</div>

<div class="faq-item">
<span class="question">What are the most common mistakes when using this accessible FAQ accordion prompt?</span>

<p class="answer">The biggest mistake is not specifying the interaction model — instead of “Make an accordion,” say “Use a single-open model so opening one answer closes the previous one.” Another common error is forgetting to provide question volume and category intent; “We have some FAQs” leads to generic grouping, while “We have 26 Q&amp;As across Billing, Security, and Onboarding” produces a usable structure. People also paste brand colors without asking for contrast checks; “Use #8AC7FF for links” can fail, so ask for WCAG AA-compliant alternatives. Finally, teams skip real QA constraints; “Looks good” is not enough, but “Include keyboard-only steps and expected screen reader announcements” produces testable output.</p>

</div>

<div class="faq-item">
<span class="question">Who should NOT use this accessible FAQ accordion prompt?</span>

<p class="answer">This prompt isn’t ideal for one-off landing pages where you just need a quick visual mock and won’t implement semantic behavior. It’s also not the best fit if your team is forced to use a rigid third-party accordion widget you cannot change, because the value is in controlling markup, interaction, and QA. If you only need copy (not interface patterns), start with a support reply or playbook prompt and leave the component to your existing UI library.</p>

</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Which roles benefit most from this accessible FAQ accordion AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Front-end Developers use this to ship an accordion that works without JavaScript and still behaves predictably for keyboard users. UX/UI Designers rely on it to reduce cognitive load through progressive disclosure, while keeping interaction cues available for both visual and non-visual users. Accessibility Specialists apply it to get a solid semantic baseline, including focus states, reduced-motion handling, and screen reader clarity. Support Operations Managers benefit when they need a scalable FAQ structure that deflects repetitive tickets without creating new usability barriers."
      }
    },
    {
      "@type": "Question",
      "name": "Which industries get the most value from this accessible FAQ accordion AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "SaaS companies use it for onboarding and billing FAQs where users are stressed and scanning for one precise answer; an accessible accordion keeps the page from becoming a scrolling manual. E-commerce brands apply it to shipping, returns, and sizing questions, where clear states and big touch targets matter on mobile. Financial services and insurance teams benefit because compliance-heavy FAQs can be long, and progressive disclosure helps users navigate without getting overwhelmed. Healthcare and telehealth providers use it for patient instructions and privacy questions where accessibility and calm interaction patterns are non-negotiable."
      }
    },
    {
      "@type": "Question",
      "name": "Why do basic AI prompts for building an accessible FAQ accordion produce weak results?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A typical prompt like “Write me an FAQ accordion in HTML/CSS” fails because it: lacks a no-JavaScript semantic baseline (so the core interaction breaks or becomes fragile), provides no keyboard behavior expectations beyond “click,” ignores screen reader state communication, produces stylish motion without honoring prefers-reduced-motion, and misses practical constraints like 44×44 touch targets and WCAG AA contrast for interactive colors. It also rarely includes QA notes, so teams ship something that “works on my machine” but collapses in real assistive-tech testing."
      }
    },
    {
      "@type": "Question",
      "name": "Can I customize this accessible FAQ accordion prompt for my specific situation?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. You can customize it by supplying your actual Q&As (and any categories you already use), plus your preferred interaction model (single-open or multiple-open) and any brand constraints like color tokens or spacing rules. If you expect more than 10 questions, explicitly ask it to propose categories and map each Q&A into a labeled nav structure. A helpful follow-up is: “Use my design tokens, keep contrast at WCAG AA, and output a QA checklist for keyboard-only and screen reader testing.”"
      }
    },
    {
      "@type": "Question",
      "name": "What are the most common mistakes when using this accessible FAQ accordion prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The biggest mistake is not specifying the interaction model — instead of “Make an accordion,” say “Use a single-open model so opening one answer closes the previous one.” Another common error is forgetting to provide question volume and category intent; “We have some FAQs” leads to generic grouping, while “We have 26 Q&As across Billing, Security, and Onboarding” produces a usable structure. People also paste brand colors without asking for contrast checks; “Use #8AC7FF for links” can fail, so ask for WCAG AA-compliant alternatives. Finally, teams skip real QA constraints; “Looks good” is not enough, but “Include keyboard-only steps and expected screen reader announcements” produces testable output."
      }
    },
    {
      "@type": "Question",
      "name": "Who should NOT use this accessible FAQ accordion prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "This prompt isn’t ideal for one-off landing pages where you just need a quick visual mock and won’t implement semantic behavior. It’s also not the best fit if your team is forced to use a rigid third-party accordion widget you cannot change, because the value is in controlling markup, interaction, and QA. If you only need copy (not interface patterns), start with a support reply or playbook prompt and leave the component to your existing UI library."
      }
    }
  ]
}
</script>
</div>

<div class="closing-section">

<p>Accessible disclosure isn’t a “nice-to-have.” It’s how your FAQ stays usable as it grows. Paste the prompt into your model, run the output through your QA steps, and ship an accordion that feels calm instead of chaotic.</p>

</div>]]></content:encoded>
					
		
		
		<media:content url="https://flowpast.s3.eu-north-1.amazonaws.com/featured_blog_images/5001434.webp" medium="image"></media:content>
            	</item>
		<item>
		<title>Clean and Merge Messy CSV Records with this AI Prompt</title>
		<link>https://flowpast.com/prompts/clean-and-merge-messy-csv-records-with-this-ai-prompt/</link>
		
		<dc:creator><![CDATA[Lisa Granqvist]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 02:42:59 +0000</pubDate>
				<category><![CDATA[Prompts]]></category>
		<guid isPermaLink="false">https://flowpast.com/?p=5001593</guid>

					<description><![CDATA[Duplicates keep slipping through - the ultimate AI Prompt that designs a traceable dedupe workflow with composite keys, fuzzy matches, and reports. Discover more AI prompts for marketing, sales, and ops.]]></description>
										<content:encoded><![CDATA[<!-- FOCUS_KEYWORD: messy CSV records -->

<div class="hook-introduction">

<p>Your CSV looks fine until you try to merge it. Then the duplicates show up: the same customer spelled three ways, the same company with two addresses, and “missing” IDs that quietly break your reports. You can’t just delete rows and hope for the best because you’ll need to explain what changed later.</p>



<p>This <strong>messy CSV records</strong> AI prompt is built for <strong>RevOps managers</strong> cleaning CRM exports before pipeline reviews, <strong>marketing analysts</strong> stitching webinar/ads/LinkedIn lead lists into one database, and <strong>ops consultants</strong> who must deliver a defensible, repeatable cleanup process to clients. The output is a phased deduplication workflow (4–7 phases) with composite keys, fuzzy matching rules, targeted questions, plus an audit-ready change log that documents what was merged/removed and why.</p>

</div>

<div class="what-and-when-section">

<h2 class="wp-block-heading">What Does This AI Prompt Do and When to Use It?</h2>



<table class="solution-results-table three-column" role="presentation" aria-label="What this prompt does, when to use it, and what you get">
 <thead>
    <tr>
      <th scope="col">What This Prompt Does</th>
      <th scope="col">When to Use This Prompt</th>
      <th scope="col">What You&#8217;ll Get</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <ul class="automation-list">
          <li>It restates your goal, the CSV context, and the definition of “dedupe success” before any matching decisions are made.</li>
          <li>It designs a 4–7 phase deduplication plan that adapts to file size, key-field quality, and messiness indicators like typos and missing IDs.</li>
          <li>It builds deterministic matching logic using composite keys (multi-column uniqueness) and explains why each key is safe or risky.</li>
          <li>It layers in fuzzy/approximate matching for “same entity, different spelling” cases, with strictness tuned to avoid over-merging.</li>
          <li>It produces traceable documentation: a decision log, merge rationale, and a repeatable workflow you can run again next month.</li>
       </ul>
      </td>
      <td>
        <ul class="results-list">
          <li>You are combining multiple exports (CRM, email platform, event registrations) and the same lead shows up under different names.</li>
          <li>Your dashboards are drifting because duplicates inflate counts, but nobody can prove which rows are “the real ones.”</li>
          <li>You have to merge records without accidentally collapsing distinct entities (two “John Smiths,” franchises, parent/subsidiary brands).</li>
          <li>Leadership wants an audit trail because the cleaned dataset will feed finance, compliance, or downstream automation.</li>
          <li>Your team needs a repeatable monthly process instead of one heroic cleanup that no one can reproduce.</li>
        </ul>
      </td>
       <td>
         <ul class="deliverables-list">
           <li>A 4–7 phase dedupe workflow tailored to your CSV’s fields and messiness level.</li>
           <li>At least 3 proposed composite key options, each with “safe to merge” and “watch out” notes.</li>
           <li>A fuzzy-match configuration outline (similarity signals, thresholds, and tie-breakers) described in plain language.</li>
           <li>An audit-ready merge report template that records “source rows → survivor row” plus the reason for every merge.</li>
           <li>A set of targeted clarification questions to resolve ambiguity before the workflow finalizes risky decisions.</li>
         </ul>
       </td>
    </tr>
  </tbody>
</table>

</div>

<div class="prompt-display-section">

<h2 class="wp-block-heading">The Full AI Prompt: Audit-Ready CSV Deduplication Workflow</h2>



<div class="prompt-viewer-wrapper" id="prompt-section">
    <div class="prompt-comparison-row prompt-premium">
        <!-- Header with buttons -->
        <div class="prompt-row-header">
            <!-- <span class="prompt-row-icon">✨</span> -->
            <span class="prompt-row-title">
                                    Step 1: Customize the prompt with your input
                            </span>
            <div class="prompt-header-buttons">
                                    <button class="prompt-header-btn prompt-header-reset" onclick="resetPrompt()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                                <button class="prompt-header-btn prompt-header-copy-green flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span>Customize and Copy Full Prompt</span>
                </button>
            </div>
        </div>

        <!-- Customize the Prompt Section -->
                    <div class="prompt-customize-section">
                <span class="customize-title">Customize the Prompt</span>
                <p class="customize-subtitle">Fill in the fields below to personalize this prompt for your needs.</p>
                <table class="customize-table">
                    <thead>
                        <tr>
                            <th>Variable</th>
                            <th>What to Enter</th>
                            <th>Customise the prompt</th>
                        </tr>
                    </thead>
                    <tbody>
                                                    <tr>
                                <td class="var-name"><code>[UPPERCASE_WITH_UNDERSCORES]</code></td>
                                <td class="var-desc">
                                    Enter variable names in uppercase letters separated by underscores. This format is required for user-provided inputs.                                    <div class="var-example">For example: "CUSTOMER_ID or ORDER_DATE"</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[UPPERCASE_WITH_UNDERSCORES]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[TARGET_AUDIENCE]</code></td>
                                <td class="var-desc">
                                    Specify the group of people or entities for whom the deduplication process is being designed. Include their industry, data challenges, or expertise level.                                    <div class="var-example">For example: "Healthcare providers managing patient records with duplicate entries due to manual data entry errors."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[TARGET_AUDIENCE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[PRIMARY_GOAL]</code></td>
                                <td class="var-desc">
                                    State the main objective you want to achieve through the deduplication process, such as improving data accuracy or ensuring audit readiness.                                    <div class="var-example">For example: "Create a deduplicated dataset of customer records that is fully traceable and compliant with GDPR standards."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[PRIMARY_GOAL]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[CONTEXT]</code></td>
                                <td class="var-desc">
                                    Provide background details about the dataset or situation that informs the deduplication approach, including data sources and current challenges.                                    <div class="var-example">For example: "The dataset includes customer information from two merged CRM systems, with inconsistent formatting and duplicate entries from manual imports."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[CONTEXT]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[CSV_SAMPLE]</code></td>
                                <td class="var-desc">
                                    Upload or describe a small representative sample of the CSV file, including column headers and a few rows of data.                                    <div class="var-example">For example: "A CSV with columns for &#039;Name&#039;, &#039;Email&#039;, &#039;Phone&#039;, and &#039;Address&#039;, showing inconsistent capitalization and missing values."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[CSV_SAMPLE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[DATASET_SIZE]</code></td>
                                <td class="var-desc">
                                    Indicate the approximate size of the dataset, such as the total number of rows or file size in megabytes.                                    <div class="var-example">For example: "Approximately 500,000 rows spanning 50 MB."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[DATASET_SIZE]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[KEY_FIELDS]</code></td>
                                <td class="var-desc">
                                    List the columns that define uniqueness or serve as primary/composite keys for deduplication purposes.                                    <div class="var-example">For example: "Customer_ID, Email, and Phone_Number."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[KEY_FIELDS]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[FUZZY_FIELDS]</code></td>
                                <td class="var-desc">
                                    Specify the columns where approximate matching will be applied, such as names or addresses prone to variations.                                    <div class="var-example">For example: "Name and Address fields with potential typos or alternate spellings."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[FUZZY_FIELDS]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[DEDUPLICATION_STRICTNESS]</code></td>
                                <td class="var-desc">
                                    Define how strict the deduplication process should be, balancing between avoiding over-merging and ensuring thorough cleanup.                                    <div class="var-example">For example: "High strictness to avoid merging distinct entities with similar names."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[DEDUPLICATION_STRICTNESS]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[RESOLUTION_STRATEGY]</code></td>
                                <td class="var-desc">
                                    Describe the approach for resolving duplicates, including whether to retain the most complete record or merge fields selectively.                                    <div class="var-example">For example: "Retain the record with the most complete address and merge missing phone numbers from duplicates."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[RESOLUTION_STRATEGY]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[MERGE_POLICY]</code></td>
                                <td class="var-desc">
                                    Specify the rules for merging duplicate records, such as prioritizing certain fields or handling conflicting values.                                    <div class="var-example">For example: "Merge records by prioritizing the most recent entry for timestamped fields and keeping non-null values for other fields."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[MERGE_POLICY]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[MATCH_EXCEPTIONS]</code></td>
                                <td class="var-desc">
                                    List any specific cases where matches should not be considered duplicates, such as similar names in different states.                                    <div class="var-example">For example: "Do not merge records where &#039;Company_Name&#039; matches but &#039;State&#039; differs."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[MATCH_EXCEPTIONS]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[SKILL_LEVEL]</code></td>
                                <td class="var-desc">
                                    Indicate the user&#039;s expertise level with data deduplication tools and concepts, such as beginner, intermediate, or advanced.                                    <div class="var-example">For example: "Intermediate user familiar with basic deduplication concepts but new to fuzzy matching techniques."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[SKILL_LEVEL]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[TIMEFRAME]</code></td>
                                <td class="var-desc">
                                    Specify the time available to complete the deduplication process, including deadlines or urgency level.                                    <div class="var-example">For example: "Two weeks to prepare the dataset for an upcoming audit."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[TIMEFRAME]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[TOOLING_PREFERENCE]</code></td>
                                <td class="var-desc">
                                    Mention any preferred tools, software, or programming languages for the deduplication process.                                    <div class="var-example">For example: "Prefer Python-based tools like pandas and fuzzywuzzy for flexibility and integration."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[TOOLING_PREFERENCE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[TONE]</code></td>
                                <td class="var-desc">
                                    Specify the desired tone for communication and documentation, such as formal, conversational, or technical.                                    <div class="var-example">For example: "Calm and methodical tone with clear explanations suitable for non-technical stakeholders."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[TONE]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[FORMAT]</code></td>
                                <td class="var-desc">
                                    Indicate the preferred format for deliverables, such as plain text, Excel, or JSON.                                    <div class="var-example">For example: "Audit report in Excel format with a summary sheet and detailed logs."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[FORMAT]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                            </tbody>
                </table>

                <button class="copy-customized-btn flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span class="copy-customized-text">Customise the prompt now</span>
                </button>
            </div>
        
        <!-- Full Prompt Code Header -->
                    <div class="prompt-code-header">
                <span class="prompt-code-title">
                    Step 2: Copy the Prompt
                </span>
                <div class="prompt-code-buttons">
                    <!-- Reset: Only visible when unlocked -->
                    <button class="prompt-header-btn prompt-header-reset btn-when-unlocked" onclick="resetPrompt()" style="display: none;">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                    <!-- Copy Full Prompt -->
                    <button class="prompt-header-btn prompt-header-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                            <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                        </svg>
                        <span>Copy Full Prompt</span>
                    </button>
                </div>
            </div>
        

        <!-- Prompt Content -->
        <div class="prompt-box prompt-gated-wrapper">
            <!-- Gated: Blurred content -->
            <div class="prompt-gated-content">
                <div class="prompt-header-visible">OBJECTIVE</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PERSONA</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">CONSTRAINTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PROCESS</div><div class="prompt-header-visible subheader">0) Pre-Analysis (mandatory)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">1) Design an adaptive phase plan</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">2) Data discovery &amp; uniqueness mapping</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">3) Matching strategy (tiered)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">4) Resolution &amp; survivorship rules</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">5) Execution logic (conceptual + implementable)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">6) Deliverables &amp; reporting</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">7) Edge-case handling (always consider)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">What This Is NOT</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">INPUTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">OUTPUT SPECIFICATION</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">QUALITY CHECKS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div>            </div>
            <!-- Unlocked: Full content (hidden by default) -->
            <div class="prompt-content-full" id="premium-prompt-content" style="display: none;">
                ## OBJECTIVE
Help a user turn a messy CSV into a deduplicated, audit-ready dataset using a mix of composite keys (multi-column uniqueness) and approximate matching (fuzzy similarity), while producing clear documentation of what was removed/merged and why. The workflow must adapt in depth and number of phases to the situation.

## PERSONA
You are a senior Data Deduplication Architect with a past career in database forensics (especially financial and healthcare recovery work). You’re known for spotting “same-entity, different-spelling” patterns quickly and for designing defensible matching logic grounded in Peter Christen–style record linkage thinking. Your communication is calm, methodical, and practical: you translate complex matching decisions into user-friendly choices.

## CONSTRAINTS
- Prioritize correctness, traceability, and repeatability over speed.
- Use both deterministic matching (exact/composite keys) and probabilistic/fuzzy matching when appropriate.
- Calibrate strictness to the user’s needs; do not over-merge distinct entities.
- Every major decision must be explainable in plain language and reflected in an audit trail.
- If inputs are missing or unclear, ask targeted questions instead of guessing.
- Variable format compliance:
  - User-provided inputs must use **[UPPERCASE_WITH_UNDERSCORES]** (from the Inputs list).
  - AI-filled placeholders in deliverables must use **{Title Case}**.

## PROCESS
### 0) Pre-Analysis (mandatory)
Before doing anything else, restate:
- what you think the user is trying to accomplish,
- what you have been given,
- what you still need (if anything),
- and what deduplication “success” will look like for this case.

### 1) Design an adaptive phase plan
Create a dynamic plan with **4–7 phases** depending on complexity (shift depth as needed). Decide phase count using:
- file size and whether sampling is required,
- number of key fields and whether they form a composite key,
- messiness indicators (typos, missingness, formatting drift),
- matching sophistication required (exact only vs fuzzy tiers),
- documentation/reporting needs,
- the user’s skill level and time expectations.

### 2) Data discovery &amp; uniqueness mapping
- Inspect the CSV sample structure (headers, datatypes, null patterns, obvious normalization issues).
- Confirm which columns define uniqueness.
- Identify fields that are likely to vary yet refer to the same entity (names, addresses, phone, company, etc.).
- Propose candidate standardizations (casefolding, trimming, punctuation removal, address normalization, etc.) when needed.

### 3) Matching strategy (tiered)
Build a multi-layer approach such as:
- Tier A: exact matches on primary key(s) or normalized composite keys
- Tier B: strict fuzzy on selected fields (high threshold)
- Tier C: broader fuzzy with safeguards (lower threshold + additional corroborating fields)

Specify:
- similarity methods to use (e.g., token-based vs character-based),
- which columns participate in each tier,
- thresholds and tie-break rules,
- exceptions/whitelists/blacklists if the user provides them.

### 4) Resolution &amp; survivorship rules
Determine how to handle each duplicate group:
- keep-first / keep-last / keep-most-complete / custom survivorship
- optional controlled merge (only non-conflicting fields; flag conflicts)
- confidence scoring and “needs review” bucket for borderline fuzzy matches

### 5) Execution logic (conceptual + implementable)
Provide a clear, implementable outline (and code-style pseudocode if useful) that:
- builds keys,
- performs matching,
- clusters duplicates into groups,
- applies survivorship/merge,
- logs every action.

### 6) Deliverables &amp; reporting
Generate a packaging plan for outputs:
- a deduplicated CSV
- a duplicates/audit report with grouping + match evidence
- summary metrics (counts, rates, match-type distribution, confidence histogram)
- optional review set for uncertain matches

### 7) Edge-case handling (always consider)
Include explicit handling for:
- missing key fields,
- contradictory fields inside a suspected group,
- many-to-many collisions (common names),
- repeated placeholders (e.g., “N/A”, “Unknown”),
- very large CSVs (sampling, chunking, blocking).

### What This Is NOT
- Not a generic “clean my CSV” task without deduplication goals.
- Not an identity resolution system across multiple datasets unless provided.
- Not a guarantee that fuzzy matches are correct without human review for borderline cases.
- Not legal/medical compliance advice; documentation is operational, not regulatory counsel.

## INPUTS
- **Primary user segment / ideal recipient:** [TARGET_AUDIENCE]
- **User’s main outcome:** [PRIMARY_GOAL]
- **Background and constraints (why dedupe, what mistakes are costly):** [CONTEXT]
- **CSV snippet (headers + ~12–25 rows):** [CSV_SAMPLE]
- **Approximate total row count (if known):** [DATASET_SIZE]
- **Columns that define uniqueness (single or composite):** [KEY_FIELDS]
- **Fields likely to vary but refer to same entity:** [FUZZY_FIELDS]
- **Desired strictness (low/medium/high) or risk tolerance:** [DEDUPLICATION_STRICTNESS]
- **Duplicate handling preference (keep-first/keep-last/most-complete/custom):** [RESOLUTION_STRATEGY]
- **Merge policy (no merge / merge non-conflicting / custom):** [MERGE_POLICY]
- **Any hard exceptions or rules (e.g., never merge across different DOB):** [MATCH_EXCEPTIONS]
- **User skill level (non-technical/technical):** [SKILL_LEVEL]
- **Time constraints:** [TIMEFRAME]
- **Preferred tooling (Python/pandas, SQL, Excel, no-code):** [TOOLING_PREFERENCE]
- **Tone for explanations:** [TONE]
- **Output format constraints (file naming, extra columns, etc.):** [FORMAT]

## OUTPUT SPECIFICATION
Produce content in this order:

1) **Pre-Analysis Summary**
- {Task Understanding}
- {Known Inputs}
- {Open Questions}
- {Definition Of Done}

2) **Adaptive Phase Plan**
For each phase:
- {Phase Name}
- {Goal}
- {User Inputs Needed}
- {Actions}
- {Outputs}

3) **Matching Blueprint**
- {Blocking Strategy}
- {Exact Match Rules}
- {Composite Key Formula}
- {Fuzzy Match Rules}
- {Similarity Thresholds}
- {Exception Rules}
- {False-Merge Safeguards}

4) **Resolution Blueprint**
- {Survivorship Rule}
- {Merge Rule}
- {Conflict Handling}
- {Confidence Scoring Approach}
- {Manual Review Criteria}

5) **Execution Outline**
- {Step By Step Procedure}
- {Audit Logging Fields}
- {Scalability Notes}

6) **Deliverables**
- {Deduplicated File Name}
- {Duplicates Report File Name}
- {Summary Metrics}
- {Review Queue File Name} (if applicable)

7) **User Prompts**
End with the exact questions you need next (if anything), and a clear instruction telling the user what to provide to proceed.

## QUALITY CHECKS
At the end, include a short validation list confirming:
- {Key Fields Confirmed Or Clarified}
- {Fuzzy Fields Justified}
- {Thresholds Aligned With Strictness}
- {Audit Trail Covers All Decisions}
- {Edge Cases Addressed Or Flagged For Review}            </div>
        </div>


    </div>

    <!-- CTA Row - Full width buttons -->
    <div class="prompt-cta-row">
        <button class="prompt-cta-btn prompt-cta-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
            </svg>
            <span class="cta-copy-text">Copy Full Prompt</span>
        </button>
    </div>
</div>

<style>
    /* Gated prompt states */
    .prompt-gated-wrapper {
        position: relative;
    }

    /* When unlocked - show full content, hide gated */
    body.flowpast-unlocked .prompt-gated-wrapper .prompt-gated-content {
        display: none;
    }

    body.flowpast-unlocked .prompt-gated-wrapper .prompt-content-full {
        display: block !important;
    }

    /* Show/hide elements based on unlock state */
    body.flowpast-unlocked .btn-when-unlocked {
        display: inline-flex !important;
    }

    .prompt-viewer-wrapper {
        scroll-margin-top: 250px;
    }

    /* ========================================
   PROMPT VIEWER - MAIN WRAPPER
   ======================================== */
    .prompt-viewer-wrapper {
        margin: 30px 0;
        display: flex;
        flex-direction: column;
        gap: 20px;
    }

    /* ========================================
   PROMPT BOX CONTAINER
   ======================================== */
    .prompt-comparison-row {
        border-radius: 12px;
        overflow: hidden;
        border: 1px solid #e0e0e0;
        background: #fff;
    }

    /* ========================================
   HEADER WITH BUTTONS
   ======================================== */
    .prompt-row-header {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 14px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
        flex-wrap: wrap;
    }

    .prompt-row-icon {
        font-size: 20px;
    }

    .prompt-row-title {
        font-weight: 600;
        font-size: 22px;
        color: #fff !important;
        text-decoration: underline
    }

    .prompt-header-buttons {
        margin-left: auto;
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
    }

    /* Header buttons */
    .prompt-header-btn {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 10px 20px;
        border-radius: 6px;
        font-size: 14px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-header-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-header-copy:hover {
        background: #2a2a2a;
    }

    .prompt-header-copy.copied {
        background: #2e7d32;
    }

    .prompt-header-copy-green {
        background: #04AA6D !important;
        color: #fff !important;
    }

    .prompt-header-copy-green:hover {
        background: #039860 !important;
    }

    .prompt-header-copy-green.copied {
        background: #2e7d32 !important;
    }

    .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-header-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-1px);
    }

    /* ========================================
   PROMPT CONTENT - FULL (NO SCROLL)
   ======================================== */
    .prompt-box {
        background: #ffffff;
    }

    .prompt-content-full {
        padding: 24px;
        margin: 0;
        color: #202124;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.7;
        white-space: pre-wrap;
        word-wrap: break-word;
        /* No scroll - show full content */
        max-height: none;
        overflow: visible;
    }

    /* Highlighted variable in prompt */
    .prompt-variable {
        background: #fff3cd;
        color: #1967d2;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #ffc107;
    }

    .prompt-variable-filled {
        background: #d4edda;
        color: #155724;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #28a745;
    }

    /* ========================================
   GATED CONTENT (NO ACCESS)
   ======================================== */
    .prompt-gated-content {
        padding: 24px;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.8;
        max-height: none;
        overflow: visible;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        cursor: default;
    }

    /* ## headers - larger, black */
    .prompt-header-visible {
        color: #202124;
        font-weight: 600;
        margin: 5px 0 0px 0;
        font-size: 20px;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        text-decoration: underline;
        text-underline-offset: 4px;
    }

    /* ### headers - smaller, black */
    .prompt-header-visible.subheader {
        color: #202124;
        font-weight: 600;
        margin: 5px 0;
        font-size: 18px;
    }

    .prompt-header-visible:first-child {
        margin-top: 0;
    }

    /* ========================================
   LOCKED SECTION BLOCK
   ======================================== */
    .locked-section {
        position: relative;
        margin: 4px 0 8px 0;
        border-radius: 6px;
        overflow: hidden;
        background: linear-gradient(110deg, #e2e8f0 8%, #f1f5f9 18%, #e2e8f0 33%);
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
    }

    .locked-section-bg {
        position: relative;
    }

    .locked-section-lines {
        padding: 8px 12px;
        position: relative;
    }

    .locked-line {
        height: 6px;
        background: rgba(255, 255, 255, 0.6);
        border-radius: 3px;
        margin-bottom: 4px;
        margin-left: 12px;
    }

    .locked-line:last-child {
        margin-bottom: 0;
    }

    .locked-section-icon {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: 10;
        font-size: 24px;
        filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1));
    }

    /* Subheader locked sections - slightly indented */
    /*  .prompt-header-visible.subheader+.locked-section {
        margin-left: 16px;
    } */

    /* ========================================
   COMPATIBILITY BADGES
   ======================================== */
    .prompt-compatibility {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 8px;
        padding: 12px 20px;
        background: #f8f9fa;
        border-top: 1px solid #e0e0e0;
    }

    .compat-label {
        font-size: 13px;
        color: #5f6368;
        font-weight: 500;
    }

    .compat-badge {
        padding: 4px 10px;
        background: #e8f0fe;
        color: #1967d2;
        border-radius: 4px;
        font-size: 12px;
        font-weight: 500;
    }

    /* ========================================
   CTA ROW - FULL WIDTH BUTTONS
   ======================================== */
    .prompt-cta-row {
        display: flex;
        gap: 16px;
        flex-wrap: wrap;
    }

    .prompt-cta-btn {
        flex: 1;
        min-width: 200px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        padding: 16px 24px;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-cta-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-copy:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-copy.copied {
        background: #2e7d32;
    }

    .prompt-cta-reset {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-reset:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-cta-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    /* ========================================
    CUSTOMIZE YOUR PROMPT SECTION
    ======================================== */
    .prompt-customize-section {
        padding: 24px;
        border-bottom: 1px solid #e0e0e0;
        background: #fafbfc;
    }

    .customize-title {
        margin: 0 0 8px 0;
        font-size: 18px;
        font-weight: 700;
        color: #202124;
    }

    .customize-subtitle {
        margin: 0 0 20px 0;
        font-size: 14px;
        color: #5f6368;
    }

    .customize-table {
        width: 100%;
        border-collapse: collapse;
        margin-bottom: 20px;
    }

    .customize-table th {
        text-align: left;
        padding: 12px;
        background: #f1f3f4;
        border: 1px solid #e0e0e0;
        font-size: 13px;
        font-weight: 600;
        color: #202124;
    }

    .customize-table td {
        padding: 12px;
        border: 1px solid #e0e0e0;
        vertical-align: top;
    }

    .customize-table .var-name {
        width: 25%;
        background: #f8f9fa;
    }

    .customize-table .var-name code {
        background: #fff3cd;
        color: #1967d2;
        border: 1px solid #ffc107;
        padding: 4px 8px;
        border-radius: 4px;
        font-size: 12px;
        word-break: break-all;
        font-weight: 600;
    }

    .customize-table .var-desc {
        width: 35%;
        font-size: 13px;
        color: #5f6368;
        line-height: 1.5;
    }

    .customize-table .var-example {
        margin-top: 8px;
        padding: 8px 10px;
        background: #f8f9fa;
        border-left: 3px solid #dadce0;
        font-size: 12px;
        color: #5f6368;
        font-style: italic;
        border-radius: 0 4px 4px 0;
    }

    .customize-table .var-input {
        width: 40%;
    }

    .customize-input {
        width: 100%;
        padding: 10px 12px;
        border: 1px solid #dadce0;
        border-radius: 6px;
        font-size: 13px;
        font-family: inherit;
        resize: vertical;
        transition: border-color 0.2s, box-shadow 0.2s;
    }

    .customize-input:focus {
        outline: none;
        border-color: rgb(5, 152, 98);
        box-shadow: 0 0 0 3px rgba(5, 152, 98, 0.1);
    }

    .customize-input::placeholder {
        color: #9aa0a6;
        font-style: italic;
    }

    .copy-customized-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        width: 100%;
        padding: 16px 24px;
        background: rgb(5, 152, 98);
        color: #fff;
        border: none;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
    }

    .copy-customized-btn:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    .copy-customized-btn.copied {
        background: #2e7d32;
    }

    /* ========================================
    FULL PROMPT CODE HEADER
    ======================================== */
    .prompt-code-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 10px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
    }

    .prompt-code-title {
        font-size: 22px;
        font-weight: 600;
        text-decoration: underline;

    }

    .prompt-code-buttons {
        display: flex;
        gap: 8px;
    }

    .prompt-code-buttons .prompt-header-btn {
        padding: 8px 14px;
        font-size: 13px;
        background: #ffffff;
        color: #202124;
        border: 1px solid #dadce0;
    }

    .prompt-code-buttons .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
        border-color: rgb(5, 152, 98);
    }

    .prompt-code-buttons .prompt-header-btn.prompt-header-access:hover {
        background: rgb(4, 130, 83) !important;
        border-color: rgb(4, 130, 83);
        color: #fff !important;
    }

    .prompt-code-buttons .prompt-header-btn:hover {
        background: #f1f3f4;
    }

    .prompt-code-buttons .prompt-header-copy.copied {
        background: #d4edda;
        color: #155724;
        border-color: #28a745;
    }

    .prompt-header-reset {
        background: #ffffff;
        color: #202124;
    }

    /* ========================================
   RESPONSIVE
   ======================================== */
    @media (max-width: 768px) {
        .prompt-row-header {
            flex-direction: column;
            align-items: flex-start;
            gap: 12px;
        }

        .prompt-header-buttons {
            margin-left: 0;
            width: 100%;
        }

        .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }

        .prompt-cta-row {
            flex-direction: column;
        }

        .prompt-cta-btn {
            width: 100%;
        }

        /* Customize table responsive */
        .customize-table,
        .customize-table thead,
        .customize-table tbody,
        .customize-table tr,
        .customize-table th,
        .customize-table td {
            display: block;
        }

        .customize-table thead {
            display: none;
        }

        .customize-table tr {
            margin-bottom: 16px;
            border: 1px solid #e0e0e0;
            border-radius: 8px;
            overflow: hidden;
        }

        .customize-table td {
            width: 100% !important;
            border: none;
            border-bottom: 1px solid #e0e0e0;
        }

        .customize-table td:last-child {
            border-bottom: none;
        }

        .customize-table .var-name {
            background: #f1f3f4;
            font-weight: 600;
        }

        .prompt-code-header {
            flex-direction: column;
            gap: 12px;
            align-items: flex-start;
        }

        .prompt-code-buttons {
            width: 100%;
        }

        .prompt-code-buttons .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }
    }
</style>

<script>
    function handlePromptCopy() {
        // Check if unlocked via cookie
        if (typeof window.flowpastIsUnlocked === 'function' && !window.flowpastIsUnlocked()) {
            // Show email popup
            if (typeof window.flowpastShowEmailPopup === 'function') {
                window.flowpastShowEmailPopup('prompt');
            }
            return;
        }

        // Copy the customized prompt (with filled variables)
        const customizedPrompt = getCustomizedPrompt();
        const copyButtons = document.querySelectorAll('.prompt-header-copy, .prompt-header-copy-green, .prompt-cta-copy, .copy-customized-btn');

        navigator.clipboard.writeText(customizedPrompt).then(() => {
            copyButtons.forEach(btn => {
                btn.classList.add('copied');
                const textSpan = btn.querySelector('span');
                if (textSpan) textSpan.textContent = 'Copied!';
            });

            setTimeout(() => {
                copyButtons.forEach(btn => {
                    btn.classList.remove('copied');
                    const textSpan = btn.querySelector('span');
                    if (textSpan) textSpan.textContent = 'Copy Full Prompt';
                });
            }, 2000);
        }).catch(err => {
            console.error('Failed to copy:', err);
        });
    }

    // Store original prompt for customization
    const originalPrompt = "## OBJECTIVE\r\nHelp a user turn a messy CSV into a deduplicated, audit-ready dataset using a mix of composite keys (multi-column uniqueness) and approximate matching (fuzzy similarity), while producing clear documentation of what was removed\/merged and why. The workflow must adapt in depth and number of phases to the situation.\r\n\r\n## PERSONA\r\nYou are a senior Data Deduplication Architect with a past career in database forensics (especially financial and healthcare recovery work). You\u2019re known for spotting \u201csame-entity, different-spelling\u201d patterns quickly and for designing defensible matching logic grounded in Peter Christen\u2013style record linkage thinking. Your communication is calm, methodical, and practical: you translate complex matching decisions into user-friendly choices.\r\n\r\n## CONSTRAINTS\r\n- Prioritize correctness, traceability, and repeatability over speed.\r\n- Use both deterministic matching (exact\/composite keys) and probabilistic\/fuzzy matching when appropriate.\r\n- Calibrate strictness to the user\u2019s needs; do not over-merge distinct entities.\r\n- Every major decision must be explainable in plain language and reflected in an audit trail.\r\n- If inputs are missing or unclear, ask targeted questions instead of guessing.\r\n- Variable format compliance:\r\n  - User-provided inputs must use **[UPPERCASE_WITH_UNDERSCORES]** (from the Inputs list).\r\n  - AI-filled placeholders in deliverables must use **{Title Case}**.\r\n\r\n## PROCESS\r\n### 0) Pre-Analysis (mandatory)\r\nBefore doing anything else, restate:\r\n- what you think the user is trying to accomplish,\r\n- what you have been given,\r\n- what you still need (if anything),\r\n- and what deduplication \u201csuccess\u201d will look like for this case.\r\n\r\n### 1) Design an adaptive phase plan\r\nCreate a dynamic plan with **4\u20137 phases** depending on complexity (shift depth as needed). Decide phase count using:\r\n- file size and whether sampling is required,\r\n- number of key fields and whether they form a composite key,\r\n- messiness indicators (typos, missingness, formatting drift),\r\n- matching sophistication required (exact only vs fuzzy tiers),\r\n- documentation\/reporting needs,\r\n- the user\u2019s skill level and time expectations.\r\n\r\n### 2) Data discovery & uniqueness mapping\r\n- Inspect the CSV sample structure (headers, datatypes, null patterns, obvious normalization issues).\r\n- Confirm which columns define uniqueness.\r\n- Identify fields that are likely to vary yet refer to the same entity (names, addresses, phone, company, etc.).\r\n- Propose candidate standardizations (casefolding, trimming, punctuation removal, address normalization, etc.) when needed.\r\n\r\n### 3) Matching strategy (tiered)\r\nBuild a multi-layer approach such as:\r\n- Tier A: exact matches on primary key(s) or normalized composite keys\r\n- Tier B: strict fuzzy on selected fields (high threshold)\r\n- Tier C: broader fuzzy with safeguards (lower threshold + additional corroborating fields)\r\n\r\nSpecify:\r\n- similarity methods to use (e.g., token-based vs character-based),\r\n- which columns participate in each tier,\r\n- thresholds and tie-break rules,\r\n- exceptions\/whitelists\/blacklists if the user provides them.\r\n\r\n### 4) Resolution & survivorship rules\r\nDetermine how to handle each duplicate group:\r\n- keep-first \/ keep-last \/ keep-most-complete \/ custom survivorship\r\n- optional controlled merge (only non-conflicting fields; flag conflicts)\r\n- confidence scoring and \u201cneeds review\u201d bucket for borderline fuzzy matches\r\n\r\n### 5) Execution logic (conceptual + implementable)\r\nProvide a clear, implementable outline (and code-style pseudocode if useful) that:\r\n- builds keys,\r\n- performs matching,\r\n- clusters duplicates into groups,\r\n- applies survivorship\/merge,\r\n- logs every action.\r\n\r\n### 6) Deliverables & reporting\r\nGenerate a packaging plan for outputs:\r\n- a deduplicated CSV\r\n- a duplicates\/audit report with grouping + match evidence\r\n- summary metrics (counts, rates, match-type distribution, confidence histogram)\r\n- optional review set for uncertain matches\r\n\r\n### 7) Edge-case handling (always consider)\r\nInclude explicit handling for:\r\n- missing key fields,\r\n- contradictory fields inside a suspected group,\r\n- many-to-many collisions (common names),\r\n- repeated placeholders (e.g., \u201cN\/A\u201d, \u201cUnknown\u201d),\r\n- very large CSVs (sampling, chunking, blocking).\r\n\r\n### What This Is NOT\r\n- Not a generic \u201cclean my CSV\u201d task without deduplication goals.\r\n- Not an identity resolution system across multiple datasets unless provided.\r\n- Not a guarantee that fuzzy matches are correct without human review for borderline cases.\r\n- Not legal\/medical compliance advice; documentation is operational, not regulatory counsel.\r\n\r\n## INPUTS\r\n- **Primary user segment \/ ideal recipient:** [TARGET_AUDIENCE]\r\n- **User\u2019s main outcome:** [PRIMARY_GOAL]\r\n- **Background and constraints (why dedupe, what mistakes are costly):** [CONTEXT]\r\n- **CSV snippet (headers + ~12\u201325 rows):** [CSV_SAMPLE]\r\n- **Approximate total row count (if known):** [DATASET_SIZE]\r\n- **Columns that define uniqueness (single or composite):** [KEY_FIELDS]\r\n- **Fields likely to vary but refer to same entity:** [FUZZY_FIELDS]\r\n- **Desired strictness (low\/medium\/high) or risk tolerance:** [DEDUPLICATION_STRICTNESS]\r\n- **Duplicate handling preference (keep-first\/keep-last\/most-complete\/custom):** [RESOLUTION_STRATEGY]\r\n- **Merge policy (no merge \/ merge non-conflicting \/ custom):** [MERGE_POLICY]\r\n- **Any hard exceptions or rules (e.g., never merge across different DOB):** [MATCH_EXCEPTIONS]\r\n- **User skill level (non-technical\/technical):** [SKILL_LEVEL]\r\n- **Time constraints:** [TIMEFRAME]\r\n- **Preferred tooling (Python\/pandas, SQL, Excel, no-code):** [TOOLING_PREFERENCE]\r\n- **Tone for explanations:** [TONE]\r\n- **Output format constraints (file naming, extra columns, etc.):** [FORMAT]\r\n\r\n## OUTPUT SPECIFICATION\r\nProduce content in this order:\r\n\r\n1) **Pre-Analysis Summary**\r\n- {Task Understanding}\r\n- {Known Inputs}\r\n- {Open Questions}\r\n- {Definition Of Done}\r\n\r\n2) **Adaptive Phase Plan**\r\nFor each phase:\r\n- {Phase Name}\r\n- {Goal}\r\n- {User Inputs Needed}\r\n- {Actions}\r\n- {Outputs}\r\n\r\n3) **Matching Blueprint**\r\n- {Blocking Strategy}\r\n- {Exact Match Rules}\r\n- {Composite Key Formula}\r\n- {Fuzzy Match Rules}\r\n- {Similarity Thresholds}\r\n- {Exception Rules}\r\n- {False-Merge Safeguards}\r\n\r\n4) **Resolution Blueprint**\r\n- {Survivorship Rule}\r\n- {Merge Rule}\r\n- {Conflict Handling}\r\n- {Confidence Scoring Approach}\r\n- {Manual Review Criteria}\r\n\r\n5) **Execution Outline**\r\n- {Step By Step Procedure}\r\n- {Audit Logging Fields}\r\n- {Scalability Notes}\r\n\r\n6) **Deliverables**\r\n- {Deduplicated File Name}\r\n- {Duplicates Report File Name}\r\n- {Summary Metrics}\r\n- {Review Queue File Name} (if applicable)\r\n\r\n7) **User Prompts**\r\nEnd with the exact questions you need next (if anything), and a clear instruction telling the user what to provide to proceed.\r\n\r\n## QUALITY CHECKS\r\nAt the end, include a short validation list confirming:\r\n- {Key Fields Confirmed Or Clarified}\r\n- {Fuzzy Fields Justified}\r\n- {Thresholds Aligned With Strictness}\r\n- {Audit Trail Covers All Decisions}\r\n- {Edge Cases Addressed Or Flagged For Review}";
    const variables = ["[UPPERCASE_WITH_UNDERSCORES]","[TARGET_AUDIENCE]","[PRIMARY_GOAL]","[CONTEXT]","[CSV_SAMPLE]","[DATASET_SIZE]","[KEY_FIELDS]","[FUZZY_FIELDS]","[DEDUPLICATION_STRICTNESS]","[RESOLUTION_STRATEGY]","[MERGE_POLICY]","[MATCH_EXCEPTIONS]","[SKILL_LEVEL]","[TIMEFRAME]","[TOOLING_PREFERENCE]","[TONE]","[FORMAT]"];
    // Initial render with highlighted variables
    document.addEventListener('DOMContentLoaded', function() {
        renderPromptWithHighlights();
    });

    // Live update prompt as user types
    document.querySelectorAll('.customize-input').forEach(input => {
        input.addEventListener('input', renderPromptWithHighlights);
    });

    function renderPromptWithHighlights() {
        const promptContent = document.getElementById('premium-prompt-content');
        if (!promptContent) return;

        let updatedPrompt = originalPrompt;
        let filledVariables = {};

        // Collect filled values
        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                filledVariables[placeholder] = value;
            }
        });

        // Replace filled variables and highlight remaining
        let htmlContent = escapeHtml(updatedPrompt);

        variables.forEach(placeholder => {
            const escapedPlaceholder = escapeHtml(placeholder);
            const regex = new RegExp(escapeRegex(escapedPlaceholder), 'g');

            if (filledVariables[placeholder]) {
                // Show filled value with green highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable-filled">' + escapeHtml(filledVariables[placeholder]) + '</span>'
                );
            } else {
                // Show original placeholder with yellow highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable">' + escapedPlaceholder + '</span>'
                );
            }
        });

        promptContent.innerHTML = htmlContent;
    }

    function escapeRegex(string) {
        return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    }

    function escapeHtml(text) {
        const div = document.createElement('div');
        div.textContent = text;
        return div.innerHTML;
    }

    function resetPrompt() {
        // Clear all input fields
        document.querySelectorAll('.customize-input').forEach(input => {
            input.value = '';
        });

        // Re-render with original placeholders highlighted
        renderPromptWithHighlights();

        // Visual feedback
        const resetBtns = document.querySelectorAll('.prompt-header-reset, .prompt-cta-reset');
        resetBtns.forEach(btn => {
            const originalText = btn.querySelector('span').textContent;
            btn.querySelector('span').textContent = 'Reset!';
            setTimeout(() => {
                btn.querySelector('span').textContent = originalText;
            }, 1000);
        });
    }


    function getCustomizedPrompt() {
        let updatedPrompt = originalPrompt;

        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                const regex = new RegExp(escapeRegex(placeholder), 'g');
                updatedPrompt = updatedPrompt.replace(regex, value);
            }
        });

        return updatedPrompt;
    }
</script>

</div>

<div class="pro-tips-section">

<h2 class="wp-block-heading">Pro Tips for Better AI Prompt Results</h2>



<ul class="wp-block-list">

<li><strong>Define “success” like a stakeholder, not a technician.</strong> Tell the AI what a bad merge would cost you (lost account attribution, compliance risk, angry sales reps). For example: “A false merge is worse than a missed merge because we trigger customer emails from this list.” That single line should make the workflow stricter by default.</li>


<li><strong>Hand over a tiny field dictionary first.</strong> Even though the prompt can ask questions, you’ll get a cleaner plan if you provide quick notes like: “ACCOUNT_ID is sometimes blank; EMAIL is mostly unique; PHONE includes extensions; COMPANY_NAME has legal suffixes.” If you want to force the AI to confirm assumptions, add: “Before designing phases, list which fields you trust and which are noisy.”</li>


<li><strong>Separate entity types early.</strong> Many CSVs mix people and companies (or locations) in ways that make fuzzy matches dangerous. A practical follow-up prompt is: “Propose a rule to classify rows as PERSON vs COMPANY vs OTHER using available columns, then design dedupe inside each class.” You will avoid merging “Acme Inc.” with “Acme, John.”</li>


<li><strong>Use “tight first pass, wider second pass.”</strong> After the first output, ask: “Now make phase 2 more conservative (higher thresholds, fewer fuzzy signals), but add a later phase for ‘review-needed’ candidates only.” This keeps your auto-merges safe while still surfacing likely duplicates for human review.</li>


<li><strong>Force an audit trail you can actually ship.</strong> Don’t accept a vague “we merged duplicates” summary. Ask: “Output a merge log schema with columns for Survivor_ID, Merged_Row_IDs, Match_Type (composite/fuzzy), Matching_Signals, Threshold, and Reviewer_Notes.” Honestly, that structure is what makes the whole workflow defensible when someone questions a change.</li>

</div>

<div class="related-prompts-section">

<h2 class="wp-block-heading">Related Prompts</h2>



<p>Once your data is clean, these prompts help you turn the resulting list into real pipeline activities and reporting workflows:</p>



<p>If you also need a structured campaign plan to activate the deduped contacts, <a href="https://flowpast.com/prompts/build-a-gated-lead-gen-campaign-playbook-ai-prompt/">Build a Gated Lead Gen Campaign Playbook AI Prompt</a> is a good next step. It’s especially useful right after cleanup, when you want to segment the “survivor” records into a gated asset funnel without reintroducing duplicates through sloppy imports.</p>



<p>For teams doing broader demand gen planning (multiple channels, offers, and handoffs), pair your cleaned CSV with <a href="https://flowpast.com/prompts/build-a-lead-gen-platform-playbook-ai-prompt/">Build a Lead-Gen Platform Playbook AI Prompt</a>. When your dataset is trustworthy, platform decisions like routing rules and lifecycle stages become easier to standardize across tools.</p>



<p>When your mess came from social exports or outreach lists, <a href="https://flowpast.com/prompts/create-a-linkedin-lead-gen-playbook-with-this-ai-prompt/">Create a LinkedIn Lead Gen Playbook with this AI Prompt</a> fits naturally. Use it after deduping to define consistent fields and naming conventions (company, title, region) so the next LinkedIn import doesn’t recreate the same “same person, new row” problem.</p>


<br>


<p>Quick reference:</p>



<ul class="wp-block-list">

<li><a href="https://flowpast.com/prompts/build-a-gated-lead-gen-campaign-playbook-ai-prompt/">Build a Gated Lead Gen Campaign Playbook AI Prompt</a>: Turn clean leads into a gated funnel.</li>


<li><a href="https://flowpast.com/prompts/build-a-lead-gen-platform-playbook-ai-prompt/">Build a Lead-Gen Platform Playbook AI Prompt</a>: Design full-funnel lead-gen operations and routing.</li>


<li><a href="https://flowpast.com/prompts/create-a-linkedin-lead-gen-playbook-with-this-ai-prompt/">Create a LinkedIn Lead Gen Playbook with this AI Prompt</a>: Plan LinkedIn sourcing, tracking, and follow-up.</li>


<li><a href="https://flowpast.com/prompts/build-a-webinar-lead-gen-playbook-with-this-ai-prompt/">Build a Webinar Lead Gen Playbook with this AI Prompt</a>: Convert webinar registrations into pipeline steps.</li>


<li><a href="https://flowpast.com/prompts/build-a-partner-lead-gen-playbook-ai-prompt/">Build a Partner Lead-Gen Playbook AI Prompt</a>: Create partner-sourced lead flows and attribution.</li>

</ul>

</div>

<div class="faq-section">

<h2 class="wp-block-heading">Common Questions</h2>


<div class="faq-item">
<span class="question">Which roles benefit most from this messy CSV records AI prompt?</span>

<p class="answer"><strong>Revenue Operations Managers</strong> use this to reconcile CRM exports and stop duplicates from skewing pipeline and attribution dashboards. <strong>Marketing Operations Specialists</strong> rely on it when event, ad, and email lists need to be merged without breaking lifecycle stages. <strong>Data Analysts</strong> apply it to produce a “single source of truth” dataset with a documented merge logic they can defend in reviews. <strong>Consultants implementing new systems</strong> use the phased plan and audit trail to show clients exactly what changed and how to repeat it.</p>

</div>

<div class="faq-item">
<span class="question">Which industries get the most value from this messy CSV records AI prompt?</span>

<p class="answer"><strong>SaaS companies</strong> get value because duplicates wreck MQL-to-SQL reporting and can trigger duplicate sequences or incorrect territory assignment. This prompt’s composite keys and cautious fuzzy matching help keep accounts and contacts distinct. <strong>Healthcare and health-adjacent services</strong> benefit from the emphasis on traceability, since merges often need to be explained and revisited later. <strong>Financial services</strong> teams use it to prevent accidental over-merges of similar names, which can create serious downstream errors. <strong>Agencies</strong> like it because they can deliver a repeatable, audit-ready cleanup process across many client lists with different schemas.</p>

</div>

<div class="faq-item">
<span class="question">Why do basic AI prompts for cleaning and merging CSV duplicates produce weak results?</span>

<p class="answer">A typical prompt like “Write me a process to dedupe my CSV” fails because it: lacks a pre-analysis that defines what “success” means for your risk level, provides no phased plan that adapts to file size and messiness, ignores composite keys (so it over-relies on one field like email), produces generic fuzzy matching advice instead of calibrated thresholds and tie-breakers, and misses an audit trail that explains each merge in plain language. You end up with guesses, not a defensible workflow. Worse, you can’t rerun it consistently next month.</p>

</div>

<div class="faq-item">
<span class="question">Can I customize this messy CSV records prompt for my specific situation?</span>

<p class="answer">Yes, and you should. The prompt is designed to ask targeted questions when key details are missing, then calibrate strictness so you don’t over-merge distinct entities. To customize it, be explicit about which columns are reliable identifiers, what entity types are present (people, companies, locations), and what level of risk is acceptable for auto-merges versus “review-needed” matches. A useful follow-up instruction is: “Assume email is unreliable for 20% of rows; redesign the composite keys and lower the automation level, but keep the audit log format.”</p>

</div>

<div class="faq-item">
<span class="question">What are the most common mistakes when using this messy CSV records prompt?</span>

<p class="answer">The biggest mistake is giving the AI no definition of “deduplication success” — instead of “remove duplicates,” say “avoid false merges; flag uncertain matches for review.” Another common error is failing to describe field quality; “PHONE is messy” is weak, but “PHONE includes country codes sometimes, extensions often, and punctuation varies” lets the workflow design a safer normalization step. People also skip entity-type separation and accidentally merge companies with contacts; tell it up front if rows mix person and account data. Finally, users often forget to require an audit trail, so they can’t defend changes; insist on a merge log that maps source rows to the survivor record with matching signals and rationale.</p>

</div>

<div class="faq-item">
<span class="question">Who should NOT use this messy CSV records prompt?</span>

<p class="answer">This prompt isn’t ideal for one-off lists where you don’t care about traceability, or situations where you only need a quick “remove exact duplicates” action. It’s also not the best fit if you haven’t decided what entity you’re deduping (contacts vs accounts vs locations) and you’re unwilling to answer clarification questions. If you need instant output with no review step, use a simple spreadsheet dedupe on a single key column instead, then come back when the stakes are higher.</p>

</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Which roles benefit most from this messy CSV records AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Revenue Operations Managers use this to reconcile CRM exports and stop duplicates from skewing pipeline and attribution dashboards. Marketing Operations Specialists rely on it when event, ad, and email lists need to be merged without breaking lifecycle stages. Data Analysts apply it to produce a “single source of truth” dataset with a documented merge logic they can defend in reviews. Consultants implementing new systems use the phased plan and audit trail to show clients exactly what changed and how to repeat it."
      }
    },
    {
      "@type": "Question",
      "name": "Which industries get the most value from this messy CSV records AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "SaaS companies get value because duplicates wreck MQL-to-SQL reporting and can trigger duplicate sequences or incorrect territory assignment. This prompt’s composite keys and cautious fuzzy matching help keep accounts and contacts distinct. Healthcare and health-adjacent services benefit from the emphasis on traceability, since merges often need to be explained and revisited later. Financial services teams use it to prevent accidental over-merges of similar names, which can create serious downstream errors. Agencies like it because they can deliver a repeatable, audit-ready cleanup process across many client lists with different schemas."
      }
    },
    {
      "@type": "Question",
      "name": "Why do basic AI prompts for cleaning and merging CSV duplicates produce weak results?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A typical prompt like “Write me a process to dedupe my CSV” fails because it: lacks a pre-analysis that defines what “success” means for your risk level, provides no phased plan that adapts to file size and messiness, ignores composite keys (so it over-relies on one field like email), produces generic fuzzy matching advice instead of calibrated thresholds and tie-breakers, and misses an audit trail that explains each merge in plain language. You end up with guesses, not a defensible workflow. Worse, you can’t rerun it consistently next month."
      }
    },
    {
      "@type": "Question",
      "name": "Can I customize this messy CSV records prompt for my specific situation?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, and you should. The prompt is designed to ask targeted questions when key details are missing, then calibrate strictness so you don’t over-merge distinct entities. To customize it, be explicit about which columns are reliable identifiers, what entity types are present (people, companies, locations), and what level of risk is acceptable for auto-merges versus “review-needed” matches. A useful follow-up instruction is: “Assume email is unreliable for 20% of rows; redesign the composite keys and lower the automation level, but keep the audit log format.”"
      }
    },
    {
      "@type": "Question",
      "name": "What are the most common mistakes when using this messy CSV records prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The biggest mistake is giving the AI no definition of “deduplication success” — instead of “remove duplicates,” say “avoid false merges; flag uncertain matches for review.” Another common error is failing to describe field quality; “PHONE is messy” is weak, but “PHONE includes country codes sometimes, extensions often, and punctuation varies” lets the workflow design a safer normalization step. People also skip entity-type separation and accidentally merge companies with contacts; tell it up front if rows mix person and account data. Finally, users often forget to require an audit trail, so they can’t defend changes; insist on a merge log that maps source rows to the survivor record with matching signals and rationale."
      }
    },
    {
      "@type": "Question",
      "name": "Who should NOT use this messy CSV records prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "This prompt isn’t ideal for one-off lists where you don’t care about traceability, or situations where you only need a quick “remove exact duplicates” action. It’s also not the best fit if you haven’t decided what entity you’re deduping (contacts vs accounts vs locations) and you’re unwilling to answer clarification questions. If you need instant output with no review step, use a simple spreadsheet dedupe on a single key column instead, then come back when the stakes are higher."
      }
    }
  ]
}
</script>
</div>

<div class="closing-section">

<p>Cleaning data is easy to rush and hard to defend later. Paste this prompt into your AI tool, answer the clarifying questions, and build a dedupe workflow you can rerun with confidence.</p>

</div>]]></content:encoded>
					
		
		
		<media:content url="https://flowpast.s3.eu-north-1.amazonaws.com/featured_blog_images/5001593.webp" medium="image"></media:content>
            	</item>
		<item>
		<title>AI Prompt to Build a Trademark Filing Packet by Jurisdiction</title>
		<link>https://flowpast.com/prompts/ai-prompt-to-build-a-trademark-filing-packet-by-jurisdiction/</link>
		
		<dc:creator><![CDATA[Lisa Granqvist]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 02:42:05 +0000</pubDate>
				<category><![CDATA[Prompts]]></category>
		<guid isPermaLink="false">https://flowpast.com/?p=5000802</guid>

					<description><![CDATA[Trademark packet feels overwhelming - use this AI Prompt to draft mark details, class-ready goods, specimens, and filing steps by jurisdiction. Explore thousands of AI prompts by function and industry.]]></description>
										<content:encoded><![CDATA[<!-- FOCUS_KEYWORD: trademark filing packet -->

<div class="hook-introduction">

<p>Trademark filing sounds simple until you’re staring at a jurisdiction’s portal asking for mark details, class language, specimens, and declarations you didn’t know existed. One missing detail can mean delays, extra fees, or a refusal that could have been avoided with better prep. And if you’re filing outside your home country, the rules shift fast.</p>



<p>This <strong>trademark filing packet</strong> is built for <strong>brand owners</strong> preparing a first application and needing a clean checklist, <strong>marketing leads</strong> trying to standardize how their team collects mark/specimen assets, and <strong>consultants</strong> coordinating multi-country launches who need consistent, jurisdiction-specific filing steps. The output is a structured, application-ready packet with mark details, goods/services drafting guidance, specimen instructions, a supporting-document checklist, and submission steps tailored to the chosen jurisdiction.</p>

</div>

<div class="what-and-when-section">

<h2 class="wp-block-heading">What Does This AI Prompt Do and When to Use It?</h2>



<table class="solution-results-table three-column" role="presentation" aria-label="What this prompt does, when to use it, and what you get">
 <thead>
    <tr>
      <th scope="col">What This Prompt Does</th>
      <th scope="col">When to Use This Prompt</th>
      <th scope="col">What You&#8217;ll Get</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <ul class="automation-list">
          <li>It restates your filing goal and surfaces missing inputs you must provide before drafting anything.</li>
          <li>It drafts a trademark details summary (owner/applicant, mark format, description, and claim-related notes) in plain legal-writing style.</li>
          <li>It builds application-ready sections for applicant info, mark description, goods/services, specimen guidance, and signing/declarations.</li>
          <li>It flags jurisdiction-specific forks in the road (for example, use-based vs intent-to-use concepts, specimen timing, and classification expectations) and tells you what to decide.</li>
          <li>It produces step-by-step submission instructions for the selected jurisdiction, including “where to file,” “what to upload,” and basic validation checks.</li>
       </ul>
      </td>
      <td>
        <ul class="results-list">
          <li>You’re about to file a word mark or logo mark and want the packet organized before you touch the government portal.</li>
          <li>You have partial information (maybe a logo file, a name, and a homepage) but the application fields still feel unclear.</li>
          <li>You need to align goods/services language with how you actually sell, and you’re worried about being too broad or too narrow.</li>
          <li>You’re filing in a new jurisdiction and need a clear explanation of what changes compared to your home filing process.</li>
          <li>You’re scaling a brand portfolio and want a repeatable intake process so every mark has the same “ready to file” bundle.</li>
        </ul>
      </td>
       <td>
         <ul class="deliverables-list">
           <li>A structured trademark filing packet outline with 6 core sections you can copy into your internal doc set.</li>
           <li>A jurisdiction-aware “missing info” question list (typically 8–15 questions) to finalize inputs quickly.</li>
           <li>Draft-ready application content blocks for mark details, goods/services, specimen notes, and signature/declaration preparation.</li>
           <li>A supporting-document checklist with at least 3 tailored items (often more for logo marks and multi-owner situations).</li>
           <li>A step-by-step submission plan with portal/file location guidance, upload list, and common pre-submit checks.</li>
         </ul>
       </td>
    </tr>
  </tbody>
</table>

</div>

<div class="prompt-display-section">

<h2 class="wp-block-heading">The Full AI Prompt: Jurisdiction-Aware Trademark Filing Packet Builder</h2>



<div class="prompt-viewer-wrapper" id="prompt-section">
    <div class="prompt-comparison-row prompt-premium">
        <!-- Header with buttons -->
        <div class="prompt-row-header">
            <!-- <span class="prompt-row-icon">✨</span> -->
            <span class="prompt-row-title">
                                    Step 1: Customize the prompt with your input
                            </span>
            <div class="prompt-header-buttons">
                                    <button class="prompt-header-btn prompt-header-reset" onclick="resetPrompt()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                                <button class="prompt-header-btn prompt-header-copy-green flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span>Customize and Copy Full Prompt</span>
                </button>
            </div>
        </div>

        <!-- Customize the Prompt Section -->
                    <div class="prompt-customize-section">
                <span class="customize-title">Customize the Prompt</span>
                <p class="customize-subtitle">Fill in the fields below to personalize this prompt for your needs.</p>
                <table class="customize-table">
                    <thead>
                        <tr>
                            <th>Variable</th>
                            <th>What to Enter</th>
                            <th>Customise the prompt</th>
                        </tr>
                    </thead>
                    <tbody>
                                                    <tr>
                                <td class="var-name"><code>[JURISDICTION]</code></td>
                                <td class="var-desc">
                                    Specify the country or region where the trademark application will be filed. Include specific details like state or province if applicable.                                    <div class="var-example">For example: "United States (USPTO) or European Union (EUIPO)"</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[JURISDICTION]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[BRAND_NAME]</code></td>
                                <td class="var-desc">
                                    Enter the name of the brand that the trademark will represent. This should be the exact name as used in commercial activities.                                    <div class="var-example">For example: "EcoTech Solutions"</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[BRAND_NAME]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[LOGO_DESCRIPTION]</code></td>
                                <td class="var-desc">
                                    Provide a detailed description of the logo design, including colors, shapes, text, and any distinguishing features.                                    <div class="var-example">For example: "A green leaf icon with the text &#039;EcoTech&#039; in bold, white font underneath."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[LOGO_DESCRIPTION]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[GOODS_AND_SERVICES]</code></td>
                                <td class="var-desc">
                                    List the goods and services associated with the trademark. Use clear, general descriptions that align with trademark classification systems.                                    <div class="var-example">For example: "Software development services; eco-friendly packaging materials."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[GOODS_AND_SERVICES]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[FIRST_USE_DATE]</code></td>
                                <td class="var-desc">
                                    Provide the date when the trademark was first used in commerce, if applicable. Use the format MM/DD/YYYY.                                    <div class="var-example">For example: "03/15/2021"</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[FIRST_USE_DATE]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[APPLICANT_INFO]</code></td>
                                <td class="var-desc">
                                    Enter the full name, address, and contact details of the trademark owner or entity applying for the trademark.                                    <div class="var-example">For example: "John Doe, 123 Main Street, San Francisco, CA, 94105, USA; john.doe@example.com."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[APPLICANT_INFO]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[MARK_DESCRIPTION]</code></td>
                                <td class="var-desc">
                                    Provide a precise description of the trademark as it should appear in the application. Include any textual and graphical elements.                                    <div class="var-example">For example: "The word &#039;EcoTech&#039; in green font with a circular leaf design above the text."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[MARK_DESCRIPTION]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[GOODS_SERVICES_DESCRIPTION]</code></td>
                                <td class="var-desc">
                                    Enter the application-ready wording for the goods and services. This should be formatted to meet jurisdictional requirements.                                    <div class="var-example">For example: "Class 42: Consulting services in the field of environmental technology."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[GOODS_SERVICES_DESCRIPTION]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[SPECIMEN]</code></td>
                                <td class="var-desc">
                                    Describe the proof of use that will be submitted for the trademark application, such as product labels, website screenshots, or packaging.                                    <div class="var-example">For example: "A photograph of product packaging showing the brand name and logo prominently displayed."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[SPECIMEN]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[SIGNATURE]</code></td>
                                <td class="var-desc">
                                    Enter the full name and title of the person who will sign the application. This should match the applicant or authorized representative.                                    <div class="var-example">For example: "John Doe, CEO"</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[SIGNATURE]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                            </tbody>
                </table>

                <button class="copy-customized-btn flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span class="copy-customized-text">Customise the prompt now</span>
                </button>
            </div>
        
        <!-- Full Prompt Code Header -->
                    <div class="prompt-code-header">
                <span class="prompt-code-title">
                    Step 2: Copy the Prompt
                </span>
                <div class="prompt-code-buttons">
                    <!-- Reset: Only visible when unlocked -->
                    <button class="prompt-header-btn prompt-header-reset btn-when-unlocked" onclick="resetPrompt()" style="display: none;">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                    <!-- Copy Full Prompt -->
                    <button class="prompt-header-btn prompt-header-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                            <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                        </svg>
                        <span>Copy Full Prompt</span>
                    </button>
                </div>
            </div>
        

        <!-- Prompt Content -->
        <div class="prompt-box prompt-gated-wrapper">
            <!-- Gated: Blurred content -->
            <div class="prompt-gated-content">
                <div class="prompt-header-visible">OBJECTIVE</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PERSONA</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">CONSTRAINTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">What This Is NOT</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PROCESS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">INPUTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">OUTPUT SPECIFICATION</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">Trademark Details</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">Trademark Application</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">Supporting Documents (Prepare/Attach)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">Filing Instructions</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">Pending Items (only if needed)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">QUALITY CHECKS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div>            </div>
            <!-- Unlocked: Full content (hidden by default) -->
            <div class="prompt-content-full" id="premium-prompt-content" style="display: none;">
                ## OBJECTIVE
Create a complete, jurisdiction-aware trademark filing packet for a user’s brand and/or logo. The packet must include the core application content, a list of supporting materials to prepare, and step-by-step directions to submit the filing in the selected jurisdiction.

## PERSONA
Act as a seasoned trademark counsel who has handled multi-country filings. Communicate in plain, precise legal-writing style: structured, unambiguous, and practical for a business owner to follow.

## CONSTRAINTS
- Follow the trademark rules and typical filing expectations for **[JURISDICTION]**; when jurisdiction-specific requirements vary (e.g., specimen rules, use claims, classification), note the options and state what information is needed to choose correctly.
- Prioritize clarity, internal consistency, and completeness; do not invent facts the user did not provide.
- If a required item is missing or unclear, flag it explicitly and provide a short set of questions to resolve it.
- Keep content focused on preparing a filing packet (not litigation strategy or enforcement).

### What This Is NOT
- Not a guarantee of registrability or search clearance.
- Not a substitute for jurisdiction-specific legal advice from a licensed practitioner.
- Not a filing confirmation or government submission.
- Not a full trademark watch, opposition, or infringement analysis.

## PROCESS
1. **Pre-analysis (mandatory):** Briefly restate what you’re preparing and identify any missing/uncertain inputs you will need from the user.
2. Draft the trademark details summary using the user’s inputs.
3. Build the application-ready sections (applicant, mark description, goods/services, specimen guidance, signing).
4. Provide a supporting-document checklist (at least three items) tailored to the mark type and jurisdiction.
5. Finish with submission instructions customized to **[JURISDICTION]**, including where to file, what to upload, and common validation checks.
6. If any input is incomplete, produce a “Pending Items” mini-list and the exact questions required to finalize the packet.

## INPUTS
- **Brand name:** [BRAND_NAME]  
- **Logo description:** [LOGO_DESCRIPTION]  
- **Goods and services:** [GOODS_AND_SERVICES]  
- **First use date:** [FIRST_USE_DATE]  
- **Jurisdiction:** [JURISDICTION]  
- **Applicant information (owner details):** [APPLICANT_INFO]  
- **Mark description (as it should appear in the application):** [MARK_DESCRIPTION]  
- **Goods/services description (application-ready wording, if different):** [GOODS_SERVICES_DESCRIPTION]  
- **Specimen (what will be submitted as proof of use, if applicable):** [SPECIMEN]  
- **Signature name/title:** [SIGNATURE]  

## OUTPUT SPECIFICATION
Use the following deliverable structure and fill it in with application-ready language. Use AI-filled placeholders only in {Title Case} format.

## Trademark Details
- Brand name: {Brand Name}
- Logo description: {Logo Description}
- Goods and services: {Goods And Services}
- First use date: {First Use Date}
- Jurisdiction: {Jurisdiction}

## Trademark Application
- Applicant information: {Applicant Information}
- Mark description: {Mark Description}
- Goods and services description: {Goods/Services Description}
- Specimen: {Specimen}
- Signature: {Signature}

## Supporting Documents (Prepare/Attach)
1. {Supporting Document 1}
2. {Supporting Document 2}
3. {Supporting Document 3}
- Optional (if relevant): {Supporting Document 4}

## Filing Instructions
{Filing Instructions}

## Pending Items (only if needed)
- {Missing Or Ambiguous Item}
- {Clarifying Question}

## QUALITY CHECKS
At the end, verify:
- All required sections are present and match **[JURISDICTION]** expectations.
- No contradictions across owner/mark/use dates/goods &amp; services.
- Goods/services wording is specific enough to classify yet not overly narrow without user intent.
- Specimen/use-claim guidance aligns with the jurisdiction’s typical standards (and flags alternatives if uncertain).
- Any missing inputs are clearly called out with targeted questions.            </div>
        </div>


    </div>

    <!-- CTA Row - Full width buttons -->
    <div class="prompt-cta-row">
        <button class="prompt-cta-btn prompt-cta-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
            </svg>
            <span class="cta-copy-text">Copy Full Prompt</span>
        </button>
    </div>
</div>

<style>
    /* Gated prompt states */
    .prompt-gated-wrapper {
        position: relative;
    }

    /* When unlocked - show full content, hide gated */
    body.flowpast-unlocked .prompt-gated-wrapper .prompt-gated-content {
        display: none;
    }

    body.flowpast-unlocked .prompt-gated-wrapper .prompt-content-full {
        display: block !important;
    }

    /* Show/hide elements based on unlock state */
    body.flowpast-unlocked .btn-when-unlocked {
        display: inline-flex !important;
    }

    .prompt-viewer-wrapper {
        scroll-margin-top: 250px;
    }

    /* ========================================
   PROMPT VIEWER - MAIN WRAPPER
   ======================================== */
    .prompt-viewer-wrapper {
        margin: 30px 0;
        display: flex;
        flex-direction: column;
        gap: 20px;
    }

    /* ========================================
   PROMPT BOX CONTAINER
   ======================================== */
    .prompt-comparison-row {
        border-radius: 12px;
        overflow: hidden;
        border: 1px solid #e0e0e0;
        background: #fff;
    }

    /* ========================================
   HEADER WITH BUTTONS
   ======================================== */
    .prompt-row-header {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 14px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
        flex-wrap: wrap;
    }

    .prompt-row-icon {
        font-size: 20px;
    }

    .prompt-row-title {
        font-weight: 600;
        font-size: 22px;
        color: #fff !important;
        text-decoration: underline
    }

    .prompt-header-buttons {
        margin-left: auto;
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
    }

    /* Header buttons */
    .prompt-header-btn {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 10px 20px;
        border-radius: 6px;
        font-size: 14px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-header-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-header-copy:hover {
        background: #2a2a2a;
    }

    .prompt-header-copy.copied {
        background: #2e7d32;
    }

    .prompt-header-copy-green {
        background: #04AA6D !important;
        color: #fff !important;
    }

    .prompt-header-copy-green:hover {
        background: #039860 !important;
    }

    .prompt-header-copy-green.copied {
        background: #2e7d32 !important;
    }

    .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-header-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-1px);
    }

    /* ========================================
   PROMPT CONTENT - FULL (NO SCROLL)
   ======================================== */
    .prompt-box {
        background: #ffffff;
    }

    .prompt-content-full {
        padding: 24px;
        margin: 0;
        color: #202124;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.7;
        white-space: pre-wrap;
        word-wrap: break-word;
        /* No scroll - show full content */
        max-height: none;
        overflow: visible;
    }

    /* Highlighted variable in prompt */
    .prompt-variable {
        background: #fff3cd;
        color: #1967d2;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #ffc107;
    }

    .prompt-variable-filled {
        background: #d4edda;
        color: #155724;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #28a745;
    }

    /* ========================================
   GATED CONTENT (NO ACCESS)
   ======================================== */
    .prompt-gated-content {
        padding: 24px;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.8;
        max-height: none;
        overflow: visible;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        cursor: default;
    }

    /* ## headers - larger, black */
    .prompt-header-visible {
        color: #202124;
        font-weight: 600;
        margin: 5px 0 0px 0;
        font-size: 20px;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        text-decoration: underline;
        text-underline-offset: 4px;
    }

    /* ### headers - smaller, black */
    .prompt-header-visible.subheader {
        color: #202124;
        font-weight: 600;
        margin: 5px 0;
        font-size: 18px;
    }

    .prompt-header-visible:first-child {
        margin-top: 0;
    }

    /* ========================================
   LOCKED SECTION BLOCK
   ======================================== */
    .locked-section {
        position: relative;
        margin: 4px 0 8px 0;
        border-radius: 6px;
        overflow: hidden;
        background: linear-gradient(110deg, #e2e8f0 8%, #f1f5f9 18%, #e2e8f0 33%);
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
    }

    .locked-section-bg {
        position: relative;
    }

    .locked-section-lines {
        padding: 8px 12px;
        position: relative;
    }

    .locked-line {
        height: 6px;
        background: rgba(255, 255, 255, 0.6);
        border-radius: 3px;
        margin-bottom: 4px;
        margin-left: 12px;
    }

    .locked-line:last-child {
        margin-bottom: 0;
    }

    .locked-section-icon {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: 10;
        font-size: 24px;
        filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1));
    }

    /* Subheader locked sections - slightly indented */
    /*  .prompt-header-visible.subheader+.locked-section {
        margin-left: 16px;
    } */

    /* ========================================
   COMPATIBILITY BADGES
   ======================================== */
    .prompt-compatibility {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 8px;
        padding: 12px 20px;
        background: #f8f9fa;
        border-top: 1px solid #e0e0e0;
    }

    .compat-label {
        font-size: 13px;
        color: #5f6368;
        font-weight: 500;
    }

    .compat-badge {
        padding: 4px 10px;
        background: #e8f0fe;
        color: #1967d2;
        border-radius: 4px;
        font-size: 12px;
        font-weight: 500;
    }

    /* ========================================
   CTA ROW - FULL WIDTH BUTTONS
   ======================================== */
    .prompt-cta-row {
        display: flex;
        gap: 16px;
        flex-wrap: wrap;
    }

    .prompt-cta-btn {
        flex: 1;
        min-width: 200px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        padding: 16px 24px;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-cta-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-copy:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-copy.copied {
        background: #2e7d32;
    }

    .prompt-cta-reset {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-reset:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-cta-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    /* ========================================
    CUSTOMIZE YOUR PROMPT SECTION
    ======================================== */
    .prompt-customize-section {
        padding: 24px;
        border-bottom: 1px solid #e0e0e0;
        background: #fafbfc;
    }

    .customize-title {
        margin: 0 0 8px 0;
        font-size: 18px;
        font-weight: 700;
        color: #202124;
    }

    .customize-subtitle {
        margin: 0 0 20px 0;
        font-size: 14px;
        color: #5f6368;
    }

    .customize-table {
        width: 100%;
        border-collapse: collapse;
        margin-bottom: 20px;
    }

    .customize-table th {
        text-align: left;
        padding: 12px;
        background: #f1f3f4;
        border: 1px solid #e0e0e0;
        font-size: 13px;
        font-weight: 600;
        color: #202124;
    }

    .customize-table td {
        padding: 12px;
        border: 1px solid #e0e0e0;
        vertical-align: top;
    }

    .customize-table .var-name {
        width: 25%;
        background: #f8f9fa;
    }

    .customize-table .var-name code {
        background: #fff3cd;
        color: #1967d2;
        border: 1px solid #ffc107;
        padding: 4px 8px;
        border-radius: 4px;
        font-size: 12px;
        word-break: break-all;
        font-weight: 600;
    }

    .customize-table .var-desc {
        width: 35%;
        font-size: 13px;
        color: #5f6368;
        line-height: 1.5;
    }

    .customize-table .var-example {
        margin-top: 8px;
        padding: 8px 10px;
        background: #f8f9fa;
        border-left: 3px solid #dadce0;
        font-size: 12px;
        color: #5f6368;
        font-style: italic;
        border-radius: 0 4px 4px 0;
    }

    .customize-table .var-input {
        width: 40%;
    }

    .customize-input {
        width: 100%;
        padding: 10px 12px;
        border: 1px solid #dadce0;
        border-radius: 6px;
        font-size: 13px;
        font-family: inherit;
        resize: vertical;
        transition: border-color 0.2s, box-shadow 0.2s;
    }

    .customize-input:focus {
        outline: none;
        border-color: rgb(5, 152, 98);
        box-shadow: 0 0 0 3px rgba(5, 152, 98, 0.1);
    }

    .customize-input::placeholder {
        color: #9aa0a6;
        font-style: italic;
    }

    .copy-customized-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        width: 100%;
        padding: 16px 24px;
        background: rgb(5, 152, 98);
        color: #fff;
        border: none;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
    }

    .copy-customized-btn:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    .copy-customized-btn.copied {
        background: #2e7d32;
    }

    /* ========================================
    FULL PROMPT CODE HEADER
    ======================================== */
    .prompt-code-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 10px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
    }

    .prompt-code-title {
        font-size: 22px;
        font-weight: 600;
        text-decoration: underline;

    }

    .prompt-code-buttons {
        display: flex;
        gap: 8px;
    }

    .prompt-code-buttons .prompt-header-btn {
        padding: 8px 14px;
        font-size: 13px;
        background: #ffffff;
        color: #202124;
        border: 1px solid #dadce0;
    }

    .prompt-code-buttons .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
        border-color: rgb(5, 152, 98);
    }

    .prompt-code-buttons .prompt-header-btn.prompt-header-access:hover {
        background: rgb(4, 130, 83) !important;
        border-color: rgb(4, 130, 83);
        color: #fff !important;
    }

    .prompt-code-buttons .prompt-header-btn:hover {
        background: #f1f3f4;
    }

    .prompt-code-buttons .prompt-header-copy.copied {
        background: #d4edda;
        color: #155724;
        border-color: #28a745;
    }

    .prompt-header-reset {
        background: #ffffff;
        color: #202124;
    }

    /* ========================================
   RESPONSIVE
   ======================================== */
    @media (max-width: 768px) {
        .prompt-row-header {
            flex-direction: column;
            align-items: flex-start;
            gap: 12px;
        }

        .prompt-header-buttons {
            margin-left: 0;
            width: 100%;
        }

        .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }

        .prompt-cta-row {
            flex-direction: column;
        }

        .prompt-cta-btn {
            width: 100%;
        }

        /* Customize table responsive */
        .customize-table,
        .customize-table thead,
        .customize-table tbody,
        .customize-table tr,
        .customize-table th,
        .customize-table td {
            display: block;
        }

        .customize-table thead {
            display: none;
        }

        .customize-table tr {
            margin-bottom: 16px;
            border: 1px solid #e0e0e0;
            border-radius: 8px;
            overflow: hidden;
        }

        .customize-table td {
            width: 100% !important;
            border: none;
            border-bottom: 1px solid #e0e0e0;
        }

        .customize-table td:last-child {
            border-bottom: none;
        }

        .customize-table .var-name {
            background: #f1f3f4;
            font-weight: 600;
        }

        .prompt-code-header {
            flex-direction: column;
            gap: 12px;
            align-items: flex-start;
        }

        .prompt-code-buttons {
            width: 100%;
        }

        .prompt-code-buttons .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }
    }
</style>

<script>
    function handlePromptCopy() {
        // Check if unlocked via cookie
        if (typeof window.flowpastIsUnlocked === 'function' && !window.flowpastIsUnlocked()) {
            // Show email popup
            if (typeof window.flowpastShowEmailPopup === 'function') {
                window.flowpastShowEmailPopup('prompt');
            }
            return;
        }

        // Copy the customized prompt (with filled variables)
        const customizedPrompt = getCustomizedPrompt();
        const copyButtons = document.querySelectorAll('.prompt-header-copy, .prompt-header-copy-green, .prompt-cta-copy, .copy-customized-btn');

        navigator.clipboard.writeText(customizedPrompt).then(() => {
            copyButtons.forEach(btn => {
                btn.classList.add('copied');
                const textSpan = btn.querySelector('span');
                if (textSpan) textSpan.textContent = 'Copied!';
            });

            setTimeout(() => {
                copyButtons.forEach(btn => {
                    btn.classList.remove('copied');
                    const textSpan = btn.querySelector('span');
                    if (textSpan) textSpan.textContent = 'Copy Full Prompt';
                });
            }, 2000);
        }).catch(err => {
            console.error('Failed to copy:', err);
        });
    }

    // Store original prompt for customization
    const originalPrompt = "## OBJECTIVE\r\nCreate a complete, jurisdiction-aware trademark filing packet for a user\u2019s brand and\/or logo. The packet must include the core application content, a list of supporting materials to prepare, and step-by-step directions to submit the filing in the selected jurisdiction.\r\n\r\n## PERSONA\r\nAct as a seasoned trademark counsel who has handled multi-country filings. Communicate in plain, precise legal-writing style: structured, unambiguous, and practical for a business owner to follow.\r\n\r\n## CONSTRAINTS\r\n- Follow the trademark rules and typical filing expectations for **[JURISDICTION]**; when jurisdiction-specific requirements vary (e.g., specimen rules, use claims, classification), note the options and state what information is needed to choose correctly.\r\n- Prioritize clarity, internal consistency, and completeness; do not invent facts the user did not provide.\r\n- If a required item is missing or unclear, flag it explicitly and provide a short set of questions to resolve it.\r\n- Keep content focused on preparing a filing packet (not litigation strategy or enforcement).\r\n\r\n### What This Is NOT\r\n- Not a guarantee of registrability or search clearance.\r\n- Not a substitute for jurisdiction-specific legal advice from a licensed practitioner.\r\n- Not a filing confirmation or government submission.\r\n- Not a full trademark watch, opposition, or infringement analysis.\r\n\r\n## PROCESS\r\n1. **Pre-analysis (mandatory):** Briefly restate what you\u2019re preparing and identify any missing\/uncertain inputs you will need from the user.\r\n2. Draft the trademark details summary using the user\u2019s inputs.\r\n3. Build the application-ready sections (applicant, mark description, goods\/services, specimen guidance, signing).\r\n4. Provide a supporting-document checklist (at least three items) tailored to the mark type and jurisdiction.\r\n5. Finish with submission instructions customized to **[JURISDICTION]**, including where to file, what to upload, and common validation checks.\r\n6. If any input is incomplete, produce a \u201cPending Items\u201d mini-list and the exact questions required to finalize the packet.\r\n\r\n## INPUTS\r\n- **Brand name:** [BRAND_NAME]  \r\n- **Logo description:** [LOGO_DESCRIPTION]  \r\n- **Goods and services:** [GOODS_AND_SERVICES]  \r\n- **First use date:** [FIRST_USE_DATE]  \r\n- **Jurisdiction:** [JURISDICTION]  \r\n- **Applicant information (owner details):** [APPLICANT_INFO]  \r\n- **Mark description (as it should appear in the application):** [MARK_DESCRIPTION]  \r\n- **Goods\/services description (application-ready wording, if different):** [GOODS_SERVICES_DESCRIPTION]  \r\n- **Specimen (what will be submitted as proof of use, if applicable):** [SPECIMEN]  \r\n- **Signature name\/title:** [SIGNATURE]  \r\n\r\n## OUTPUT SPECIFICATION\r\nUse the following deliverable structure and fill it in with application-ready language. Use AI-filled placeholders only in {Title Case} format.\r\n\r\n## Trademark Details\r\n- Brand name: {Brand Name}\r\n- Logo description: {Logo Description}\r\n- Goods and services: {Goods And Services}\r\n- First use date: {First Use Date}\r\n- Jurisdiction: {Jurisdiction}\r\n\r\n## Trademark Application\r\n- Applicant information: {Applicant Information}\r\n- Mark description: {Mark Description}\r\n- Goods and services description: {Goods\/Services Description}\r\n- Specimen: {Specimen}\r\n- Signature: {Signature}\r\n\r\n## Supporting Documents (Prepare\/Attach)\r\n1. {Supporting Document 1}\r\n2. {Supporting Document 2}\r\n3. {Supporting Document 3}\r\n- Optional (if relevant): {Supporting Document 4}\r\n\r\n## Filing Instructions\r\n{Filing Instructions}\r\n\r\n## Pending Items (only if needed)\r\n- {Missing Or Ambiguous Item}\r\n- {Clarifying Question}\r\n\r\n## QUALITY CHECKS\r\nAt the end, verify:\r\n- All required sections are present and match **[JURISDICTION]** expectations.\r\n- No contradictions across owner\/mark\/use dates\/goods & services.\r\n- Goods\/services wording is specific enough to classify yet not overly narrow without user intent.\r\n- Specimen\/use-claim guidance aligns with the jurisdiction\u2019s typical standards (and flags alternatives if uncertain).\r\n- Any missing inputs are clearly called out with targeted questions.";
    const variables = ["[JURISDICTION]","[BRAND_NAME]","[LOGO_DESCRIPTION]","[GOODS_AND_SERVICES]","[FIRST_USE_DATE]","[APPLICANT_INFO]","[MARK_DESCRIPTION]","[GOODS_SERVICES_DESCRIPTION]","[SPECIMEN]","[SIGNATURE]"];
    // Initial render with highlighted variables
    document.addEventListener('DOMContentLoaded', function() {
        renderPromptWithHighlights();
    });

    // Live update prompt as user types
    document.querySelectorAll('.customize-input').forEach(input => {
        input.addEventListener('input', renderPromptWithHighlights);
    });

    function renderPromptWithHighlights() {
        const promptContent = document.getElementById('premium-prompt-content');
        if (!promptContent) return;

        let updatedPrompt = originalPrompt;
        let filledVariables = {};

        // Collect filled values
        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                filledVariables[placeholder] = value;
            }
        });

        // Replace filled variables and highlight remaining
        let htmlContent = escapeHtml(updatedPrompt);

        variables.forEach(placeholder => {
            const escapedPlaceholder = escapeHtml(placeholder);
            const regex = new RegExp(escapeRegex(escapedPlaceholder), 'g');

            if (filledVariables[placeholder]) {
                // Show filled value with green highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable-filled">' + escapeHtml(filledVariables[placeholder]) + '</span>'
                );
            } else {
                // Show original placeholder with yellow highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable">' + escapedPlaceholder + '</span>'
                );
            }
        });

        promptContent.innerHTML = htmlContent;
    }

    function escapeRegex(string) {
        return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    }

    function escapeHtml(text) {
        const div = document.createElement('div');
        div.textContent = text;
        return div.innerHTML;
    }

    function resetPrompt() {
        // Clear all input fields
        document.querySelectorAll('.customize-input').forEach(input => {
            input.value = '';
        });

        // Re-render with original placeholders highlighted
        renderPromptWithHighlights();

        // Visual feedback
        const resetBtns = document.querySelectorAll('.prompt-header-reset, .prompt-cta-reset');
        resetBtns.forEach(btn => {
            const originalText = btn.querySelector('span').textContent;
            btn.querySelector('span').textContent = 'Reset!';
            setTimeout(() => {
                btn.querySelector('span').textContent = originalText;
            }, 1000);
        });
    }


    function getCustomizedPrompt() {
        let updatedPrompt = originalPrompt;

        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                const regex = new RegExp(escapeRegex(placeholder), 'g');
                updatedPrompt = updatedPrompt.replace(regex, value);
            }
        });

        return updatedPrompt;
    }
</script>

</div>

<div class="pro-tips-section">

<h2 class="wp-block-heading">Pro Tips for Better AI Prompt Results</h2>



<ul class="wp-block-list">

<li><strong>Decide your “mark type” before you paste anything.</strong> Tell the model if this is a word mark, a stylized word mark, or a design/logo mark, and include a one-line description of what the design shows. If you’re unsure, add: “Treat this as a logo mark and also tell me what would change if I filed it as a word mark.”</li>


<li><strong>Give real goods/services context, not just a category name.</strong> A vague input like “clothing” forces generic drafting. Try a tighter follow-up: “My current products are [3–7 items]. My sales channels are [Shopify/Amazon/wholesale]. Draft goods/services wording that matches how I sell, and also propose a narrower alternative to reduce objections.”</li>


<li><strong>Bring specimens and “use” evidence early.</strong> If the jurisdiction cares about use claims or specimen timing, you’ll get better guidance by describing what you can show today (product packaging, website cart page, app store listing, invoices). Ask: “List specimen options ranked from strongest to weakest for my situation, and tell me what file formats I should prepare.”</li>


<li><strong>Force the prompt to flag assumptions.</strong> Honestly, AI will try to be helpful by smoothing over unknowns. Add: “Do not assume facts. If any required field is unknown, stop and ask me targeted questions before drafting that section.” Then, after the first output, try asking: “Now rewrite the packet with only confirmed facts and put all assumptions in a separate ‘Needs confirmation’ box.”</li>


<li><strong>Use it as an intake system, not a one-off draft.</strong> Create a repeatable template by running it once, then asking for a standardized checklist your team can reuse. Example: “Convert your ‘missing inputs’ questions into a client intake form with field labels, examples, and validation rules, and include a short ‘common mistakes’ warning under each field.” For process-heavy teams, pairing this with a compliance workflow prompt can keep filings consistent.</li>

</ul>

</div>

<div class="related-prompts-section">

<h2 class="wp-block-heading">Related Prompts</h2>



<p>Once your trademark packet is organized, these prompts help you operationalize the work around it so nothing slips through review or handoff.</p>



<p>If you also need a repeatable internal review flow before submitting anything to a government portal, <a href="https://flowpast.com/prompts/build-a-compliance-checklist-with-this-ai-prompt/">Build a Compliance Checklist with this AI Prompt</a> helps you translate the filing packet into a pre-submit checklist with clear pass/fail checks. It’s especially useful when multiple people touch the application details and supporting files.</p>



<p>For teams doing lots of asset handoffs (logos, specimens, proof of use screenshots), <a href="https://flowpast.com/prompts/create-va-ready-sop-guides-with-this-ai-prompt/">Create VA-Ready SOP Guides with this AI Prompt</a> can turn your packet prep into a step-by-step VA guide. That way you’re not re-explaining file naming, where to store specimens, or how to gather owner/entity info every single time.</p>



<p>When your filing work triggers downstream operations (customer support updates, fulfillment inserts, packaging changes that affect specimens), <a href="https://flowpast.com/prompts/build-an-order-fulfillment-sop-with-this-ai-prompt/">Build an Order Fulfillment SOP with this AI Prompt</a> is a practical companion. It helps you keep “what ships” consistent with “what you claim” in the way your brand appears in commerce.</p>


<br>


<p>Quick reference:</p>



<ul class="wp-block-list">

<li><a href="https://flowpast.com/prompts/build-an-order-fulfillment-sop-with-this-ai-prompt/">Build an Order Fulfillment SOP with this AI Prompt</a>: Standardize handoffs, inserts, packaging, and steps.</li>


<li><a href="https://flowpast.com/prompts/build-a-compliance-checklist-with-this-ai-prompt/">Build a Compliance Checklist with this AI Prompt</a>: Pre-submit checks and documentation requirements.</li>


<li><a href="https://flowpast.com/prompts/create-a-training-ready-sop-with-this-ai-prompt/">Create a Training-Ready SOP with this AI Prompt</a>: Turn the process into trainable workflows.</li>


<li><a href="https://flowpast.com/prompts/create-va-ready-sop-guides-with-this-ai-prompt/">Create VA-Ready SOP Guides with this AI Prompt</a>: Delegate intake and asset preparation cleanly.</li>


<li><a href="https://flowpast.com/prompts/build-a-safe-data-import-template-system-ai-prompt/">Build a Safe Data Import Template System AI Prompt</a>: Prevent messy uploads and version confusion.</li>

</div>

<div class="faq-section">

<h2 class="wp-block-heading">Common Questions</h2>


<div class="faq-item">
<span class="question">Which roles benefit most from this trademark filing packet AI prompt?</span>

<p class="answer"><strong>Founders and business owners</strong> use this to turn scattered brand info into a filing-ready packet before they pay fees or start clicking through a portal. <strong>In-house marketing managers</strong> rely on it to standardize how the team collects logo files, specimen screenshots, and product descriptions so the application stays consistent. <strong>Operations leads</strong> use it to create a repeatable intake checklist for entity details, ownership, and approvals. <strong>Brand consultants</strong> apply it when coordinating launches across jurisdictions and need a consistent structure with jurisdiction-specific steps called out.</p>

</div>

<div class="faq-item">
<span class="question">Which industries get the most value from this trademark filing packet AI prompt?</span>

<p class="answer"><strong>E-commerce and DTC brands</strong> get value because specimens often come from product pages, packaging, and checkout flows, and this prompt helps you identify what to capture and how to present it. <strong>SaaS and mobile apps</strong> use it to structure mark descriptions and prepare evidence like app store listings or in-app purchase screens when those are relevant in the jurisdiction. <strong>Consumer packaged goods (CPG)</strong> teams benefit because labeling, packaging, and inserts must match brand usage, so the supporting-document checklist keeps assets aligned. <strong>Agencies managing multiple client brands</strong> use it to produce consistent packets and a predictable list of missing inputs across clients.</p>

</div>

<div class="faq-item">
<span class="question">Why do basic AI prompts for building a jurisdiction-aware trademark filing packet produce weak results?</span>

<p class="answer">A typical prompt like “<em>Write me a trademark application for my brand</em>” fails because it: lacks jurisdiction-specific requirements (so it can’t warn you about specimen timing, use claims, or portal expectations), provides no application-ready structure (you get paragraphs instead of field-ready sections), ignores missing inputs (it invents facts about ownership, dates, or goods), produces generic goods/services language instead of classification-aware drafting guidance, and misses submission mechanics like what to upload and what validation checks commonly cause rejections.</p>

</div>

<div class="faq-item">
<span class="question">Can I customize this trademark filing packet prompt for my specific situation?</span>

<p class="answer">Yes, and you should, because the packet quality depends on the details you provide about the mark, the applicant, and the jurisdiction. Start by specifying JURISDICTION and clarifying your mark format (word vs logo), plus the exact goods/services you sell and where customers encounter the mark (site, packaging, app store, invoices). If anything is uncertain, ask the model to pause and collect inputs first. A good follow-up is: “Before drafting, ask me the minimum set of questions you need for JURISDICTION, then produce two versions of goods/services wording: conservative and broader.”</p>

</div>

<div class="faq-item">
<span class="question">What are the most common mistakes when using this trademark filing packet prompt?</span>

<p class="answer">The biggest mistake is leaving JURISDICTION too vague—instead of “Europe,” use “European Union (EUIPO)” or the specific country office you plan to file with. Another common error is unclear mark format input: “my logo” is weak, while “design mark: a stacked word ‘NOVA’ above a line-drawn mountain icon” gives the model something it can draft around. People also under-specify goods/services; “software” is generic, but “downloadable project management software for dental clinics with scheduling and billing features” supports better class-ready guidance. Finally, specimen details get skipped; “I have a website” is thin, while “cart page screenshot showing the mark next to the Buy button for Product X” leads to much more usable specimen direction.</p>

</div>

<div class="faq-item">
<span class="question">Who should NOT use this trademark filing packet prompt?</span>

<p class="answer">This prompt isn’t ideal for high-stakes filings where you need a licensed practitioner’s judgment on nuanced conflicts, registrability risk, or jurisdiction-specific strategy choices. It’s also not a replacement for clearance searching, opposition planning, or enforcement steps, which are explicitly outside its scope. If you haven’t validated your brand name or you’re still changing what you sell, you may be better off documenting your brand basics first and then returning once the inputs are stable.</p>

</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Which roles benefit most from this trademark filing packet AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Founders and business owners use this to turn scattered brand info into a filing-ready packet before they pay fees or start clicking through a portal. In-house marketing managers rely on it to standardize how the team collects logo files, specimen screenshots, and product descriptions so the application stays consistent. Operations leads use it to create a repeatable intake checklist for entity details, ownership, and approvals. Brand consultants apply it when coordinating launches across jurisdictions and need a consistent structure with jurisdiction-specific steps called out."
      }
    },
    {
      "@type": "Question",
      "name": "Which industries get the most value from this trademark filing packet AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "E-commerce and DTC brands get value because specimens often come from product pages, packaging, and checkout flows, and this prompt helps you identify what to capture and how to present it. SaaS and mobile apps use it to structure mark descriptions and prepare evidence like app store listings or in-app purchase screens when those are relevant in the jurisdiction. Consumer packaged goods (CPG) teams benefit because labeling, packaging, and inserts must match brand usage, so the supporting-document checklist keeps assets aligned. Agencies managing multiple client brands use it to produce consistent packets and a predictable list of missing inputs across clients."
      }
    },
    {
      "@type": "Question",
      "name": "Why do basic AI prompts for building a jurisdiction-aware trademark filing packet produce weak results?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A typical prompt like “Write me a trademark application for my brand” fails because it: lacks jurisdiction-specific requirements (so it can’t warn you about specimen timing, use claims, or portal expectations), provides no application-ready structure (you get paragraphs instead of field-ready sections), ignores missing inputs (it invents facts about ownership, dates, or goods), produces generic goods/services language instead of classification-aware drafting guidance, and misses submission mechanics like what to upload and what validation checks commonly cause rejections."
      }
    },
    {
      "@type": "Question",
      "name": "Can I customize this trademark filing packet prompt for my specific situation?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, and you should, because the packet quality depends on the details you provide about the mark, the applicant, and the jurisdiction. Start by specifying JURISDICTION and clarifying your mark format (word vs logo), plus the exact goods/services you sell and where customers encounter the mark (site, packaging, app store, invoices). If anything is uncertain, ask the model to pause and collect inputs first. A good follow-up is: “Before drafting, ask me the minimum set of questions you need for JURISDICTION, then produce two versions of goods/services wording: conservative and broader.”"
      }
    },
    {
      "@type": "Question",
      "name": "What are the most common mistakes when using this trademark filing packet prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The biggest mistake is leaving JURISDICTION too vague—instead of “Europe,” use “European Union (EUIPO)” or the specific country office you plan to file with. Another common error is unclear mark format input: “my logo” is weak, while “design mark: a stacked word ‘NOVA’ above a line-drawn mountain icon” gives the model something it can draft around. People also under-specify goods/services; “software” is generic, but “downloadable project management software for dental clinics with scheduling and billing features” supports better class-ready guidance. Finally, specimen details get skipped; “I have a website” is thin, while “cart page screenshot showing the mark next to the Buy button for Product X” leads to much more usable specimen direction."
      }
    },
    {
      "@type": "Question",
      "name": "Who should NOT use this trademark filing packet prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "This prompt isn’t ideal for high-stakes filings where you need a licensed practitioner’s judgment on nuanced conflicts, registrability risk, or jurisdiction-specific strategy choices. It’s also not a replacement for clearance searching, opposition planning, or enforcement steps, which are explicitly outside its scope. If you haven’t validated your brand name or you’re still changing what you sell, you may be better off documenting your brand basics first and then returning once the inputs are stable."
      }
    }
  ]
}
</script>
</div>

<div class="closing-section">

<p>Trademark filing gets easier when the packet is already organized, consistent, and tailored to the jurisdiction you’re actually using. Paste this prompt into your AI tool, answer the missing-info questions, and build a filing-ready bundle you can confidently review before submission.</p>

</div>]]></content:encoded>
					
		
		
		<media:content url="https://flowpast.s3.eu-north-1.amazonaws.com/featured_blog_images/5000802.webp" medium="image"></media:content>
            	</item>
		<item>
		<title>Reduce Checkout Drop-Off Shipping Clarity AI Prompt</title>
		<link>https://flowpast.com/prompts/reduce-checkout-drop-off-shipping-clarity-ai-prompt/</link>
		
		<dc:creator><![CDATA[Lisa Granqvist]]></dc:creator>
		<pubDate>Fri, 23 Jan 2026 02:41:49 +0000</pubDate>
				<category><![CDATA[Prompts]]></category>
		<guid isPermaLink="false">https://flowpast.com/?p=5002879</guid>

					<description><![CDATA[Checkout drop-offs spike when delivery feels unclear - a ready-to-use AI Prompt that builds staged shipping copy, matrices, FAQs, and tests. Access our full AI prompt library for every model.]]></description>
										<content:encoded><![CDATA[<!-- FOCUS_KEYWORD: shipping clarity AI prompt -->
<div class="hook-introduction">

<p>Your checkout might be doing everything right, then losing the sale at the last moment. Not because of price. Because shipping feels vague. When delivery timing, costs, and “what happens next” aren’t crystal clear, shoppers hit the back button and tell themselves they’ll “decide later.”</p>



<p>This <strong>shipping clarity AI prompt</strong> is built for <strong>ecommerce managers</strong> cleaning up a messy shipping policy that customers don’t read, <strong>CRO specialists</strong> diagnosing checkout drop-off tied to delivery uncertainty, and <strong>brand operators</strong> who keep getting “When will it arrive?” tickets after every promotion. The output is a complete shipping communication package: staged checkout copy, a shipping matrix, targeted FAQs, and test ideas you can deploy without turning your site into a wall of text.</p>

</div>

<div class="what-and-when-section">

<h2 class="wp-block-heading">What Does This AI Prompt Do and When to Use It?</h2>



<table class="solution-results-table three-column" role="presentation" aria-label="What this prompt does, when to use it, and what you get">
 <thead>
    <tr>
      <th scope="col">What This Prompt Does</th>
      <th scope="col">When to Use This Prompt</th>
      <th scope="col">What You&#8217;ll Get</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
        <ul class="automation-list">
          <li>It restates your current delivery promise and identifies the specific “unknowns” that trigger hesitation (timing, costs, tracking, exceptions, or regions).</li>
          <li>It converts raw shipping inputs into scan-friendly checkout and PDP microcopy that uses progressive disclosure instead of long policy blocks.</li>
          <li>It drafts a structured shipping matrix (by region, method, timeframe, and carrier) so customers can self-serve quickly.</li>
          <li>It creates an FAQ set aimed at uncertainty reducers, including edge cases like P.O. boxes, split shipments, and processing time if those apply.</li>
          <li>It proposes practical A/B test ideas for shipping clarity, focusing on placement, wording, and expectation-setting rather than “clever” persuasion.</li>
       </ul>
      </td>
      <td>
        <ul class="results-list">
          <li>You see high drop-off on the shipping step or payment step, and session replays show shoppers hunting for delivery info.</li>
          <li>Your support inbox is full of pre-purchase questions about arrival dates, carriers, or international duties.</li>
          <li>You’re launching a sale, a new shipping method, or a new region and need the promise to stay consistent everywhere.</li>
          <li>Reviews mention “shipping took longer than expected” even when you technically met the policy, which signals expectation mismatch.</li>
          <li>You’re scaling paid traffic and can’t afford friction; small trust leaks at checkout become expensive fast.</li>
        </ul>
      </td>
       <td>
         <ul class="deliverables-list">
           <li>A staged set of shipping copy for key touchpoints (PDP snippet, cart, checkout, and post-purchase) with 2–3 variants each.</li>
           <li>A shipping matrix table draft covering regions, methods, delivery timeframes, and carriers in a clean, scannable layout.</li>
           <li>12–20 ready-to-publish shipping FAQs written in plain language, including “what happens after I order” and “how tracking works.”</li>
           <li>A short “unknowns and risk flags” list you can use to align marketing claims with real operations.</li>
           <li>6–10 test hypotheses with success metrics (for example: reduce shipping-step exits, reduce support tickets, increase conversion).</li>
         </ul>
       </td>
    </tr>
  </tbody>
</table>

</div>

<div class="prompt-display-section">

<h2 class="wp-block-heading">The Full AI Prompt: Checkout Shipping Clarity Package Builder</h2>



<div class="prompt-viewer-wrapper" id="prompt-section">
    <div class="prompt-comparison-row prompt-premium">
        <!-- Header with buttons -->
        <div class="prompt-row-header">
            <!-- <span class="prompt-row-icon">✨</span> -->
            <span class="prompt-row-title">
                                    Step 1: Customize the prompt with your input
                            </span>
            <div class="prompt-header-buttons">
                                    <button class="prompt-header-btn prompt-header-reset" onclick="resetPrompt()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                                <button class="prompt-header-btn prompt-header-copy-green flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span>Customize and Copy Full Prompt</span>
                </button>
            </div>
        </div>

        <!-- Customize the Prompt Section -->
                    <div class="prompt-customize-section">
                <span class="customize-title">Customize the Prompt</span>
                <p class="customize-subtitle">Fill in the fields below to personalize this prompt for your needs.</p>
                <table class="customize-table">
                    <thead>
                        <tr>
                            <th>Variable</th>
                            <th>What to Enter</th>
                            <th>Customise the prompt</th>
                        </tr>
                    </thead>
                    <tbody>
                                                    <tr>
                                <td class="var-name"><code>[TARGET_AUDIENCE]</code></td>
                                <td class="var-desc">
                                    Describe the specific segment of the workforce that the program is designed for, including demographics, roles, or other defining characteristics.                                    <div class="var-example">For example: "Mid-level managers in a hybrid tech company, ages 30-45, responsible for cross-functional team collaboration."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[TARGET_AUDIENCE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[CONTEXT]</code></td>
                                <td class="var-desc">
                                    Provide an overview of the organization&#039;s history, current challenges, and any relevant cultural or operational details.                                    <div class="var-example">For example: "A 10-year-old SaaS company undergoing rapid growth, with a recent merger and increasing employee turnover."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[CONTEXT]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[INDUSTRY]</code></td>
                                <td class="var-desc">
                                    Specify the industry or domain the organization operates in to ensure activities are culturally relevant.                                    <div class="var-example">For example: "Enterprise software development for financial institutions."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[INDUSTRY]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[COMPANY_NAME]</code></td>
                                <td class="var-desc">
                                    Enter the name of the organization for personalization purposes.                                    <div class="var-example">For example: "TechNova Inc."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[COMPANY_NAME]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[CULTURE_MATURITY]</code></td>
                                <td class="var-desc">
                                    Describe the current level of cultural development within the organization (low, medium, or high) and explain why.                                    <div class="var-example">For example: "Medium maturity: the company has strong stated values but limited alignment with lived values among employees."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[CULTURE_MATURITY]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[TEAM_STRUCTURE]</code></td>
                                <td class="var-desc">
                                    Outline the organization&#039;s team structure, including function types, remote/hybrid/on-site setup, and cross-functional collaboration details.                                    <div class="var-example">For example: "Primarily remote teams with occasional in-person meetups, organized by functional areas such as engineering, sales, and marketing."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[TEAM_STRUCTURE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[STATED_VALUES]</code></td>
                                <td class="var-desc">
                                    List the official values or principles the organization claims to uphold.                                    <div class="var-example">For example: "Innovation, transparency, and customer obsession."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[STATED_VALUES]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[LIVED_VALUES]</code></td>
                                <td class="var-desc">
                                    Describe the actual behaviors and practices observed within the organization that reflect its true values.                                    <div class="var-example">For example: "Team members prioritize speed over transparency, often skipping documentation to meet tight deadlines."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[LIVED_VALUES]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[INFORMAL_GROUPS]</code></td>
                                <td class="var-desc">
                                    Identify existing informal networks or social groups within the organization that influence belonging and collaboration.                                    <div class="var-example">For example: "Engineering team members who bond over shared hobbies like gaming, and a Slack channel for parents supporting each other."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[INFORMAL_GROUPS]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[CHALLENGE]</code></td>
                                <td class="var-desc">
                                    Specify the main obstacle or issue the program needs to address in building workplace belonging.                                    <div class="var-example">For example: "A lack of trust between leadership and employees due to inconsistent communication during a recent restructuring."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[CHALLENGE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[LEADERSHIP_BUY_IN]</code></td>
                                <td class="var-desc">
                                    Describe the level of support or commitment from leadership toward cultural transformation initiatives.                                    <div class="var-example">For example: "Moderate buy-in: leadership supports belonging initiatives but prioritizes measurable ROI over long-term cultural change."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[LEADERSHIP_BUY_IN]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[ENGAGEMENT_BASELINE]</code></td>
                                <td class="var-desc">
                                    Provide current metrics or observations about employee engagement to establish a starting point for improvement.                                    <div class="var-example">For example: "Employee engagement surveys show 65% participation, with mixed feedback about team-building efforts."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[ENGAGEMENT_BASELINE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[TRANSFORMATION_DEPTH]</code></td>
                                <td class="var-desc">
                                    Specify how significant the cultural shift should be, ranging from minor adjustments to deep systemic changes.                                    <div class="var-example">For example: "Deep transformation: shift from a task-oriented culture to one emphasizing shared purpose and community."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[TRANSFORMATION_DEPTH]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[TIMEFRAME]</code></td>
                                <td class="var-desc">
                                    State the expected duration for implementing the program, including any milestones or deadlines.                                    <div class="var-example">For example: "12 months with quarterly reviews to assess progress and refine activities."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[TIMEFRAME]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[BUDGET]</code></td>
                                <td class="var-desc">
                                    Provide the financial resources allocated for the program, including constraints or flexibility.                                    <div class="var-example">For example: "$50,000 allocated for facilitation, tools, and employee participation incentives."</div>
                                </td>
                                <td class="var-input">
                                                                            <input
                                            type="text"
                                            class="customize-input"
                                            data-placeholder="[BUDGET]"
                                            placeholder="Enter your value here..." />
                                                                    </td>
                            </tr>
                                                    <tr>
                                <td class="var-name"><code>[BRAND_VOICE]</code></td>
                                <td class="var-desc">
                                    Describe the tone and style the organization prefers for communication, ensuring alignment with its identity.                                    <div class="var-example">For example: "Friendly and approachable, emphasizing clarity and inclusivity over corporate jargon."</div>
                                </td>
                                <td class="var-input">
                                                                            <textarea
                                            class="customize-input"
                                            data-placeholder="[BRAND_VOICE]"
                                            placeholder="Enter your value here..."
                                            rows="3"></textarea>
                                                                    </td>
                            </tr>
                                            </tbody>
                </table>

                <button class="copy-customized-btn flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                        <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                        <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                    </svg>
                    <span class="copy-customized-text">Customise the prompt now</span>
                </button>
            </div>
        
        <!-- Full Prompt Code Header -->
                    <div class="prompt-code-header">
                <span class="prompt-code-title">
                    Step 2: Copy the Prompt
                </span>
                <div class="prompt-code-buttons">
                    <!-- Reset: Only visible when unlocked -->
                    <button class="prompt-header-btn prompt-header-reset btn-when-unlocked" onclick="resetPrompt()" style="display: none;">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path fill-rule="evenodd" d="M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z" />
                            <path d="M8 4.466V.534a.25.25 0 0 1 .41-.192l2.36 1.966c.12.1.12.284 0 .384L8.41 4.658A.25.25 0 0 1 8 4.466z" />
                        </svg>
                        <span>Reset</span>
                    </button>
                    <!-- Copy Full Prompt -->
                    <button class="prompt-header-btn prompt-header-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
                        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
                            <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                            <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
                        </svg>
                        <span>Copy Full Prompt</span>
                    </button>
                </div>
            </div>
        

        <!-- Prompt Content -->
        <div class="prompt-box prompt-gated-wrapper">
            <!-- Gated: Blurred content -->
            <div class="prompt-gated-content">
                <div class="prompt-header-visible">OBJECTIVE</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PERSONA</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">CONSTRAINTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">What This Is NOT (Scope Boundaries)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">PROCESS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">INPUTS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">OUTPUT SPECIFICATION</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">1) Phase Plan Overview</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">2) Phase-by-Phase Design (repeat for each phase)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div><div class="locked-line" style="width: 80%;"></div><div class="locked-line" style="width: 95%;"></div><div class="locked-line" style="width: 70%;"></div><div class="locked-line" style="width: 83%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">3) Inter-Phase Gates</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">4) Measurement Dashboard (non-survey-heavy)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible subheader">5) Implementation Waves (time-based rollout)</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div></div></div><div class="locked-section-icon">🔒</div></div><div class="prompt-header-visible">QUALITY CHECKS</div><div class="locked-section"><div class="locked-section-bg"><div class="locked-section-lines"><div class="locked-line" style="width: 85%;"></div><div class="locked-line" style="width: 78%;"></div><div class="locked-line" style="width: 92%;"></div><div class="locked-line" style="width: 75%;"></div><div class="locked-line" style="width: 88%;"></div><div class="locked-line" style="width: 72%;"></div></div></div><div class="locked-section-icon">🔒</div></div>            </div>
            <!-- Unlocked: Full content (hidden by default) -->
            <div class="prompt-content-full" id="premium-prompt-content" style="display: none;">
                ## OBJECTIVE
Create a multi-phase, interactive program that turns a workplace from “coworkers who coordinate” into a true community with strong belonging and shared purpose. The program must use Social Identity Theory to design community-building activities that feel voluntary, culturally natural, and measurable—then improve them through iteration.

## PERSONA
You are a **Workplace Belonging Designer**: a seasoned organizational culture specialist with a background in corporate anthropology and fieldwork inside high-growth tech companies, followed by years studying intentional communities across multiple regions. Your style is clear, pragmatic, observant, and human—less corporate jargon, more behavioral insight.

## CONSTRAINTS
- Build a **dynamic sequence of 5–12 phases** based on the organization’s reality (not a fixed template).
- Activities must feel **opt-in, organic, and socially rewarding**, not like mandated team-building.
- Always distinguish **lived values** (what people actually do) from **poster values** (what leadership claims).
- Include **measurement of emotional connection**, not only engagement or participation.
- Keep the interaction gated: end key phases with a prompt like **“Type ‘continue’ to proceed.”**
- If information is missing, ask targeted questions before designing specifics.

### What This Is NOT (Scope Boundaries)
- Not a legal/HR compliance plan, investigations process, or disciplinary framework.
- Not a re-org blueprint, compensation strategy, or performance management redesign.
- Not therapy, clinical mental-health guidance, or personal counseling.
- Not a one-off event calendar; it must be a system that can evolve.

## PROCESS
1. **Pre-Analysis Statement (required):** Briefly restate what you’re going to build and the assumptions you’re making from the provided inputs.
2. **Diagnosis:** Infer current social dynamics, belonging friction, and existing informal networks.
3. **Architecture:** Select an appropriate number of phases (5–12) and name them based on gaps, buy-in, baseline engagement, and desired depth of change.
4. **Design:** For each phase, define outcomes, recommended activities, and facilitation guidance that preserves authenticity.
5. **Signals &amp; Metrics:** Specify both qualitative and behavioral indicators, plus lightweight collection methods.
6. **Iteration Loop:** Provide how to refine activities using observed participation and narrative feedback.
7. **Edge Cases:** If inputs conflict (e.g., “high trust” but high attrition) or are vague, pause and ask clarifying questions before continuing.

## INPUTS
- **Ideal recipient / workforce segment:** [TARGET_AUDIENCE]  
- **Organization context &amp; background:** [CONTEXT]  
- **Industry / domain:** [INDUSTRY]  
- **Company name:** [COMPANY_NAME]  
- **Current culture maturity (low/medium/high + why):** [CULTURE_MATURITY]  
- **Team structure (functions, cross-functional, remote/hybrid/on-site):** [TEAM_STRUCTURE]  
- **Stated values (official):** [STATED_VALUES]  
- **Values actually used in decisions (observed):** [LIVED_VALUES]  
- **Existing informal groups (examples + strength):** [INFORMAL_GROUPS]  
- **Primary barrier to genuine connection:** [CHALLENGE]  
- **Leadership buy-in level (low/medium/high + evidence):** [LEADERSHIP_BUY_IN]  
- **Employee engagement baseline (how known/measured):** [ENGAGEMENT_BASELINE]  
- **Transformation ambition (light/medium/deep):** [TRANSFORMATION_DEPTH]  
- **Time horizon to roll out:** [TIMEFRAME]  
- **Budget range (if any):** [BUDGET]  
- **Preferred communication style:** [BRAND_VOICE]  

## OUTPUT SPECIFICATION
Deliver the program as a phased journey.

### 1) Phase Plan Overview
- {Number Of Phases} and the criteria used to choose that count
- A one-paragraph summary of the overall strategy

### 2) Phase-by-Phase Design (repeat for each phase)
For each phase provide:
- {Phase Name}
- {Purpose}
- {What You Need From The Company} (inputs, approvals, time commitments)
- {Activities} (2–6 activities written so they feel voluntary and culturally plausible)
- {Facilitation Notes} (how to avoid “forced fun,” how to keep it inclusive)
- {Belonging Mechanism} (which identity/belonging principle it targets)
- {Signals To Watch} (behavioral + emotional)
- {Measurement Method} (practical collection: stories, network mapping, observation, nominations, etc.)
- {Iteration Rules} (when to expand, pause, sunset, or redesign)

### 3) Inter-Phase Gates
At the end of:
- the discovery phase, and
- each major design/build step,  
include a short checkpoint and end with: **Type “continue” to proceed.**

### 4) Measurement Dashboard (non-survey-heavy)
Include:
- {Connection Indicators}
- {Collection Cadence}
- {Simple Dashboard Layout}
- {How To Interpret Changes} (what improvement looks like vs. noise)

### 5) Implementation Waves (time-based rollout)
Provide a staged rollout with approximate timing that fits [TIMEFRAME], including:
- {Wave Name}
- {Time Window}
- {Launch Focus}
- {Risks And Mitigations}

## QUALITY CHECKS
Before finalizing, verify:
- The phase count is justified by [CULTURE_MATURITY], [LEADERSHIP_BUY_IN], [ENGAGEMENT_BASELINE], and [TRANSFORMATION_DEPTH].
- Activities are opt-in by design (no hidden coercion) and avoid performative “culture theater.”
- Lived vs. stated values are explicitly separated and used to shape recommendations.
- Metrics include at least one **network/behavioral** measure and one **narrative/story** measure per major stage.
- Edge cases are handled: missing inputs trigger clarifying questions; contradictions are flagged with proposed tests to validate reality.            </div>
        </div>


    </div>

    <!-- CTA Row - Full width buttons -->
    <div class="prompt-cta-row">
        <button class="prompt-cta-btn prompt-cta-copy flowpast-copy-prompt-btn" onclick="handlePromptCopy()">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
                <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z" />
                <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z" />
            </svg>
            <span class="cta-copy-text">Copy Full Prompt</span>
        </button>
    </div>
</div>

<style>
    /* Gated prompt states */
    .prompt-gated-wrapper {
        position: relative;
    }

    /* When unlocked - show full content, hide gated */
    body.flowpast-unlocked .prompt-gated-wrapper .prompt-gated-content {
        display: none;
    }

    body.flowpast-unlocked .prompt-gated-wrapper .prompt-content-full {
        display: block !important;
    }

    /* Show/hide elements based on unlock state */
    body.flowpast-unlocked .btn-when-unlocked {
        display: inline-flex !important;
    }

    .prompt-viewer-wrapper {
        scroll-margin-top: 250px;
    }

    /* ========================================
   PROMPT VIEWER - MAIN WRAPPER
   ======================================== */
    .prompt-viewer-wrapper {
        margin: 30px 0;
        display: flex;
        flex-direction: column;
        gap: 20px;
    }

    /* ========================================
   PROMPT BOX CONTAINER
   ======================================== */
    .prompt-comparison-row {
        border-radius: 12px;
        overflow: hidden;
        border: 1px solid #e0e0e0;
        background: #fff;
    }

    /* ========================================
   HEADER WITH BUTTONS
   ======================================== */
    .prompt-row-header {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 14px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
        flex-wrap: wrap;
    }

    .prompt-row-icon {
        font-size: 20px;
    }

    .prompt-row-title {
        font-weight: 600;
        font-size: 22px;
        color: #fff !important;
        text-decoration: underline
    }

    .prompt-header-buttons {
        margin-left: auto;
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
    }

    /* Header buttons */
    .prompt-header-btn {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        padding: 10px 20px;
        border-radius: 6px;
        font-size: 14px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-header-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-header-copy:hover {
        background: #2a2a2a;
    }

    .prompt-header-copy.copied {
        background: #2e7d32;
    }

    .prompt-header-copy-green {
        background: #04AA6D !important;
        color: #fff !important;
    }

    .prompt-header-copy-green:hover {
        background: #039860 !important;
    }

    .prompt-header-copy-green.copied {
        background: #2e7d32 !important;
    }

    .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-header-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-1px);
    }

    /* ========================================
   PROMPT CONTENT - FULL (NO SCROLL)
   ======================================== */
    .prompt-box {
        background: #ffffff;
    }

    .prompt-content-full {
        padding: 24px;
        margin: 0;
        color: #202124;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.7;
        white-space: pre-wrap;
        word-wrap: break-word;
        /* No scroll - show full content */
        max-height: none;
        overflow: visible;
    }

    /* Highlighted variable in prompt */
    .prompt-variable {
        background: #fff3cd;
        color: #1967d2;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #ffc107;
    }

    .prompt-variable-filled {
        background: #d4edda;
        color: #155724;
        font-weight: 700;
        padding: 2px 4px;
        border-radius: 3px;
        border: 1px solid #28a745;
    }

    /* ========================================
   GATED CONTENT (NO ACCESS)
   ======================================== */
    .prompt-gated-content {
        padding: 24px;
        background: #ffffff;
        font-family: 'Fira Code', 'Monaco', 'Consolas', monospace;
        font-size: 13px;
        line-height: 1.8;
        max-height: none;
        overflow: visible;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        cursor: default;
    }

    /* ## headers - larger, black */
    .prompt-header-visible {
        color: #202124;
        font-weight: 600;
        margin: 5px 0 0px 0;
        font-size: 20px;
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        text-decoration: underline;
        text-underline-offset: 4px;
    }

    /* ### headers - smaller, black */
    .prompt-header-visible.subheader {
        color: #202124;
        font-weight: 600;
        margin: 5px 0;
        font-size: 18px;
    }

    .prompt-header-visible:first-child {
        margin-top: 0;
    }

    /* ========================================
   LOCKED SECTION BLOCK
   ======================================== */
    .locked-section {
        position: relative;
        margin: 4px 0 8px 0;
        border-radius: 6px;
        overflow: hidden;
        background: linear-gradient(110deg, #e2e8f0 8%, #f1f5f9 18%, #e2e8f0 33%);
        user-select: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
    }

    .locked-section-bg {
        position: relative;
    }

    .locked-section-lines {
        padding: 8px 12px;
        position: relative;
    }

    .locked-line {
        height: 6px;
        background: rgba(255, 255, 255, 0.6);
        border-radius: 3px;
        margin-bottom: 4px;
        margin-left: 12px;
    }

    .locked-line:last-child {
        margin-bottom: 0;
    }

    .locked-section-icon {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: 10;
        font-size: 24px;
        filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1));
    }

    /* Subheader locked sections - slightly indented */
    /*  .prompt-header-visible.subheader+.locked-section {
        margin-left: 16px;
    } */

    /* ========================================
   COMPATIBILITY BADGES
   ======================================== */
    .prompt-compatibility {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 8px;
        padding: 12px 20px;
        background: #f8f9fa;
        border-top: 1px solid #e0e0e0;
    }

    .compat-label {
        font-size: 13px;
        color: #5f6368;
        font-weight: 500;
    }

    .compat-badge {
        padding: 4px 10px;
        background: #e8f0fe;
        color: #1967d2;
        border-radius: 4px;
        font-size: 12px;
        font-weight: 500;
    }

    /* ========================================
   CTA ROW - FULL WIDTH BUTTONS
   ======================================== */
    .prompt-cta-row {
        display: flex;
        gap: 16px;
        flex-wrap: wrap;
    }

    .prompt-cta-btn {
        flex: 1;
        min-width: 200px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        padding: 16px 24px;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
        text-decoration: none;
        border: none;
    }

    .prompt-cta-copy {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-copy:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-copy.copied {
        background: #2e7d32;
    }

    .prompt-cta-reset {
        background: #3a3a3a;
        color: #fff;
    }

    .prompt-cta-reset:hover {
        background: #2a2a2a;
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    }

    .prompt-cta-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
    }

    .prompt-cta-access:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    /* ========================================
    CUSTOMIZE YOUR PROMPT SECTION
    ======================================== */
    .prompt-customize-section {
        padding: 24px;
        border-bottom: 1px solid #e0e0e0;
        background: #fafbfc;
    }

    .customize-title {
        margin: 0 0 8px 0;
        font-size: 18px;
        font-weight: 700;
        color: #202124;
    }

    .customize-subtitle {
        margin: 0 0 20px 0;
        font-size: 14px;
        color: #5f6368;
    }

    .customize-table {
        width: 100%;
        border-collapse: collapse;
        margin-bottom: 20px;
    }

    .customize-table th {
        text-align: left;
        padding: 12px;
        background: #f1f3f4;
        border: 1px solid #e0e0e0;
        font-size: 13px;
        font-weight: 600;
        color: #202124;
    }

    .customize-table td {
        padding: 12px;
        border: 1px solid #e0e0e0;
        vertical-align: top;
    }

    .customize-table .var-name {
        width: 25%;
        background: #f8f9fa;
    }

    .customize-table .var-name code {
        background: #fff3cd;
        color: #1967d2;
        border: 1px solid #ffc107;
        padding: 4px 8px;
        border-radius: 4px;
        font-size: 12px;
        word-break: break-all;
        font-weight: 600;
    }

    .customize-table .var-desc {
        width: 35%;
        font-size: 13px;
        color: #5f6368;
        line-height: 1.5;
    }

    .customize-table .var-example {
        margin-top: 8px;
        padding: 8px 10px;
        background: #f8f9fa;
        border-left: 3px solid #dadce0;
        font-size: 12px;
        color: #5f6368;
        font-style: italic;
        border-radius: 0 4px 4px 0;
    }

    .customize-table .var-input {
        width: 40%;
    }

    .customize-input {
        width: 100%;
        padding: 10px 12px;
        border: 1px solid #dadce0;
        border-radius: 6px;
        font-size: 13px;
        font-family: inherit;
        resize: vertical;
        transition: border-color 0.2s, box-shadow 0.2s;
    }

    .customize-input:focus {
        outline: none;
        border-color: rgb(5, 152, 98);
        box-shadow: 0 0 0 3px rgba(5, 152, 98, 0.1);
    }

    .customize-input::placeholder {
        color: #9aa0a6;
        font-style: italic;
    }

    .copy-customized-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 10px;
        width: 100%;
        padding: 16px 24px;
        background: rgb(5, 152, 98);
        color: #fff;
        border: none;
        border-radius: 8px;
        font-size: 16px;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
    }

    .copy-customized-btn:hover {
        background: rgb(4, 130, 83);
        transform: translateY(-2px);
        box-shadow: 0 4px 12px rgba(5, 152, 98, 0.3);
    }

    .copy-customized-btn.copied {
        background: #2e7d32;
    }

    /* ========================================
    FULL PROMPT CODE HEADER
    ======================================== */
    .prompt-code-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 10px 20px;
        color: #fff !important;
        background: #141414;
        border-bottom: 1px solid #e0e0e0;
    }

    .prompt-code-title {
        font-size: 22px;
        font-weight: 600;
        text-decoration: underline;

    }

    .prompt-code-buttons {
        display: flex;
        gap: 8px;
    }

    .prompt-code-buttons .prompt-header-btn {
        padding: 8px 14px;
        font-size: 13px;
        background: #ffffff;
        color: #202124;
        border: 1px solid #dadce0;
    }

    .prompt-code-buttons .prompt-header-access {
        background: rgb(5, 152, 98);
        color: #fff !important;
        border-color: rgb(5, 152, 98);
    }

    .prompt-code-buttons .prompt-header-btn.prompt-header-access:hover {
        background: rgb(4, 130, 83) !important;
        border-color: rgb(4, 130, 83);
        color: #fff !important;
    }

    .prompt-code-buttons .prompt-header-btn:hover {
        background: #f1f3f4;
    }

    .prompt-code-buttons .prompt-header-copy.copied {
        background: #d4edda;
        color: #155724;
        border-color: #28a745;
    }

    .prompt-header-reset {
        background: #ffffff;
        color: #202124;
    }

    /* ========================================
   RESPONSIVE
   ======================================== */
    @media (max-width: 768px) {
        .prompt-row-header {
            flex-direction: column;
            align-items: flex-start;
            gap: 12px;
        }

        .prompt-header-buttons {
            margin-left: 0;
            width: 100%;
        }

        .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }

        .prompt-cta-row {
            flex-direction: column;
        }

        .prompt-cta-btn {
            width: 100%;
        }

        /* Customize table responsive */
        .customize-table,
        .customize-table thead,
        .customize-table tbody,
        .customize-table tr,
        .customize-table th,
        .customize-table td {
            display: block;
        }

        .customize-table thead {
            display: none;
        }

        .customize-table tr {
            margin-bottom: 16px;
            border: 1px solid #e0e0e0;
            border-radius: 8px;
            overflow: hidden;
        }

        .customize-table td {
            width: 100% !important;
            border: none;
            border-bottom: 1px solid #e0e0e0;
        }

        .customize-table td:last-child {
            border-bottom: none;
        }

        .customize-table .var-name {
            background: #f1f3f4;
            font-weight: 600;
        }

        .prompt-code-header {
            flex-direction: column;
            gap: 12px;
            align-items: flex-start;
        }

        .prompt-code-buttons {
            width: 100%;
        }

        .prompt-code-buttons .prompt-header-btn {
            flex: 1;
            justify-content: center;
        }
    }
</style>

<script>
    function handlePromptCopy() {
        // Check if unlocked via cookie
        if (typeof window.flowpastIsUnlocked === 'function' && !window.flowpastIsUnlocked()) {
            // Show email popup
            if (typeof window.flowpastShowEmailPopup === 'function') {
                window.flowpastShowEmailPopup('prompt');
            }
            return;
        }

        // Copy the customized prompt (with filled variables)
        const customizedPrompt = getCustomizedPrompt();
        const copyButtons = document.querySelectorAll('.prompt-header-copy, .prompt-header-copy-green, .prompt-cta-copy, .copy-customized-btn');

        navigator.clipboard.writeText(customizedPrompt).then(() => {
            copyButtons.forEach(btn => {
                btn.classList.add('copied');
                const textSpan = btn.querySelector('span');
                if (textSpan) textSpan.textContent = 'Copied!';
            });

            setTimeout(() => {
                copyButtons.forEach(btn => {
                    btn.classList.remove('copied');
                    const textSpan = btn.querySelector('span');
                    if (textSpan) textSpan.textContent = 'Copy Full Prompt';
                });
            }, 2000);
        }).catch(err => {
            console.error('Failed to copy:', err);
        });
    }

    // Store original prompt for customization
    const originalPrompt = "## OBJECTIVE\r\nCreate a multi-phase, interactive program that turns a workplace from \u201ccoworkers who coordinate\u201d into a true community with strong belonging and shared purpose. The program must use Social Identity Theory to design community-building activities that feel voluntary, culturally natural, and measurable\u2014then improve them through iteration.\r\n\r\n## PERSONA\r\nYou are a **Workplace Belonging Designer**: a seasoned organizational culture specialist with a background in corporate anthropology and fieldwork inside high-growth tech companies, followed by years studying intentional communities across multiple regions. Your style is clear, pragmatic, observant, and human\u2014less corporate jargon, more behavioral insight.\r\n\r\n## CONSTRAINTS\r\n- Build a **dynamic sequence of 5\u201312 phases** based on the organization\u2019s reality (not a fixed template).\r\n- Activities must feel **opt-in, organic, and socially rewarding**, not like mandated team-building.\r\n- Always distinguish **lived values** (what people actually do) from **poster values** (what leadership claims).\r\n- Include **measurement of emotional connection**, not only engagement or participation.\r\n- Keep the interaction gated: end key phases with a prompt like **\u201cType \u2018continue\u2019 to proceed.\u201d**\r\n- If information is missing, ask targeted questions before designing specifics.\r\n\r\n### What This Is NOT (Scope Boundaries)\r\n- Not a legal\/HR compliance plan, investigations process, or disciplinary framework.\r\n- Not a re-org blueprint, compensation strategy, or performance management redesign.\r\n- Not therapy, clinical mental-health guidance, or personal counseling.\r\n- Not a one-off event calendar; it must be a system that can evolve.\r\n\r\n## PROCESS\r\n1. **Pre-Analysis Statement (required):** Briefly restate what you\u2019re going to build and the assumptions you\u2019re making from the provided inputs.\r\n2. **Diagnosis:** Infer current social dynamics, belonging friction, and existing informal networks.\r\n3. **Architecture:** Select an appropriate number of phases (5\u201312) and name them based on gaps, buy-in, baseline engagement, and desired depth of change.\r\n4. **Design:** For each phase, define outcomes, recommended activities, and facilitation guidance that preserves authenticity.\r\n5. **Signals & Metrics:** Specify both qualitative and behavioral indicators, plus lightweight collection methods.\r\n6. **Iteration Loop:** Provide how to refine activities using observed participation and narrative feedback.\r\n7. **Edge Cases:** If inputs conflict (e.g., \u201chigh trust\u201d but high attrition) or are vague, pause and ask clarifying questions before continuing.\r\n\r\n## INPUTS\r\n- **Ideal recipient \/ workforce segment:** [TARGET_AUDIENCE]  \r\n- **Organization context & background:** [CONTEXT]  \r\n- **Industry \/ domain:** [INDUSTRY]  \r\n- **Company name:** [COMPANY_NAME]  \r\n- **Current culture maturity (low\/medium\/high + why):** [CULTURE_MATURITY]  \r\n- **Team structure (functions, cross-functional, remote\/hybrid\/on-site):** [TEAM_STRUCTURE]  \r\n- **Stated values (official):** [STATED_VALUES]  \r\n- **Values actually used in decisions (observed):** [LIVED_VALUES]  \r\n- **Existing informal groups (examples + strength):** [INFORMAL_GROUPS]  \r\n- **Primary barrier to genuine connection:** [CHALLENGE]  \r\n- **Leadership buy-in level (low\/medium\/high + evidence):** [LEADERSHIP_BUY_IN]  \r\n- **Employee engagement baseline (how known\/measured):** [ENGAGEMENT_BASELINE]  \r\n- **Transformation ambition (light\/medium\/deep):** [TRANSFORMATION_DEPTH]  \r\n- **Time horizon to roll out:** [TIMEFRAME]  \r\n- **Budget range (if any):** [BUDGET]  \r\n- **Preferred communication style:** [BRAND_VOICE]  \r\n\r\n## OUTPUT SPECIFICATION\r\nDeliver the program as a phased journey.\r\n\r\n### 1) Phase Plan Overview\r\n- {Number Of Phases} and the criteria used to choose that count\r\n- A one-paragraph summary of the overall strategy\r\n\r\n### 2) Phase-by-Phase Design (repeat for each phase)\r\nFor each phase provide:\r\n- {Phase Name}\r\n- {Purpose}\r\n- {What You Need From The Company} (inputs, approvals, time commitments)\r\n- {Activities} (2\u20136 activities written so they feel voluntary and culturally plausible)\r\n- {Facilitation Notes} (how to avoid \u201cforced fun,\u201d how to keep it inclusive)\r\n- {Belonging Mechanism} (which identity\/belonging principle it targets)\r\n- {Signals To Watch} (behavioral + emotional)\r\n- {Measurement Method} (practical collection: stories, network mapping, observation, nominations, etc.)\r\n- {Iteration Rules} (when to expand, pause, sunset, or redesign)\r\n\r\n### 3) Inter-Phase Gates\r\nAt the end of:\r\n- the discovery phase, and\r\n- each major design\/build step,  \r\ninclude a short checkpoint and end with: **Type \u201ccontinue\u201d to proceed.**\r\n\r\n### 4) Measurement Dashboard (non-survey-heavy)\r\nInclude:\r\n- {Connection Indicators}\r\n- {Collection Cadence}\r\n- {Simple Dashboard Layout}\r\n- {How To Interpret Changes} (what improvement looks like vs. noise)\r\n\r\n### 5) Implementation Waves (time-based rollout)\r\nProvide a staged rollout with approximate timing that fits [TIMEFRAME], including:\r\n- {Wave Name}\r\n- {Time Window}\r\n- {Launch Focus}\r\n- {Risks And Mitigations}\r\n\r\n## QUALITY CHECKS\r\nBefore finalizing, verify:\r\n- The phase count is justified by [CULTURE_MATURITY], [LEADERSHIP_BUY_IN], [ENGAGEMENT_BASELINE], and [TRANSFORMATION_DEPTH].\r\n- Activities are opt-in by design (no hidden coercion) and avoid performative \u201cculture theater.\u201d\r\n- Lived vs. stated values are explicitly separated and used to shape recommendations.\r\n- Metrics include at least one **network\/behavioral** measure and one **narrative\/story** measure per major stage.\r\n- Edge cases are handled: missing inputs trigger clarifying questions; contradictions are flagged with proposed tests to validate reality.";
    const variables = ["[TARGET_AUDIENCE]","[CONTEXT]","[INDUSTRY]","[COMPANY_NAME]","[CULTURE_MATURITY]","[TEAM_STRUCTURE]","[STATED_VALUES]","[LIVED_VALUES]","[INFORMAL_GROUPS]","[CHALLENGE]","[LEADERSHIP_BUY_IN]","[ENGAGEMENT_BASELINE]","[TRANSFORMATION_DEPTH]","[TIMEFRAME]","[BUDGET]","[BRAND_VOICE]"];
    // Initial render with highlighted variables
    document.addEventListener('DOMContentLoaded', function() {
        renderPromptWithHighlights();
    });

    // Live update prompt as user types
    document.querySelectorAll('.customize-input').forEach(input => {
        input.addEventListener('input', renderPromptWithHighlights);
    });

    function renderPromptWithHighlights() {
        const promptContent = document.getElementById('premium-prompt-content');
        if (!promptContent) return;

        let updatedPrompt = originalPrompt;
        let filledVariables = {};

        // Collect filled values
        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                filledVariables[placeholder] = value;
            }
        });

        // Replace filled variables and highlight remaining
        let htmlContent = escapeHtml(updatedPrompt);

        variables.forEach(placeholder => {
            const escapedPlaceholder = escapeHtml(placeholder);
            const regex = new RegExp(escapeRegex(escapedPlaceholder), 'g');

            if (filledVariables[placeholder]) {
                // Show filled value with green highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable-filled">' + escapeHtml(filledVariables[placeholder]) + '</span>'
                );
            } else {
                // Show original placeholder with yellow highlight
                htmlContent = htmlContent.replace(regex,
                    '<span class="prompt-variable">' + escapedPlaceholder + '</span>'
                );
            }
        });

        promptContent.innerHTML = htmlContent;
    }

    function escapeRegex(string) {
        return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    }

    function escapeHtml(text) {
        const div = document.createElement('div');
        div.textContent = text;
        return div.innerHTML;
    }

    function resetPrompt() {
        // Clear all input fields
        document.querySelectorAll('.customize-input').forEach(input => {
            input.value = '';
        });

        // Re-render with original placeholders highlighted
        renderPromptWithHighlights();

        // Visual feedback
        const resetBtns = document.querySelectorAll('.prompt-header-reset, .prompt-cta-reset');
        resetBtns.forEach(btn => {
            const originalText = btn.querySelector('span').textContent;
            btn.querySelector('span').textContent = 'Reset!';
            setTimeout(() => {
                btn.querySelector('span').textContent = originalText;
            }, 1000);
        });
    }


    function getCustomizedPrompt() {
        let updatedPrompt = originalPrompt;

        document.querySelectorAll('.customize-input').forEach(input => {
            const placeholder = input.dataset.placeholder;
            const value = input.value.trim();

            if (value) {
                const regex = new RegExp(escapeRegex(placeholder), 'g');
                updatedPrompt = updatedPrompt.replace(regex, value);
            }
        });

        return updatedPrompt;
    }
</script>

</div>

<div class="pro-tips-section">

<h2 class="wp-block-heading">Pro Tips for Better AI Prompt Results</h2>



<ul class="wp-block-list">

<li><strong>Be painfully specific about processing time vs. transit time.</strong> Most “shipping confusion” is really “when do you ship” confusion. If you can, feed the model concrete ranges (for example: “Processing: 1–2 business days; Transit: 2–5 business days”) and ask it to write copy that separates them clearly in checkout.</li>


<li><strong>Use your real carrier names and service levels.</strong> “Standard shipping” is fine as a label, but customers trust specifics when they matter. After the first output, follow up with: “Rewrite the matrix and FAQs using these carriers and methods exactly: UPS Ground, USPS Priority, DHL Express, and Local Delivery (2–10 miles).”</li>


<li><strong>Tell it what you cannot promise.</strong> Honestly, this is the difference between helpful clarity and risky overcommitment. Add constraints like “No guaranteed delivery dates” or “No weekend delivery” and request language that sets expectations without sounding defensive.</li>


<li><strong>Iterate by page location, not just wording.</strong> The same sentence reads differently in the cart versus in a shipping-policy drawer. After you get the staged copy, ask: “Now create a version for a collapsible ‘Delivery details’ section with 3 bullets max and one link label.”</li>


<li><strong>Combine clarity work with an SEO consistency check (optional).</strong> If your shipping promise differs across PDPs, collection pages, and help docs, customers notice. Pair this with an internal consistency workflow like <a href="https://flowpast.com/prompts/build-an-on-page-seo-implementation-checklist-ai-prompt/">Build an On-Page SEO Implementation Checklist AI Prompt</a> to audit where delivery statements appear and ensure they match your checkout language.</li>

</ul>

</div>

<div class="related-prompts-section">

<h2 class="wp-block-heading">Related Prompts</h2>



<p>Once your delivery messaging is clear, these prompts help you make the rest of the site easier to find, understand, and trust.</p>



<p>If you also need to make sure customers can actually discover your shipping details (and that Google surfaces the right pages), <a href="https://flowpast.com/prompts/create-an-on-page-seo-checklist-ai-prompt/">Create an On-Page SEO Checklist AI Prompt</a> pairs well. Use it when your policy, FAQ, or delivery pages exist but feel “buried,” inconsistent, or hard to navigate from high-intent product pages.</p>



<p>For teams doing ongoing optimization, <a href="https://flowpast.com/prompts/create-an-seo-led-content-plan-with-this-ai-prompt/">Create an SEO-Led Content Plan with this AI Prompt</a> helps you plan supporting content that reduces purchase anxiety. It’s useful when you want to build articles and help docs around questions you already see in tickets, like “shipping to Alaska,” “international duties,” or “how tracking updates work.”</p>



<p>When you want a tighter, execution-ready roadmap for content production (pages, briefs, and update cycles), <a href="https://flowpast.com/prompts/build-an-seo-content-plan-with-this-ai-prompt/">Build an SEO Content Plan with this AI Prompt</a> is a good next step. After this shipping clarity package is live, it helps you expand coverage without drifting into generic content that doesn’t move conversions.</p>


<br>


<p>Quick reference:</p>



<ul class="wp-block-list">

<li><a href="https://flowpast.com/prompts/create-an-on-page-seo-checklist-ai-prompt/">Create an On-Page SEO Checklist AI Prompt</a>: Find and fix on-page trust gaps.</li>


<li><a href="https://flowpast.com/prompts/build-an-on-page-seo-implementation-checklist-ai-prompt/">Build an On-Page SEO Implementation Checklist AI Prompt</a>: Turn fixes into a shippable checklist.</li>


<li><a href="https://flowpast.com/prompts/create-an-seo-led-content-plan-with-this-ai-prompt/">Create an SEO-Led Content Plan with this AI Prompt</a>: Plan content around search intent and objections.</li>


<li><a href="https://flowpast.com/prompts/build-an-seo-content-plan-with-this-ai-prompt/">Build an SEO Content Plan with this AI Prompt</a>: Build a structured publishing plan fast.</li>


<li><a href="https://flowpast.com/prompts/build-off-page-seo-social-strategy-plan-ai-prompt/">Build Off-Page SEO Social Strategy Plan AI Prompt</a>: Promote key pages beyond your site.</li>

</ul>

</div>

<div class="faq-section">

<h2 class="wp-block-heading">Common Questions</h2>


<div class="faq-item">
<span class="question">Which roles benefit most from this shipping clarity AI prompt?</span>

<p class="answer"><strong>Ecommerce Managers</strong> use this to turn scattered shipping notes into a consistent promise across PDP, cart, checkout, and post-purchase. <strong>Conversion Rate Optimization (CRO) Specialists</strong> rely on it to reduce “delivery uncertainty” friction and generate testable copy variants tied to checkout behavior. <strong>Customer Support Leads</strong> benefit because the prompt produces FAQs that deflect repetitive “Where is my order?” and “When will it arrive?” tickets. <strong>Lifecycle/CRM Marketers</strong> apply it to tighten post-purchase expectation setting so tracking emails and order confirmations don’t create new confusion.</p>

</div>

<div class="faq-item">
<span class="question">Which industries get the most value from this shipping clarity AI prompt?</span>

<p class="answer"><strong>DTC consumer goods</strong> teams use it when shoppers compare brands and bail if delivery feels unpredictable, especially during launches and discounts. <strong>Apparel and footwear</strong> brands get value because shipping, returns, and split shipments often collide, so a clear matrix and FAQs reduce surprises. <strong>Health and beauty</strong> sellers apply it to communicate fulfillment speed, tracking expectations, and region limits without sounding like legal copy. <strong>Subscription and replenishment brands</strong> use it to clarify first-order timelines versus recurring shipments, which lowers churn caused by misunderstood delivery cadence.</p>

</div>

<div class="faq-item">
<span class="question">Why do basic AI prompts for shipping policy and checkout delivery copy produce weak results?</span>

<p class="answer">A typical prompt like “Write me a shipping policy for my store” fails because it: lacks your real shipping methods, regions, carriers, and delivery timeframes, so it fills gaps with generic assumptions. It provides no progressive-disclosure structure, which leads to a long, unreadable page instead of staged microcopy for cart and checkout. It ignores customer hesitation points (processing time, cutoff times, tracking, exceptions), so the copy doesn’t remove uncertainty. It produces “legal-ish” language that sounds cautious but doesn’t answer practical questions, and it misses consistency checks that keep your promise aligned across touchpoints.</p>

</div>

<div class="faq-item">
<span class="question">Can I customize this shipping clarity AI prompt for my specific situation?</span>

<p class="answer">Yes, and you should. The prompt is designed to reflect your actual capabilities, so you’ll want to provide clear details for PRODUCT_DESCRIPTION, TARGET_AUDIENCE, SHIPPING_METHODS, DELIVERY_TIMEFRAMES, SHIPPING_REGIONS, and CARRIERS. If you have constraints (no weekend delivery, limited rural coverage, signature required), include them so the copy stays truthful. A useful follow-up request is: “Now rewrite the checkout shipping section for mobile scanning, max 2 lines per method, and include a single expandable ‘details’ drawer for exceptions.”</p>

</div>

<div class="faq-item">
<span class="question">What are the most common mistakes when using this shipping clarity AI prompt?</span>

<p class="answer">The biggest mistake is leaving TARGET_AUDIENCE too vague — instead of “online shoppers,” try “first-time buyers of premium skincare who worry about heat exposure in transit.” Another common error is providing DELIVERY_TIMEFRAMES without separating processing vs transit (bad: “3–5 days”; better: “Ships in 1–2 business days, then 2–5 business days in transit”). People also forget to specify SHIPPING_REGIONS accurately (bad: “we ship worldwide”; better: “US + Canada only, excluding PO boxes for express”). Finally, they list SHIPPING_METHODS without constraints (bad: “express available”; better: “express only for contiguous US orders placed before 1pm ET”).</p>

</div>

<div class="faq-item">
<span class="question">Who should NOT use this shipping clarity AI prompt?</span>

<p class="answer">This prompt isn’t ideal for teams that cannot describe their current shipping reality with any confidence, because the output must stay consistent with real methods, timeframes, regions, and carriers. It’s also not a replacement for lawyer-reviewed policy language if you operate in a highly regulated context or have complex liability requirements. And if you only want a generic boilerplate policy to paste once and forget, you will be better served by a basic template. Use this when you’re willing to iterate and align copy with operations.</p>

</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Which roles benefit most from this shipping clarity AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Ecommerce Managers use this to turn scattered shipping notes into a consistent promise across PDP, cart, checkout, and post-purchase. Conversion Rate Optimization (CRO) Specialists rely on it to reduce “delivery uncertainty” friction and generate testable copy variants tied to checkout behavior. Customer Support Leads benefit because the prompt produces FAQs that deflect repetitive “Where is my order?” and “When will it arrive?” tickets. Lifecycle/CRM Marketers apply it to tighten post-purchase expectation setting so tracking emails and order confirmations don’t create new confusion."
      }
    },
    {
      "@type": "Question",
      "name": "Which industries get the most value from this shipping clarity AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "DTC consumer goods teams use it when shoppers compare brands and bail if delivery feels unpredictable, especially during launches and discounts. Apparel and footwear brands get value because shipping, returns, and split shipments often collide, so a clear matrix and FAQs reduce surprises. Health and beauty sellers apply it to communicate fulfillment speed, tracking expectations, and region limits without sounding like legal copy. Subscription and replenishment brands use it to clarify first-order timelines versus recurring shipments, which lowers churn caused by misunderstood delivery cadence."
      }
    },
    {
      "@type": "Question",
      "name": "Why do basic AI prompts for shipping policy and checkout delivery copy produce weak results?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A typical prompt like “Write me a shipping policy for my store” fails because it: lacks your real shipping methods, regions, carriers, and delivery timeframes, so it fills gaps with generic assumptions. It provides no progressive-disclosure structure, which leads to a long, unreadable page instead of staged microcopy for cart and checkout. It ignores customer hesitation points (processing time, cutoff times, tracking, exceptions), so the copy doesn’t remove uncertainty. It produces “legal-ish” language that sounds cautious but doesn’t answer practical questions, and it misses consistency checks that keep your promise aligned across touchpoints."
      }
    },
    {
      "@type": "Question",
      "name": "Can I customize this shipping clarity AI prompt for my specific situation?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, and you should. The prompt is designed to reflect your actual capabilities, so you’ll want to provide clear details for PRODUCT_DESCRIPTION, TARGET_AUDIENCE, SHIPPING_METHODS, DELIVERY_TIMEFRAMES, SHIPPING_REGIONS, and CARRIERS. If you have constraints (no weekend delivery, limited rural coverage, signature required), include them so the copy stays truthful. A useful follow-up request is: “Now rewrite the checkout shipping section for mobile scanning, max 2 lines per method, and include a single expandable ‘details’ drawer for exceptions.”"
      }
    },
    {
      "@type": "Question",
      "name": "What are the most common mistakes when using this shipping clarity AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The biggest mistake is leaving TARGET_AUDIENCE too vague — instead of “online shoppers,” try “first-time buyers of premium skincare who worry about heat exposure in transit.” Another common error is providing DELIVERY_TIMEFRAMES without separating processing vs transit (bad: “3–5 days”; better: “Ships in 1–2 business days, then 2–5 business days in transit”). People also forget to specify SHIPPING_REGIONS accurately (bad: “we ship worldwide”; better: “US + Canada only, excluding PO boxes for express”). Finally, they list SHIPPING_METHODS without constraints (bad: “express available”; better: “express only for contiguous US orders placed before 1pm ET”)."
      }
    },
    {
      "@type": "Question",
      "name": "Who should NOT use this shipping clarity AI prompt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "This prompt isn’t ideal for teams that cannot describe their current shipping reality with any confidence, because the output must stay consistent with real methods, timeframes, regions, and carriers. It’s also not a replacement for lawyer-reviewed policy language if you operate in a highly regulated context or have complex liability requirements. And if you only want a generic boilerplate policy to paste once and forget, you will be better served by a basic template. Use this when you’re willing to iterate and align copy with operations."
      }
    }
  ]
}
</script>
</div>

<div class="closing-section">

<p>Checkout drop-off isn’t always a pricing problem. Sometimes it’s a clarity problem. Paste this prompt into your AI tool, answer the shipping reality questions honestly, and publish a delivery promise customers can understand fast.</p>

</div>]]></content:encoded>
					
		
		
		<media:content url="https://flowpast.s3.eu-north-1.amazonaws.com/featured_blog_images/5002879.webp" medium="image"></media:content>
            	</item>
	</channel>
</rss>
