Professional matchmaking skill for OpenClaw - Intelligent relationship matching and dating guidance for individuals
Version: 0.1.0 | Status: Production Ready | License: MIT
Matchmaker is an AI-powered matchmaking system designed to help single individuals find compatible partners through intelligent analysis and personalized guidance. It provides comprehensive profile analysis, compatibility scoring, conversation starters, and relationship tracking.
- Profile Analysis - Multi-dimensional personality and lifestyle assessment
- Smart Matching - AI-powered compatibility algorithm with detailed scoring
- Icebreaker Generation - Personalized conversation starters and date ideas
- Relationship Tracking - Monitor relationship health and development progress
# Install dependencies
pip install -e .
# Or install from requirements
pip install -r requirements.txtimport asyncio
from matchmaker import Matchmaker, Person, PersonalityTraits, Lifestyle, Values, Interests
async def main():
# Initialize matchmaker
matchmaker = Matchmaker()
# Create person profile
alex = Person(
name="Alex Chen",
age=28,
gender="male",
location="San Francisco, CA",
personality=PersonalityTraits(
openness=85,
conscientiousness=70,
extraversion=60,
agreeableness=75,
neuroticism=40,
mbti="ENFP"
),
lifestyle=Lifestyle(
sleep_schedule="night-owl",
exercise_frequency="weekly",
social_activity="moderately-social",
work_life_balance="balanced",
travel_frequency="occasional",
pets="has-dogs",
smoking="never",
drinking="social"
),
values=Values(
marriage_view="open",
children_plan="want",
family_importance=80,
career_importance=70,
communication_style="diplomatic"
),
interests=Interests(
categories=["tech", "travel", "music", "cooking"],
specific_hobbies=["photography", "hiking", "guitar"],
favorite_activities=["coffee date", "museum visit"]
),
occupation="Software Engineer",
education="Bachelor's Degree"
)
# Analyze profile
profile = await matchmaker.analyze_profile(alex)
print(f"Dating Readiness: {profile.dating_readiness}")
print(f"Profile Score: {profile.overall_score}/100")
# Find match compatibility (with another person)
match = await matchmaker.find_match(alex, jamie)
print(f"Compatibility: {match.compatibility.overall_score}/100")
# Generate icebreakers
icebreakers = await matchmaker.generate_icebreakers(alex, jamie)
print("Opening line:", icebreakers.opening_lines[0])
if __name__ == "__main__":
asyncio.run(main())Evaluate dating readiness across multiple dimensions:
- Personality (30%): Big Five traits + MBTI
- Lifestyle (25%): Daily habits, sleep, exercise, social activities
- Values (30%): Marriage views, family plans, communication style
- Interests (15%): Hobbies, activities, passions
Output:
- Overall profile score (0-100)
- Dating readiness level (ready/mostly-ready/needs-work/not-ready)
- Profile type (e.g., "balanced-creative-professional")
- Strengths, weaknesses, and recommendations
profile = await matchmaker.analyze_profile(person)Calculate compatibility using intelligent algorithms:
Compatibility Dimensions:
- Personality compatibility (considers complementarity)
- Lifestyle compatibility (habits, schedules, preferences)
- Values alignment (marriage, children, family - most critical)
- Interests overlap (shared hobbies and activities)
Output:
- Overall compatibility score (0-100)
- Component scores for each dimension
- Match quality rating (excellent/very-good/good/fair/poor)
- Why good match + potential challenges
- Relationship potential assessment
match = await matchmaker.find_match(person1, person2)Personalized conversation starters based on profiles:
Includes:
- 5 opening message suggestions
- Shared interest topics
- Unique conversation starters
- Questions to ask
- Personalized date ideas with reasoning
- Topics to avoid
- Communication tips based on personality
icebreakers = await matchmaker.generate_icebreakers(person, match)Monitor relationship development and health:
Analysis:
- Relationship stage (initial-contact → serious)
- Health score based on interaction quality
- Positive indicators and concerns
- Communication quality and balance
- Momentum assessment (accelerating/steady/slowing/stalled)
Output:
- Recommended next steps
- Red flags and green flags
- Success likelihood prediction
- Timeline prediction for milestones
from matchmaker import InteractionLog
interactions = [
InteractionLog(date="2024-03-01", type="message", quality="good"),
InteractionLog(date="2024-03-05", type="date", quality="excellent"),
]
assessment = await matchmaker.assess_relationship(person1, person2, interactions)Scenario 1: Self-Assessment
# Understand your dating profile
profile = await matchmaker.analyze_profile(me)
print(f"Dating readiness: {profile.dating_readiness}")
print("Strengths:", profile.strengths)
print("Recommendations:", profile.recommendations)Scenario 2: Evaluating a Match
# Check compatibility with someone you're interested in
match = await matchmaker.find_match(me, potential_match)
print(f"Compatibility: {match.compatibility.overall_score}/100")
print("Why good match:", match.why_good_match)Scenario 3: Getting Date Ideas
# Get personalized icebreakers and date suggestions
icebreakers = await matchmaker.generate_icebreakers(me, match)
for idea in icebreakers.date_ideas:
print(f"{idea['activity']}: {idea['reason']}")Scenario 4: Tracking Relationship
# Monitor how your relationship is developing
assessment = await matchmaker.assess_relationship(me, partner, interactions)
print(f"Relationship health: {assessment.relationship_health}/100")
print("Next steps:", assessment.next_steps)openclaw-match-maker/
├── matchmaker/ # Main Python package
│ ├── matchmaker.py # Main Matchmaker class
│ ├── types/ # Pydantic data models
│ │ ├── person.py # Person schema
│ │ ├── profile.py # Profile schema
│ │ └── models.py # Result models
│ └── modules/ # Business logic modules
│ ├── profiling/ # Profile analyzer
│ ├── matching/ # Match algorithm
│ ├── icebreaker/ # Icebreaker generator
│ └── relationship/ # Relationship assessor
├── examples/ # Usage examples
│ └── basic_example.py # Complete demo
├── tests/ # Test suite
├── test_complete.py # Complete test script
├── SKILL.md # OpenClaw skill definition
├── README.md # This file
└── requirements.txt # Python dependencies
class Matchmaker:
"""Main Matchmaker class providing all matchmaking services."""
async def analyze_profile(self, person: Person) -> Profile:
"""Analyze person's profile and generate assessment."""
async def find_match(self, person1: Person, person2: Person) -> MatchResult:
"""Calculate compatibility between two people."""
async def batch_match(self, person: Person, candidates: List[Person], top_n: int = 10) -> List[MatchResult]:
"""Match one person against multiple candidates."""
async def generate_icebreakers(self, person: Person, match: Person) -> IcebreakerSuggestion:
"""Generate personalized conversation starters."""
async def assess_relationship(self, person1: Person, person2: Person, interactions: List[InteractionLog]) -> RelationshipAssessment:
"""Assess relationship health and progress."""
async def complete_match_analysis(self, person1: Person, person2: Person) -> dict:
"""Run complete analysis including match and icebreakers."""
async def full_profile_and_matches(self, person: Person, candidates: List[Person], top_n: int = 5) -> dict:
"""Analyze profile and find best matches."""# Run complete test suite
python3 test_complete.py
# Run example
python3 examples/basic_example.pyExpected output:
✅ Test Passed: Profile Analysis
✅ Test Passed: Compatibility Matching
✅ Test Passed: Icebreaker Generation
✅ Test Passed: Relationship Assessment
🎉 All tests passed! Matchmaker system is ready to use.
You can customize the importance of different dimensions:
# Custom profiling weights
matchmaker = Matchmaker(
profiling_weights={
"personality": 0.35, # Default: 0.30
"lifestyle": 0.20, # Default: 0.25
"values": 0.35, # Default: 0.30
"interests": 0.10, # Default: 0.15
},
matching_weights={
"personality": 0.25, # Default: 0.30
"lifestyle": 0.20, # Default: 0.25
"values": 0.40, # Default: 0.30 (values are critical!)
"interests": 0.15, # Default: 0.15
}
)- Openness: Similarity preferred (shared curiosity)
- Conscientiousness: Moderate similarity
- Extraversion: Some difference okay (complementary energy)
- Agreeableness: Similarity preferred
- Neuroticism: Lower combined is better
- Marriage views: Must align or have flexibility
- Children plans: CRITICAL - mismatch is major red flag
- Family importance: Should be similar
- Religion: If important to either, must align
- Sleep schedule: Same or one flexible
- Exercise habits: Similar levels preferred
- Social activity: Can be complementary
- Smoking: Major incompatibility if mismatch
✅ Provide data-driven compatibility analysis ✅ Generate personalized conversation suggestions ✅ Track relationship health indicators ✅ Offer actionable dating advice
❌ Guarantee relationship success ❌ Replace human judgment and intuition ❌ Predict exact outcomes ❌ Make decisions for you ❌ Replace professional counseling
Important: Compatibility scores are estimates based on models. Use as guidance, not absolute truth. Trust your feelings and intuition.
- Web UI for easy profile creation
- Integration with dating platforms
- Machine learning improvements
- Multi-language support
- Group compatibility analysis
- Long-term relationship insights
- Photo analysis integration
- Voice compatibility features
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Areas where we need help:
- Algorithm improvements
- Test coverage expansion
- Documentation enhancements
- Internationalization
MIT License - See LICENSE for details
- OpenClaw community for the skill framework
- Relationship psychology research
- Big Five personality model
- Open source Python ecosystem
Built with care for meaningful connections
Making intelligent matchmaking accessible to everyone