170 lines
6.3 KiB
TypeScript
170 lines
6.3 KiB
TypeScript
// app/checklist/page.tsx
|
||
|
||
export default function GoToMarketChecklist() {
|
||
return (
|
||
<main className="max-w-3xl mx-auto p-8 space-y-16">
|
||
|
||
{/* Header */}
|
||
<section>
|
||
<h1 className="text-2xl font-semibold">
|
||
Go-to-Market Checklist (Post-MVP)
|
||
</h1>
|
||
<p className="mt-2 text-gray-600">
|
||
A step-by-step execution checklist to find the right customers,
|
||
sell with certainty, and avoid wasted effort.
|
||
</p>
|
||
</section>
|
||
|
||
{/* ICP */}
|
||
<section>
|
||
<h2 className="text-xl font-medium">1. Confirm the target customer (non-negotiable)</h2>
|
||
<ul className="mt-4 space-y-1 list-disc list-inside text-gray-700">
|
||
<li>UK-based business</li>
|
||
<li>VAT registered</li>
|
||
<li>Uses Stripe Checkout or Payment Links</li>
|
||
<li>Uses Xero (or QuickBooks)</li>
|
||
<li>Wants invoices to exist cleanly in the ledger</li>
|
||
<li>Billing is one-off, annual, or fixed recurring</li>
|
||
<li className="text-gray-500">No usage billing, no proration</li>
|
||
</ul>
|
||
<p className="mt-2 text-gray-600">
|
||
If any of these are false, do not sell to them.
|
||
</p>
|
||
</section>
|
||
|
||
{/* Problem Validation */}
|
||
<section>
|
||
<h2 className="text-xl font-medium">2. Validate pain before pitching</h2>
|
||
<ul className="mt-4 space-y-1 list-disc list-inside text-gray-700">
|
||
<li>Ask: “Do Stripe payouts and Xero invoices always match?”</li>
|
||
<li>Listen for: manual fixes, journals, spreadsheets, month-end stress</li>
|
||
<li>Confirm VAT reconciliation is a pain point</li>
|
||
<li>Confirm a human currently checks or fixes things</li>
|
||
</ul>
|
||
<p className="mt-2 text-gray-600">
|
||
No visible pain = no sale.
|
||
</p>
|
||
</section>
|
||
|
||
{/* Channels */}
|
||
<section>
|
||
<h2 className="text-xl font-medium">3. Choose acquisition channel (in order)</h2>
|
||
|
||
<div className="mt-4 space-y-6">
|
||
|
||
<div>
|
||
<h3 className="font-medium">A. Accountants & bookkeepers (primary)</h3>
|
||
<ul className="mt-2 space-y-1 list-disc list-inside text-gray-700">
|
||
<li>UK-based Xero partners</li>
|
||
<li>Bookkeepers handling Stripe clients</li>
|
||
<li>Fractional CFOs</li>
|
||
</ul>
|
||
<p className="mt-1 text-gray-600">
|
||
Pitch: “Stripe payments → accountant-approved Xero invoices. Automatically.”
|
||
</p>
|
||
</div>
|
||
|
||
<div>
|
||
<h3 className="font-medium">B. Reddit & communities (problem-aware)</h3>
|
||
<ul className="mt-2 space-y-1 list-disc list-inside text-gray-700">
|
||
<li>Search Stripe + Xero reconciliation threads</li>
|
||
<li>Explain why the problem exists</li>
|
||
<li>Describe the accounting-first solution</li>
|
||
<li>Let people DM you</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div>
|
||
<h3 className="font-medium">C. Targeted founder outbound</h3>
|
||
<ul className="mt-2 space-y-1 list-disc list-inside text-gray-700">
|
||
<li>UK agencies</li>
|
||
<li>B2B SaaS with annual or fixed billing</li>
|
||
<li>Founder still involved in finance</li>
|
||
</ul>
|
||
</div>
|
||
|
||
</div>
|
||
</section>
|
||
|
||
{/* Sales Execution */}
|
||
<section>
|
||
<h2 className="text-xl font-medium">4. Close with outcome, not features</h2>
|
||
<ul className="mt-4 space-y-1 list-disc list-inside text-gray-700">
|
||
<li>Do not demo dashboards</li>
|
||
<li>Do not explain internals</li>
|
||
<li>Promise: “Next Stripe payment appears as paid in Xero”</li>
|
||
<li>Charge £200/month immediately</li>
|
||
</ul>
|
||
<p className="mt-2 text-gray-600">
|
||
If they want a free trial, they are not the customer.
|
||
</p>
|
||
</section>
|
||
|
||
{/* Delivery */}
|
||
<section>
|
||
<h2 className="text-xl font-medium">5. Deliver proof immediately</h2>
|
||
<ul className="mt-4 space-y-1 list-disc list-inside text-gray-700">
|
||
<li>Connect Stripe</li>
|
||
<li>Connect Xero</li>
|
||
<li>Trigger a real payment</li>
|
||
<li>Show paid invoice in Xero</li>
|
||
<li>Send screenshot or reconciliation summary</li>
|
||
</ul>
|
||
<p className="mt-2 text-gray-600">
|
||
The product is the outcome.
|
||
</p>
|
||
</section>
|
||
|
||
{/* Objections */}
|
||
<section>
|
||
<h2 className="text-xl font-medium">6. Capture objections and edge cases</h2>
|
||
<ul className="mt-4 space-y-1 list-disc list-inside text-gray-700">
|
||
<li>Ask: “What would make this risky?”</li>
|
||
<li>Ask: “What would your accountant question?”</li>
|
||
<li>Log every concern verbatim</li>
|
||
<li>Turn repeated concerns into rules or exclusions</li>
|
||
</ul>
|
||
</section>
|
||
|
||
{/* Narrow */}
|
||
<section>
|
||
<h2 className="text-xl font-medium">7. Narrow the ICP aggressively</h2>
|
||
<ul className="mt-4 space-y-1 list-disc list-inside text-gray-700">
|
||
<li>Remove customers that add complexity</li>
|
||
<li>Publish exclusions clearly</li>
|
||
<li>Optimise for repeatability, not volume</li>
|
||
</ul>
|
||
</section>
|
||
|
||
{/* Scale */}
|
||
<section>
|
||
<h2 className="text-xl font-medium">8. Scale only what already works</h2>
|
||
<ul className="mt-4 space-y-1 list-disc list-inside text-gray-700">
|
||
<li>Automate manual steps you’ve repeated 10×</li>
|
||
<li>Build exception handling before new features</li>
|
||
<li>Add period close + human sign-off</li>
|
||
</ul>
|
||
</section>
|
||
|
||
{/* Scoreboard */}
|
||
<section>
|
||
<h2 className="text-xl font-medium">9. Weekly scoreboard</h2>
|
||
<ul className="mt-4 space-y-1 list-disc list-inside text-gray-700">
|
||
<li>New paid conversations</li>
|
||
<li>Time to first reconciled payment</li>
|
||
<li>Monthly churn</li>
|
||
<li>Unresolved exceptions</li>
|
||
</ul>
|
||
</section>
|
||
|
||
{/* Close */}
|
||
<section className="pt-8 border-t">
|
||
<p className="text-gray-500 text-sm">
|
||
If this business fails, it will not be because the software didn’t work.
|
||
It will be because the wrong customers were targeted or certainty wasn’t proven.
|
||
</p>
|
||
</section>
|
||
|
||
</main>
|
||
)
|
||
}
|