refactor: landing page copy — copilot-first messaging

Rewrite landing page to lead with speed + auto-documentation:
- Hero: "Fix tickets faster. Notes write themselves."
- App preview: shows FlowPilot chat conversation, not decision tree editor
- How It Works: Describe → Troubleshoot Together → Resolve & Document
- Features: FlowPilot copilot first, "Zero Empty Ticket Notes", team knowledge
- CTA: "Never write ticket notes again"
- Sidebar preview updated to match new nav (FlowPilot, History, Flows, Scripts)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-23 04:32:01 +00:00
parent ceb1423b6a
commit 20d60bf83d

View File

@@ -73,7 +73,7 @@ export default function LandingPage() {
<> <>
<PageMeta <PageMeta
title="ResolutionFlow — From Issue to Resolution, Documented" title="ResolutionFlow — From Issue to Resolution, Documented"
description="AI-guided decision trees that walk your engineers through troubleshooting and automatically document every step." description="Your AI troubleshooting copilot. Describe the issue, get help fixing it, and get clean ticket notes — automatically."
/> />
<div className="landing-page"> <div className="landing-page">
@@ -133,11 +133,11 @@ export default function LandingPage() {
<section className="landing-hero"> <section className="landing-hero">
<div className="landing-hero-badge">Now in Beta — Join early access</div> <div className="landing-hero-badge">Now in Beta — Join early access</div>
<h1> <h1>
Stop writing ticket notes.<br /> Fix tickets faster.<br />
<span className="landing-gradient-text">Start generating them.</span> <span className="landing-gradient-text">Notes write themselves.</span>
</h1> </h1>
<p className="landing-hero-sub"> <p className="landing-hero-sub">
AI-guided decision trees that walk your engineers through troubleshooting — and automatically document every step, ready for your PSA ticket. ResolutionFlow is your AI troubleshooting copilot. Describe the issue, get expert guidance fixing it, and get clean ticket documentation — without writing a single note.
</p> </p>
<div className="landing-hero-actions"> <div className="landing-hero-actions">
<Link to="/register" className="landing-btn-hero-primary">Start Free</Link> <Link to="/register" className="landing-btn-hero-primary">Start Free</Link>
@@ -176,7 +176,7 @@ export default function LandingPage() {
<div className="landing-preview-url-bar"> <div className="landing-preview-url-bar">
<div className="landing-preview-url"> <div className="landing-preview-url">
<span className="landing-lock-icon">&#128274;</span> <span className="landing-lock-icon">&#128274;</span>
app.resolutionflow.com/editor app.resolutionflow.com/pilot
</div> </div>
</div> </div>
<div className="landing-preview-window-controls"> <div className="landing-preview-window-controls">
@@ -195,40 +195,46 @@ export default function LandingPage() {
<div className="landing-preview-sidebar"> <div className="landing-preview-sidebar">
<div className="landing-preview-sidebar-item active"> <div className="landing-preview-sidebar-item active">
<div className="dot" style={{ background: '#22d3ee' }} /> <div className="dot" style={{ background: '#22d3ee' }} />
Flow Editor FlowPilot
</div> </div>
<div className="landing-preview-sidebar-item"> <div className="landing-preview-sidebar-item">
<div className="dot" style={{ background: '#3b82f6' }} /> <div className="dot" style={{ background: '#34d399' }} />
Session Runner
</div>
<div className="landing-preview-sidebar-item">
<div className="dot" style={{ background: '#22c55e' }} />
Flow Library
</div>
<div className="landing-preview-sidebar-item">
<div className="dot" style={{ background: '#f59e0b' }} />
Session History Session History
</div> </div>
<div className="landing-preview-sidebar-item"> <div className="landing-preview-sidebar-item">
<div className="dot" style={{ background: '#8b5cf6' }} /> <div className="dot" style={{ background: '#a78bfa' }} />
Team Analytics Guided Flows
</div>
<div className="landing-preview-sidebar-item">
<div className="dot" style={{ background: '#2dd4bf' }} />
Scripts
</div>
<div className="landing-preview-sidebar-item">
<div className="dot" style={{ background: '#38bdf8' }} />
Analytics
</div> </div>
</div> </div>
<div className="landing-preview-canvas"> <div className="landing-preview-canvas">
<div className="landing-mini-tree"> <div className="landing-mock-session">
<div className="landing-tree-node root">Outlook Not Syncing</div> <div className="landing-mock-chat-line">
<div className="landing-tree-connector" /> <span className="label">You:</span>
<div className="landing-tree-branch"> <span className="text">User can&apos;t access shared drive after password reset</span>
<div className="landing-tree-branch-arm"> </div>
<div className="landing-tree-label">Yes</div> <div className="landing-mock-chat-line">
<div className="landing-tree-connector" /> <span className="label" style={{ color: '#22d3ee' }}>FlowPilot:</span>
<div className="landing-tree-node decision">Check profile config</div> <span className="text">This is likely a cached credential issue. Let&apos;s check a few things:</span>
</div> </div>
<div className="landing-tree-branch-arm"> <div className="landing-mock-chat-line">
<div className="landing-tree-label">No</div> <span className="label" style={{ color: '#22d3ee' }}>FlowPilot:</span>
<div className="landing-tree-connector" /> <span className="text">1. Run <code>klist purge</code> to clear Kerberos tickets</span>
<div className="landing-tree-node decision">Verify credentials</div> </div>
</div> <div className="landing-mock-chat-line">
<span className="label" style={{ color: '#22d3ee' }}>FlowPilot:</span>
<span className="text">2. Open Credential Manager &rarr; remove saved entries for the share</span>
</div>
<div className="landing-mock-chat-line doc">
<span className="label">Auto-doc:</span>
<span className="text">3 steps captured &#10003;</span>
</div> </div>
</div> </div>
</div> </div>
@@ -270,7 +276,7 @@ export default function LandingPage() {
<span className="landing-eq-result">ResolutionFlow</span> <span className="landing-eq-result">ResolutionFlow</span>
</div> </div>
<p className="landing-equation-desc"> <p className="landing-equation-desc">
What if documentation was a <em>byproduct</em> of solving the issue — not a separate task? What if your engineers never had to write another ticket note? What if documentation was a <em>byproduct</em> of solving the issue — not a separate task? What if every ticket your team touched had clean, detailed notes — without anyone writing them?
</p> </p>
</div> </div>
@@ -282,28 +288,22 @@ export default function LandingPage() {
<div className="landing-section-label">How It Works</div> <div className="landing-section-label">How It Works</div>
<h2 className="landing-section-title">Three steps. Zero note-writing.</h2> <h2 className="landing-section-title">Three steps. Zero note-writing.</h2>
<div className="landing-section-desc"> <div className="landing-section-desc">
Build once, run forever. Every session generates documentation automatically. Just describe the issue. FlowPilot handles the rest.
</div> </div>
<div className="landing-steps-container"> <div className="landing-steps-container">
<div className="landing-step-card"> <div className="landing-step-card">
<h3>Build a Flow</h3> <h3>Describe the Issue</h3>
<p>Use the visual Flow Editor to create branching decision trees for any troubleshooting scenario. Drag, connect, and enrich steps with commands, notes, and AI suggestions.</p> <p>Type what&apos;s happening, paste an error message, or drop a screenshot. FlowPilot understands MSP environments — AD, Exchange, networking, VPN, you name it.</p>
<div className="landing-step-visual"> <div className="landing-step-visual">
<div className="landing-mock-editor"> <div className="landing-mock-editor">
<div className="landing-mock-node start">&#9654; Start</div> <div className="landing-mock-node step" style={{ fontSize: '0.7rem', padding: '8px 12px' }}>&#128172; &ldquo;User can&apos;t access shared drive after password reset, getting Access Denied in Event Viewer&rdquo;</div>
<div className="landing-mock-connector">&rarr;</div>
<div className="landing-mock-node step">Check DNS</div>
<div className="landing-mock-connector">&rarr;</div>
<div className="landing-mock-node step">Yes / No?</div>
<div className="landing-mock-connector">&rarr;</div>
<div className="landing-mock-node start">&#10003; Resolved</div>
</div> </div>
</div> </div>
</div> </div>
<div className="landing-step-card"> <div className="landing-step-card">
<h3>Run a Session</h3> <h3>Troubleshoot Together</h3>
<p>An engineer launches the flow on a live ticket. FlowPilot — your AI copilot — acts as a virtual senior engineer, guiding decisions and capturing every action in real time.</p> <p>FlowPilot acts like a senior engineer on the call with you. It suggests next steps, provides commands to run, and captures every action — documentation builds itself as you work.</p>
<div className="landing-step-visual"> <div className="landing-step-visual">
<div className="landing-mock-session"> <div className="landing-mock-session">
<div className="landing-mock-chat-line"> <div className="landing-mock-chat-line">
@@ -327,8 +327,8 @@ export default function LandingPage() {
</div> </div>
<div className="landing-step-card"> <div className="landing-step-card">
<h3>Export to Ticket</h3> <h3>Resolve &amp; Document</h3>
<p>When the session ends, full documentation is generated — formatted for your PSA. Paste it directly into ConnectWise, Atera, or Syncro. Done.</p> <p>Hit resolve and get clean, timestamped ticket notes — ready to paste into ConnectWise, Atera, or Syncro. Every step you took, every command you ran, documented automatically.</p>
<div className="landing-step-visual"> <div className="landing-step-visual">
<div className="landing-mock-ticket"> <div className="landing-mock-ticket">
<div className="landing-mock-ticket-header">ConnectWise Ticket #48291</div> <div className="landing-mock-ticket-header">ConnectWise Ticket #48291</div>
@@ -349,33 +349,33 @@ export default function LandingPage() {
<section id="features" className="landing-reveal"> <section id="features" className="landing-reveal">
<div className="landing-section-inner"> <div className="landing-section-inner">
<div className="landing-section-label">Features</div> <div className="landing-section-label">Features</div>
<h2 className="landing-section-title">Everything your team needs to<br />resolve faster and document better.</h2> <h2 className="landing-section-title">Troubleshoot faster.<br />Document everything. Automatically.</h2>
<div className="landing-features-grid"> <div className="landing-features-grid">
<FeatureCard <FeatureCard
highlight highlight
icon={<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><circle cx="12" cy="12" r="3"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg>} icon={<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><circle cx="12" cy="12" r="3"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg>}
title="FlowPilot — Your AI Copilot" title="FlowPilot — Your AI Copilot"
description="Like having a senior engineer on every call. FlowPilot suggests next steps, provides context-aware guidance, and automatically captures documentation as a byproduct of the troubleshooting session." description="Like having a senior engineer on every call. Describe the issue, get expert troubleshooting guidance, and documentation writes itself — as a byproduct of solving the problem."
/> />
<FeatureCard <FeatureCard
icon={<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><line x1="9" y1="3" x2="9" y2="21"/></svg>} icon={<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><line x1="9" y1="3" x2="9" y2="21"/></svg>}
title="Visual Flow Editor" title="Guided Troubleshooting Flows"
description="Build branching decision trees with a drag-and-drop canvas. Add steps, conditions, commands, and notes — no code required." description="Build step-by-step troubleshooting paths your team can follow. Great for standard procedures, onboarding new engineers, or ensuring consistency."
/> />
<FeatureCard <FeatureCard
icon={<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>} icon={<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>}
title="Auto-Documentation" title="Zero Empty Ticket Notes"
description="Every session generates timestamped, detailed notes — formatted for your PSA. Engineers never write another ticket note." description="Every troubleshooting session generates timestamped, detailed notes — formatted for your PSA. Your team will never close a ticket with empty notes again."
/> />
<FeatureCard <FeatureCard
icon={<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>} icon={<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>}
title="Team Knowledge Sharing" title="Team Knowledge That Grows"
description="Share flows across your team. When one engineer solves a new problem, the whole team benefits from that path — instantly." description="Every resolved session makes your team smarter. Solutions are saved and surfaced automatically when the next engineer hits a similar issue."
/> />
<FeatureCard <FeatureCard
icon={<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg>} icon={<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg>}
title="Session History & Analytics" title="Session History & Analytics"
description="Track which flows are used most, identify bottlenecks, and see how your team resolves issues over time." description="See every troubleshooting session your team has run. Track resolution times, identify common issues, and measure team performance."
/> />
<FeatureCard <FeatureCard
icon={<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg>} icon={<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg>}
@@ -449,8 +449,8 @@ export default function LandingPage() {
{/* CTA */} {/* CTA */}
<section className="landing-cta-section landing-reveal"> <section className="landing-cta-section landing-reveal">
<h2>Ready to stop writing ticket notes?</h2> <h2>Ready to never write ticket notes again?</h2>
<p>Join the beta and see what happens when documentation becomes automatic.</p> <p>Join the beta. Troubleshoot your next ticket with FlowPilot and see the documentation write itself.</p>
<form className="landing-cta-email-form" onSubmit={handleBetaSubmit}> <form className="landing-cta-email-form" onSubmit={handleBetaSubmit}>
<input <input
type="email" type="email"