{
 "title": "A partner facing dashboard, stopped at the feasibility gate",
 "oneLine": "Proposed, costed, and stopped before a line of it was built, because the numbers on it could not be refreshed often enough to be trusted.",
 "when": "February 2026",
 "decidedBy": "Dana Whitfield, COO",
 "steps": [
  {
   "key": "proposed",
   "label": "What was proposed",
   "body": "A dashboard for Northlight Group, the multi site partner, showing five things across all twenty two of their sites: open orders, calibration due dates, service tickets by severity, plan renewal dates, and spend against the national agreement. Their operations director asked for it by name. The account team wanted it. It was a good idea.",
   "facts": [
    [
     "Audience",
     "One partner network, twenty two sites, about forty named users"
    ],
    [
     "Feeds needed",
     "Five"
    ],
    [
     "Build estimate",
     "6 weeks, one engineer and one designer"
    ],
    [
     "Build cost",
     "$34,200"
    ],
    [
     "Running cost",
     "$740 a month, hosting and support"
    ]
   ]
  },
  {
   "key": "gate",
   "label": "What the gate asked",
   "body": "The feasibility gate runs before the build, not after it. It asks one question about data: can every number on this screen be refreshed on a schedule the audience can rely on, and can the screen say when each number was last true. A dashboard is a promise that what is on it is current. If the promise cannot be kept, the screen is worse than no screen, because people stop checking the source.",
   "facts": [
    [
     "The question",
     "Can every figure be refreshed on a reliable schedule"
    ],
    [
     "The second question",
     "Can the screen state, per figure, when it was last true"
    ],
    [
     "Who answers",
     "The person who owns each source system"
    ],
    [
     "Pass mark",
     "Every feed, not most of them"
    ]
   ]
  },
  {
   "key": "answer",
   "label": "What the answer was",
   "body": "Three of the five feeds passed. Two did not, and neither could be fixed inside the project. Calibration due dates lived in a spreadsheet that one person updated by hand every few weeks, so the freshness of that column would have ranged from one hour to nineteen days with nothing on the screen to say which. Service ticket state came from a nightly export with no timestamp on the rows, so the dashboard could show a ticket as open that had been closed the previous morning, and could not prove otherwise.",
   "facts": [
    [
     "Open orders",
     "Passed. Live read, refreshed every fifteen minutes"
    ],
    [
     "Plan renewal dates",
     "Passed. Live read from the account record"
    ],
    [
     "Spend against agreement",
     "Passed. Nightly from the warehouse, with the run date on it"
    ],
    [
     "Calibration due dates",
     "Failed. A hand kept spreadsheet, worst case nineteen days stale"
    ],
    [
     "Service ticket state",
     "Failed. Export with no timestamp, no way to state freshness"
    ]
   ]
  },
  {
   "key": "decided",
   "label": "What was decided",
   "body": "The project was stopped at the gate. Nothing was built. The estimate, the design sketches, and the feed assessment were written up in one page and filed, so the decision does not have to be made again from scratch. The write up names the two conditions that would let it pass: a system of record for calibration dates that is not a spreadsheet, and a timestamp on every row of the ticket export.",
   "facts": [
    [
     "Decision",
     "Stopped before build"
    ],
    [
     "Build cost avoided",
     "$34,200"
    ],
    [
     "Running cost avoided",
     "$8,880 a year"
    ],
    [
     "Time spent reaching the decision",
     "11 hours, across the assessment and the write up"
    ],
    [
     "Reopens when",
     "Both failed feeds have an owner, a schedule, and a timestamp"
    ]
   ]
  },
  {
   "key": "instead",
   "label": "What happened instead",
   "body": "The partner got a weekly status sheet instead, generated from the three feeds that passed, with the date each figure was true printed next to it. It is a PDF and a web page from the same source. It does not pretend to be live, so nobody has to wonder. The two failed feeds appear on it as a named gap with the owner of each, which is the same rule the document system uses for a missing image: show the hole, never fill it with something plausible.",
   "facts": [
    [
     "Delivered",
     "A weekly status sheet, PDF and web page"
    ],
    [
     "Build cost",
     "$4,100"
    ],
    [
     "Running cost",
     "None beyond the existing document system"
    ],
    [
     "Freshness",
     "Stated per figure, on the page"
    ],
    [
     "The two failed feeds",
     "Shown as a named gap with an owner, not estimated"
    ]
   ]
  }
 ],
 "closing": "A project stopped at a gate is a success of the process, not a failure of the project. The cost of the gate was eleven hours. The cost of finding out after the build would have been six weeks, thirty four thousand dollars, and a screen that a partner would have learned not to trust.",
 "costs": [
  [
   "Proposed build",
   34200,
   "Not spent"
  ],
  [
   "Proposed first year running",
   8880,
   "Not spent"
  ],
  [
   "Assessment and write up",
   1650,
   "Spent"
  ],
  [
   "The status sheet built instead",
   4100,
   "Spent"
  ]
 ]
}