Pick a depth. Each prompt opens in your AI pre-loaded with the lesson. Click a row to preview the prompt.
Users don't want 'AI' — they want a job done: a draft written, a document understood, an answer found in their own data. Framing your feature as a job-to-be-done keeps you honest about the outcome the user is paying for and stops you from shipping a generic chat box when what they needed was a one-click summarize button. This framing also tells you exactly what 'good' looks like, which is the input to every later decision about prompts, UX, and evaluation. Get the job wrong and no amount of model quality saves the feature.
Translate a vague 'add AI' ask into a concrete job statement with a triggering situation, the desired outcome, and the current painful workaround — the shape that makes a feature designable.
# A job-to-be-done captures situation -> motivation -> outcome.
job = {
"when": "I open a 40-page support thread", # triggering situation
"i_want_to": "understand what was already tried", # motivation
"so_that": "I don't repeat steps with the customer", # outcome that has value
"today_i": "skim manually for 5 minutes", # the painful workaround AI replaces
}
def is_designable(job):
# A good JTBD names a measurable outcome and a real current cost.
return bool(job["so_that"]) and bool(job["today_i"])
print("designable:", is_designable(job))
# The feature is now obvious: a thread summary that surfaces 'already tried' steps.python3 main.py