jobs-to-be-done

Understand customer motivations through job theory. Use when defining product strategy, conducting user research, identifying competitors, writing user stories, or reframing features around customer progress.

210 stars

Best use case

jobs-to-be-done is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Understand customer motivations through job theory. Use when defining product strategy, conducting user research, identifying competitors, writing user stories, or reframing features around customer progress.

Teams using jobs-to-be-done should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/jobs-to-be-done/SKILL.md --create-dirs "https://raw.githubusercontent.com/flpbalada/my-opencode-config/main/skills/jobs-to-be-done/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/jobs-to-be-done/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How jobs-to-be-done Compares

Feature / Agentjobs-to-be-doneStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Understand customer motivations through job theory. Use when defining product strategy, conducting user research, identifying competitors, writing user stories, or reframing features around customer progress.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Jobs-to-be-Done - What Are Customers Really Hiring?

Jobs-to-be-Done (JTBD) is a framework developed by Clayton Christensen and Bob
Moesta that focuses on the progress customers are trying to make in their lives.
Instead of asking "who is the customer?" it asks "what job are they hiring this
product to do?"

## When to Use This Skill

- Defining product strategy and positioning
- Conducting customer research interviews
- Writing user stories and requirements
- Identifying true competitors (often surprising)
- Finding innovation opportunities
- Understanding why customers switch products

## Core Concepts

### The Hiring Metaphor

```
Customer has a "job" to get done
           |
           v
    +-------------+
    | "Hires" a   |
    | product to  |
    | do the job  |
    +-------------+
           |
           v
   If it does well → keeps using
   If it fails → "fires" it, tries another
```

### The Milkshake Story

Clayton Christensen's famous example:

**Traditional approach**: "Who buys milkshakes? Demographics, preferences..."

**JTBD approach**: "What job is the milkshake being hired to do?"

Discovery: Morning milkshake buyers had a completely different job than
afternoon buyers.

| Time      | Job to Be Done                                                       | Competition                      |
| --------- | -------------------------------------------------------------------- | -------------------------------- |
| Morning   | "Make my boring commute more interesting + keep me full until lunch" | Bagels, bananas, coffee          |
| Afternoon | "Treat my child after a long day"                                    | Toys, playground time, ice cream |

### Types of Jobs

| Type           | Description                  | Example                                    |
| -------------- | ---------------------------- | ------------------------------------------ |
| **Functional** | Practical task to accomplish | "Help me file my taxes correctly"          |
| **Emotional**  | How I want to feel           | "Make me feel confident about my finances" |
| **Social**     | How I want to be perceived   | "Show others I'm responsible"              |

### Job Statement Format

```
When [situation/context]
I want to [motivation/job]
So I can [expected outcome]
```

## Analysis Framework

### Step 1: Identify the Job

Interview questions to uncover jobs:

| Question                                     | Purpose                |
| -------------------------------------------- | ---------------------- |
| "Walk me through the last time you [action]" | Get specific context   |
| "What were you trying to accomplish?"        | Uncover functional job |
| "How did that make you feel?"                | Uncover emotional job  |
| "What did you try before this?"              | Identify competition   |

### Step 2: Map the Forces

```
+------------------+------------------+
|   PUSH           |    PULL          |
|   (away from)    |    (toward)      |
|                  |                  |
| - Current pain   | - Better outcome |
| - Frustration    | - Emotional gain |
+------------------+------------------+
        |                   |
        v                   v
+------------------+------------------+
|   ANXIETY        |   HABITS         |
|   (of new)       |   (of old)       |
|                  |                  |
| - Will it work?  | - "I've always   |
| - Learning curve |    done it this  |
+------------------+    way"          |
                   +------------------+
```

For customers to switch: **Push + Pull > Anxiety + Habits**

### Step 3: Define True Competition

True competitors are anything hired for the same job:

**Job**: "Help me fall asleep faster"

| JTBD View   |
| ----------- |
| Sleep apps  |
| Melatonin   |
| White noise |
| Reading     |
| Exercise    |
| Wine        |

## Output Template

```markdown
## Jobs-to-be-Done Analysis

**Product/Feature:** [Name]

### Core Job Statement

When [situation] I want to [motivation] So I can [outcome]

### Job Dimensions

**Functional:** [What they're trying to accomplish] **Emotional:** [How they
want to feel] **Social:** [How they want to be perceived]

### Forces Analysis

**Push:** [Pain points driving change] **Pull:** [Benefits of new solution]
**Anxieties:** [Concerns about switching] **Habits:** [Behaviors keeping them in
place]

### True Competition

| Competitor | Job Performance |
| ---------- | --------------- |
| [Alt 1]    | [How well]      |
| [Alt 2]    | [How well]      |
```

