Playbook · Interactive
Building an in-product copilot for a B2B app
The six steps from a request to a saved change with a receipt, a value model for one customer workspace, and templates to start from.
What the copilot does#
An in-product copilot turns a request into a change inside the product’s own objects. The person reviews the exact change where the objects live, and the product keeps a receipt and a way back.
Step 1 of 6
A person asks, or the copilot notices
A person asks in the side panel, or the copilot spots something worth a change, like QA tasks stuck in an old sprint. The request starts from the page the person is on.
Levers
- Entry pointsSide panel, inline command, a nudge on the page
- Who can askEvery seat, or only roles with edit access
- NoticingOff by default; on for one written rule
Patterns
In the cost model: Tasks per active personStep 2 of 6
Gather context within the person’s access
The copilot reads the objects the request names, with the person’s own permissions. What the copilot read stays visible, so the reviewer knows what the draft rests on.
Levers
- ReadsThe current page, linked objects, search
- PermissionsThe person’s own access, never a wider account
- FreshnessRead again right before the commit
Patterns
In the cost model: Share of tasks in scopeStep 3 of 6
Propose the change as a draft in the real object
The copilot writes the change into the product’s own objects as a draft: the tasks, fields and dates, not a paragraph about them. Nothing is saved yet.
Levers
- Draft formPending edits on the real tasks
- SizeAt most 50 objects in one change
- Filled-in choicesMarked, like dates the person didn’t name
Patterns
In the cost model: Cost per taskStep 4 of 6
Review in the product’s own screen
The person reviews the exact change where the objects live, with before and after values. The person can drop items, edit a field, or reject the whole draft.
Levers
- WhereThe board or record view, not the chat
- What showsEvery item, before and after, what can’t be undone
- ChoicesAccept all, accept some, edit, reject
Patterns
In the cost model: Acceptance rateStep 5 of 6
Commit exactly what was approved
The product saves the approved items as the person, after checking access and that nothing changed since the review. Items that changed go back for review.
Levers
- Acting accountThe person who approved
- Staleness checkCompare with the reviewed version
- Partial failureReport each item; never fail silently
Patterns
In the cost model: Review minutes per changeStep 6 of 6
Leave a receipt and an honest undo
The product records what changed, who approved, and what can be undone. Undo skips items someone edited since, and names them.
Levers
- Receipt fieldsRequest, approver, items, before and after
- Undo windowUntil someone edits the item
- Undo limitsNamed: notifications already sent stay sent
Patterns
In the cost model: Error and undo rate1 / 6 Ask
The value model#
One customer workspace, one month. Change any lever: the waterfall shows the time accepted changes save, and what review, fixes and running the copilot take back.
Example inputs, not benchmarks. Every default is made up, except the published prices under “Running the copilot”, which link to the vendor’s page. Replace each number with the team’s own.
Where the monthly value goes
- Total
- Adds value
- Costs
- Time saved by accepted changes+$9,504
- Reviewing every draft−$2,880
- Fixing and undoing wrong changes−$792
- Running the copilot−$79
- Upkeep: prompts, tools, tests−$1,800
- Net value per month$3,953
The axis starts at $0.
Point at a bar to see how the step is calculated.
How each bar is calculated
| Step | Calculation | Monthly |
|---|---|---|
| Time saved by accepted changes | 792 accepted changes × 12 min × $60/h | +$9,504 |
| Reviewing every draft | 1,440 drafts × 2 min × $60/h | −$2,880 |
| Fixing and undoing wrong changes | 40 wrong changes × 20 min × $60/h | −$792 |
| Running the copilot | 1,440 drafts × (20,000 in × $2 + 1,500 out × $10) per million tokens | −$79 |
| Upkeep: prompts, tools, tests | 30 h × $60/h | −$1,800 |
| Net value per month | Time saved minus every cost above | $3,953 |
Cost per result
Review, fixes, the copilot’s price and upkeep come to $5,551 a month. Divided by drafts, then by accepted changes, next to a person doing the change by hand.
- Per draftLooks cheap: rejected drafts are spread thin.$3.86
- Per accepted changeThe number to manage.$7.01
- By handMinutes by hand × hourly cost.$12.00
The copilot’s price alone is $0.100 per accepted change. With these inputs, the largest cost is reviewing every draft.
People’s time
67 h returned a month, across 80 people.
- A rejected draft saves nothing: the person does the change by hand after spending the review time.
- Saved minutes are worth money only when people spend them on other work.
What counts as an accepted change
In this model, an accepted change is a draft a person approved and nobody had to undo or fix. A draft the person rewrote from scratch counts as rejected, and still costs its review time.
- When Sidekick fills in a form, Shopify highlights each field Sidekick generated, so the merchant sees what the agent added before saving.Getting help and guidance from Sidekick
- Before a Custom Agent writes to an outside tool, Notion shows the exact action and asks for confirmation. Confirmation is the default for writes.MCP connections for Custom Agents
- Linear bills failed runs, retries and partial completions, so cost per accepted change has to count every attempt.AI credits
Templates#
Copy or download. The spreadsheet carries the numbers from the value model above, with live formulas.
Copilot spec: product name
Highlighted text is a blank to fill in. The words inside are an example.
1. The jobs
- Jobs
- Reschedule tasks, reassign owners, draft status updates
- Users
- Anyone with edit access to the project
- Where the copilot appears
- Side panel on project, board and issue pages
- Out of scope
- Billing, permissions, deleting objects
2. Objects the copilot may touch
| Object | Reads | May change | Limit |
|---|---|---|---|
| Tasks | Yes | Dates, sprint, assignee, status | Up to 50 in one change |
| Projects | Yes | Status update drafts | Never publishes |
| Comments | Yes | Adds new ones only | Marked as drafted by the copilot |
| Members and permissions | Names only | Nothing | None |
3. Approval rules
- Every change is a draft until a person approves it in the object’s own screen.
- The approve button names the outcome, like “Move 12 tasks”.
- Notifications to people outside the team, and anything that can’t be undone, show before the button.
- An approval covers this draft version and these items. An edit since the review asks again.
4. Undo guarantees
- Undo works for 30 days or until someone edits the item, whichever comes first.
- Undo restores the fields the copilot changed, skips items edited since, and names them.
- Undo can’t unsend notifications or emails; the receipt lists them.
- Stop, cancel and undo are separate controls with separate results.
5. Receipt fields
| Field | Example |
|---|---|
| Request | “Move the QA tasks for 2.4 to next sprint” |
| Context read | Release 2.4, 14 tasks |
| Approved by | Name, date and time |
| Acting account | The approver |
| Items | 12 changed, 2 dropped, 0 failed |
| Before and after | Per item: sprint, due date |
| Side effects | 3 watchers notified |
| Undo | Available until an item is edited |
6. Owner and success metric
- Owner
- Name, team. Reviews the spec every quarter.
- Success metric
- Cost per accepted change under $X, acceptance above X%.
- Guardrails
- Undo rate under X%. Zero writes without an approval.
- Review
- 20 accepted and 20 rejected drafts a week.
0 of 21 checked
- Every input from the cost model above, with the numbers on screen now.
- Every output as a live formula: change an input in the sheet and the rest recalculates.
- Opens in Google Sheets and Excel. The file is made in the browser; nothing is uploaded.
What the real products do#
Three copilots from the teardowns, and one finding from each.
- Shopify SidekickShopify
“15% off this weekend” becomes a discount that ends Monday
In Shopify’s tutorial, Sidekick fills in the real discount form, and the end date runs to Monday night. The form puts the extra day on screen; a chat reply would hide it.
- Notion AgentNotion
Removing someone from a page doesn’t remove their access through the agent
In Notion’s BudgetBot example, a lead removed from a private page may still get information from the page by asking the Custom Agent. Closing the route means removing the page from the agent, or the person from the agent.
- Linear AgentLinear
A human assignee plus an agent delegate
A Linear issue can have a teammate as assignee and an agent as delegate. The agent does the work; the teammate keeps ownership, and the Activity feed records each change.
How the numbers were sourced
The published prices in the calculator come from the vendors’ own pages, read on September 29, 2026: Anthropic, Claude Sonnet 5.5 at $2 per million input tokens and $10 per million output tokens, Linear, $0.07–$0.20 for a typical run without a coding session and Atlassian Rovo, $0.01 per credit above the monthly allowance, with 70 credits per user per month on Jira Premium. Every other calculator number is an example input. The product findings come from the teardowns, whose sources were checked September 28, 2026.
The person approves the exact change; the agent runs only that.