Skip to content

Latest commit

 

History

History
163 lines (116 loc) · 7.63 KB

File metadata and controls

163 lines (116 loc) · 7.63 KB

Worked example: finding the wedge

A walkthrough of the empty-column method on a fictional product, start to finish. The product and competitors here are invented; the reasoning is the part to take.

If you only read one thing in this repo, read this.


The product

Ledgerline — bookkeeping software for small nonprofits. Two people, eighteen months old, a few hundred users, no funding. The founders describe it as "QuickBooks, but it understands restricted funds."

They asked for help with marketing. Their instinct was to write comparison content against QuickBooks and run ads on "nonprofit accounting software."

Phase 0 — Ground truth

Reading the codebase rather than the homepage changed the picture immediately.

The marketing site described general bookkeeping: invoicing, expenses, reports. But the data models told a different story. Alongside the ordinary ledger tables sat entities the homepage never mentioned: RestrictedFund, GrantAllocation, DonorRestriction, FunctionalExpenseAllocation, AuditTrailEntry with immutable revision history, and — most interestingly — a whole AuditPacket module with document checklists, preparer sign-offs, and export bundles.

That last one had been built for a design partner and was barely mentioned in public.

The finding: the product was substantially more specialized than its own marketing admitted. The homepage sold a generic ledger; the code described an audit-readiness system. That gap between what a product does and what its site claims is the most common and most valuable thing Phase 0 turns up.

Phase 1 — The competitive map

Five competitors, researched from their live sites and pricing pages.

The instinct was to build columns like invoicing, reporting, bank sync. That's the trap: feature columns produce a checklist the biggest competitor always wins. Every one of those rows would be a ✓ for QuickBooks.

So instead the columns became the stages of the customer's actual year — the sequence a nonprofit finance person actually lives through:

                      Set up      Record       Track        Produce      Survive
                      the books   the year     restrictions statements   the audit

  Ledgerline             ✓           ✓            ✓✓           ✓            ✓
  QuickBooks            ✓✓          ✓✓          partial        ✓✓           ✗
  Xero                  ✓✓          ✓✓             ✗           ✓✓           ✗
  Aplos                  ✓           ✓             ✓            ✓           ✗
  Sage Intacct          ✓✓          ✓✓            ✓✓           ✓✓         partial
  Spreadsheets       improvised  improvised   improvised   improvised       ✗

One column is nearly empty for everyone: surviving the audit.

Why that gap existed

Every product in the category defines its job as producing correct financial statements. That's a coherent, defensible product boundary, and it's where accounting software has ended since accounting software existed.

But it isn't where the customer's problem ends. For a small nonprofit, the annual audit is the highest-stakes, most painful, most deadline-driven event of the year — and the software goes quiet exactly when it starts. What happens instead is six weeks of exporting to spreadsheets, hunting for receipts, and emailing zip files to the auditor.

The category converged on a boundary and nobody revisited it. That's the general pattern: the empty column is usually adjacent to the category, not inside it.

Testing the wedge

Four questions, from references/positioning.md:

Does the product actually do this? Yes — the AuditPacket module was real and working, if under-polished. This is the question that kills most exciting wedges, and it's why Phase 0 comes first.

Do customers feel the pain? Overwhelmingly. Nonprofit finance forums are full of audit-season threads. People had built elaborate personal checklists and were sharing them as Google Docs. Effort spent on a bad workaround is the strongest demand signal there is.

Would a competitor need a new product to answer it? Largely yes. Audit readiness isn't a report — it's document custody, immutable trails, preparer workflow, and auditor collaboration. QuickBooks can't ship that in a quarter.

Can you reach people at that moment? Yes, and better than expected: audit prep is seasonal and searched. "nonprofit audit preparation checklist" is a real, recurring, high-intent query owned by accounting-firm blog posts and association PDFs — not by any software vendor.

Four for four.

What changed

Positioning. From "QuickBooks, but it understands restricted funds" — a comparison to a giant, on the giant's turf — to:

Most nonprofit bookkeeping software ends at the financial statement. Ledgerline keeps going, through the audit.

Note the form: it states scope, not superiority. It's checkable, it isn't an attack, and it survives being quoted to a competitor's salesperson.

Category. They stopped claiming "nonprofit accounting software," where they were the worse QuickBooks, and claimed "audit-ready bookkeeping" instead — a category where the comparison set is spreadsheets and dread.

Audience order. Not the finance directors at large nonprofits, who buy on proof Ledgerline didn't have. Wave one became the part-time bookkeeper at a small nonprofit who personally suffers audit season and can just start using something.

Content. They dropped the QuickBooks comparison plan. The first pieces went at the audit-prep cluster: the checklist, what auditors actually ask for, how to prepare functional expense allocations, what to do when the auditor finds a problem. Genuinely useful to someone who never buys, aimed at a query with real seasonal volume that no vendor was defending.

The product roadmap moved too. The AuditPacket module went from a hidden side-feature to the thing the homepage leads with. That's a normal outcome — positioning research routinely tells you which half of your product is the actual business.

What this example is meant to show

The wedge came from research, not from a brainstorm. Nobody sat in a room asking "what makes us special." The matrix produced it.

Journey columns, not feature columns. This is the single most important mechanical detail. Feature columns would have produced a losing checklist.

The gap sat at the end of the journey. In other products it's at the beginning, or in a handoff between two stages. Don't assume where it will be — build the whole journey and look.

Reading the code beat reading the homepage. The wedge was in the schema before it was in the marketing.

The honest version was stronger than the flattering one. "We go further than the category does" outperformed "we're better than QuickBooks," because the first is true and checkable and the second invites a comparison they lose.


Try it on your own product

  1. Write out your customer's journey as stages — from before they had any solution to after they got the outcome they wanted. Include the stages that feel outside your software category. Those are usually where the gap is.
  2. Put every competitor in as a row, including the non-software default — the spreadsheet, the agency, the manual process.
  3. Fill it in honestly. Mark partial support as partial.
  4. Find the empty column.
  5. Run the four tests before you build a strategy on it.

If no column is empty, you don't have a wedge from scope — say so plainly and look to audience, price, or approach instead. A fabricated differentiator produces marketing that collapses the first time a knowledgeable buyer reads it.