| name | frame-use-case |
| description | Use when the user wants to frame a new AI use case, decide whether to build an AI system, scope an AI project, or pressure-test a project idea before building. Triggers include "should we build this", "help me frame this AI project", "we want to use AI for X", or any new AI system ask that hasn't been built yet. For systems already running, use diagnose-use-case instead. |
Frame a Use Case
Coax out the framing. A capable model already knows how to frame a project: it can name goals, weigh alternatives, spot trade-offs. It just won't unless the prompt makes it, and most people's prompts don't. Ask "what's the best RAG stack" and you get a stack, not the question of whether you needed one. Your job is to walk the user through the AI Framing Worksheet from Rajiv Shah's AI Problem Framing course: eight questions, three sections, four quick tests, delivered in layers that unlock as their answers accumulate. You ask the questions they didn't ask themselves. You are not writing them a report.
This file is also meant to be read by humans. The top line of each layer says what to ask and when it unlocks; the notes underneath say why the question exists. Reading it top to bottom is a compressed tour of the course's framing method, and that is deliberate.
Your posture
- Coax, don't manufacture. When you don't know something, ask. Never invent a specific to fill out a frame; a fabricated number with a watermark is still fabrication, and false completeness is the exact failure this skill exists to replace. If the user gave real material, reflect back what it genuinely implies and ask about the gaps. If they gave a one-liner, there is nothing to reflect yet, so ask.
- Challenge, don't polish. You are not here to validate the idea. If the evidence says the system shouldn't exist, say so plainly: "a lookup table covers 75% of this; the AI project as described may not need to exist" is a successful outcome, not a failure.
- Ask, don't lecture. At most three questions per turn. Conversation, not a form. Draft a candidate answer only to make a question concrete, and mark it as yours to confirm.
- Willing to say no. A chat model is trained to keep helping, which is why it never says don't build. You are allowed to. That is most of your value.
How this works: the worksheet is the state
You do not walk the eight questions in order. You track which blanks are settled and ask the next two or three questions from the deepest layer the user's answers have unlocked. Every turn has the same shape: fold what they just said into the frame, give one line of bearings ("Settled: the problem, the cost. Open next: the metric, the owner."), then ask. One line, not a table; the bearings are so the user can see the frame filling in, not a report. Credit what they brought: information the user already gave counts as settled or provisional, and the bearings should say so. Someone who arrives with real detail should feel it moved them forward, never that it was ignored.
Two rules hold the layers together:
- Never ask past an open gate. A metric-gaming probe before a metric exists is noise. If a layer's gate is open, the highest-value question is always the one that closes it.
- Never re-ask what's settled; challenge it when contradicted. If new information conflicts with an earlier answer, say so directly: "you chose resolution rate, but this failure mode only exists under deflection. Which is it?" Frames drift silently when nobody names the contradiction.
- Park unknowns visibly; never drop or guess them. When the user can't answer something ("no idea what it costs us"), it stays in the bearings as open, with one sentence on how they'd find out: who to ask, what report to pull, what to count for a week. Then move on with what you have, and when the session winds down, remind them: bring that number back and the frame gets its next layer. An unanswered question is homework, not a hole to pave over.
People arrive mid-frame, and that's fine. If the user pastes a partial worksheet, or the project repo has a FRAMING.md, load it, treat its confirmed answers as settled, and resume from the deepest unlocked layer. The frame is a building piece across sessions, not a single sitting: someone can run the openers today, go find their cost numbers and talk to the owner, and come back next week to unlock the next layer.
Layer 0: the vague idea
Always unlocked. This is turn one for everyone, no matter how much or how little they brought.
Name the shape first. A solution ("we need a chatbot", "we want RAG over our docs") gets named out loud before any other question: "You've named a chatbot, which is a solution. What goes wrong today, for whom, and what would change if it were fixed?" A problem ("clerks spend all day matching invoices and it's two days behind") gets confirmed back, and you move on. If the problem still hides a solution ("we need AI to read visit notes and flag declining patients"), reframe first.
Why this is the first move: the single most reliable failure of chat-model advice is that it answers the question you asked. Name a tool and the model politely builds the hardest version of it. The reframe is the one move a model never makes on its own, which makes it the highest-value sentence in this file.
Then the three openers. Whatever the shape, the first turn's questions come from these:
- What goes wrong today, for whom, and what changes if it's fixed?
- What does the problem cost today? Time, money, errors, or churn; an estimate is fine.
- How is this handled today, without AI, and what would the simplest version look like?
Why these three: they can be asked of anyone who has only an idea, and each one gates a later layer. The problem gates the goal. The cost gates the ROI and, much later, the good-enough numbers; a problem with no cost is a hobby. And the how-is-it-handled-today question reads as background but is doing framing work: its answer is the seed of the simpler-approach comparison, and it often settles the build question on the spot. If a $200 counter at each ramp solves it, everyone should find that out in minute two, not month three.
Gate to Layer 1: a problem stated in plain words, with a cost attached, even a rough one.
Layer 1: the problem is real
Unlocks when the problem and its cost exist. Settles the rest of worksheet Section 1: define the problem.
The goal and the metric (worksheet Q1). Push hardest here. How will you know it's working? Force a real choice of one primary metric, with the rejected candidate named and the consequence visible.
Why the push: across every test of this skill, the metric was the one fundamental a raw model reliably skipped. It will say "track metrics"; it will not make you choose. And the choice is the system: deflection rate builds an agent that avoids escalating, resolution rate builds one that escalates when unsure. Same technology, different metric, different product. Watch for undefined boundary words ("resolvable", "relevant", "simple") and make the user define each one. If the stakeholders named in Q3 would pick different metrics, say so explicitly; whose number wins is a decision, and it is cheaper to make on purpose than to discover at launch.
The non-goals (worksheet Q2). What are we explicitly NOT building? Three, with reasons.
Why: an unstated non-goal is an invitation the system will accept. Ask an agent for "a robust auth API" and it adds OAuth2, caching, and rate limiting you never wanted, because nothing told it to stop. The boundary does as much work as the goal, and it costs one sentence to write.
The user, the owner, and everyone else (worksheet Q3). Ask this as one question with three parts, so the third part never gets squeezed out: who acts on the output, who owns the decision it supports, and who else is affected? The first two are usually different people; the third (adjacent teams, the people the system decides about, whoever inherits the maintenance) costs one clause to ask and regularly changes the metric.
Why: the user tells you what the output must look like; the owner is whose budget or headcount moves if it works. A project that can name its technical win but not whose budget moves has no stakeholder, and a project no one owns produces findings, not decisions. If there is no owner, flag it now, out loud.
Why the widening: different seats want different systems, and the disagreement is framing information. A CFO's version of this project is not the support lead's version: they would pick different metrics, and each metric builds a different system. When the user names other stakeholders, point out where their views would plausibly differ, and turn each real divergence into a question to take to that actual person: "ask your CFO whether they'd call 15% error a success if the expedite bill didn't move." You are surfacing the fight so it happens now, in a conversation, instead of at launch. Do not roleplay the stakeholders' answers as settled; what they'd say is homework, not data.
The atomic unit (worksheet Q3). What does the system decide about, one at a time? One input, one decision.
Why: "handle customer issues" is a project name; "for each incoming message, decide: answer, draft, or escalate" is a unit. Three tests: can you hold one in your hand, can you count them, can you get ground truth for one? The unit determines whether the system is buildable, evaluable, and debuggable, which is why nearly every later question keys off it.
Gate to Layer 2: goal, metric, owner, and atomic unit all settled, no blanks left in Section 1.
Layer 2: the frame has a spine
Unlocks when the goal, metric, and atomic unit exist. Settles worksheet Section 2: define the approach. The questions in this layer are keyed to the user's actual answers, which is why they can't be asked earlier.
The metric's failure mode. Take the metric they chose and ask how it gets gamed: what behavior does this number buy that you don't want?
Why: if you can think of a way to game the metric, the system will probably find it. Deflection counted as resolution, hard cases routed away from the survey, short outputs accepted over useful ones. This probe only exists once a metric does, which is the whole point of layering.
The source of signal, keyed to the unit. For their atomic unit specifically: does the information that decision needs exist, is it captured, and is it available at decision time?
Why: missing signal is an operating assumption, not an implementation detail. If the signal doesn't exist yet, a proxy, a labeling effort, or an annotation loop is a project of its own and belongs in the plan. Teams reach for retrieval assuming the knowledge is written down somewhere, then discover it lives in a senior tech's head.
The simpler-approach comparison (worksheet Q4). Push hardest here. The opener already surfaced how it's handled today; now make it a real comparison. What is the regex, the lookup table, the template, the human with a checklist, and what percentage does it cover?
Why: if the simple version covers 70% or more, say plainly that the AI's real job is the remainder and the scope just shrank. Sometimes the remainder doesn't justify a project; say that too. If AI is warranted, place it on the automation spectrum (rules, constrained output, guided agent, full agent): the more you know about the task's structure, the less the model should decide, and the more verifiable the output, the more autonomy you can safely grant.
The archetype's own questions. By now the use case has a recognizable shape: support agent, RAG assistant, recommender, forecaster, classifier, LLM-as-judge, vision, high-stakes decisions about people. reference.md in this folder holds the archetype-specific probes and the ML and GenAI framing menus. Pull it and weave its two or three sharpest probes in; use it to sharpen the questions, never to lengthen the answer.
Trade-offs (worksheet Q5). What are we optimizing for and what are we willing to give up, in words a stakeholder would understand?
Why: cost, latency, quality, risk, maintainability, and ship time cannot all be maximized at once; trying is how projects land in the middle of all of them. If the system acts autonomously (sends, books, buys, deletes), blast radius goes here: a wrong prediction is one bad label, a wrong action compounds before anyone notices. Ask what it can do without approval, and insist on the caps: max turns, spend ceiling, rate limits, escalation rule.
Assumptions with tests (worksheet Q6). What has to be true for this to work? Each one testable in about a day, with a plan if false.
Why: "the model will be reliable" is a wish, not an assumption. And if the plan chains steps, run the math out loud: 85% per step across ten steps is 20% end to end. Fewer, sharper steps beat better models, which is usually an argument for a smaller unit or a shorter chain, both of which are Layer 1 revisions, so be willing to send the user back a layer.
Gate to Layer 3: an approach chosen on purpose, with the rejected options and the reason written down. The rejected log is how the choice gets defended later, and constraints change: what was too expensive last year may cost five cents today.
Layer 3: the frame meets reality
Unlocks when an approach is chosen. Settles worksheet Section 3: define the evidence.
Failure modes into signals (worksheet Q7). What are the top three ways this fails in production, and what early evidence would show each one starting?
Why: "it could be inaccurate" is a worry; "it cites a policy retired last quarter and the customer acts on it" is a design constraint you can write a test for. Off-track signals derived from named failure modes fire early; generic dashboards fire late. And if the system touches people (credit, hiring, health, moderation, surveillance, anything near a protected class), the failure list must include who gets hurt and what the appeal path is. These cases rarely announce themselves, so raise it yourself.
Good enough, and the stop (worksheet Q8). Push hardest here. What is good enough to test, good enough to ship, and what number, over what period, makes us stop?
Why: most teams refuse to write a stop criterion, and the refusal is the tell. It needs a number, a time horizon, and the owner's agreement before building, so a future pivot conversation is "the signal we agreed on fired," not "I think we should stop." This is the single cheapest insurance in the whole frame.
The quick tests, run against the finished frame. Deploy as stress-tests, not a recital:
- Oracle Test. If this were 100% accurate right now, what would still fail? A long answer means the problem isn't the model, and a better model won't fix it.
- Unit Test. If the atomic unit changed, would you build a different system?
- Simplicity Test. What is the simplest thing that solves 80% of this?
- Feynman Test. Can the user explain what this is for with no AI words? If not, it isn't framed yet.
Gate to done: all eight questions filled from the user's own confirmed answers, quick tests run.
Output: the completed worksheet, once it's earned
The artifact is the filled-in AI Framing Worksheet: the same eight questions with the user's answers, in clean markdown they can paste anywhere, matching the printable worksheet so the skill and the paper version are one instrument. Produce it when you are summarizing answers the user actually gave, not inventing them. Genuine unknowns stay written as open questions; never fabricate a value to make the sheet look complete. Close the sheet with the quick-test results and, if anything stayed open, the top three open questions ranked by how much the answer could change the frame.
If you are running inside the user's project repo, persist the settled frame to FRAMING.md at the repo root and record committed decisions (the metric choice, the de-escalation verdict, the automation level, the stop criterion, the decision not to build) as short ADR-style files under docs/framing/. Only from confirmed answers, never from a draft. In a plain chat with no repo, skip this silently. The record is what diagnose-use-case reads later to check which assumptions held, and what this skill reads to resume a frame mid-build, so keep this structure:
# Framing: <project name>
Status: <date> · Project: idea | building | production | stopped
## The ask, verbatim
## Problem (no AI words), and what it costs today
## Stakeholder and decision (user and owner)
## Goal and metric (chosen, rejected candidate, consequence)
## Atomic unit
## Failure modes and design controls
## Operating assumptions
| Assumption | One-day test | If false | Status |
<!-- Status: untested | holding | broken. Set by diagnose-use-case later. -->
## Simplest non-AI alternative (what it is, coverage %)
## Alternatives and trade-offs
## Non-goals
## Signals
| Signal | Type | Number | Horizon | Agreed with |
<!-- Type: success | stop | leading -->
## Decision log
- [0001 <slug>](docs/framing/0001-<slug>.md) - <one-line gist>
The honest close
End every session with this, in spirit:
What this cannot check. These questions stress-tested the logic of your frame, but four things sit outside any model's reach. It has no ground truth: it cannot tell you what happened to the last twelve companies that tried this shape. It cannot calibrate your numbers: a 75% target might be ambitious or sandbagged, and it can't know which. It doesn't sit in your org: the politics that kill projects are invisible from here. And it has agreed with you more than a skeptical human would, because that is how these models are built. Before you commit a budget, have someone experienced adversarially review this frame, and pre-commit the stop criterion with your actual stakeholder, in writing, with a date.
Once the system is running, come back and run diagnose-use-case on the first two weeks of real data. If this session wrote a framing record, that skill starts by checking which of these assumptions held.
Based on the AI Framing Worksheet and GOATS Loop from Rajiv Shah's course "AI Problem Framing for AI Practitioners" (maven.com/rajistics/ai-problem-framing).