on
CAF (Comparison-Action Framework): A Meta-Framework for Problem Solving
⚠️ Disclaimer: This article was reviewed and edited by aka, with assistance from generative AI for idea refinement and writing.
Hey, it's aka.
Today I want to introduce CAF, a method I always use for problem solving. It's a simple framework that organizes problems using three elements: "target, base, and action". It's a versatile approach that can be applied from building exercise habits to cognitive behavioral therapy (CBT).
By the way, "CAF" is my own naming, so there may already be an existing method out there with the same idea. If so, please let me know.
What Is CAF?
CAF (Comparison-Action Framework) is a simple meta-framework for problem solving.
When you encounter a problem, place these three elements in your mind:
flowchart LR
B[Base] -->|Action| T[Target]
- Target: The reference point you want to compare against.
- Problems, goals, ideals, expectations, etc.
- Base: The starting state.
- Current state, premises, observations, constraints, facts, etc.
- Action: The intervention applied to the Base.
- The means to move from Base toward Target.
When solving a problem, you define these three in order from the top.
When problem solving isn't going well, CAF asks "which of the three is broken?"
* "Broken" here includes: ambiguous, undefined, misidentified, underestimated, weakly connected, etc.
CAF Usage Examples
Since CAF is a meta-framework, it might be hard to understand without examples.
Let's use "I want to exercise but can't keep it up" as our example.
- Target: Exercise
- Base: Can't stick with exercise
- Action: (Depends on Target and Base)
Setting the Target
If you set the target as "exercise", it's often too vague. What state do you actually want as a result of exercising?
- "Being able to pick up my grandchildren or great-grandchildren when they ask, even as an old man"
- "Losing 5kg so last year's clothes fit comfortably"
- "Running laps at the park every day and feeling refreshed"
- ...etc
When you think "I want to exercise", there was actually a moment when you thought "I want to become [some state]". Setting that state as your target keeps the action from drifting.
An extreme example of action drift: if your target is "being able to pick up grandchildren or great-grandchildren" but your action is "go running" — that won't move you closer to the target. "Strengthening arm, leg, and lower back muscles" would be a better action.
Setting the Base
"Can't stick with exercise" is also often too vague. Why can't you stick with it?
- "I have almost no exercise experience and don't know what to do"
- "I'm too exhausted after work to do anything"
- "Exercise is just too painful"
- ...etc
Even the above may still be vague — especially when emotions are involved, things often remain unclear until you actually try. My approach is usually to "keep digging until you arrive at an action where you think 'this should be fine'".
Setting the Action
With the Base and Target reasonably organized, you can now determine the action.
- Learn about exercise while doing push-ups
- Exercise before work
- Lower the exercise intensity
- ...etc
If the Base and Target are set properly, the action is easy to determine. Most of the time, it's about deciding the intensity and frequency of the action.
Putting it all together, you should now have a problem-solving definition like this:
- Target: Being able to pick up my grandchildren or great-grandchildren when they ask, even as an old man
- Base: Almost no exercise experience, don't know what to do
- Action: Learn about exercise while doing push-ups
How does that feel? Compared to the initial "I want to exercise but can't", the problem is clearer and feels more solvable, doesn't it?
Other Application Examples
Here are some additional application examples.
Example: Goals, Current State, and the Path Between
When you "have a goal but can't achieve it", CAF breaks it down like this:
- Target (goal) is vague
- The completion state isn't defined
- Base (current state) is underestimated
- Skills, time, dependencies, and constraints were viewed too optimistically
- Action (path) isn't good
- Direction: wrong choice of means, bad sequencing, no validation
- Intensity: not enough time, not enough volume
The key point of CAF is to avoid lumping "goal not met" together and instead identify which element has broken down.
Example: Cognitive Behavioral Therapy (CBT)
CAF naturally aligns with mental health methods like Cognitive Behavioral Therapy (CBT).
In CBT, you typically write out:
- What's happening now (situation)
- How you interpreted it (cognition)
- What emotions or reactions occurred (emotions/body)
- What you actually wanted (desired state)
In CAF terms:
- Base: Make the situation, cognition, and emotions "accurate" (reduce ambiguity)
- Target: Clarify "what state did I want to be in?"
- Action: Interventions to bridge the gap (reframing, behavioral experiments, self-care, etc.)
This is a great example of how the clearer the Base and Target become, the easier it is to design the Action.
Why CAF Works for Problem Solving
As shown in the examples, CAF classifies the causes of failed problem solving into three types:
- Target is inaccurate or vague
- Base is inaccurate or vague
- Action is inappropriate
- The direction and intensity of the action are misaligned between Base and Target
In my experience, when problem solving isn't working, it's always one of these three that's broken. Conversely, if you inspect these three one by one, you can see what needs fixing.
The reason I like CAF is that it eliminates the "I don't know what to think about" state. When you hit a problem, you can at least take the action of "let me think about the target, base, and action". Through that action, you start to see what's vague. Once you see it, you know what to do next. This cycle is CAF's strength.
Things to Keep in Mind When Using CAF
CAF is simple, but there are a few things I pay attention to when using it.
Write the Target as a "State"
When setting the target, I try to write it as a state like "being in a healthy body" rather than a behavior like "exercise".
Writing it as behavior makes it easy to confuse means and ends. If "exercising" becomes the goal, then exercise itself becomes the purpose, and you lose sight of the state you actually wanted.
Write the Base as Accurately as Possible
When writing the base, accuracy is key. Instead of wanting to write "I don't have time", be honest and write "I end up watching YouTube". Without this honesty, the action will be misaligned.
Start Actions Small
When deciding on an action, I try not to aim for big changes right away. "Do one push-up every day" is more sustainable than "exercise for one hour every day".
You can adjust the intensity later. First, confirm that the vector from Base to Target is correct — that's the priority.
Review Periodically
The three elements set in CAF can change over time.
- The Target changes (shift in values)
- The Base changes (change in circumstances)
- The Action's effectiveness changes (habituation, environmental changes)
When you feel "something's not working", it's time to review the three elements.
Summary
CAF (Comparison-Action Framework) is a meta-framework that captures problem solving through three elements: Target, Base, and Action.
flowchart LR
B[Base] -->|Action| T[Target]
- Clarify the Target → You know where you want to go
- Make the Base accurate → You know where you are now
- Make the Action appropriate → You know how to move
When problem solving isn't working, one of these three is broken. Inspect them one by one, and you'll always find an improvement point.
CAF is a framework I use daily, and it's been helpful in all sorts of situations — from mental health to relationship issues. Give it a try if you'd like.
See you next time.
Appendix: Advanced CAF Applications
CAF can be used beyond its basic form. Here are some advanced patterns I frequently use.
Advanced 1: Placing an "Assumption" in the Base
Normally, the Base contains your "current state", but you can also place an assumed self there.
For example, when dealing with "I'm bad at presentations", the normal setup would be:
- Target: Being able to present confidently in front of people
- Base: I'm bad at presentations and get nervous
- Action: ???
When the action doesn't come easily, try replacing the Base with an assumption:
- Base: "If I were someone who's great at presentations"
This makes you think "how would someone great at presentations behave?"
- They'd have perfect grasp of the content
- They'd watch audience reactions while speaking
- They'd have the composure to laugh off mistakes
- ...etc
These become hints for the action. At minimum, "have perfect grasp of the content" might emerge as an action.
This advanced pattern is effective when you "don't know what to do". By placing an ideal persona in the Base, the direction of the action becomes visible.
Advanced 2: When You Want to Move Away from the Target
CAF's basic form assumes "moving toward the Target", but sometimes you want to move away from the Target.
For example, "I want to stop being short-tempered":
- Target: My short-tempered self (a state to avoid)
- Base: My current self
- Action: A vector away from the Target
flowchart LR
B[Base] -->|Action| T[Target]
style T fill:#ffcccc
In this case, the action has a "move away" vector rather than "move toward":
- Avoid anger triggers
- Take a breath when feeling angry
- Distance yourself from anger-inducing environments
- ...etc
The key point is to clearly define the Target as the "state to avoid". "Short-tempered" alone is too vague — concretize it as "a state where I get irritated by trivial things and take it out on people around me".
This advanced pattern is effective when "I don't want to become this" is clear. It's surprisingly common for the state you want to avoid to be easier to picture than the state you're aiming for.