actions
/anty:actions — 3-Option Choice Approval with Nudge Architecture
/anty:actions — 3-Option Choice Approval with Nudge Architecture
Purpose
Present pending action proposals as structured 3-option choices, using behavioral nudge architecture to support high-quality decisions. Record choices to build the founder's preference profile over time.
Prerequisites
.anty/business-context.yamlmust exist. If not: "Run/anty:onboardfirst.".anty/actions/directory must contain at least one action file withstatus: proposed. If no pending actions: "No pending actions to review. Run/anty:planto generate strategy and action proposals."
Step 1: Load Context
Read the following files to build decision context:
.anty/business-context.yaml(founder's business context).anty/learning/preferences.yaml(if exists — accumulated preference distributions).anty/learning/choice-history.yaml(if exists — past choices).anty/learning/performance-labels.yaml(if exists — past action outcomes)- All files in
.anty/actions/withstatus: proposed
Step 2: For Each Pending Action
Process each proposed action one at a time. Never present multiple action decisions simultaneously.
2a: RECAP (Relevant Context and Priming)
Before presenting options, surface the founder's own data. This is NOT the agent's opinion — it is a mirror of what the founder has already said and what the data shows.
Format:
--- Your Context ---
Business: [product description from business-context]
Current traction: [key metrics from business-context or recent scans]
Strategic mode: [effectuation/causation/hybrid]
Distribution tier: [tier from business-context]
Pain classification: [painkiller/vitamin]
[Any relevant recent performance data from scans or action outcomes]
---
2b: Present 3 Options
Each option must include:
Option A: [Title]
What: [Clear description of the action]
Expected timeline: [How long this will take]
Expected results: [Quantified outcome — be specific]
Cost: [Money, time, effort required]
Time required: [Hours per week or total hours]
First step: [Channel factor — the concrete, immediate next action]
Option B: [Title]
[Same structure]
Option C: [Title]
[Same structure]
The 3 options MUST vary on at least 2 dimensions (e.g., channel + scale, approach + speed, cost + risk). Options should represent genuinely different strategies, not just mild variations.
2c: Default Selection Logic
Determine whether to present a Smart Default or Active Choice:
Smart Default (if preference data supports it):
- Check
.anty/learning/preferences.yamlfor relevant dimension distributions - If the dominant preference has >= 20 data points supporting it, highlight the option that aligns: "Based on your past choices, Option [X] aligns with your preference for [dimension pattern]. You can select A, B, C, or 'none'."
- Visual indicator: mark the default option with
[suggested]
Active Choice (if insufficient data):
- If fewer than 20 relevant data points, do NOT suggest a default
- Present all options equally: "Choose A, B, C, or 'none' to reject all."
2d: Operational Transparency
Explain WHY the options were constructed this way. Use source attribution — never say "I recommend" or "I think." Always ground in data:
- "Your data shows [X], which is why Option B includes [Y]."
- "Your business context indicates [distribution tier], so all options use [channel type]."
- "Your past choices show a preference for [pattern] (N=X data points)."
- "Your North Star metric is [metric], and Option A targets the [factor] component of that."
2e: Present to Founder
Combine RECAP + Options + Default/Active + Transparency into a single clear presentation.
Ask: "Select A, B, C, or 'none' to reject all options."
Step 3: Handle Response
If A, B, or C selected:
-
Post-decision reinforcement: Confirm the choice with data-backed reasoning (not praise):
- "Option [X] selected. Your [business context data point] supports this approach because [specific reason]."
- Never: "Great choice!" Always: "Your data supports this because..."
-
User contribution acknowledgment:
- "Your choice of [option title] recorded. This strengthens the [dimension pattern] in your preferences."
-
Record the choice in
.anty/learning/choice-history.yaml:
- id: choice-NNN
timestamp: [ISO 8601]
action_id: action-NNN
context: "[description of the decision context]"
options:
- id: a
description: "[Option A title and summary]"
dimensions: { [dim1]: [value], [dim2]: [value], [dim3]: [value] }
- id: b
description: "[Option B title and summary]"
dimensions: { [dim1]: [value], [dim2]: [value], [dim3]: [value] }
- id: c
description: "[Option C title and summary]"
dimensions: { [dim1]: [value], [dim2]: [value], [dim3]: [value] }
chosen: [a/b/c]
variedDimensions: [[dim1], [dim2]]
rationale: "[any reasoning the founder shared]"
-
Update action status: In the corresponding
.anty/actions/action-NNN.yaml, changestatus: proposedtostatus: approved. Also record:approved_at: [timestamp]chosen_option: [a/b/c]option_details: [the full details of the chosen option]
-
Update preferences: If
.anty/learning/choice-history.yamlnow has 5+ entries, recalculate preference distributions and save to.anty/learning/preferences.yaml.
If "none" selected (reject all):
- Do NOT present new options immediately.
- Ask a QUEST follow-up question: "What specifically felt wrong about these options? Was it the approach, the scale, the timeline, or something else entirely?"
- Listen to the response and identify which dimensions were misaligned.
- Record the rejection in choice history with
chosen: noneand the founder's feedback. - Generate 3 new options that address the founder's specific objections. Vary different dimensions this time.
- Repeat the presentation flow.
Choice History Numbering
- Check existing entries in
.anty/learning/choice-history.yamlto determine the next choice-NNN. - If the file doesn't exist, create it and start at choice-001.
File Creation
Ensure all directories exist before writing:
.anty/learning/for choice-history.yaml and preferences.yaml.anty/actions/should already exist (created by/anty:plan)
Preference Distribution Calculation
When 5+ choices exist, calculate distributions:
# .anty/learning/preferences.yaml
dataPoints: [total number of choices]
lastAnalyzedAt: [timestamp]
distributions:
[dimension_name]:
[value1]: [proportion 0.0-1.0]
[value2]: [proportion 0.0-1.0]
...
Proportions are calculated as: (times this value was chosen) / (times this dimension was varied).
Only include dimensions that have been varied in at least 3 choices.
Action YAML Structure
For reference, action files in .anty/actions/action-NNN.yaml follow this structure:
id: action-NNN
driver_id: driver-NNN
goal_id: goal-NNN
created_at: [timestamp]
updated_at: [timestamp]
status: proposed # proposed | approved | in_progress | completed | failed | rejected
title: ""
description: ""
approach: ""
expected_timeline: ""
expected_results: ""
cost: ""
time_required: ""
first_step: "" # Channel factor
chosen_option: null # a | b | c (set on approval)
approved_at: null # set on approval
option_details: null # full details of selected option
steps: []
effectiveness_score: null # set after completion
Behavioral Rules
- Source attribution: NEVER say "I recommend" or "I think" or "I suggest." ALWAYS use "Your data shows", "Based on your context", "Your past choices indicate."
- No sycophancy: Do not praise choices. Confirm with data.
- Transparency: Always explain the reasoning behind option construction.
- One decision at a time: Never batch multiple action approvals.
- Dimension variation: Track which dimensions were varied in each choice set to ensure preference learning covers all relevant dimensions over time.
- Empathic neutrality on rejection: If the founder rejects all options, treat this as valuable signal, not as failure. The rejection itself teaches the system about preferences.