## Real-World Examples

### Example 1: Snickers vs. Milky Way

| Product   | Job                                             | Competitors        |
| --------- | ----------------------------------------------- | ------------------ |
| Snickers  | "I'm hungry and need a quick, filling snack"    | Protein bars, nuts |
| Milky Way | "I want to treat myself to something indulgent" | Ice cream, cookies |

### Example 2: LinkedIn Learning

**Not hired for**: "I want to learn Python" (Udemy does this) **Hired for**: "I
want to show my employer I'm developing professionally"

## Best Practices

### Do

- Interview actual users about real past behavior
- Focus on the "hiring moment" and context
- Look for workarounds and "non-consumption"
- Identify emotional and social jobs

### Avoid

- Asking what features users want
- Taking stated preferences at face value
- Ignoring context and situation
- Focusing only on functional jobs

## Integration with Other Methods

| Method                  | Combined Use                       |
| ----------------------- | ---------------------------------- |
| **Hypothesis Tree**     | Structure job discovery hypotheses |
| **Five Whys**           | Dig into underlying motivations    |
| **Fogg Behavior Model** | Design for job completion          |

## Resources

- [Competing Against Luck - Clayton Christensen](https://www.amazon.com/Competing-Against-Luck-Innovation-Customer/dp/0062435612)
- [The Jobs to be Done Playbook - Jim Kalbach](https://www.amazon.com/Jobs-Be-Done-Playbook-Organization/dp/1933820683)

Related Skills

what-not-to-do-as-product-manager

210
from flpbalada/my-opencode-config

Anti-patterns and mistakes to avoid as a product manager. Use when evaluating leadership behaviors, improving team dynamics, reflecting on management practices, or onboarding new product managers.

visual-cues-cta-psychology

210
from flpbalada/my-opencode-config

Design effective CTAs using visual attention and gaze psychology principles. Use when designing landing pages, button hierarchies, conversion elements, or optimizing user attention flow through interfaces.

vercel-sandbox

210
from flpbalada/my-opencode-config

Run agent-browser + Chrome inside Vercel Sandbox microVMs for browser automation from any Vercel-deployed app. Use when the user needs browser automation in a Vercel app (Next.js, SvelteKit, Nuxt, Remix, Astro, etc.), wants to run headless Chrome without binary size limits, needs persistent browser sessions across commands, or wants ephemeral isolated browser environments. Triggers include "Vercel Sandbox browser", "microVM Chrome", "agent-browser in sandbox", "browser automation on Vercel", or any task requiring Chrome in a Vercel Sandbox.

value-realization

210
from flpbalada/my-opencode-config

Analyze if end users discover clear value. Use when evaluating product concepts, analyzing adoption, or uncertain about direction.

user-story-fundamentals

210
from flpbalada/my-opencode-config

Capture requirements from user perspective with structured user stories. Use when writing backlog items, defining acceptance criteria, prioritizing features, or communicating requirements between product and development.

typescript-satisfies-operator

210
from flpbalada/my-opencode-config

Guides proper usage of TypeScript's satisfies operator vs type annotations. Use this skill when deciding between type annotations (colon) and satisfies, validating object shapes while preserving literal types, or troubleshooting type inference issues.

typescript-interface-vs-type

210
from flpbalada/my-opencode-config

Guides when to use interface vs type in TypeScript. Use this skill when defining object types, extending types, or choosing between interface and type aliases.

typescript-best-practices

210
from flpbalada/my-opencode-config

Guides TypeScript best practices for type safety, code organization, and maintainability. Use this skill when configuring TypeScript projects, deciding on typing strategies, writing async code, or reviewing TypeScript code quality.

typescript-advanced-types

210
from flpbalada/my-opencode-config

Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications. Use when implementing complex type logic, creating reusable type utilities, or ensuring compile-time type safety in TypeScript projects.

trust-psychology

210
from flpbalada/my-opencode-config

Build trust signals that reduce perceived risk and enable user action. Use when designing landing pages, checkout flows, onboarding experiences, or any conversion point where user hesitation is a barrier.

theme-epic-story

210
from flpbalada/my-opencode-config

Structure product work hierarchically using themes, epics, and stories. Use when organizing backlogs, planning releases, communicating with stakeholders, or breaking down large initiatives into manageable work.

tailwind-v4-configuration

210
from flpbalada/my-opencode-config

Configure Tailwind CSS v4 with CSS-first approach. Use when installing, migrating from v3, setting up build tools (Vite/PostCSS/CLI), customizing themes with @theme, or configuring plugins.