You have seen abstraction before in its algorithmic form: a sorted array abstracted into a search interface, a graph abstracted into a routing API, a hash function hidden behind a key-value store. Each boundary separates what a caller can do from how the system does it. This chapter applies the same logic to user intent. The Jobs-to-Be-Done framework draws an abstraction boundary between the job — the outcome a user is trying to achieve — and the product — the mechanism hired to achieve it. A product that exposes its internal implementation rather than the job is like an API that leaks its data structures: technically correct, but harder to use than it should be.