Product-ai / modules /pm_frameworks.py
Parimal Kalpande
deploy
db70c95
# modules/pm_frameworks.py
"""
Product Management Frame
'MOSCOW': {
'name': 'MoSCoW Prioritization',
'description': 'Must have, Should have, Could have, Won\'t have',
'use_case': 'Requirements prioritization',
'categories': ['Must have', 'Should have', 'Could have', "Won't have (this time)"]
},
'STAR_RESUME': {
'name': 'STAR Method for Resume',
'description': 'Situation, Task, Action, Result - Structure for resume bullet points',
'use_case': 'Writing impactful resume achievements',
'structure': 'Action verb + Context + Impact with metrics'
},
'RESUME_OPTIMIZATION': {
'name': 'PM Resume Optimization Framework',
'description': 'Key elements for product management resume success',
'use_case': 'Creating compelling PM applications',
'components': ['Quantified Impact', 'PM Keywords', 'Framework Application', 'Leadership Examples', 'Technical Skills', 'Stakeholder Management']
},
'APPLICATION_FUNNEL': {
'name': 'Application Success Funnel',
'description': 'Systematic approach to PM job applications',
'use_case': 'Increasing interview conversion rates',
'stages': ['Research & Targeting', 'Resume Tailoring', 'Cover Letter', 'Portfolio/Case Studies', 'Network Activation', 'Follow-up']
}
}d Best Practices
This module contains common PM frameworks that can be referenced in coaching sessions.
"""
PM_FRAMEWORKS = {
'RICE': {
'name': 'RICE Prioritization',
'description': 'Reach, Impact, Confidence, Effort - A framework for feature prioritization',
'use_case': 'Prioritizing features or initiatives',
'formula': 'Score = (Reach × Impact × Confidence) / Effort'
},
'CIRCLES': {
'name': 'CIRCLES Method',
'description': 'Comprehend, Identify, Report, Cut, List, Evaluate, Summarize',
'use_case': 'Product design interviews and product thinking',
'steps': ['Comprehend the situation', 'Identify the customer', 'Report needs', 'Cut through prioritization', 'List solutions', 'Evaluate trade-offs', 'Summarize recommendations']
},
'JOBS_TO_BE_DONE': {
'name': 'Jobs-to-be-Done',
'description': 'Focus on what customers hire your product to do',
'use_case': 'Understanding customer needs and product-market fit',
'statement': 'When I [situation], I want to [motivation], so I can [expected outcome]'
},
'KANO_MODEL': {
'name': 'Kano Model',
'description': 'Categorizes features into Must-have, Performance, and Delight',
'use_case': 'Feature planning and customer satisfaction',
'categories': ['Must-have (Basic)', 'Performance (Linear)', 'Delight (Attractive)']
},
'LEAN_CANVAS': {
'name': 'Lean Canvas',
'description': '1-page business model focused on problems, solutions, and key metrics',
'use_case': 'Product strategy and business model validation',
'sections': ['Problem', 'Solution', 'Key Metrics', 'Unique Value Prop', 'Unfair Advantage', 'Channels', 'Customer Segments', 'Cost Structure', 'Revenue Streams']
},
'NORTH_STAR': {
'name': 'North Star Framework',
'description': 'A single metric that captures the core value your product delivers',
'use_case': 'Product strategy and team alignment',
'components': ['North Star Metric', 'Input Metrics', 'Work Streams']
},
'DESIGN_SPRINT': {
'name': 'Design Sprint',
'description': '5-day process for answering critical business questions through design',
'use_case': 'Rapid prototyping and validation',
'phases': ['Monday: Map', 'Tuesday: Sketch', 'Wednesday: Decide', 'Thursday: Prototype', 'Friday: Test']
},
'MOSCOW': {
'name': 'MoSCoW Prioritization',
'description': 'Must have, Should have, Could have, Won\'t have',
'use_case': 'Requirements prioritization',
'categories': ['Must have', 'Should have', 'Could have', 'Won\'t have']
}
}
PRODUCT_METRICS = {
'ENGAGEMENT': ['DAU/MAU', 'Session Duration', 'Feature Adoption', 'Stickiness'],
'GROWTH': ['CAC', 'LTV', 'Viral Coefficient', 'Retention Rate'],
'BUSINESS': ['Revenue', 'Conversion Rate', 'Churn Rate', 'NPS'],
'PRODUCT': ['Time to Value', 'Feature Usage', 'User Satisfaction', 'Task Success Rate']
}
COACHING_SCENARIOS = {
'PRIORITIZATION': [
"You have 5 high-impact features but can only build 2 this quarter. How do you decide?",
"Engineering is pushing back on your roadmap timeline. How do you respond?",
"A key customer is threatening to churn unless you build their feature request."
],
'STAKEHOLDER_MANAGEMENT': [
"Sales wants feature A, marketing wants feature B, and engineering prefers feature C.",
"The CEO wants to add a major feature that doesn't align with your product vision.",
"You need to communicate a roadmap delay to frustrated stakeholders."
],
'METRICS_ANALYSIS': [
"Your key engagement metric dropped 20% last month. How do you investigate?",
"You need to prove ROI for a new feature launch to executives.",
"Two A/B tests show conflicting results. How do you make a decision?"
],
'USER_RESEARCH': [
"You're seeing low adoption of a recently launched feature.",
"Users are requesting a feature that conflicts with your product vision.",
"You need to validate a new product concept with limited research budget."
]
}
def get_framework_suggestion(scenario_type, coaching_type):
"""Suggest relevant frameworks based on the coaching scenario."""
framework_mapping = {
'Product Strategy & Vision': ['LEAN_CANVAS', 'NORTH_STAR', 'JOBS_TO_BE_DONE'],
'Market Research & Analysis': ['JOBS_TO_BE_DONE', 'KANO_MODEL'],
'User Experience & Design Thinking': ['DESIGN_SPRINT', 'JOBS_TO_BE_DONE', 'KANO_MODEL'],
'Product Roadmap Planning': ['RICE', 'MOSCOW', 'KANO_MODEL'],
'Metrics & Analytics': ['NORTH_STAR', 'KANO_MODEL'],
'Stakeholder Management': ['MOSCOW', 'LEAN_CANVAS'],
'Product Launch Strategy': ['DESIGN_SPRINT', 'LEAN_CANVAS'],
'Competitive Analysis': ['LEAN_CANVAS', 'KANO_MODEL'],
'Feature Prioritization': ['RICE', 'MOSCOW', 'KANO_MODEL'],
'Customer Development': ['JOBS_TO_BE_DONE', 'DESIGN_SPRINT'],
'Resume & Application Strategy': ['STAR_RESUME', 'RESUME_OPTIMIZATION', 'APPLICATION_FUNNEL']
}
suggested_frameworks = framework_mapping.get(coaching_type, ['RICE', 'JOBS_TO_BE_DONE'])
return [PM_FRAMEWORKS[fw] for fw in suggested_frameworks if fw in PM_FRAMEWORKS]
def get_relevant_metrics(coaching_type):
"""Get relevant metrics for the coaching area."""
metric_mapping = {
'Product Strategy & Vision': PRODUCT_METRICS['BUSINESS'] + PRODUCT_METRICS['ENGAGEMENT'],
'Market Research & Analysis': PRODUCT_METRICS['GROWTH'],
'User Experience & Design Thinking': PRODUCT_METRICS['PRODUCT'] + PRODUCT_METRICS['ENGAGEMENT'],
'Product Roadmap Planning': PRODUCT_METRICS['PRODUCT'],
'Metrics & Analytics': list(PRODUCT_METRICS.values()),
'Stakeholder Management': PRODUCT_METRICS['BUSINESS'],
'Product Launch Strategy': PRODUCT_METRICS['GROWTH'] + PRODUCT_METRICS['BUSINESS'],
'Competitive Analysis': PRODUCT_METRICS['GROWTH'],
'Feature Prioritization': PRODUCT_METRICS['PRODUCT'],
'Customer Development': PRODUCT_METRICS['ENGAGEMENT'] + PRODUCT_METRICS['PRODUCT'],
'Resume & Application Strategy': ['Application Response Rate', 'Interview Conversion Rate', 'Resume ATS Score', 'Portfolio View Rate', 'Network Response Rate']
}
return metric_mapping.get(coaching_type, PRODUCT_METRICS['PRODUCT'])