{"id":"fpa-kpi-definitions-json-from-slack","audience":"fpa","category":"finance-work","track":"finance","level":"intermediate","technique":"format","title":"Turn a Slack thread into KPI definitions as JSON","free":false,"task":"The data team needs the agreed KPI definitions from a Slack thread as JSON for the metrics catalog. Output one code block holding an array of exactly 3 objects (CAC, Payback, Gross margin), each with exactly the keys name, formula, includes, excludes, owner. Use the final agreed version of each definition and \"TBD\" for anything nobody stated. Nothing outside the code block.","materialLabel":"Source material (attached to your prompt automatically)","material":"#metrics-definitions (Slack export)\n\nLena (Marketing Ops), Oct 2: CAC = (paid media + events + agency) / new customers. Brand spend is excluded.\n\nAde (FP&A), Oct 9: Per the board definition we agreed today, SDR salaries go into CAC too.\n\nLena, Oct 9: ok, fine, SDR salaries in. Brand still out.\n\nAde, Oct 9: Payback = CAC / (monthly ARPA x gross margin). I'll own payback.\n\nWei (Controller), Oct 10: Gross margin = (revenue - hosting - support salaries - payment fees) / revenue. R&D is not in cost of revenue. I own it.\n\nLena, Oct 10: who owns CAC officially? I assumed Ade's team since it's a board metric?\n\nAde, Oct 10: let's settle that at the next metrics council.\n\nMo (Data), Oct 11: thanks all, I'll load these into the catalog next sprint.","rules":[{"type":"codeBlocks","count":1},{"type":"maxCodeLines","max":30},{"type":"maxProseWords","max":10}],"mistakes":[{"title":"Using the first definition","why":"The AI takes Lena's Oct 2 formula and misses that SDR salaries were added later.","fix":"Add: \"Use the final agreed version; SDR salaries are in CAC.\"","checks":["r0"]},{"title":"Guessing the owner","why":"The AI assigns CAC to Lena or Ade even though nobody decided.","fix":"Say: \"Use TBD for anything not settled.\"","checks":["r1"]},{"title":"Letting it pick the keys","why":"The AI invents keys like description or notes, which break the catalog load.","fix":"List them: \"Keys exactly: name, formula, includes, excludes, owner.\"","checks":["r2","maxCodeLines"]},{"title":"Chatting around the data","why":"The AI adds an intro and notes the loader has to strip out.","fix":"Say: \"Output only one JSON code block.\"","checks":["codeBlocks","maxProseWords"]}],"promptHints":[{"label":"Asks for JSON","patterns":["json","code block"]},{"label":"Names the exact keys","patterns":["name.{0,10}formula","includes","excludes","keys"]},{"label":"Uses the final version","patterns":["final","latest","agreed","sdr"]},{"label":"Handles gaps","patterns":["tbd","not (stated|settled)","unknown"]}],"hint":"A catalog loader needs exact keys and settled facts. Tell the AI the keys, which version wins and what to do with gaps.","rubricLabels":["CAC includes paid media, events, agency and SDR salaries (the Oct 9 agreement) and excludes brand spend","CAC's owner is \"TBD\" (it was never settled), Payback's owner is Ade (FP&A) and Gross margin's owner is Wei (Controller)","The JSON is an array of exactly 3 objects, each with exactly the keys name, formula, includes, excludes, owner, and nothing is written outside the code block"]}