> ## Documentation Index
> Fetch the complete documentation index at: https://docs.snowdoughnut.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Angle library

> Every angle in rotation, with its type, customer profile, live hooks, and read date. Check the coverage tables before writing a new angle, and file a row when one enters production.

One row per angle. An angle is not in production until it has a row here.

The library exists to answer a question no individual brief can: across everything running right now, how many different arguments are actually in market. An account with twenty creatives and one argument has a diversity problem that only shows up when the angles are listed side by side.

<Info>
  Rows are filled from a completed [angle brief](/angle-brief). Type values come from the [message angle dictionary](/ad-name-conventions#message-angle) in the ad naming conventions, which is what a report groups by.
</Info>

## Before you add an angle

<Steps>
  <Step title="Read the register below">
    If an angle already makes this argument, add a hook to it rather than creating a second entry.
  </Step>

  <Step title="Check the coverage tables">
    A gap is a better reason to write a new angle than an idea that arrived on its own.
  </Step>

  <Step title="Fill in the brief, then add a row">
    A row with no brief behind it is a name, not an angle.
  </Step>
</Steps>

## The register

*Rows 1 and 2 show examples using Doughnut Labs, a SaaS company that sells disruptive Doughnut Technology. Delete them and fill in your own.*

| Short form           | Angle                        | Type          | Customer profile                              | Live hooks | Channels            | Status         | Read date          | Brief                       |
| :------------------- | :--------------------------- | :------------ | :-------------------------------------------- | :--------- | :------------------ | :------------- | :----------------- | :-------------------------- |
| *E.g.* `MONDAYBACK`  | *E.g. Monday morning back*   | *E.g.* `OUTC` | *E.g. [Mid-market RevOps lead](https://link)* | *E.g. 3*   | *E.g. Meta, Search* | *E.g. Live*    | *E.g. 15 Sep 2026* | *E.g. [link](https://link)* |
| *E.g.* `BROKESCRIPT` | *E.g. The script that broke* | *E.g.* `PROB` | *E.g. [Mid-market RevOps lead](https://link)* | *E.g. 2*   | *E.g. Meta*         | *E.g. Testing* | *E.g. 30 Sep 2026* | *E.g. [link](https://link)* |
| \[add angle]         |                              |               |                                               |            |                     |                |                    |                             |

## What each angle argues

The overlap check. Two angles whose propositions cannot be told apart in one sentence are one angle with two names.

| Short form           | The proposition, in one sentence                                                                 | Who it is not for                        |
| :------------------- | :----------------------------------------------------------------------------------------------- | :--------------------------------------- |
| *E.g.* `MONDAYBACK`  | *E.g. The four hours you spend rebuilding the Monday report could be spent reading it.*          | *E.g. Teams with no recurring report*    |
| *E.g.* `BROKESCRIPT` | *E.g. You already tried automating this and it broke. This is built to survive a schema change.* | *E.g. Anyone who has never attempted it* |
| \[add angle]         |                                                                                                  |                                          |

## Coverage

The two tables that turn a list into a diversity check. Fill them from the register above.

### By angle type

A column of zeros is an argument the account is not making at all.

| Type                      | Live angles | Note                                                                 |
| :------------------------ | :---------- | :------------------------------------------------------------------- |
| Social proof (`SOCPROOF`) | *E.g. 0*    | *E.g. Gap. We have the customer count and have never argued from it* |
| Discount (`DISC`)         | *E.g. 1*    |                                                                      |
| Urgency (`URG`)           | *E.g. 0*    |                                                                      |
| Problem (`PROB`)          | *E.g. 2*    |                                                                      |
| Outcome (`OUTC`)          | *E.g. 3*    | *E.g. Concentrated. Half of live spend sits on one type*             |
| Feature (`FEAT`)          | *E.g. 1*    |                                                                      |
| \[add type]               |             |                                                                      |

### By customer profile

A profile carrying one angle is a profile being spoken to one way.

| Customer profile                              | Live angles | Note                                               |
| :-------------------------------------------- | :---------- | :------------------------------------------------- |
| *E.g. [Mid-market RevOps lead](https://link)* | *E.g. 5*    |                                                    |
| *E.g. [Agency owner](https://link)*           | *E.g. 1*    | *E.g. Thin. One argument carrying a whole profile* |
| \[add profile]                                |             |                                                    |

<Note>
  Counting formats here would flatter the picture. The same proposition running as a static, a video, and a carousel is three executions of one argument, and reads as three rows only if format is mistaken for diversity. Count propositions.
</Note>

## Status values

| Status  | Meaning                                       |
| :------ | :-------------------------------------------- |
| Draft   | Brief written, nothing produced               |
| Testing | In market, before its read date               |
| Live    | Proven and in rotation                        |
| Resting | Paused deliberately, expected back. Note when |
| Retired | Stopped. Note the date and what it lost to    |

<Note>
  Retired rows stay in the library, with the reason. An angle that was tried and failed is the most useful row here, because it is the one that stops the same argument being proposed again next quarter as a fresh idea.
</Note>

## Review

Angles decline without announcing it, so the review is scheduled rather than triggered.

At each review, for every live angle:

* Is performance falling across every execution, or only in one? Across all of them points at the argument. In one points at the creative. See [angle fatigue is not creative fatigue](/angle-concepts#angle-fatigue-is-not-creative-fatigue).
* Are the proof points still current, and still cleared?
* Has the angle drifted past its guardrails in any live execution?
* Do the coverage tables still show more than one argument carrying the account?

<Warning>
  Producing more creative against a declining angle is the most expensive response available, because it looks like work and answers a question the data already settled. Check whether the argument is tired before scheduling the next shoot.
</Warning>

## Related resources

* [**Angle brief**](/angle-brief) The workbook a row here is filled from.
* [**Angle template**](/angle-template) The blank sheet for an angle you are adding now.
* [**Angle concepts**](/angle-concepts) Why creative diversity is measured in arguments rather than assets.
* [**Creative brief library**](/creative-brief-library) and [**copy brief library**](/copy-brief-library) Where the work built from these angles is filed.
* [**Customer profile library**](/customer-profile-library-overview) The other half of every row here.
