Motivation Profiles
Understanding how AMP builds and maintains user motivation profiles.
What is a Motivation Profile?
A motivation profile is a dynamic, multi-dimensional representation of what drives a specific user to complete tasks. Unlike static user personas, AMP profiles continuously evolve based on real behavioural data.
Profile Structure
Each user's profile contains:
interface MotivationProfile {
userId: string;
// Core preferences
preferredFraming: FramingType; // How to present tasks
communicationStyle: CommunicationStyle; // How to communicate
complexityPreference: ComplexityLevel; // Level of detail
encouragementLevel: EncouragementLevel; // Amount of positivity
// Learning metrics
totalInteractions: number;
completionRate: number;
averageTimeToStart: number;
flowStateFrequency: number;
// Confidence scores
framingConfidence: number; // 0-1
styleConfidence: number; // 0-1
complexityConfidence: number; // 0-1
// Contextual factors
taskTypeAffinities: Record<string, number>;
timeOfDayPatterns: TimePattern[];
// Metadata
createdAt: Date;
lastUpdated: Date;
profileVersion: string;
}Profile Evolution
Phase 1: Cold Start (0-5 interactions)
When a new user arrives, AMP has minimal data. During this phase:
- Uses population-level defaults from similar users
- Explores different approaches (higher exploration rate)
- Confidence scores start low (0.2-0.4)
- Learns quickly from each interaction
// First interaction - cold start
const context = await amp.getContext({
userId: "new_user_123",
task: "build a feature"
});
// Returns exploratory recommendation
{
suggestedFraming: "achievement", // Population default
confidence: 0.3, // Low confidence
explorationMode: true // Trying approaches
}Phase 2: Learning (5-20 interactions)
As data accumulates, AMP begins to identify patterns:
- Builds individual preference model
- Reduces exploration, increases exploitation
- Confidence scores increase (0.5-0.7)
- Starts personalising recommendations
Phase 3: Optimised (20+ interactions)
With sufficient data, the profile becomes highly personalised:
- High-confidence recommendations (0.7-0.95)
- Fine-tuned to individual preferences
- Detects and adapts to behaviour changes
- Occasionally explores to avoid local maxima
Framing Types
AMP learns which task framing resonates with each user:
Achievement Framing
Focuses on completion and results
✓ Best for:
- Goal-oriented users
- Users who track progress
- Competitive personalities
Example:
"Complete this feature to unlock the next level"
Learning Framing
Emphasises growth and exploration
✓ Best for:
- Curious users
- Those who value understanding
- Growth mindset individuals
Example:
"Explore how authentication works by building this"
Micro-Task Framing
Breaks tasks into tiny, manageable steps
✓ Best for:
- Users who feel overwhelmed
- Those who procrastinate
- Preference for clear next actions
Example:
"Just write the function signature first"
Challenge Framing
Presents tasks as puzzles to solve
✓ Best for:
- Problem-solvers
- Independent workers
- Those who like to figure things out
Example:
"Can you implement this without using a library?"
Communication Styles
AMP adapts how information is delivered:
| Style | Characteristics | Example |
|---|---|---|
| Brief Directive | Concise, action-focused, minimal context | "Run npm install. Create login.tsx." |
| Detailed Explanatory | In-depth, educational, context-rich | "First install dependencies because... Then create login.tsx which will handle..." |
| Conversational | Friendly, encouraging, approachable | "Great! Let's start by installing the packages you'll need..." |
| Technical | Precise, jargon-heavy, assumes knowledge | "Instantiate dependencies via package manager. Scaffold component hierarchy." |
Complexity Handling
Different users need different levels of guidance:
- Full Solution: Complete working code with explanation
- Break Into Steps: Step-by-step guidance through the process
- Hints Only: Clues and direction without direct answers
- High Level: Conceptual approach without implementation details
// Example: Same task, different complexity approaches
// Full Solution
"Here's the complete login component with authentication logic..."
// Break Into Steps
"Step 1: Create the form component
Step 2: Add validation logic
Step 3: Connect to authentication service..."
// Hints Only
"Consider how form state should be managed.
Think about validation timing.
What happens after successful login?"
// High Level
"You'll need a form component that validates inputs,
communicates with your auth service, and handles the response."Profile Updates
Profiles update automatically after each interaction. The update algorithm considers:
- Outcome: Did the user start/complete the task?
- Engagement: Time spent, flow state indicators
- Satisfaction: Optional explicit feedback
- Context: Task type, time of day, complexity
// Profile update after successful interaction
{
// Increase confidence in successful approach
framingConfidence: 0.75 → 0.82,
// Update completion rate
completionRate: 0.68 → 0.71,
// Reinforce successful pattern
preferredFraming: {
"micro_task": 0.85, // ↑ from 0.78
"achievement": 0.42, // ↓ slightly
"learning": 0.31, // ↓ slightly
"challenge": 0.19 // unchanged
}
}Multi-Context Profiles
Users may behave differently in different contexts. AMP can maintain sub-profiles:
// Different preferences by task type
{
userId: "user_123",
contexts: {
"coding": {
preferredFraming: "challenge",
communicationStyle: "brief_directive"
},
"learning": {
preferredFraming: "learning",
communicationStyle: "detailed_explanatory"
},
"debugging": {
preferredFraming: "micro_task",
communicationStyle: "technical"
}
}
}Privacy & Data Retention
Profile data is handled securely:
- User IDs are hashed and anonymised
- Only behavioural patterns stored, not task content
- Profiles can be deleted on request (GDPR compliance)
- Inactive profiles archived after 90 days
- All data encrypted at rest and in transit
💡 Pro Tip: You can manually update profiles using the updateProfile() API if you have explicit user preferences or want to accelerate learning.