{
  "meta": {"project": "Bookkeepers' month-end close", "method": "Outcome-Driven Innovation (Ulwick)", "interviewer": "", "created": "2026-11-11", "interview_count": 6, "schema_version": 3, "generated_with": "Made with Product Weaver · productweaver.com", "tool_version": "0.12.0", "date_range": "2026-10-14 to 2026-11-04"},
  "core_jobs": [
    {
      "id": "A",
      "statement": "Close a client's books each month",
      "job_executor": "Bookkeeper who closes small businesses' books every month",
      "status": "proposed",
      "interviews": ["01", "02", "03", "04", "05", "06"],
      "related_interviews": [],
      "coverage": 6
    }
  ],
  "interviews": [
    {
      "id": "01",
      "name": "Dana",
      "file": "transcripts/interview-01-dana.md",
      "date": "2026-10-14",
      "format": "Transcript",
      "tags": ["Solo", "Full-time", "25 clients", "QuickBooks"],
      "job_executor": {
        "statement": "Freelance bookkeeper who closes the books of 25 small businesses alone.",
        "evidence": [
          {"source": "transcript", "quote": "I'm a freelance bookkeeper. I've been on my own for about twelve years."},
          {"source": "transcript", "quote": "Right now I have twenty-five clients, all small businesses."},
          {"source": "transcript", "quote": "It's just me, no staff, no partner."}
        ]
      },
      "core_functional_job": {
        "statement": "Close each client's books every month",
        "job": "A",
        "evidence": [
          {"source": "transcript", "quote": "I close everybody's books every month."}
        ]
      },
      "related_jobs": [],
      "emotional_jobs": [
        {
          "statement": "Avoid feeling blamed for a client's missing receipts",
          "evidence": [
            {"source": "transcript", "quote": "It wasn't my fault, but it looks like my fault."}
          ]
        },
        {
          "statement": "Feel sure no client will call with a surprise",
          "evidence": [
            {"source": "transcript", "quote": "Like everything is in its place and nobody is going to call me with a surprise."}
          ]
        }
      ],
      "social_jobs": [
        {
          "statement": "Be seen as careful by the client's accountant",
          "evidence": [
            {"source": "transcript", "quote": "her accountant called me, not her."},
            {"source": "transcript", "quote": "My name is on those books."}
          ]
        }
      ],
      "sha256": "d101ee6de66dd8a11e72ec5bd0f21695da82b390e78285ee5516cb6c1d2d34af",
      "added": "2026-11-11"
    },
    {
      "id": "02",
      "name": "Marcus",
      "file": "transcripts/interview-02-marcus.md",
      "date": "2026-10-16",
      "format": "Transcript",
      "tags": ["Small firm", "Firm owner", "About 70 clients", "Xero", "Has an assistant"],
      "job_executor": {
        "statement": "Owner of a four-person bookkeeping firm who still closes the largest clients himself.",
        "evidence": [
          {"source": "transcript", "quote": "We're four people. Me, two bookkeepers and an assistant who works part-time. About seventy clients, mostly trades and shops, a few restaurants."},
          {"source": "transcript", "quote": "I still close about fifteen of the clients myself, the bigger ones, and I review everybody else's."}
        ]
      },
      "core_functional_job": {
        "statement": "Close each client's books every month across the firm",
        "job": "A",
        "evidence": [
          {"source": "transcript", "quote": "Our job is simple to say: every client's books closed every month, and the client gets their numbers by the fifteenth."}
        ]
      },
      "related_jobs": [
        {
          "statement": "Review the other bookkeepers' closes",
          "evidence": [
            {"source": "transcript", "quote": "Reconciliation is where I spend my review time."}
          ]
        }
      ],
      "emotional_jobs": [
        {
          "statement": "Feel sure nothing wrong goes out under the firm's name",
          "evidence": [
            {"source": "transcript", "quote": "I want to sleep knowing nothing wrong went out under the firm's name."}
          ]
        }
      ],
      "social_jobs": [
        {
          "statement": "Be seen as the advisor clients call before big decisions",
          "evidence": [
            {"source": "transcript", "quote": "As the people they call before they buy a van. Not the people who type in receipts."}
          ]
        }
      ],
      "sha256": "a56fbf18b355db205f3b2834892de139ce19fd39c6221fb072cbfe17c21f4e59",
      "added": "2026-11-11"
    },
    {
      "id": "03",
      "name": "Sofia",
      "file": "transcripts/interview-03-sofia.md",
      "date": "2026-10-21",
      "format": "Transcript",
      "tags": ["Small firm", "Two partners", "38 clients", "QuickBooks", "Restaurants"],
      "job_executor": {
        "statement": "Partner in a two-person bookkeeping firm who closes 21 small-business clients herself.",
        "evidence": [
          {"source": "transcript", "quote": "My business partner and I run a small bookkeeping firm, just the two of us."},
          {"source": "transcript", "quote": "We have thirty-eight clients between us, and I look after twenty-one of them from start to finish."}
        ]
      },
      "core_functional_job": {
        "statement": "Close each client's books every month",
        "job": "A",
        "evidence": [
          {"source": "transcript", "quote": "Every month we close their books and send them their numbers."}
        ]
      },
      "related_jobs": [],
      "emotional_jobs": [
        {
          "statement": "Avoid feeling like a debt collector with clients",
          "evidence": [
            {"source": "transcript", "quote": "Like a debt collector. I became a bookkeeper because I like numbers, not because I like nagging people."}
          ]
        }
      ],
      "social_jobs": [
        {
          "statement": "Be seen as careful by the client's accountant",
          "evidence": [
            {"source": "transcript", "quote": "If the accountant finds our mistakes, what are we for?"}
          ]
        }
      ],
      "sha256": "4f166fba172246fa76645695b48fbd1e3f16822364fc473055efe6cfa59acce3",
      "added": "2026-11-11"
    },
    {
      "id": "04",
      "name": "Ruth",
      "file": "transcripts/interview-04-ruth.md",
      "date": "2026-10-23",
      "format": "Transcript",
      "tags": ["Solo", "Part-time", "Semi-retired", "9 clients", "Works on paper", "QuickBooks"],
      "job_executor": {
        "statement": "Semi-retired part-time bookkeeper with nine local clients who works mostly on paper.",
        "evidence": [
          {"source": "transcript", "quote": "when I retired I kept a few clients on the side. Now I have nine."},
          {"source": "transcript", "quote": "I work Tuesday and Thursday mornings, at my kitchen table."}
        ]
      },
      "core_functional_job": {
        "statement": "Keep each local client's books every month",
        "job": "A",
        "evidence": [
          {"source": "transcript", "quote": "I keep their books every month so their accountant has something tidy at the end of the year."}
        ]
      },
      "related_jobs": [
        {
          "statement": "Get each client's year ready for the accountant",
          "evidence": [
            {"source": "transcript", "quote": "We sit at his kitchen table for an afternoon and go through his bank statement line by line"}
          ]
        }
      ],
      "emotional_jobs": [
        {
          "statement": "Avoid feeling she let a client down",
          "evidence": [
            {"source": "transcript", "quote": "I feel like I've let him down, even though I asked him every month."}
          ]
        },
        {
          "statement": "Avoid feeling left behind by newer ways of working",
          "evidence": [
            {"source": "transcript", "quote": "I know there are faster ways of doing it."},
            {"source": "transcript", "quote": "I feel a bit of a dinosaur sometimes."}
          ]
        }
      ],
      "social_jobs": [
        {
          "statement": "Be seen as the bookkeeper who knows each business",
          "evidence": [
            {"source": "transcript", "quote": "They trust me, and I'd hate to hand them to someone who didn't know them."}
          ]
        }
      ],
      "sha256": "034c748fc742436a4214217897df636259ad4390bde082bcf643513779c8dd32",
      "added": "2026-11-11"
    },
    {
      "id": "05",
      "name": "Kenji",
      "file": "transcripts/interview-05-kenji.md",
      "date": "2026-10-28",
      "format": "Transcript",
      "tags": ["Solo", "Full-time", "30 clients", "Online shops", "Xero", "Automation"],
      "job_executor": {
        "statement": "Freelance bookkeeper for 30 online shops and agencies who automates most of the coding.",
        "evidence": [
          {"source": "transcript", "quote": "I'm a one-person practice. Thirty clients, mostly online shops and small agencies, design studios, that sort of thing."},
          {"source": "transcript", "quote": "I've got about four hundred rules across all the clients."}
        ]
      },
      "core_functional_job": {
        "statement": "Close each client's books every month",
        "job": "A",
        "evidence": [
          {"source": "transcript", "quote": "That's my target every month: books closed by the seventh, reports out by the eighth."}
        ]
      },
      "related_jobs": [],
      "emotional_jobs": [
        {
          "statement": "Feel in control of every client's close",
          "evidence": [
            {"source": "transcript", "quote": "In control. Every client closed, nothing hanging. I hate the feeling of a loose end I can't see."}
          ]
        }
      ],
      "social_jobs": [
        {
          "statement": "Be seen as the person who explains the numbers",
          "evidence": [
            {"source": "transcript", "quote": "As the person who explains their numbers. Not just the person who files them."}
          ]
        }
      ],
      "sha256": "b1fa0df99f8f6273333b346734bad3ada4072bf1ff1a94f580f65ddf664a61b4",
      "added": "2026-11-11"
    },
    {
      "id": "06",
      "name": "Amara",
      "file": "transcripts/interview-06-amara.md",
      "date": "2026-11-04",
      "format": "Transcript",
      "tags": ["Small firm", "Employee", "Part-time", "20 clients", "Xero"],
      "job_executor": {
        "statement": "Part-time bookkeeper in a three-person firm who owns the monthly close of 20 clients.",
        "evidence": [
          {"source": "transcript", "quote": "I'm part-time, Monday to Wednesday, because of my kids. I have twenty clients that are mine."},
          {"source": "transcript", "quote": "The owner of the firm signs off on year-ends, but the monthly close is mine."}
        ]
      },
      "core_functional_job": {
        "statement": "Close each of her clients' books every month",
        "job": "A",
        "evidence": [
          {"source": "transcript", "quote": "I do everything for them, from the first document to the report at the end."}
        ]
      },
      "related_jobs": [
        {
          "statement": "Prepare monthly sales tax returns for clients",
          "evidence": [
            {"source": "transcript", "quote": "Eight of my clients file sales tax monthly, and I prepare those returns"}
          ]
        }
      ],
      "emotional_jobs": [
        {
          "statement": "Avoid feeling work pile up on her days off",
          "evidence": [
            {"source": "transcript", "quote": "I can feel the emails piling up. I check my phone at the playground. I don't want to, but I do."}
          ]
        }
      ],
      "social_jobs": [],
      "sha256": "2f5cf12a77c3dc986c5b8f24af3f501f95c43bd6770547acff6b139d06e64ee5",
      "added": "2026-11-11"
    }
  ],
  "job_map": {
    "steps": [
      {
        "id": "A.1",
        "job": "A",
        "n": 1,
        "stage": "define",
        "statement": "Decide what this month's close needs",
        "covers": "Accounts, loans, payroll, deadlines and what changed since last month",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "Around the twenty-fifth I go through my checklists. Every client has their own checklist.", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "On the first working day of the month I go through the board and decide the order.", "name": "Marcus"},
          {"interview": "05", "source": "transcript", "quote": "Bank accounts, card accounts, payment processor, payroll, sales tax. I just work down the list.", "name": "Kenji"},
          {"interview": "06", "source": "transcript", "quote": "Sales tax decides it.", "name": "Amara"}
        ],
        "interviews": ["01", "02", "05", "06"],
        "coverage": 4,
        "voices": 4
      },
      {
        "id": "A.2",
        "job": "A",
        "n": 2,
        "stage": "locate",
        "statement": "Collect the client's documents",
        "covers": "Requests, reminders and chasing for receipts, invoices and statements",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "On the first, every client gets the same email.", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "She has a list per client of what we need, she sends the request on the first, and from the third she starts phoning.", "name": "Marcus"},
          {"interview": "03", "source": "transcript", "quote": "Email, mostly. I copy what's in the cell into the email, so they know exactly what I need.", "name": "Sofia"},
          {"interview": "04", "source": "transcript", "quote": "With a phone call. On the first Tuesday I ring each of them.", "name": "Ruth"},
          {"interview": "05", "source": "transcript", "quote": "They just drop the files in.", "name": "Kenji"},
          {"interview": "06", "source": "transcript", "quote": "After that, chasing is down to me.", "name": "Amara"}
        ],
        "interviews": ["01", "02", "03", "04", "05", "06"],
        "coverage": 6,
        "voices": 6
      },
      {
        "id": "A.3",
        "job": "A",
        "n": 3,
        "stage": "prepare",
        "statement": "Sort the documents by account",
        "covers": "Filing, naming and telling business from personal",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "I downloaded them one by one, renamed them and dragged them into her folder.", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "One of the bookkeepers spent a day sorting it.", "name": "Marcus"},
          {"interview": "03", "source": "transcript", "quote": "I sort them. Everything goes into the client's folder for the month", "name": "Sofia"},
          {"interview": "04", "source": "transcript", "quote": "Then I put each pile in date order. I write the account on each receipt in pencil.", "name": "Ruth"},
          {"interview": "06", "source": "transcript", "quote": "So for every receipt I'm asking: is this the business?", "name": "Amara"}
        ],
        "interviews": ["01", "02", "03", "04", "06"],
        "coverage": 5,
        "voices": 5
      },
      {
        "id": "A.4",
        "job": "A",
        "n": 4,
        "stage": "confirm",
        "statement": "Check that the documents are complete",
        "covers": "Every bank line has a document or an answer from the client",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "I check them against the checklist. Do I have every statement, every card, every loan.", "name": "Dana"},
          {"interview": "03", "source": "transcript", "quote": "Then I go through the bank statement line by line, and every line that has no receipt gets a question in my spreadsheet. That's how I know if I'm complete.", "name": "Sofia"},
          {"interview": "04", "source": "transcript", "quote": "anything in the bank I can't explain goes on it.", "name": "Ruth"},
          {"interview": "05", "source": "transcript", "quote": "The bank side is always complete, because it comes in from the feed. The documents are what lag.", "name": "Kenji"},
          {"interview": "06", "source": "transcript", "quote": "When the questions list is empty and every bank line has something behind it.", "name": "Amara"}
        ],
        "interviews": ["01", "03", "04", "05", "06"],
        "coverage": 5,
        "voices": 5
      },
      {
        "id": "A.5",
        "job": "A",
        "n": 5,
        "stage": "execute",
        "statement": "Record the transactions",
        "covers": "Coding, bank rules and splitting mixed payments",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "Most of it the rules handle. The café buys milk from the same dairy every week, that codes itself. The odd stuff I do by hand.", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "We record a few hundred transactions a month for a big client, and the bookkeeper only touches the ones the rules don't know.", "name": "Marcus"},
          {"interview": "03", "source": "transcript", "quote": "I do most of the restaurants with bank rules, but restaurant suppliers are messy.", "name": "Sofia"},
          {"interview": "04", "source": "transcript", "quote": "Then I put them into the computer.", "name": "Ruth"},
          {"interview": "05", "source": "transcript", "quote": "For the online shops, the payouts from the payment processor are the hard part", "name": "Kenji"},
          {"interview": "06", "source": "transcript", "quote": "Then I record and reconcile.", "name": "Amara"}
        ],
        "interviews": ["01", "02", "03", "04", "05", "06"],
        "coverage": 6,
        "voices": 6
      },
      {
        "id": "A.6",
        "job": "A",
        "n": 6,
        "stage": "monitor",
        "statement": "Reconcile the books with the bank",
        "covers": "Every bank and card account against its statement",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "Then I reconcile every account against its statement. Usually it's fine.", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "Reconciliation is where I spend my review time.", "name": "Marcus"},
          {"interview": "03", "source": "transcript", "quote": "I reconcile, she looks at it, and the other way round.", "name": "Sofia"},
          {"interview": "04", "source": "transcript", "quote": "When I'm at the bottom and every line is ticked, I know it's right.", "name": "Ruth"},
          {"interview": "05", "source": "transcript", "quote": "I only caught it because the closing balance didn't match the statement.", "name": "Kenji"},
          {"interview": "06", "source": "transcript", "quote": "For my clients reconciling is mostly fine, because the questions list has done the hard work already.", "name": "Amara"}
        ],
        "interviews": ["01", "02", "03", "04", "05", "06"],
        "coverage": 6,
        "voices": 6
      },
      {
        "id": "A.7",
        "job": "A",
        "n": 7,
        "stage": "modify",
        "statement": "Correct the entries that do not match",
        "covers": "Finding the cause of a difference and fixing it",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "Emailed her, waited two days, got the statement, added the card to her checklist, and went back and fixed August as well.", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "It turned out to be a supplier refund that was recorded twice.", "name": "Marcus"},
          {"interview": "03", "source": "transcript", "quote": "Usually it's a transaction in the wrong month.", "name": "Sofia"},
          {"interview": "04", "source": "transcript", "quote": "Round number, so I rang him, and it was a cash deposit from a customer who paid for a service.", "name": "Ruth"},
          {"interview": "05", "source": "transcript", "quote": "That catches nearly everything.", "name": "Kenji"},
          {"interview": "06", "source": "transcript", "quote": "Put them in a suspense account.", "name": "Amara"},
          {"interview": "06", "source": "transcript", "quote": "A transfer between two of the client's accounts that I recorded as an expense in one and forgot in the other.", "name": "Amara"}
        ],
        "interviews": ["01", "02", "03", "04", "05", "06"],
        "coverage": 6,
        "voices": 6
      },
      {
        "id": "A.8",
        "job": "A",
        "n": 8,
        "stage": "conclude",
        "statement": "Report the month to the client",
        "covers": "Reports, summaries and the client's questions about them",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "Each client gets a profit and loss and a balance sheet, with a short email on top.", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "Each client gets their reports and, for the bigger ones, a call with me.", "name": "Marcus"},
          {"interview": "03", "source": "transcript", "quote": "My partner does most of the client meetings, so I send the reports and she handles the questions.", "name": "Sofia"},
          {"interview": "04", "source": "transcript", "quote": "I don't send fancy reports.", "name": "Ruth"},
          {"interview": "05", "source": "transcript", "quote": "I record a three-minute video for each client.", "name": "Kenji"},
          {"interview": "06", "source": "transcript", "quote": "I send a short report and a summary, and then the questions come.", "name": "Amara"}
        ],
        "interviews": ["01", "02", "03", "04", "05", "06"],
        "coverage": 6,
        "voices": 6
      }
    ],
    "stages": [
      {"key": "define", "name": "Define"},
      {"key": "locate", "name": "Locate"},
      {"key": "prepare", "name": "Prepare"},
      {"key": "confirm", "name": "Confirm"},
      {"key": "execute", "name": "Execute"},
      {"key": "monitor", "name": "Monitor"},
      {"key": "modify", "name": "Modify"},
      {"key": "conclude", "name": "Conclude"}
    ]
  },
  "desired_outcomes": {
    "outcomes": [
      {
        "id": "A.1.1",
        "step": "A.1",
        "statement": "Minimize the time it takes to know what a client's close needs this month",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "Now it takes me maybe two minutes per client to know what the month needs.", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "An hour, maybe. It used to take a whole morning when it was in my head.", "name": "Marcus"},
          {"interview": "05", "source": "transcript", "quote": "The plan is mostly the same every month, so I automated the boring part.", "name": "Kenji"}
        ],
        "interviews": ["01", "02", "05"],
        "interview_count": 3,
        "quote_count": 3
      },
      {
        "id": "A.1.2",
        "step": "A.1",
        "statement": "Minimize the likelihood of forgetting a regular item in a client's close",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "Years ago I closed a month for one of the builders and forgot his truck loan.", "name": "Dana"},
          {"interview": "01", "source": "transcript", "quote": "The balance sheet was wrong for three months before I noticed.", "name": "Dana"}
        ],
        "interviews": ["01"],
        "interview_count": 1,
        "quote_count": 2
      },
      {
        "id": "A.1.3",
        "step": "A.1",
        "statement": "Minimize the likelihood of missing a change the client did not mention",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "the owner had opened a new credit card in August and never told me", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "The hard part isn't the order, it's knowing what's different this month.", "name": "Marcus"},
          {"interview": "02", "source": "transcript", "quote": "If nobody tells us, we find out when the reconciliation doesn't work.", "name": "Marcus"},
          {"interview": "05", "source": "transcript", "quote": "A client starts selling on a new marketplace, and suddenly there's a new payout account nobody told me about.", "name": "Kenji"},
          {"interview": "05", "source": "transcript", "quote": "By then I'd recorded six weeks of payouts as the wrong thing.", "name": "Kenji"}
        ],
        "interviews": ["01", "02", "05"],
        "interview_count": 3,
        "quote_count": 5
      },
      {
        "id": "A.1.4",
        "step": "A.1",
        "statement": "Minimize the likelihood of a close missing a filing deadline",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "02", "source": "transcript", "quote": "Anyone with payroll or a sales tax return due goes first.", "name": "Marcus"},
          {"interview": "06", "source": "transcript", "quote": "Eight of my clients file sales tax monthly, and I prepare those returns, so they go first, every month, no matter what.", "name": "Amara"}
        ],
        "interviews": ["02", "06"],
        "interview_count": 2,
        "quote_count": 2
      },
      {
        "id": "A.2.1",
        "step": "A.2",
        "statement": "Minimize the time it takes to get every receipt from a client",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "03", "source": "transcript", "quote": "Honestly? I spend the first week of every month chasing clients for receipts.", "name": "Sofia"},
          {"interview": "01", "source": "transcript", "quote": "Easily a third of my month is chasing people for receipts that are sitting in their car.", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "There are always three or four clients who send the last receipts on the twelfth, and then the bookkeeper has to redo half the month.", "name": "Marcus"},
          {"interview": "03", "source": "transcript", "quote": "If every receipt arrived on its own, I could close twenty-one clients in the time I close fifteen now.", "name": "Sofia"},
          {"interview": "04", "source": "transcript", "quote": "He keeps his receipts in the van, in the door pocket, and in his jacket.", "name": "Ruth"},
          {"interview": "05", "source": "transcript", "quote": "Some of them drop in a zip file with three months of receipts in it in November.", "name": "Kenji"}
        ],
        "interviews": ["01", "02", "03", "04", "05"],
        "interview_count": 5,
        "quote_count": 6
      },
      {
        "id": "A.2.2",
        "step": "A.2",
        "statement": "Minimize the number of reminders it takes to get a client's documents",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "I send a second email on the fifth. A third one on the eighth, and that one is less polite.", "name": "Dana"},
          {"interview": "03", "source": "transcript", "quote": "By then I'd already sent him four emails.", "name": "Sofia"},
          {"interview": "03", "source": "transcript", "quote": "The specific ones get answered. The general ones don't.", "name": "Sofia"},
          {"interview": "02", "source": "transcript", "quote": "It's the last three or four clients every month who hold everything up. They're the same clients every month, too.", "name": "Marcus"}
        ],
        "interviews": ["01", "02", "03"],
        "interview_count": 3,
        "quote_count": 4
      },
      {
        "id": "A.2.3",
        "step": "A.2",
        "statement": "Minimize the time it takes to know which documents a client still owes",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "03", "source": "transcript", "quote": "In each cell I write what's still missing.", "name": "Sofia"},
          {"interview": "01", "source": "transcript", "quote": "If something's missing I can see it straight away because the checklist says it should be there.", "name": "Dana"}
        ],
        "interviews": ["01", "03"],
        "interview_count": 2,
        "quote_count": 2
      },
      {
        "id": "A.2.4",
        "step": "A.2",
        "statement": "Minimize the number of documents still missing at tax time",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "Eighty-some transactions with nothing behind them, and her accountant called me, not her.", "name": "Dana"},
          {"interview": "04", "source": "transcript", "quote": "By January the plumber's unknown sheet has sixty or seventy items, and then it's a scramble before his accountant's deadline.", "name": "Ruth"},
          {"interview": "05", "source": "transcript", "quote": "The problem shows up at year-end, when the accountant wants a receipt for everything over a certain amount and I have twenty-something gaps for one client.", "name": "Kenji"}
        ],
        "interviews": ["01", "04", "05"],
        "interview_count": 3,
        "quote_count": 3
      },
      {
        "id": "A.2.5",
        "step": "A.2",
        "statement": "Minimize the number of places you must check for a client's documents",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "They do answer, but then the receipts arrive in my texts and I lose them in there.", "name": "Dana"},
          {"interview": "01", "source": "transcript", "quote": "The owner sent me forty photos of receipts on a Sunday night, each one in its own email.", "name": "Dana"},
          {"interview": "03", "source": "transcript", "quote": "So now we had receipts in the portal and in email, and we had to check both.", "name": "Sofia"}
        ],
        "interviews": ["01", "03"],
        "interview_count": 2,
        "quote_count": 3
      },
      {
        "id": "A.3.1",
        "step": "A.3",
        "statement": "Minimize the time it takes to file the documents a client sends",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "That alone was an hour.", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "One of the bookkeepers spent a day sorting it.", "name": "Marcus"}
        ],
        "interviews": ["01", "02"],
        "interview_count": 2,
        "quote_count": 2
      },
      {
        "id": "A.3.2",
        "step": "A.3",
        "statement": "Minimize the likelihood of filing the same receipt twice",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "And three of them were the same receipt taken twice.", "name": "Dana"}
        ],
        "interviews": ["01"],
        "interview_count": 1,
        "quote_count": 1
      },
      {
        "id": "A.3.3",
        "step": "A.3",
        "statement": "Minimize the likelihood of treating a personal expense as a business one",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "02", "source": "transcript", "quote": "You have to decide for every single receipt whether it's the business or not, and you're guessing.", "name": "Marcus"},
          {"interview": "06", "source": "transcript", "quote": "Last year a client's holiday went in as travel expenses.", "name": "Amara"},
          {"interview": "06", "source": "transcript", "quote": "The accountant caught it, thank goodness, but it was embarrassing.", "name": "Amara"}
        ],
        "interviews": ["02", "06"],
        "interview_count": 2,
        "quote_count": 3
      },
      {
        "id": "A.3.4",
        "step": "A.3",
        "statement": "Minimize the number of receipts too faded to read",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "04", "source": "transcript", "quote": "Some of them are so faded you can't read them at all.", "name": "Ruth"},
          {"interview": "04", "source": "transcript", "quote": "I hold them up to the window and guess, mostly.", "name": "Ruth"}
        ],
        "interviews": ["04"],
        "interview_count": 1,
        "quote_count": 2
      },
      {
        "id": "A.4.1",
        "step": "A.4",
        "statement": "Minimize the likelihood of closing the month with a document missing",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "03", "source": "transcript", "quote": "In June we closed one of the restaurants and a big equipment invoice wasn't there. Nobody noticed.", "name": "Sofia"},
          {"interview": "03", "source": "transcript", "quote": "I don't close a month until every line has either a document or an answer from the client.", "name": "Sofia"},
          {"interview": "01", "source": "transcript", "quote": "Some months I close without them.", "name": "Dana"},
          {"interview": "05", "source": "transcript", "quote": "I close without them if I have to, and the receipts get attached later.", "name": "Kenji"}
        ],
        "interviews": ["01", "03", "05"],
        "interview_count": 3,
        "quote_count": 4
      },
      {
        "id": "A.4.2",
        "step": "A.4",
        "statement": "Minimize the time it takes to get a client's answer on an unknown transaction",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "06", "source": "transcript", "quote": "Eight days for thirty answers.", "name": "Amara"},
          {"interview": "06", "source": "transcript", "quote": "And if I need an answer from them and they reply on Thursday, I've lost four days.", "name": "Amara"},
          {"interview": "06", "source": "transcript", "quote": "Answers. Getting answers from clients faster.", "name": "Amara"},
          {"interview": "04", "source": "transcript", "quote": "Or I match the amount to the bank and ask the client what it was. It's a nuisance.", "name": "Ruth"}
        ],
        "interviews": ["04", "06"],
        "interview_count": 2,
        "quote_count": 4
      },
      {
        "id": "A.4.3",
        "step": "A.4",
        "statement": "Minimize the number of transactions a client cannot explain",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "06", "source": "transcript", "quote": "And five of them still said \"not sure\".", "name": "Amara"},
          {"interview": "04", "source": "transcript", "quote": "and half of it he can't remember.", "name": "Ruth"}
        ],
        "interviews": ["04", "06"],
        "interview_count": 2,
        "quote_count": 2
      },
      {
        "id": "A.5.1",
        "step": "A.5",
        "statement": "Minimize the time it takes to record a month of transactions",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "04", "source": "transcript", "quote": "I'm slow at it, I'll be honest. I type everything in by hand.", "name": "Ruth"},
          {"interview": "05", "source": "transcript", "quote": "Recording a whole month for a normal client takes me under an hour now.", "name": "Kenji"},
          {"interview": "02", "source": "transcript", "quote": "The rules do most of the coding now.", "name": "Marcus"}
        ],
        "interviews": ["02", "04", "05"],
        "interview_count": 3,
        "quote_count": 3
      },
      {
        "id": "A.5.2",
        "step": "A.5",
        "statement": "Minimize the likelihood of a bank rule coding a transaction to the wrong account",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "I had a rule that sent anything from the hardware store to materials, and one of the builders bought a fridge for his kitchen at home there.", "name": "Dana"},
          {"interview": "01", "source": "transcript", "quote": "It sat in materials for two months.", "name": "Dana"}
        ],
        "interviews": ["01"],
        "interview_count": 1,
        "quote_count": 2
      },
      {
        "id": "A.5.3",
        "step": "A.5",
        "statement": "Minimize the time it takes to split a mixed payment across accounts",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "03", "source": "transcript", "quote": "The same supplier sells them food and cleaning products on one invoice, so I split every invoice by hand.", "name": "Sofia"},
          {"interview": "03", "source": "transcript", "quote": "It's slow, but if I don't, their food cost is wrong", "name": "Sofia"},
          {"interview": "05", "source": "transcript", "quote": "one payout is a hundred sales minus fees minus refunds.", "name": "Kenji"}
        ],
        "interviews": ["03", "05"],
        "interview_count": 2,
        "quote_count": 3
      },
      {
        "id": "A.5.4",
        "step": "A.5",
        "statement": "Minimize the likelihood of recording a transaction in the wrong month",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "03", "source": "transcript", "quote": "A card payment on the thirtieth that the bank posts on the second. That one catches me at least once a month.", "name": "Sofia"}
        ],
        "interviews": ["03"],
        "interview_count": 1,
        "quote_count": 1
      },
      {
        "id": "A.6.1",
        "step": "A.6",
        "statement": "Minimize the time it takes to reconcile an account with its statement",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "04", "source": "transcript", "quote": "It takes a while, but I've never had a month that didn't balance in the end.", "name": "Ruth"},
          {"interview": "05", "source": "transcript", "quote": "Most of the time the feed and the statement agree, and reconciling is a click.", "name": "Kenji"}
        ],
        "interviews": ["04", "05"],
        "interview_count": 2,
        "quote_count": 2
      },
      {
        "id": "A.6.2",
        "step": "A.6",
        "statement": "Minimize the likelihood of a bank feed error going unnoticed",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "05", "source": "transcript", "quote": "In September one bank's feed dropped two days of transactions for a client, and in another account it brought in the same week twice.", "name": "Kenji"},
          {"interview": "05", "source": "transcript", "quote": "The missing days aren't, because nothing looks wrong.", "name": "Kenji"},
          {"interview": "04", "source": "transcript", "quote": "My granddaughter says the bank can feed it in automatically, but I don't trust it. I like to see every line.", "name": "Ruth"}
        ],
        "interviews": ["04", "05"],
        "interview_count": 2,
        "quote_count": 3
      },
      {
        "id": "A.6.3",
        "step": "A.6",
        "statement": "Minimize the likelihood of forcing a reconciliation to balance",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "02", "source": "transcript", "quote": "The worst thing a junior can do is make it balance.", "name": "Marcus"},
          {"interview": "02", "source": "transcript", "quote": "and the books balance, but the real problem is still in there.", "name": "Marcus"}
        ],
        "interviews": ["02"],
        "interview_count": 1,
        "quote_count": 2
      },
      {
        "id": "A.7.1",
        "step": "A.7",
        "statement": "Minimize the time it takes to find the cause of a mismatch",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "In September the café was off by three hundred and twelve dollars and I could not find it. I spent most of an afternoon on it.", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "Finding the cause is always the slow part. Fixing it is two minutes.", "name": "Marcus"},
          {"interview": "03", "source": "transcript", "quote": "The worst part is not knowing if it's going to be a ten-minute one or a morning one until you've found it.", "name": "Sofia"},
          {"interview": "04", "source": "transcript", "quote": "Ten minutes. If it had been an odd number I'd have been there all morning.", "name": "Ruth"},
          {"interview": "05", "source": "transcript", "quote": "When they don't, I can usually find a mismatch in five minutes now.", "name": "Kenji"},
          {"interview": "05", "source": "transcript", "quote": "The rest I built up after losing whole evenings to differences of eleven dollars.", "name": "Kenji"},
          {"interview": "06", "source": "transcript", "quote": "It can take a couple of hours.", "name": "Amara"}
        ],
        "interviews": ["01", "02", "03", "04", "05", "06"],
        "interview_count": 6,
        "quote_count": 7
      },
      {
        "id": "A.7.2",
        "step": "A.7",
        "statement": "Minimize the likelihood of reopening a month the client has already seen",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "Fixing August meant reopening a month I had already sent her, which I hate.", "name": "Dana"},
          {"interview": "06", "source": "transcript", "quote": "The worst is when it goes back to a month I already closed, because then the client's report for that month was wrong too.", "name": "Amara"}
        ],
        "interviews": ["01", "06"],
        "interview_count": 2,
        "quote_count": 2
      },
      {
        "id": "A.7.3",
        "step": "A.7",
        "statement": "Minimize the likelihood of an unfixed error coming back at year-end",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "02", "source": "transcript", "quote": "If we hadn't found it, it would have come back at year-end.", "name": "Marcus"},
          {"interview": "06", "source": "transcript", "quote": "Which I hate, because suspense is just a place where problems wait for year-end.", "name": "Amara"}
        ],
        "interviews": ["02", "06"],
        "interview_count": 2,
        "quote_count": 2
      },
      {
        "id": "A.8.1",
        "step": "A.8",
        "statement": "Minimize the time it takes to explain a change in the numbers to a client",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "It took me twenty minutes to explain that it's not a loss, it's just timing.", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "Mostly I explain why a number moved.", "name": "Marcus"},
          {"interview": "03", "source": "transcript", "quote": "We write a few lines with the reports now, so they have the answer before they call.", "name": "Sofia"},
          {"interview": "04", "source": "transcript", "quote": "If it's lower than last month they ask me why, and I tell them. I know their businesses, so I usually know.", "name": "Ruth"},
          {"interview": "05", "source": "transcript", "quote": "Explaining it once, out loud, with the numbers on screen, saves me a couple of hours a month per client.", "name": "Kenji"},
          {"interview": "06", "source": "transcript", "quote": "For one client, half an hour sometimes.", "name": "Amara"}
        ],
        "interviews": ["01", "02", "03", "04", "05", "06"],
        "interview_count": 6,
        "quote_count": 6
      },
      {
        "id": "A.8.2",
        "step": "A.8",
        "statement": "Minimize the time it takes to find what drove a change in the numbers",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "02", "source": "transcript", "quote": "The numbers take me ten minutes. The why takes an hour, because I have to go dig.", "name": "Marcus"},
          {"interview": "03", "source": "transcript", "quote": "And for the restaurants the answer is usually one supplier, one month.", "name": "Sofia"},
          {"interview": "05", "source": "transcript", "quote": "Working out what to say is the long part.", "name": "Kenji"},
          {"interview": "06", "source": "transcript", "quote": "It's always the same few reasons, but I have to find which ones it is for that client, that month", "name": "Amara"}
        ],
        "interviews": ["02", "03", "05", "06"],
        "interview_count": 4,
        "quote_count": 4
      },
      {
        "id": "A.8.3",
        "step": "A.8",
        "statement": "Minimize the likelihood of a client skipping the monthly report",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "Most of them don't open the reports. They read my email.", "name": "Dana"},
          {"interview": "02", "source": "transcript", "quote": "I checked once how many clients opened them. About a third.", "name": "Marcus"},
          {"interview": "04", "source": "transcript", "quote": "Most of them look at the bottom line and nothing else.", "name": "Ruth"},
          {"interview": "05", "source": "transcript", "quote": "They actually watch them. They reply to them.", "name": "Kenji"}
        ],
        "interviews": ["01", "02", "04", "05"],
        "interview_count": 4,
        "quote_count": 4
      },
      {
        "id": "A.8.4",
        "step": "A.8",
        "statement": "Minimize the number of times a client asks the same question",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "01", "source": "transcript", "quote": "I've explained that same thing to her three times this year.", "name": "Dana"},
          {"interview": "03", "source": "transcript", "quote": "Clients ask the same thing: why is the number different from last month?", "name": "Sofia"},
          {"interview": "05", "source": "transcript", "quote": "Then I'd get the same question in six different emails over the next week.", "name": "Kenji"},
          {"interview": "06", "source": "transcript", "quote": "I've written that explanation so many times.", "name": "Amara"}
        ],
        "interviews": ["01", "03", "05", "06"],
        "interview_count": 4,
        "quote_count": 4
      },
      {
        "id": "A.8.5",
        "step": "A.8",
        "statement": "Minimize the likelihood of having no answer when a client asks why",
        "added": "2026-11-11",
        "evidence": [
          {"interview": "02", "source": "transcript", "quote": "If I say \"I'll get back to you on that\", I've lost a bit of them.", "name": "Marcus"},
          {"interview": "02", "source": "transcript", "quote": "I'd love the why to be ready before the call.", "name": "Marcus"}
        ],
        "interviews": ["02"],
        "interview_count": 1,
        "quote_count": 2
      }
    ]
  },
  "current_solutions": {
    "groups": {
      "plan-close": {
        "name": "Ways to plan the close",
        "why": "Each one tells the bookkeeper what every client's close needs and in what order, and each was set up by the bookkeeper.",
        "added": "2026-11-11",
        "solutions": ["S1", "S2", "S3", "S4"]
      },
      "get-documents": {
        "name": "Ways to get documents in",
        "why": "Each one is a way for documents to reach the bookkeeper, and the two that asked clients to log in or learn an app were dropped.",
        "added": "2026-11-11",
        "solutions": ["S10", "S11", "S12", "S13"]
      },
      "chase-documents": {
        "name": "Ways to chase missing documents",
        "why": "Each one pushes a client to send what is missing, and a person or a specific request gets answered more than a general email.",
        "added": "2026-11-11",
        "solutions": ["S5", "S6", "S7", "S8", "S9"]
      },
      "track-missing": {
        "name": "Ways to track what is missing",
        "why": "Each one keeps a running list of what a client still owes or has not explained, and all of them are kept by hand.",
        "added": "2026-11-11",
        "solutions": ["S14", "S15", "S16"]
      },
      "sort-documents": {
        "name": "Ways to sort documents by account",
        "why": "Each one decides which account a document belongs to, and every one of them is done by hand.",
        "added": "2026-11-11",
        "solutions": ["S17", "S18", "S19"]
      },
      "record-books": {
        "name": "Ways to record the books",
        "why": "Each one is the accounting software where transactions get coded, and bank rules do most of the coding in both.",
        "added": "2026-11-11",
        "solutions": ["S20", "S21"]
      },
      "split-payments": {
        "name": "Ways to split mixed payments",
        "why": "Each one breaks one payment into the accounts it really covers, and both were built by the bookkeeper.",
        "added": "2026-11-11",
        "solutions": ["S22", "S23"]
      },
      "second-look": {
        "name": "Ways to catch mistakes before sending",
        "why": "Each one is a second look at entries before the client sees them, because people stop seeing their own mistakes.",
        "added": "2026-11-11",
        "solutions": ["S24", "S25"]
      },
      "check-bank": {
        "name": "Ways to match books to bank",
        "why": "Each one compares the books with the bank line by line, and the one heard so far is done on paper.",
        "added": "2026-11-11",
        "solutions": ["S26"]
      },
      "find-mismatch": {
        "name": "Ways to find a mismatch",
        "why": "Each one narrows down where a difference comes from, and the fastest are rules of thumb built after losing evenings to it.",
        "added": "2026-11-11",
        "solutions": ["S27", "S28", "S29", "S30", "S31"]
      },
      "explain-month": {
        "name": "Ways to explain the month",
        "why": "Each one tells the client what the numbers mean, and the ones with a voice or a short note get read while files alone do not.",
        "added": "2026-11-11",
        "solutions": ["S32", "S33", "S34", "S35", "S36", "S37"]
      }
    },
    "solutions": [
      {
        "id": "S1",
        "name": "Per-client close checklist",
        "kind": "everyday_tool",
        "group": "plan-close",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.1",
            "status": "current",
            "evidence": [
              {"interview": "01", "source": "transcript", "quote": "Every client has their own checklist. It's one document per client and, honestly, it's the thing I'm proudest of.", "name": "Dana"}
            ]
          },
          {
            "step": "A.4",
            "status": "current",
            "evidence": [
              {"interview": "01", "source": "transcript", "quote": "If something's missing I can see it straight away because the checklist says it should be there.", "name": "Dana"}
            ]
          }
        ],
        "interviews": ["01"],
        "stopped_by": [],
        "quote_count": 2
      },
      {
        "id": "S2",
        "name": "Practice management board",
        "kind": "product",
        "group": "plan-close",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.1",
            "status": "current",
            "evidence": [
              {"interview": "02", "source": "transcript", "quote": "We use a practice management tool, and every client is a card.", "name": "Marcus"}
            ]
          }
        ],
        "interviews": ["02"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S3",
        "name": "Close template in a task manager",
        "kind": "product",
        "group": "plan-close",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.1",
            "status": "current",
            "evidence": [
              {"interview": "05", "source": "transcript", "quote": "Every client has a template close in my task manager, and on the first it creates the tasks for every client.", "name": "Kenji"}
            ]
          }
        ],
        "interviews": ["05"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S4",
        "name": "Sticky note with the order",
        "kind": "everyday_tool",
        "group": "plan-close",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.1",
            "status": "current",
            "evidence": [
              {"interview": "06", "source": "transcript", "quote": "I write the order on a sticky note on my screen on the first Monday. That's my plan.", "name": "Amara"}
            ]
          }
        ],
        "interviews": ["06"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S5",
        "name": "Email reminders",
        "kind": "everyday_tool",
        "group": "chase-documents",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.2",
            "status": "current",
            "evidence": [
              {"interview": "01", "source": "transcript", "quote": "I have a template. I change the month and send twenty-five of them.", "name": "Dana"},
              {"interview": "03", "source": "transcript", "quote": "I don't say \"please send your receipts\", I say \"I need the receipt for the 214 dollars at the hardware store on the 9th\".", "name": "Sofia"},
              {"interview": "05", "source": "transcript", "quote": "My reminders go out automatically on the first, the fourth and the eighth.", "name": "Kenji"},
              {"interview": "06", "source": "transcript", "quote": "The firm sends the request emails for everybody on the first.", "name": "Amara"}
            ]
          }
        ],
        "interviews": ["01", "03", "05", "06"],
        "stopped_by": [],
        "quote_count": 4
      },
      {
        "id": "S6",
        "name": "Assistant who chases documents",
        "kind": "people",
        "group": "chase-documents",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.2",
            "status": "current",
            "evidence": [
              {"interview": "02", "source": "transcript", "quote": "That's our assistant's whole job the first week.", "name": "Marcus"},
              {"interview": "02", "source": "transcript", "quote": "Hiring her was the best money I've spent. The bookkeepers start closing on day three instead of day eight.", "name": "Marcus"}
            ]
          }
        ],
        "interviews": ["02"],
        "stopped_by": [],
        "quote_count": 2
      },
      {
        "id": "S7",
        "name": "Phone calls to clients",
        "kind": "everyday_tool",
        "group": "chase-documents",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.2",
            "status": "current",
            "evidence": [
              {"interview": "02", "source": "transcript", "quote": "Phoning works better than email. People ignore an email, they don't ignore a person.", "name": "Marcus"},
              {"interview": "04", "source": "transcript", "quote": "I'd rather ring than write.", "name": "Ruth"}
            ]
          },
          {
            "step": "A.4",
            "status": "stopped",
            "evidence": [
              {"interview": "06", "source": "transcript", "quote": "On the phone they say \"let me check and call you back\", and then they never call back.", "name": "Amara"},
              {"interview": "06", "source": "transcript", "quote": "I went back to the list after a couple of months.", "name": "Amara"}
            ]
          },
          {
            "step": "A.7",
            "status": "current",
            "evidence": [
              {"interview": "04", "source": "transcript", "quote": "Round number, so I rang him, and it was a cash deposit from a customer who paid for a service.", "name": "Ruth"}
            ]
          }
        ],
        "interviews": ["02", "04"],
        "stopped_by": ["06"],
        "quote_count": 5
      },
      {
        "id": "S8",
        "name": "Text messages to clients",
        "kind": "everyday_tool",
        "group": "chase-documents",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.2",
            "status": "stopped",
            "evidence": [
              {"interview": "01", "source": "transcript", "quote": "They do answer, but then the receipts arrive in my texts and I lose them in there. So I stopped.", "name": "Dana"}
            ]
          }
        ],
        "interviews": [],
        "stopped_by": ["01"],
        "quote_count": 1
      },
      {
        "id": "S9",
        "name": "Late fee for late documents",
        "kind": "own_method",
        "group": "chase-documents",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.2",
            "status": "stopped",
            "evidence": [
              {"interview": "02", "source": "transcript", "quote": "We charged a late fee for a while. It made them angry and it didn't make them faster. We dropped it after two months.", "name": "Marcus"}
            ]
          }
        ],
        "interviews": [],
        "stopped_by": ["02"],
        "quote_count": 1
      },
      {
        "id": "S10",
        "name": "Client portal",
        "kind": "product",
        "group": "get-documents",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.2",
            "status": "stopped",
            "evidence": [
              {"interview": "03", "source": "transcript", "quote": "We tried a client portal. Nobody logged in.", "name": "Sofia"},
              {"interview": "03", "source": "transcript", "quote": "But they forgot their passwords, and then they emailed the receipts to us anyway", "name": "Sofia"}
            ]
          }
        ],
        "interviews": [],
        "stopped_by": ["03"],
        "quote_count": 2
      },
      {
        "id": "S11",
        "name": "Shared cloud folder",
        "kind": "everyday_tool",
        "group": "get-documents",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.2",
            "status": "current",
            "evidence": [
              {"interview": "05", "source": "transcript", "quote": "Each client has a shared cloud folder with a sub-folder for every month.", "name": "Kenji"},
              {"interview": "05", "source": "transcript", "quote": "The email has a link straight to that month's folder, so there's no logging in, no password, nothing.", "name": "Kenji"}
            ]
          }
        ],
        "interviews": ["05"],
        "stopped_by": [],
        "quote_count": 2
      },
      {
        "id": "S12",
        "name": "Collecting documents in person",
        "kind": "own_method",
        "group": "get-documents",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.2",
            "status": "current",
            "evidence": [
              {"interview": "04", "source": "transcript", "quote": "Most of them keep an envelope for me and put the receipts in during the month. Then I drive round and collect them.", "name": "Ruth"},
              {"interview": "03", "source": "transcript", "quote": "In the end I drove over there and took photos of the invoices on the office desk.", "name": "Sofia"}
            ]
          }
        ],
        "interviews": ["03", "04"],
        "stopped_by": [],
        "quote_count": 2
      },
      {
        "id": "S13",
        "name": "Receipt photo app",
        "kind": "product",
        "group": "get-documents",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.2",
            "status": "stopped",
            "evidence": [
              {"interview": "04", "source": "transcript", "quote": "He used it for about three weeks. Then he stopped. He said it took longer to photograph a receipt than to lose it.", "name": "Ruth"},
              {"interview": "04", "source": "transcript", "quote": "I couldn't see the photos properly on my computer, they came through tiny.", "name": "Ruth"}
            ]
          }
        ],
        "interviews": [],
        "stopped_by": ["04"],
        "quote_count": 2
      },
      {
        "id": "S14",
        "name": "Spreadsheet of missing documents",
        "kind": "everyday_tool",
        "group": "track-missing",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.2",
            "status": "current",
            "evidence": [
              {"interview": "03", "source": "transcript", "quote": "I keep a spreadsheet of who still owes me what.", "name": "Sofia"},
              {"interview": "03", "source": "transcript", "quote": "It's one row per client and one column per month.", "name": "Sofia"}
            ]
          },
          {
            "step": "A.4",
            "status": "current",
            "evidence": [
              {"interview": "03", "source": "transcript", "quote": "every line that has no receipt gets a question in my spreadsheet.", "name": "Sofia"}
            ]
          }
        ],
        "interviews": ["03"],
        "stopped_by": [],
        "quote_count": 3
      },
      {
        "id": "S15",
        "name": "Paper list of unknowns",
        "kind": "everyday_tool",
        "group": "track-missing",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.4",
            "status": "current",
            "evidence": [
              {"interview": "04", "source": "transcript", "quote": "They go on my list of unknowns. I keep a sheet of paper for each client", "name": "Ruth"}
            ]
          }
        ],
        "interviews": ["04"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S16",
        "name": "Questions list for the client",
        "kind": "everyday_tool",
        "group": "track-missing",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.4",
            "status": "current",
            "evidence": [
              {"interview": "06", "source": "transcript", "quote": "It's a spreadsheet with the date, the amount, what the bank says, and an empty column for the client to tell me what it was.", "name": "Amara"},
              {"interview": "06", "source": "transcript", "quote": "At least with the spreadsheet the questions and the answers are in one place.", "name": "Amara"}
            ]
          }
        ],
        "interviews": ["06"],
        "stopped_by": [],
        "quote_count": 2
      },
      {
        "id": "S17",
        "name": "Sub-folders by document type",
        "kind": "everyday_tool",
        "group": "sort-documents",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.3",
            "status": "current",
            "evidence": [
              {"interview": "03", "source": "transcript", "quote": "and then into sub-folders by type: sales, suppliers, wages, the rest.", "name": "Sofia"}
            ]
          }
        ],
        "interviews": ["03"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S18",
        "name": "Sorting receipts into piles",
        "kind": "own_method",
        "group": "sort-documents",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.3",
            "status": "current",
            "evidence": [
              {"interview": "04", "source": "transcript", "quote": "I tip them out on the table and sort them into piles. Fuel, materials, phone, the odd one.", "name": "Ruth"}
            ]
          }
        ],
        "interviews": ["04"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S19",
        "name": "Rule of thumb by shop type",
        "kind": "own_method",
        "group": "sort-documents",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.3",
            "status": "current",
            "evidence": [
              {"interview": "06", "source": "transcript", "quote": "Supermarkets are personal unless they tell me otherwise. Hardware stores are business. Restaurants I ask about. It's not perfect.", "name": "Amara"}
            ]
          }
        ],
        "interviews": ["06"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S20",
        "name": "QuickBooks",
        "kind": "product",
        "group": "record-books",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.5",
            "status": "current",
            "evidence": [
              {"interview": "01", "source": "transcript", "quote": "Then I go into QuickBooks and work through the bank feed.", "name": "Dana"},
              {"interview": "03", "source": "transcript", "quote": "We're on QuickBooks.", "name": "Sofia"},
              {"interview": "04", "source": "transcript", "quote": "I use QuickBooks, because the accountants all wanted it.", "name": "Ruth"}
            ]
          }
        ],
        "interviews": ["01", "03", "04"],
        "stopped_by": [],
        "quote_count": 3
      },
      {
        "id": "S21",
        "name": "Xero",
        "kind": "product",
        "group": "record-books",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.5",
            "status": "current",
            "evidence": [
              {"interview": "02", "source": "transcript", "quote": "Xero, with bank rules. The rules do most of the coding now.", "name": "Marcus"},
              {"interview": "05", "source": "transcript", "quote": "Xero, with a lot of bank rules.", "name": "Kenji"},
              {"interview": "06", "source": "transcript", "quote": "We're on Xero at the firm.", "name": "Amara"}
            ]
          },
          {
            "step": "A.6",
            "status": "current",
            "evidence": [
              {"interview": "05", "source": "transcript", "quote": "Most of the time the feed and the statement agree, and reconciling is a click.", "name": "Kenji"}
            ]
          }
        ],
        "interviews": ["02", "05", "06"],
        "stopped_by": [],
        "quote_count": 4
      },
      {
        "id": "S22",
        "name": "Splitting invoices by hand",
        "kind": "own_method",
        "group": "split-payments",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.5",
            "status": "current",
            "evidence": [
              {"interview": "03", "source": "transcript", "quote": "so I split every invoice by hand.", "name": "Sofia"}
            ]
          }
        ],
        "interviews": ["03"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S23",
        "name": "Payout split spreadsheet",
        "kind": "everyday_tool",
        "group": "split-payments",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.5",
            "status": "current",
            "evidence": [
              {"interview": "05", "source": "transcript", "quote": "I split them with a little spreadsheet I built.", "name": "Kenji"}
            ]
          }
        ],
        "interviews": ["05"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S24",
        "name": "Colleague review of reconciliations",
        "kind": "people",
        "group": "second-look",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.6",
            "status": "current",
            "evidence": [
              {"interview": "02", "source": "transcript", "quote": "Reconciliation is where I spend my review time.", "name": "Marcus"},
              {"interview": "03", "source": "transcript", "quote": "My partner and I check each other's reconciliations.", "name": "Sofia"},
              {"interview": "03", "source": "transcript", "quote": "It's that you stop seeing your own mistakes after a while.", "name": "Sofia"}
            ]
          }
        ],
        "interviews": ["02", "03"],
        "stopped_by": [],
        "quote_count": 3
      },
      {
        "id": "S25",
        "name": "Checking big rule matches by hand",
        "kind": "own_method",
        "group": "second-look",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.5",
            "status": "current",
            "evidence": [
              {"interview": "01", "source": "transcript", "quote": "So now I look at every rule match over two hundred dollars before I accept it.", "name": "Dana"}
            ]
          }
        ],
        "interviews": ["01"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S26",
        "name": "Ticking the paper statement",
        "kind": "own_method",
        "group": "check-bank",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.6",
            "status": "current",
            "evidence": [
              {"interview": "04", "source": "transcript", "quote": "I print the bank statement. Paper. And I go down it with a pencil and a ruler and tick every line against what I've entered.", "name": "Ruth"}
            ]
          }
        ],
        "interviews": ["04"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S27",
        "name": "Divide-by-nine routine",
        "kind": "own_method",
        "group": "find-mismatch",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.7",
            "status": "current",
            "evidence": [
              {"interview": "05", "source": "transcript", "quote": "First I look for a transaction with exactly that amount. Then half the amount, because that's usually something entered on the wrong side. Then I check if the difference divides by nine, because then it's two digits swapped.", "name": "Kenji"}
            ]
          }
        ],
        "interviews": ["05"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S28",
        "name": "Round-number rule",
        "kind": "own_method",
        "group": "find-mismatch",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.7",
            "status": "current",
            "evidence": [
              {"interview": "04", "source": "transcript", "quote": "If it's a round number, fifty or a hundred, it's nearly always cash.", "name": "Ruth"}
            ]
          }
        ],
        "interviews": ["04"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S29",
        "name": "Fresh eyes next morning",
        "kind": "own_method",
        "group": "find-mismatch",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.7",
            "status": "current",
            "evidence": [
              {"interview": "03", "source": "transcript", "quote": "I write it down and come back to it the next morning with fresh eyes.", "name": "Sofia"}
            ]
          }
        ],
        "interviews": ["03"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S30",
        "name": "Line-by-line check against the statement",
        "kind": "own_method",
        "group": "find-mismatch",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.7",
            "status": "current",
            "evidence": [
              {"interview": "02", "source": "transcript", "quote": "I went through every transaction in that account for the month, one by one, against the statement. It took about an hour and a half.", "name": "Marcus"}
            ]
          }
        ],
        "interviews": ["02"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S31",
        "name": "Forward from the last good month",
        "kind": "own_method",
        "group": "find-mismatch",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.7",
            "status": "current",
            "evidence": [
              {"interview": "06", "source": "transcript", "quote": "When it's a big difference I start from the last month that was right and work forward week by week.", "name": "Amara"}
            ]
          }
        ],
        "interviews": ["06"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S32",
        "name": "Short summary email",
        "kind": "everyday_tool",
        "group": "explain-month",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.8",
            "status": "current",
            "evidence": [
              {"interview": "01", "source": "transcript", "quote": "Three or four lines, the things I'd want to know if it were my business.", "name": "Dana"},
              {"interview": "02", "source": "transcript", "quote": "Now the small clients get a short email with three numbers, cash, profit and what's coming", "name": "Marcus"},
              {"interview": "03", "source": "transcript", "quote": "We write a few lines with the reports now, so they have the answer before they call.", "name": "Sofia"}
            ]
          }
        ],
        "interviews": ["01", "02", "03"],
        "stopped_by": [],
        "quote_count": 3
      },
      {
        "id": "S33",
        "name": "Emailed standard reports",
        "kind": "everyday_tool",
        "group": "explain-month",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.8",
            "status": "stopped",
            "evidence": [
              {"interview": "02", "source": "transcript", "quote": "We used to just email the standard reports out of the software.", "name": "Marcus"},
              {"interview": "02", "source": "transcript", "quote": "So we stopped sending reports on their own.", "name": "Marcus"},
              {"interview": "05", "source": "transcript", "quote": "I sent the reports as PDFs with a paragraph of text. Then I'd get the same question in six different emails over the next week.", "name": "Kenji"}
            ]
          }
        ],
        "interviews": [],
        "stopped_by": ["02", "05"],
        "quote_count": 3
      },
      {
        "id": "S34",
        "name": "Three-minute screen recording",
        "kind": "everyday_tool",
        "group": "explain-month",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.8",
            "status": "current",
            "evidence": [
              {"interview": "05", "source": "transcript", "quote": "I share my screen, open the profit and loss, and talk through what changed and why. Then I send the link.", "name": "Kenji"}
            ]
          }
        ],
        "interviews": ["05"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S35",
        "name": "Review call with the client",
        "kind": "own_method",
        "group": "explain-month",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.8",
            "status": "current",
            "evidence": [
              {"interview": "02", "source": "transcript", "quote": "the bigger ones get fifteen minutes on the phone with me.", "name": "Marcus"}
            ]
          }
        ],
        "interviews": ["02"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S36",
        "name": "Printed report by post",
        "kind": "everyday_tool",
        "group": "explain-month",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.8",
            "status": "current",
            "evidence": [
              {"interview": "04", "source": "transcript", "quote": "I print a profit and loss and post it, or I hand it over when I collect the next envelope.", "name": "Ruth"}
            ]
          }
        ],
        "interviews": ["04"],
        "stopped_by": [],
        "quote_count": 1
      },
      {
        "id": "S37",
        "name": "Saved explanations document",
        "kind": "everyday_tool",
        "group": "explain-month",
        "added": "2026-11-11",
        "uses": [
          {
            "step": "A.8",
            "status": "current",
            "evidence": [
              {"interview": "06", "source": "transcript", "quote": "I have a document with my best explanations, and I copy from it. That saves me a bit.", "name": "Amara"},
              {"interview": "06", "source": "transcript", "quote": "Now it has maybe twenty explanations in it.", "name": "Amara"}
            ]
          }
        ],
        "interviews": ["06"],
        "stopped_by": [],
        "quote_count": 2
      }
    ]
  },
  "proposed_changes": [
    {"id": "P1", "status": "pending", "raised": "2026-11-11", "type": "confirm_core_job", "target": "A", "proposal": "Close a client's books each month", "rationale": "Set up from the first batch. 6 of 6 people interviewed have it as their main job."}
  ],
  "changelog": [
    {"date": "2026-11-11", "action": "init", "ts": "2026-11-11T14:18:49-08:00", "run_id": "e320215d81b5"},
    {
      "date": "2026-11-11",
      "action": "merge",
      "patch": "2026-11-11-batch-01.yaml",
      "ts": "2026-11-11T14:22:34-08:00",
      "run_id": "36286951e2a6",
      "provenance": {
        "assistant": "claude-code",
        "model": "claude-opus-5-5",
        "started": "2026-11-11T14:10:00-08:00",
        "transcripts_read": ["01", "02", "03", "04", "05", "06"],
        "notes": "First batch of six invented example interviews with bookkeepers about their monthly close. All six share one core job."
      },
      "summary": "bootstrapped core job A and 8 steps; added interviews 01, 02, 03, 04, 05, 06; 45 step quotes; 0 outcome quotes; new outcomes A.1.1, A.1.2, A.1.3, A.1.4, A.2.1, A.2.2, A.2.3, A.2.4, A.2.5, A.3.1, A.3.2, A.3.3, A.3.4, A.4.1, A.4.2, A.4.3, A.5.1, A.5.2, A.5.3, A.5.4, A.6.1, A.6.2, A.6.3, A.7.1, A.7.2, A.7.3, A.8.1, A.8.2, A.8.3, A.8.4, A.8.5; new solutions S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S20, S21, S22, S23, S24, S25, S26, S27, S28, S29, S30, S31, S32, S33, S34, S35, S36, S37; 0 solution quotes; proposals P1",
      "added_interviews": ["01", "02", "03", "04", "05", "06"],
      "new_outcomes": [
        "A.1.1",
        "A.1.2",
        "A.1.3",
        "A.1.4",
        "A.2.1",
        "A.2.2",
        "A.2.3",
        "A.2.4",
        "A.2.5",
        "A.3.1",
        "A.3.2",
        "A.3.3",
        "A.3.4",
        "A.4.1",
        "A.4.2",
        "A.4.3",
        "A.5.1",
        "A.5.2",
        "A.5.3",
        "A.5.4",
        "A.6.1",
        "A.6.2",
        "A.6.3",
        "A.7.1",
        "A.7.2",
        "A.7.3",
        "A.8.1",
        "A.8.2",
        "A.8.3",
        "A.8.4",
        "A.8.5"
      ],
      "step_quotes": 45,
      "outcome_quotes": 0,
      "proposals": ["P1"],
      "new_solutions": [
        "S1",
        "S2",
        "S3",
        "S4",
        "S5",
        "S6",
        "S7",
        "S8",
        "S9",
        "S10",
        "S11",
        "S12",
        "S13",
        "S14",
        "S15",
        "S16",
        "S17",
        "S18",
        "S19",
        "S20",
        "S21",
        "S22",
        "S23",
        "S24",
        "S25",
        "S26",
        "S27",
        "S28",
        "S29",
        "S30",
        "S31",
        "S32",
        "S33",
        "S34",
        "S35",
        "S36",
        "S37"
      ],
      "new_solution_groups": [
        "plan-close",
        "get-documents",
        "chase-documents",
        "track-missing",
        "sort-documents",
        "record-books",
        "split-payments",
        "second-look",
        "check-bank",
        "find-mismatch",
        "explain-month"
      ],
      "solution_quotes": 0,
      "bootstrap": true
    },
    {"date": "2026-11-11", "action": "rebuild", "ts": "2026-11-11T14:25:40-08:00", "run_id": "6495b682167a", "layer": "overview", "job": "A", "summary": "overview of core job A"},
    {
      "date": "2026-11-11",
      "action": "rebuild",
      "ts": "2026-11-11T14:26:38-08:00",
      "run_id": "ad4d421c97db",
      "layer": "value_themes",
      "job": "A",
      "themes": ["A.T1", "A.T2", "A.T3", "A.T4", "A.T5", "A.T6", "A.T7", "A.T8"],
      "summary": "value themes of core job A: A.T1, A.T2, A.T3, A.T4, A.T5, A.T6, A.T7, A.T8"
    },
    {"date": "2026-11-11", "action": "rebuild", "ts": "2026-11-11T14:26:56-08:00", "run_id": "70d36fc518f2", "layer": "overview", "job": "A", "summary": "overview of core job A"},
    {"date": "2026-11-12", "action": "rebuild", "ts": "2026-11-12T09:09:41-08:00", "run_id": "e1e081aae3a5", "layer": "overview", "job": "A", "summary": "overview of core job A"},
    {"date": "2026-11-12", "action": "migrate", "ts": "2026-11-12T15:17:27-08:00", "run_id": "7f6c2c283e3d", "summary": "migrated from schema version 2 to 3: the KB is now a JSON file, pw-kb.json"},
    {"date": "2026-11-13", "action": "rebuild", "ts": "2026-11-13T10:45:22-08:00", "run_id": "ca81a326e659", "layer": "overview", "job": "A", "summary": "overview of core job A"}
  ],
  "overview": {
    "stale": false,
    "jobs": [
      {
        "job": "A",
        "executor": {
          "label": "Small-firm bookkeeper",
          "text": "A bookkeeper who closes the monthly books of small businesses, alone or in a firm of up to four people.",
          "icon": "finance",
          "others": ["their clients", "the accountant"]
        },
        "bottom_line": "Bookkeepers lose days every month chasing clients for receipts and answers.",
        "why": "Every fix they tried asked clients for extra work, and the clients would not do it.",
        "opening": "Getting receipts and answers from clients without asking the client to log in or learn anything new.",
        "people": {
          "answer": "Six bookkeepers who close the monthly books of small businesses.",
          "text": "Three work alone and three in firms of two to four people. Two work part-time. Their firms look after between 9 and about 70 clients, some on paper and some with software that sorts most bank lines.",
          "quote": {"interview": "03", "source": "transcript", "quote": "Honestly? I spend the first week of every month chasing clients for receipts.", "name": "Sofia"}
        },
        "today": {"answer": "The books live in QuickBooks or Xero, and the rest is done by hand.", "text": "Most keep their own list of what each client still has to send, chase by email or phone, and look for mistakes line by line."},
        "gaps": {
          "answer": "Things go wrong when they wait on clients or dig for an answer.",
          "items": [
            {
              "label": "Receipts come late or never",
              "text": "Most chase receipts for days. What never arrives piles up until the accountant asks for it at tax time.",
              "kind": "pain",
              "solutions": [],
              "quote": {"interview": "01", "source": "transcript", "quote": "Easily a third of my month is chasing people for receipts that are sitting in their car.", "name": "Dana"}
            },
            {
              "label": "Nobody used the client portal",
              "text": "One firm paid for a client portal for a year. Clients forgot their passwords and kept emailing receipts.",
              "kind": "struggle",
              "solutions": ["S10"],
              "quote": {"interview": "03", "source": "transcript", "quote": "We tried a client portal. Nobody logged in.", "name": "Sofia"}
            },
            {
              "label": "The receipt app lasted three weeks",
              "text": "One client gave up a receipt photo app, because taking the photo was slower than losing the receipt.",
              "kind": "struggle",
              "solutions": ["S13"],
              "quote": {"interview": "04", "source": "transcript", "quote": "He used it for about three weeks. Then he stopped. He said it took longer to photograph a receipt than to lose it.", "name": "Ruth"}
            },
            {
              "label": "A mismatch can take an afternoon",
              "text": "Most lose hours looking for why the books and the bank differ. One bookkeeper finds nearly all of them in minutes with a fixed routine.",
              "kind": "pain",
              "solutions": [],
              "quote": {"interview": "01", "source": "transcript", "quote": "In September the café was off by three hundred and twelve dollars and I could not find it. I spent most of an afternoon on it.", "name": "Dana"}
            },
            {
              "label": "Explaining a change takes digging",
              "text": "When a client's number moves, finding the reason takes far longer than making the report.",
              "kind": "pain",
              "solutions": [],
              "quote": {"interview": "02", "source": "transcript", "quote": "The numbers take me ten minutes. The why takes an hour, because I have to go dig.", "name": "Marcus"}
            }
          ]
        },
        "needs": {"answer": "Less time getting receipts from clients and explaining their numbers to them.", "text": "Finding why the books and the bank differ came up with everyone too, but one bookkeeper already does it in minutes."},
        "focus": {"answer": "Getting receipts and answers from clients without chasing them.", "text": "Start here: they tried four fixes for it and gave them all up. Finding mismatches and explaining numbers matter as much, but some bookkeepers already handle them well."},
        "next": {
          "learn": {
            "status": "now",
            "action": "Talk to two more bookkeepers: one whose assistant chases clients, and one whose clients use a shared folder.",
            "why": "The main finding rests on needs heard from two people each, and only one bookkeeper so far has an assistant or a shared folder.",
            "ask": [
              "Tell me about the last bank line you could not place. How did you find out what it was?",
              "Think of last month's receipts for one client. Where did each of them reach you?"
            ],
            "tip": "Ask what they did last time, not what they would want from a tool.",
            "traits": [
              {
                "id": "T1",
                "name": "Who chases clients",
                "values": [
                  {
                    "id": "T1.1",
                    "label": "The bookkeeper",
                    "interviews": ["01", "03", "04", "05", "06"]
                  },
                  {
                    "id": "T1.2",
                    "label": "An assistant",
                    "interviews": ["02"]
                  }
                ]
              },
              {
                "id": "T2",
                "name": "How documents arrive",
                "values": [
                  {
                    "id": "T2.1",
                    "label": "By email or text",
                    "interviews": ["01", "03", "06"]
                  },
                  {
                    "id": "T2.2",
                    "label": "In a shared folder",
                    "interviews": ["05"]
                  },
                  {
                    "id": "T2.3",
                    "label": "On paper, collected",
                    "interviews": ["04"]
                  }
                ]
              }
            ],
            "rests_on": ["A.2.1", "A.2.2", "A.2.5", "A.4.2", "A.4.3"],
            "round": [
              {
                "kind": "new",
                "count": 1,
                "who": "A bookkeeper in a small firm where an assistant chases the clients",
                "traits": ["T1.2"],
                "gaps": ["A.4.2", "A.4.3", "A.8.5"],
                "questions": [
                  {
                    "ask": "Tell me about the last bank line you could not place. How did you find out what it was?",
                    "listen": "how long the answer took, and whether the client could explain it",
                    "gaps": ["A.4.2", "A.4.3"]
                  },
                  {
                    "ask": "Walk me through the last time a client asked why a number changed. What did you tell them?",
                    "listen": "whether they had an answer ready, or had to go and dig",
                    "gaps": ["A.8.5"]
                  }
                ]
              },
              {
                "kind": "new",
                "count": 1,
                "who": "A bookkeeper whose clients put their documents in a shared folder",
                "traits": ["T2.2"],
                "gaps": ["A.2.5", "A.3.2", "A.5.2"],
                "questions": [
                  {
                    "ask": "Think of last month's receipts for one client. Where did each of them reach you?",
                    "listen": "how many places they check, and any receipt filed twice",
                    "gaps": ["A.2.5", "A.3.2"]
                  },
                  {
                    "ask": "Tell me about the last time a bank rule put a payment in the wrong account. How did you notice?",
                    "listen": "how they caught it, and how long it went unnoticed",
                    "gaps": ["A.5.2"]
                  }
                ]
              }
            ],
            "at_write": {
              "written": "2026-11-13",
              "interviews": ["01", "02", "03", "04", "05", "06"],
              "targets": [
                {"ref": "A.4.2", "label": ""},
                {"ref": "A.4.3", "label": ""},
                {"ref": "A.8.5", "label": ""},
                {"ref": "A.2.5", "label": ""},
                {"ref": "A.3.2", "label": ""},
                {"ref": "A.5.2", "label": ""}
              ]
            }
          },
          "prototype": {"status": "ready", "action": "Sketch one thing: a way for clients to send receipts with no login and no new app.", "why": "All but one raised chasing receipts, and the portal and the photo app both failed because they asked clients for extra effort.", "test": "Ask two bookkeepers from the study to try it with their slowest client for one month-end.", "later": "Leave checking the books against the bank, and client reports, until the receipts idea is tested."},
          "market": {
            "status": "early",
            "action": "Note which bookkeepers offer to try it, and with how many clients.",
            "who": "Bookkeepers who chase receipts themselves, alone or in small firms without an assistant.",
            "words": ["chasing clients for receipts", "Nobody logged in", "sitting in their car"],
            "unknown": "What a bookkeeper would pay, and whether the client or the bookkeeper would choose the tool."
          }
        },
        "written": "2026-11-13"
      }
    ]
  },
  "value_themes": {
    "stale": false,
    "themes": [
      {
        "id": "A.T1",
        "job": "A",
        "label": "Get what I need from clients",
        "need": "Help me get documents and answers from clients without chasing them",
        "why": "Each one measures how much chasing and waiting it takes before the bookkeeper has what the client owes.",
        "outcomes": ["A.2.1", "A.2.2", "A.2.5", "A.4.2", "A.4.3"],
        "highlights": [
          {"kind": "pain", "interview": "03", "source": "transcript", "quote": "Honestly? I spend the first week of every month chasing clients for receipts.", "name": "Sofia"},
          {"kind": "pain", "interview": "03", "source": "transcript", "quote": "We tried a client portal. Nobody logged in.", "name": "Sofia"},
          {"kind": "struggle", "interview": "02", "source": "transcript", "quote": "There are always three or four clients who send the last receipts on the twelfth, and then the bookkeeper has to redo half the month.", "name": "Marcus"},
          {"kind": "struggle", "interview": "06", "source": "transcript", "quote": "Eight days for thirty answers.", "name": "Amara"},
          {"kind": "desire", "interview": "03", "source": "transcript", "quote": "If every receipt arrived on its own, I could close twenty-one clients in the time I close fifteen now.", "name": "Sofia"}
        ],
        "added": "2026-11-11",
        "interviews": ["01", "02", "03", "04", "05", "06"],
        "interview_count": 6,
        "quote_count": 19
      },
      {
        "id": "A.T2",
        "job": "A",
        "label": "See where every close stands",
        "need": "Help me see at a glance what each client's close still needs",
        "why": "Each one is about knowing, without digging, what a client's month needs, what is still owed and what is due first.",
        "outcomes": ["A.1.1", "A.1.4", "A.2.3"],
        "highlights": [
          {"kind": "struggle", "interview": "03", "source": "transcript", "quote": "I keep a spreadsheet of who still owes me what.", "name": "Sofia"},
          {"kind": "struggle", "interview": "02", "source": "transcript", "quote": "An hour, maybe. It used to take a whole morning when it was in my head.", "name": "Marcus"},
          {"kind": "struggle", "interview": "06", "source": "transcript", "quote": "Eight of my clients file sales tax monthly, and I prepare those returns, so they go first, every month, no matter what.", "name": "Amara"}
        ],
        "added": "2026-11-11",
        "interviews": ["01", "02", "03", "05", "06"],
        "interview_count": 5,
        "quote_count": 7
      },
      {
        "id": "A.T3",
        "job": "A",
        "label": "Close with nothing left out",
        "need": "Help me close each month knowing nothing was left out",
        "why": "Each one is a way a month gets closed with something missing that nobody sees until later.",
        "outcomes": ["A.1.2", "A.1.3", "A.4.1", "A.6.2"],
        "highlights": [
          {"kind": "pain", "interview": "03", "source": "transcript", "quote": "In June we closed one of the restaurants and a big equipment invoice wasn't there. Nobody noticed.", "name": "Sofia"},
          {"kind": "pain", "interview": "01", "source": "transcript", "quote": "Years ago I closed a month for one of the builders and forgot his truck loan.", "name": "Dana"},
          {"kind": "pain", "interview": "05", "source": "transcript", "quote": "A client starts selling on a new marketplace, and suddenly there's a new payout account nobody told me about.", "name": "Kenji"},
          {"kind": "pain", "interview": "05", "source": "transcript", "quote": "The missing days aren't, because nothing looks wrong.", "name": "Kenji"}
        ],
        "added": "2026-11-11",
        "interviews": ["01", "02", "03", "04", "05"],
        "interview_count": 5,
        "quote_count": 14
      },
      {
        "id": "A.T4",
        "job": "A",
        "label": "Hand the accountant a clean year",
        "need": "Help me reach year-end with nothing left for the accountant to find",
        "why": "Each one is a gap that piles up month by month and lands on the bookkeeper when the accountant looks at the year.",
        "outcomes": ["A.2.4", "A.3.3", "A.4.3", "A.7.3"],
        "highlights": [
          {"kind": "pain", "interview": "01", "source": "transcript", "quote": "Eighty-some transactions with nothing behind them, and her accountant called me, not her.", "name": "Dana"},
          {"kind": "pain", "interview": "04", "source": "transcript", "quote": "By January the plumber's unknown sheet has sixty or seventy items, and then it's a scramble before his accountant's deadline.", "name": "Ruth"},
          {"kind": "pain", "interview": "06", "source": "transcript", "quote": "Which I hate, because suspense is just a place where problems wait for year-end.", "name": "Amara"},
          {"kind": "pain", "interview": "06", "source": "transcript", "quote": "The accountant caught it, thank goodness, but it was embarrassing.", "name": "Amara"}
        ],
        "added": "2026-11-11",
        "interviews": ["01", "02", "04", "05", "06"],
        "interview_count": 5,
        "quote_count": 10
      },
      {
        "id": "A.T5",
        "job": "A",
        "label": "Handle each document once",
        "need": "Help me get each document into the books without handling it twice",
        "why": "Each one is time spent moving, reading or splitting documents by hand before the numbers exist.",
        "outcomes": ["A.3.1", "A.3.2", "A.3.4", "A.5.1", "A.5.3"],
        "highlights": [
          {"kind": "struggle", "interview": "02", "source": "transcript", "quote": "One of the bookkeepers spent a day sorting it.", "name": "Marcus"},
          {"kind": "pain", "interview": "01", "source": "transcript", "quote": "And three of them were the same receipt taken twice.", "name": "Dana"},
          {"kind": "struggle", "interview": "04", "source": "transcript", "quote": "I hold them up to the window and guess, mostly.", "name": "Ruth"},
          {"kind": "struggle", "interview": "04", "source": "transcript", "quote": "I'm slow at it, I'll be honest. I type everything in by hand.", "name": "Ruth"},
          {"kind": "struggle", "interview": "03", "source": "transcript", "quote": "The same supplier sells them food and cleaning products on one invoice, so I split every invoice by hand.", "name": "Sofia"}
        ],
        "added": "2026-11-11",
        "interviews": ["01", "02", "03", "04", "05"],
        "interview_count": 5,
        "quote_count": 11
      },
      {
        "id": "A.T6",
        "job": "A",
        "label": "Code every entry right first time",
        "need": "Help me record every transaction where it belongs the first time",
        "why": "Each one is an entry that lands in the wrong account or month and has to be found and moved later.",
        "outcomes": ["A.3.3", "A.5.2", "A.5.4"],
        "highlights": [
          {"kind": "pain", "interview": "01", "source": "transcript", "quote": "I had a rule that sent anything from the hardware store to materials, and one of the builders bought a fridge for his kitchen at home there.", "name": "Dana"},
          {"kind": "struggle", "interview": "03", "source": "transcript", "quote": "A card payment on the thirtieth that the bank posts on the second. That one catches me at least once a month.", "name": "Sofia"},
          {"kind": "struggle", "interview": "02", "source": "transcript", "quote": "You have to decide for every single receipt whether it's the business or not, and you're guessing.", "name": "Marcus"}
        ],
        "added": "2026-11-11",
        "interviews": ["01", "02", "03", "06"],
        "interview_count": 4,
        "quote_count": 6
      },
      {
        "id": "A.T7",
        "job": "A",
        "label": "Find what is wrong fast",
        "need": "Help me find why the books do not match the bank, fast",
        "why": "Each one is about how long a difference stays hidden and how much of the month it takes to find it.",
        "outcomes": ["A.6.1", "A.6.2", "A.6.3", "A.7.1", "A.7.2"],
        "highlights": [
          {"kind": "pain", "interview": "01", "source": "transcript", "quote": "In September the café was off by three hundred and twelve dollars and I could not find it. I spent most of an afternoon on it.", "name": "Dana"},
          {"kind": "struggle", "interview": "03", "source": "transcript", "quote": "The worst part is not knowing if it's going to be a ten-minute one or a morning one until you've found it.", "name": "Sofia"},
          {"kind": "pain", "interview": "02", "source": "transcript", "quote": "The worst thing a junior can do is make it balance.", "name": "Marcus"},
          {"kind": "pain", "interview": "06", "source": "transcript", "quote": "The worst is when it goes back to a month I already closed, because then the client's report for that month was wrong too.", "name": "Amara"}
        ],
        "added": "2026-11-11",
        "interviews": ["01", "02", "03", "04", "05", "06"],
        "interview_count": 6,
        "quote_count": 16
      },
      {
        "id": "A.T8",
        "job": "A",
        "label": "Make the numbers make sense",
        "need": "Help me give clients the why behind their numbers before they ask",
        "why": "Each one is about the client understanding the month without a long call or the same question twice.",
        "outcomes": ["A.8.1", "A.8.2", "A.8.3", "A.8.4", "A.8.5"],
        "highlights": [
          {"kind": "struggle", "interview": "02", "source": "transcript", "quote": "The numbers take me ten minutes. The why takes an hour, because I have to go dig.", "name": "Marcus"},
          {"kind": "pain", "interview": "01", "source": "transcript", "quote": "I've explained that same thing to her three times this year.", "name": "Dana"},
          {"kind": "pain", "interview": "05", "source": "transcript", "quote": "I sent the reports as PDFs with a paragraph of text. Then I'd get the same question in six different emails over the next week.", "name": "Kenji"},
          {"kind": "desire", "interview": "02", "source": "transcript", "quote": "I'd love the why to be ready before the call.", "name": "Marcus"}
        ],
        "added": "2026-11-11",
        "interviews": ["01", "02", "03", "04", "05", "06"],
        "interview_count": 6,
        "quote_count": 20
      }
    ],
    "unassigned": []
  }
}
