M&A Deal Workbench — Counsel Task Skill
When to use
This skill applies whenever you are given a structured M&A transaction counsel task
with a deal workbench that exposes deal records, draft terms, playbooks, policies,
and diligence data through HTTP APIs. The task will ask you to prepare a structured
JSON answer — an issue register, closing package, committee escalation memo,
transition review, or deviation matrix — by gathering facts from the workbench and
comparing them against a playbook or policy.
Core workflow
1. Orient from the prompt
Read the task prompt to extract these invariants:
Role and side: Are you buyer-side or seller-side counsel? This determines which
playbook or policy to apply and whether draft terms that are absent or one-sided
are treated as pro-buyer or pro-seller issues.
Deal identifier: The deal_id (e.g. PRJ_XXXXX) that anchors all API lookups.
Transaction type: Asset purchase agreement, stock purchase agreement, public
company merger, or carveout APA. The type drives which terms are expected and which
template sections are in play.
Task category: One of a small set of recurring shapes —
| Category |
What you produce |
| Issue register |
Per-issue comparison of draft terms against a playbook, with risk ratings, recommended actions, quantified deltas, and a negotiation priority order. |
| Closing / economics package |
Holder-level consideration allocation, indemnity and escrow mechanics, NWC adjustment, required consents, employee and restrictive covenants, D&O tail, regulatory status, and closing-readiness classification. |
| Committee escalation memo |
Filter to only the current draft terms that exceed a policy threshold requiring committee approval; exclude in-policy, stale, and non-committee terms. Provide policy comparison, delta, benchmark context, exposure, recommendation, and aggregate summary. |
| Carveout transition review |
Focus on separation terms: IP/domain transition, TSA scope/duration/fees, purchase-price allocation, transfer taxes, employee continuity, outside date, governing law. |
| Deviation matrix |
Position-by-position matrix of buyer positions on indemnity, survival, materiality scrape, escrow, consents, HSR, and material contracts, with final-position enums, closing blockers, and risk totals. |
2. Read the answer template first
Every task provides an answer_template.json (or schema embedded in the prompt).
Read it before gathering data. It defines:
- The exact top-level keys your answer must contain.
- The allowed enum values for every categorical field (
risk_rating,
issue_status, recommended_action, final_position, etc.).
- The list of valid
issue_id values — use only these.
- The precision rules: integer dollars, decimal percent-points to n places,
integer months, holder percentages to four decimals, dates as
YYYY-MM-DD.
- Which fields are nullable vs. required in every object.
Never add keys that are not in the template. If a field is not applicable,
use null (JSON null), not a placeholder string or zero — unless the template
explicitly calls for a zero.
3. Gather data from the workbench
Use the documented API routes. The base URL is provided as <TASK_ENV_BASE_URL>.
The minimum set of endpoints to hit for any task:
| Endpoint |
What it provides |
Always needed? |
GET /api/deals/<deal_id> |
Deal metadata, headline value, playbook/policy id, side, signing date |
Yes |
GET /api/deals/<deal_id>/terms |
Current draft terms with numeric values, clause refs, staleness flags |
Yes |
GET /api/playbooks/<playbook_id>/rules |
Preferred, fallback, and limit values per category |
Yes (playbook tasks) |
GET /api/policies/<policy_id>/thresholds |
Committee-approval thresholds per category |
Yes (policy tasks) |
GET /api/deals/<deal_id>/employees |
Employee groups, counts, PTO liability, service-credit flags, WARN risk |
Yes |
GET /api/deals/<deal_id>/consents |
Third-party consents needed, amounts at risk, closing requirements |
Yes |
GET /api/deals/<deal_id>/regulatory |
HSR required, hell-or-high-water, threshold basis |
Yes |
GET /api/deals/<deal_id>/benchmarks |
Market median, upper quartile, sample size per category |
Yes |
GET /api/deals/<deal_id>/risk-estimates |
Exposure ranges (low/high) per risk category |
Yes |
GET /api/deals/<deal_id>/notes |
Deal-team guidance on posture, priorities, counterparty rationale |
Yes |
GET /api/deals/<deal_id>/cap-table |
Holder names, security classes, share counts, fully-diluted percentages |
When holders/structure matter |
GET /api/deals/<deal_id>/material-contracts |
Customer/supplier contracts, revenues, consent triggers |
When contracts are in scope |
GET /api/deals/<deal_id>/diligence-findings |
Findings with amounts, severities, topics |
When findings feed terms |
GET /api/deals/<deal_id>/documents |
Draft agreement versions, negotiation trackers, financial models |
When documents are referenced |
When the prompt mentions read-only SQL, use POST /api/query with the
provided token for cross-table verification — but the REST endpoints above are
the primary data source and are always sufficient.
4. Compare draft against playbook or policy
This is the central analytical step. For each category present in the playbook
or policy, locate the corresponding draft term (match by category field).
Determine issue_status:
| Situation |
issue_status |
| Draft numeric value ≤ playbook limit (seller) or ≥ playbook minimum (buyer) |
in_policy |
| Draft exceeds a playbook ceiling or falls below a playbook floor |
draft_exceeds_playbook / draft_below_playbook |
| No draft term exists but the playbook requires one |
missing_required_term |
| Draft exists and matches playbook |
in_policy |
Seller vs. buyer orientation flips the direction of "exceeds":
- Seller-side: wants lower caps, shorter survival, less escrow, no
financing condition. Draft values above the playbook preferred are
draft_exceeds_playbook.
- Buyer-side: wants higher caps, longer survival, more escrow,
full materiality scrape. Draft values below the playbook preferred are
draft_below_playbook.
For policy tasks (committee escalation):
- Only terms whose
restricted_flag is "yes" and whose draft value exceeds
the threshold_value are escalated. In-policy terms, stale terms, and terms
approved at a lower level are excluded. The template's excluded_in_policy_terms
and excluded_in_policy_categories fields should list what you considered but
did NOT escalate — this proves you reviewed everything.
Treat absent terms as issues when the data supports it:
A missing term (source_term_ids: []) is an issue when the surrounding deal
data shows the term is needed. Examples: employees exist but no employee-continuity
term; required consents exist but no consent-closing-condition term; HSR is
required but no HSR covenant.
Use stable identifiers from the workbench:
source_term_ids must contain the actual term_id values returned by the API
(e.g. "TERM_PRJ_XXXXX_NN"). Use an empty array [] only for missing terms.
- Consent IDs, employee IDs, finding IDs, contract IDs, and note IDs must match
the workbench exactly.
5. Calculate amounts
Purchase price basis: Use headline_value from the deal record as the
purchase-price basis for all percentage-to-dollar conversions unless the term
or playbook rule explicitly states a different basis (e.g. "enterprise value",
"upfront cash", "equity value").
Dollar amounts: percentage × headline_value ÷ 100, rounded to the nearest
integer dollar.
draft_amount_dollars = round(draft_percent / 100 * headline_value)
Deltas: The gap between the draft and the fallback position.
delta_to_fallback_dollars = draft_amount - fallback_amount
delta_to_fallback_months = draft_months - fallback_months (seller: draft exceeds → positive delta)
Exposure aggregation: Sum the exposure_low and exposure_high values from
/risk-estimates across the relevant categories. Use these for
total_quantified_exposure_low_dollars and total_quantified_exposure_high_dollars.
Employee totals: Sum count and pto_liability across all employee groups
in /employees. Count required_for_closing: "yes" consents for
required_closing_consent_count.
6. Assign risk, action, and priority
Risk rating defaults to the playbook's risk_default for that category.
Override based on deal-specific factors:
HIGH: Required consents from top-revenue customers with termination leverage;
terms where the draft is at the far extreme; regulatory conditions that can
block closing; financing conditions without adequate break fees.
MEDIUM: Terms where the draft exceeds playbook but a negotiated middle ground
is likely; missing terms with quantifiable but manageable exposure.
LOW: Standard terms with small deltas; governing law / forum preferences;
items where counterparty leverage is weak.
Recommended action (use only values from the template's enum):
| Situation |
Action |
| Remove an unwanted provision |
delete |
| Modify an existing provision |
revise |
| Insert a missing required term |
add |
| Accept the draft as-is |
accept |
| Escalate to business lead or committee |
escalate |
| Committee: approve as presented |
approve |
| Committee: approve with listed conditions |
approve_with_conditions |
| Committee: do not approve |
reject |
Priority order: Sort issues from highest negotiation priority (must-have
protections, closing blockers, largest dollar exposure) to lowest (nice-to-have
positions, small deltas). The deal notes often signal what the business team
considers must-have vs. tradeable.
7. Return JSON — and only JSON
The prompt will say "Return only valid JSON" or "Do not include narrative outside
the JSON." Follow this literally. Your entire response should parse as a single
JSON object conforming to the answer template.
Before returning, verify:
Task-type quick reference
Issue register (seller or buyer APA/SPA review)
- Get deal → terms → playbook rules.
- For every playbook rule, find the matching draft term by category.
- For every draft term not in the playbook, decide if it's benign or an issue.
- For every playbook rule with no matching draft term, decide if the deal context
requires it (→
missing_required_term) or if it's not applicable (→ omit).
- Populate the percent/month/amount fields that apply; leave others
null.
- Build
priority_order from highest to lowest negotiation urgency.
- Compute
summary_metrics from the register.
Closing / economics package (buyer SPA)
- Get deal → terms → cap-table → consents → employees → material-contracts →
regulatory → diligence-findings → playbook rules.
- Economics: Distribute headline value across holders by fully-diluted
percentage. Cash/stock split follows the deal's
upfront_cash and stock_value.
- Indemnity: Compare draft cap and survival against buyer playbook minimums.
- Escrow: Determine basis, required percentage, release timeline, and trigger.
- NWC: Check diligence findings for working-capital items; propose collar or
fixed-price treatment.
- Consents: Classify each consent as
closing_condition, notice_only, or
post_closing_covenant based on required_for_closing and contract type.
- Material contracts: Same classification; attach
annual_revenue.
- Employees: Total continuing employee count, PTO liability, service-credit
and WARN-risk employee IDs, required action.
- Restrictive covenants: Whether non-compete/non-solicit is required; which
holder groups must be covered.
- D&O tail: Whether required, period, cost allocation.
- Regulatory: HSR requirement, hell-or-high-water, closing-condition need.
- Closing readiness:
READY / READY_WITH_CONDITIONS / NOT_READY.
Classification depends on blocker count and severity.
Committee escalation (public company merger, policy-driven)
- Get deal → terms → policy thresholds → benchmarks → risk estimates → notes.
- Filter strictly: only terms flagged
restricted_flag: "yes" in the policy
AND whose draft values exceed the threshold_value.
- Exclude: in-policy terms, stale terms, non-committee categories, and
distractor terms (similar names, different deals).
- For each escalated term, build the full comparison:
draft_metric,
policy_metric, delta, benchmark, exposure, recommendation,
required_conditions.
- Benchmark position: Compare the draft value to the benchmark median and
upper quartile. Classify as
at_or_below_median, between_median_and_upper_quartile,
at_upper_quartile, or above_upper_quartile.
- Aggregate summary: Include both the escalated count and explicit lists of
what was excluded — the committee needs to know you reviewed everything.
Carveout transition review (seller APA)
- Get deal → terms → playbook rules → employees → consents → material-contracts →
regulatory → benchmarks → risk estimates.
- Focus on the eight standard transition issues: customer-consent termination risk,
employee continuity/PTO, governing law/forum, IP/domain transition,
outside-date extension, Section 1060 allocation, transfer-tax split, TSA scope/duration/fees.
- For each issue, capture both the
transition_issues entry (analysis) and the
corresponding required_redlines entry (the specific contractual fix).
draft_value_normalized and required_position_normalized capture the
comparison in a structured form; use the same units and shape for both.
operational_risk aggregates exposures: stranded cost gap, PTO liability,
consent amount at risk, top-customer annual revenue at risk, transition
disruption high estimate.
- Map each exposure to a
business_outcomes_protected value.
Deviation matrix (buyer SPA)
- Get deal → terms → playbook rules → consents → material-contracts → regulatory →
diligence findings → benchmarks → risk estimates.
- The seven standard positions: indemnity cap & basket, survival & knowledge,
materiality scrape, escrow/holdback/release, consent closing condition, HSR
condition, material contracts.
- For each position, provide
draft_percent/draft_months/draft_amount_usd,
the corresponding preferred_* and fallback_* values, and the
shortfall_to_fallback_usd / shortfall_to_preferred_usd.
final_position must be one of the template's position enum values.
- Closing blockers: List every consent, regulatory clearance, or material
contract that must be satisfied before closing. Each gets a
blocker_type,
must_be_satisfied_before_closing: true, and a risk rating.
- Risk totals: Aggregate across all positions.
indemnity_cap_shortfall_to_fallback_usd
is the gap between the draft cap amount and the buyer's fallback cap amount.
total_modeled_exposure_low_usd and total_modeled_exposure_high_usd sum the
risk-estimate ranges for relevant categories.
Common pitfalls
Wrong basis for percentage calculations: Always check the basis field on
each term and playbook rule. Most are "purchase price", but some are
"enterprise value", "equity value", or "upfront cash". Using the wrong
basis produces wrong dollar amounts.
Confusing percent values with decimal fractions: The workbench uses
percentage-point notation. A draft cap of 18% is 18.0, not 0.18.
Percentages round to the decimal places specified in the template's units.
Including stale or distractor terms: Check staleness_flag on draft terms;
stale terms should not be treated as current draft positions. Similarly,
playbook rules and policy thresholds from unrelated deal types should not be
applied.
Omitting the "excluded" lists in committee memos: The template has explicit
fields for excluded_in_policy_terms and excluded_in_policy_categories.
Populate these — they demonstrate completeness.
Skipping missing terms: When the playbook requires a provision and the draft
is silent, this is a missing_required_term issue. Do not omit it just because
there is no source_term_id to cite.
Mismatched priority_order: Every issue_id in issue_register must appear
in priority_order exactly once, and vice versa. The lengths must match.
Integer vs. float for dollars: Dollar amounts must be integers. Round to
the nearest dollar, not to thousands or millions.
Inventing IDs: Never fabricate term IDs, consent IDs, employee IDs, or
other stable identifiers. Use only the values returned by the workbench APIs.
1---2name: reflect-3-attempt-02-623description: M&A Deal Workbench — Counsel Task Skill4---5# M&A Deal Workbench — Counsel Task Skill67## When to use89This skill applies whenever you are given a structured M&A transaction counsel task10with a deal workbench that exposes deal records, draft terms, playbooks, policies,11and diligence data through HTTP APIs. The task will ask you to prepare a structured12JSON answer — an issue register, closing package, committee escalation memo,13transition review, or deviation matrix — by gathering facts from the workbench and14comparing them against a playbook or policy.1516## Core workflow1718### 1. Orient from the prompt1920Read the task prompt to extract these invariants:2122- **Role and side**: Are you buyer-side or seller-side counsel? This determines which23 playbook or policy to apply and whether draft terms that are absent or one-sided24 are treated as pro-buyer or pro-seller issues.25- **Deal identifier**: The `deal_id` (e.g. `PRJ_XXXXX`) that anchors all API lookups.26- **Transaction type**: Asset purchase agreement, stock purchase agreement, public27 company merger, or carveout APA. The type drives which terms are expected and which28 template sections are in play.29- **Task category**: One of a small set of recurring shapes —3031 | Category | What you produce |32 |---|---|33 | Issue register | Per-issue comparison of draft terms against a playbook, with risk ratings, recommended actions, quantified deltas, and a negotiation priority order. |34 | Closing / economics package | Holder-level consideration allocation, indemnity and escrow mechanics, NWC adjustment, required consents, employee and restrictive covenants, D&O tail, regulatory status, and closing-readiness classification. |35 | Committee escalation memo | Filter to *only* the current draft terms that exceed a policy threshold requiring committee approval; exclude in-policy, stale, and non-committee terms. Provide policy comparison, delta, benchmark context, exposure, recommendation, and aggregate summary. |36 | Carveout transition review | Focus on separation terms: IP/domain transition, TSA scope/duration/fees, purchase-price allocation, transfer taxes, employee continuity, outside date, governing law. |37 | Deviation matrix | Position-by-position matrix of buyer positions on indemnity, survival, materiality scrape, escrow, consents, HSR, and material contracts, with final-position enums, closing blockers, and risk totals. |3839### 2. Read the answer template first4041Every task provides an `answer_template.json` (or schema embedded in the prompt).42Read it **before** gathering data. It defines:4344- The exact top-level keys your answer must contain.45- The allowed enum values for every categorical field (`risk_rating`,46 `issue_status`, `recommended_action`, `final_position`, etc.).47- The list of valid `issue_id` values — use only these.48- The precision rules: integer dollars, decimal percent-points to *n* places,49 integer months, holder percentages to four decimals, dates as `YYYY-MM-DD`.50- Which fields are nullable vs. required in every object.5152**Never add keys that are not in the template.** If a field is not applicable,53use `null` (JSON null), not a placeholder string or zero — unless the template54explicitly calls for a zero.5556### 3. Gather data from the workbench5758Use the documented API routes. The base URL is provided as `<TASK_ENV_BASE_URL>`.59The minimum set of endpoints to hit for any task:6061| Endpoint | What it provides | Always needed? |62|---|---|---|63| `GET /api/deals/<deal_id>` | Deal metadata, headline value, playbook/policy id, side, signing date | Yes |64| `GET /api/deals/<deal_id>/terms` | Current draft terms with numeric values, clause refs, staleness flags | Yes |65| `GET /api/playbooks/<playbook_id>/rules` | Preferred, fallback, and limit values per category | Yes (playbook tasks) |66| `GET /api/policies/<policy_id>/thresholds` | Committee-approval thresholds per category | Yes (policy tasks) |67| `GET /api/deals/<deal_id>/employees` | Employee groups, counts, PTO liability, service-credit flags, WARN risk | Yes |68| `GET /api/deals/<deal_id>/consents` | Third-party consents needed, amounts at risk, closing requirements | Yes |69| `GET /api/deals/<deal_id>/regulatory` | HSR required, hell-or-high-water, threshold basis | Yes |70| `GET /api/deals/<deal_id>/benchmarks` | Market median, upper quartile, sample size per category | Yes |71| `GET /api/deals/<deal_id>/risk-estimates` | Exposure ranges (low/high) per risk category | Yes |72| `GET /api/deals/<deal_id>/notes` | Deal-team guidance on posture, priorities, counterparty rationale | Yes |73| `GET /api/deals/<deal_id>/cap-table` | Holder names, security classes, share counts, fully-diluted percentages | When holders/structure matter |74| `GET /api/deals/<deal_id>/material-contracts` | Customer/supplier contracts, revenues, consent triggers | When contracts are in scope |75| `GET /api/deals/<deal_id>/diligence-findings` | Findings with amounts, severities, topics | When findings feed terms |76| `GET /api/deals/<deal_id>/documents` | Draft agreement versions, negotiation trackers, financial models | When documents are referenced |7778**When the prompt mentions read-only SQL**, use `POST /api/query` with the79provided token for cross-table verification — but the REST endpoints above are80the primary data source and are always sufficient.8182### 4. Compare draft against playbook or policy8384This is the central analytical step. For each category present in the playbook85or policy, locate the corresponding draft term (match by `category` field).8687**Determine `issue_status`:**8889| Situation | issue_status |90|---|---|91| Draft numeric value ≤ playbook limit (seller) or ≥ playbook minimum (buyer) | `in_policy` |92| Draft exceeds a playbook ceiling or falls below a playbook floor | `draft_exceeds_playbook` / `draft_below_playbook` |93| No draft term exists but the playbook requires one | `missing_required_term` |94| Draft exists and matches playbook | `in_policy` |9596**Seller vs. buyer orientation flips the direction of "exceeds":**9798- **Seller-side**: wants *lower* caps, *shorter* survival, *less* escrow, *no*99 financing condition. Draft values *above* the playbook preferred are100 `draft_exceeds_playbook`.101- **Buyer-side**: wants *higher* caps, *longer* survival, *more* escrow,102 *full* materiality scrape. Draft values *below* the playbook preferred are103 `draft_below_playbook`.104105**For policy tasks (committee escalation):**106- Only terms whose `restricted_flag` is `"yes"` and whose draft value exceeds107 the `threshold_value` are escalated. In-policy terms, stale terms, and terms108 approved at a lower level are excluded. The template's `excluded_in_policy_terms`109 and `excluded_in_policy_categories` fields should list what you considered but110 did NOT escalate — this proves you reviewed everything.111112**Treat absent terms as issues when the data supports it:**113A missing term (`source_term_ids: []`) is an issue when the surrounding deal114data shows the term is needed. Examples: employees exist but no employee-continuity115term; required consents exist but no consent-closing-condition term; HSR is116required but no HSR covenant.117118**Use stable identifiers from the workbench:**119- `source_term_ids` must contain the actual `term_id` values returned by the API120 (e.g. `"TERM_PRJ_XXXXX_NN"`). Use an empty array `[]` only for missing terms.121- Consent IDs, employee IDs, finding IDs, contract IDs, and note IDs must match122 the workbench exactly.123124### 5. Calculate amounts125126**Purchase price basis:** Use `headline_value` from the deal record as the127purchase-price basis for all percentage-to-dollar conversions unless the term128or playbook rule explicitly states a different basis (e.g. "enterprise value",129"upfront cash", "equity value").130131**Dollar amounts:** `percentage × headline_value ÷ 100`, rounded to the nearest132integer dollar.133134```135draft_amount_dollars = round(draft_percent / 100 * headline_value)136```137138**Deltas:** The gap between the draft and the fallback position.139140```141delta_to_fallback_dollars = draft_amount - fallback_amount142delta_to_fallback_months = draft_months - fallback_months (seller: draft exceeds → positive delta)143```144145**Exposure aggregation:** Sum the `exposure_low` and `exposure_high` values from146`/risk-estimates` across the relevant categories. Use these for147`total_quantified_exposure_low_dollars` and `total_quantified_exposure_high_dollars`.148149**Employee totals:** Sum `count` and `pto_liability` across all employee groups150in `/employees`. Count `required_for_closing: "yes"` consents for151`required_closing_consent_count`.152153### 6. Assign risk, action, and priority154155**Risk rating** defaults to the playbook's `risk_default` for that category.156Override based on deal-specific factors:157- `HIGH`: Required consents from top-revenue customers with termination leverage;158 terms where the draft is at the far extreme; regulatory conditions that can159 block closing; financing conditions without adequate break fees.160- `MEDIUM`: Terms where the draft exceeds playbook but a negotiated middle ground161 is likely; missing terms with quantifiable but manageable exposure.162- `LOW`: Standard terms with small deltas; governing law / forum preferences;163 items where counterparty leverage is weak.164165**Recommended action** (use only values from the template's enum):166| Situation | Action |167|---|---|168| Remove an unwanted provision | `delete` |169| Modify an existing provision | `revise` |170| Insert a missing required term | `add` |171| Accept the draft as-is | `accept` |172| Escalate to business lead or committee | `escalate` |173| Committee: approve as presented | `approve` |174| Committee: approve with listed conditions | `approve_with_conditions` |175| Committee: do not approve | `reject` |176177**Priority order:** Sort issues from highest negotiation priority (must-have178protections, closing blockers, largest dollar exposure) to lowest (nice-to-have179positions, small deltas). The deal notes often signal what the business team180considers must-have vs. tradeable.181182### 7. Return JSON — and only JSON183184The prompt will say "Return only valid JSON" or "Do not include narrative outside185the JSON." Follow this literally. Your entire response should parse as a single186JSON object conforming to the answer template.187188Before returning, verify:189- [ ] Every `issue_id` is from the template's `possible_issue_ids` (or `stable_issue_ids`).190- [ ] Every enum field uses one of the template's `allowed_enums` values.191- [ ] Dollar amounts are integers; percentages are decimal numbers at the specified precision.192- [ ] `source_term_ids` match actual term IDs from the `/terms` endpoint.193- [ ] `priority_order` contains every `issue_id` from `issue_register` exactly once.194- [ ] `summary_metrics` counts are consistent with the `issue_register` contents.195- [ ] No extra keys, no missing required keys.196197## Task-type quick reference198199### Issue register (seller or buyer APA/SPA review)2002011. Get deal → terms → playbook rules.2022. For every playbook rule, find the matching draft term by category.2033. For every draft term not in the playbook, decide if it's benign or an issue.2044. For every playbook rule with no matching draft term, decide if the deal context205 requires it (→ `missing_required_term`) or if it's not applicable (→ omit).2065. Populate the percent/month/amount fields that apply; leave others `null`.2076. Build `priority_order` from highest to lowest negotiation urgency.2087. Compute `summary_metrics` from the register.209210### Closing / economics package (buyer SPA)2112121. Get deal → terms → cap-table → consents → employees → material-contracts →213 regulatory → diligence-findings → playbook rules.2142. **Economics**: Distribute headline value across holders by fully-diluted215 percentage. Cash/stock split follows the deal's `upfront_cash` and `stock_value`.2163. **Indemnity**: Compare draft cap and survival against buyer playbook minimums.2174. **Escrow**: Determine basis, required percentage, release timeline, and trigger.2185. **NWC**: Check diligence findings for working-capital items; propose collar or219 fixed-price treatment.2206. **Consents**: Classify each consent as `closing_condition`, `notice_only`, or221 `post_closing_covenant` based on `required_for_closing` and contract type.2227. **Material contracts**: Same classification; attach `annual_revenue`.2238. **Employees**: Total continuing employee count, PTO liability, service-credit224 and WARN-risk employee IDs, required action.2259. **Restrictive covenants**: Whether non-compete/non-solicit is required; which226 holder groups must be covered.22710. **D&O tail**: Whether required, period, cost allocation.22811. **Regulatory**: HSR requirement, hell-or-high-water, closing-condition need.22912. **Closing readiness**: `READY` / `READY_WITH_CONDITIONS` / `NOT_READY`.230 Classification depends on blocker count and severity.231232### Committee escalation (public company merger, policy-driven)2332341. Get deal → terms → policy thresholds → benchmarks → risk estimates → notes.2352. **Filter strictly**: only terms flagged `restricted_flag: "yes"` in the policy236 AND whose draft values exceed the `threshold_value`.2373. **Exclude**: in-policy terms, stale terms, non-committee categories, and238 distractor terms (similar names, different deals).2394. For each escalated term, build the full comparison: `draft_metric`,240 `policy_metric`, `delta`, `benchmark`, `exposure`, `recommendation`,241 `required_conditions`.2425. **Benchmark position**: Compare the draft value to the benchmark median and243 upper quartile. Classify as `at_or_below_median`, `between_median_and_upper_quartile`,244 `at_upper_quartile`, or `above_upper_quartile`.2456. **Aggregate summary**: Include both the escalated count and explicit lists of246 what was excluded — the committee needs to know you reviewed everything.247248### Carveout transition review (seller APA)2492501. Get deal → terms → playbook rules → employees → consents → material-contracts →251 regulatory → benchmarks → risk estimates.2522. Focus on the eight standard transition issues: customer-consent termination risk,253 employee continuity/PTO, governing law/forum, IP/domain transition,254 outside-date extension, Section 1060 allocation, transfer-tax split, TSA scope/duration/fees.2553. For each issue, capture both the `transition_issues` entry (analysis) and the256 corresponding `required_redlines` entry (the specific contractual fix).2574. `draft_value_normalized` and `required_position_normalized` capture the258 comparison in a structured form; use the same units and shape for both.2595. `operational_risk` aggregates exposures: stranded cost gap, PTO liability,260 consent amount at risk, top-customer annual revenue at risk, transition261 disruption high estimate.2626. Map each exposure to a `business_outcomes_protected` value.263264### Deviation matrix (buyer SPA)2652661. Get deal → terms → playbook rules → consents → material-contracts → regulatory →267 diligence findings → benchmarks → risk estimates.2682. The seven standard positions: indemnity cap & basket, survival & knowledge,269 materiality scrape, escrow/holdback/release, consent closing condition, HSR270 condition, material contracts.2713. For each position, provide `draft_percent`/`draft_months`/`draft_amount_usd`,272 the corresponding `preferred_*` and `fallback_*` values, and the273 `shortfall_to_fallback_usd` / `shortfall_to_preferred_usd`.2744. `final_position` must be one of the template's position enum values.2755. **Closing blockers**: List every consent, regulatory clearance, or material276 contract that must be satisfied before closing. Each gets a `blocker_type`,277 `must_be_satisfied_before_closing: true`, and a risk rating.2786. **Risk totals**: Aggregate across all positions. `indemnity_cap_shortfall_to_fallback_usd`279 is the gap between the draft cap amount and the buyer's fallback cap amount.280 `total_modeled_exposure_low_usd` and `total_modeled_exposure_high_usd` sum the281 risk-estimate ranges for relevant categories.282283## Common pitfalls2842851. **Wrong basis for percentage calculations**: Always check the `basis` field on286 each term and playbook rule. Most are `"purchase price"`, but some are287 `"enterprise value"`, `"equity value"`, or `"upfront cash"`. Using the wrong288 basis produces wrong dollar amounts.2892902. **Confusing percent values with decimal fractions**: The workbench uses291 percentage-point notation. A draft cap of 18% is `18.0`, not `0.18`.292 Percentages round to the decimal places specified in the template's `units`.2932943. **Including stale or distractor terms**: Check `staleness_flag` on draft terms;295 stale terms should not be treated as current draft positions. Similarly,296 playbook rules and policy thresholds from unrelated deal types should not be297 applied.2982994. **Omitting the "excluded" lists in committee memos**: The template has explicit300 fields for `excluded_in_policy_terms` and `excluded_in_policy_categories`.301 Populate these — they demonstrate completeness.3023035. **Skipping missing terms**: When the playbook requires a provision and the draft304 is silent, this is a `missing_required_term` issue. Do not omit it just because305 there is no `source_term_id` to cite.3063076. **Mismatched priority_order**: Every `issue_id` in `issue_register` must appear308 in `priority_order` exactly once, and vice versa. The lengths must match.3093107. **Integer vs. float for dollars**: Dollar amounts must be integers. Round to311 the nearest dollar, not to thousands or millions.3123138. **Inventing IDs**: Never fabricate term IDs, consent IDs, employee IDs, or314 other stable identifiers. Use only the values returned by the workbench APIs.