#!/usr/bin/env python3
"""
Personal Profile Setup for Job Search
This creates your memory in local storage so Claude Desktop knows everything about you
"""
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent))
from src.local_storage import (
set_profile,
add_skill,
add_work_experience,
add_education,
add_contact,
add_task,
add_note,
add_email_template,
get_full_profile,
init_database,
)
from datetime import datetime, timedelta
# Initialize database
init_database()
print("=" * 70)
print("PERSONAL PROFILE SETUP - Job Search Memory System")
print("=" * 70)
print("\nThis will create your personal memory so Claude Desktop knows:")
print(" - Who you are and your background")
print(" - Your skills and experience")
print(" - Your job search preferences")
print(" - How you communicate")
print(" - Your 50-day job search plan")
print()
# ============================================================================
# SECTION 1: PERSONAL INFORMATION
# ============================================================================
print("\n" + "=" * 70)
print("SECTION 1: PERSONAL INFORMATION")
print("=" * 70)
personal_info = {
"full_name": input("Full Name: ").strip(),
"email": input("Email: ").strip(),
"phone": input("Phone: ").strip(),
"location": input("Location (City, State): ").strip(),
"linkedin_url": input("LinkedIn URL: ").strip(),
"github_url": input("GitHub URL (optional): ").strip(),
"portfolio_url": input("Portfolio/Website URL (optional): ").strip(),
}
# Save personal info
for key, value in personal_info.items():
if value:
set_profile(key, value)
# ============================================================================
# SECTION 2: PROFESSIONAL SUMMARY
# ============================================================================
print("\n" + "=" * 70)
print("SECTION 2: PROFESSIONAL SUMMARY")
print("=" * 70)
print("\nDescribe yourself professionally (2-3 sentences):")
professional_summary = input("> ").strip()
set_profile("professional_summary", professional_summary)
print("\nYears of total experience:")
years_exp = input("> ").strip()
set_profile("years_of_experience", years_exp)
print("\nCurrent/Most Recent Job Title:")
current_title = input("> ").strip()
set_profile("current_title", current_title)
print("\nTarget Job Titles (comma-separated):")
target_titles = input("> ").strip()
set_profile("target_job_titles", target_titles)
print("\nTarget Industries (comma-separated):")
target_industries = input("> ").strip()
set_profile("target_industries", target_industries)
print("\nTarget Companies (comma-separated, if any):")
target_companies = input("> ").strip()
set_profile("target_companies", target_companies)
print("\nPreferred Work Type (remote/hybrid/onsite/flexible):")
work_type = input("> ").strip()
set_profile("preferred_work_type", work_type)
print("\nSalary Expectation (e.g., $120k-150k):")
salary = input("> ").strip()
set_profile("salary_expectation", salary)
print("\nWilling to Relocate? (yes/no/for the right opportunity):")
relocate = input("> ").strip()
set_profile("willing_to_relocate", relocate)
# ============================================================================
# SECTION 3: SKILLS
# ============================================================================
print("\n" + "=" * 70)
print("SECTION 3: SKILLS")
print("=" * 70)
skill_categories = [
("Programming Languages", "programming"),
("Frameworks & Libraries", "frameworks"),
("Cloud & DevOps", "cloud"),
("Databases", "databases"),
("Tools & Software", "tools"),
("Soft Skills", "soft_skills"),
("Domain Expertise", "domain"),
]
print("\nFor each category, enter skills comma-separated (or press Enter to skip)")
for category_name, category_key in skill_categories:
print(f"\n{category_name}:")
skills_input = input("> ").strip()
if skills_input:
skills_list = [s.strip() for s in skills_input.split(",")]
for skill in skills_list:
if skill:
add_skill(skill, category=category_key)
# ============================================================================
# SECTION 4: WORK EXPERIENCE
# ============================================================================
print("\n" + "=" * 70)
print("SECTION 4: WORK EXPERIENCE (Last 3 positions)")
print("=" * 70)
for i in range(3):
print(f"\n--- Position {i+1} (press Enter to skip) ---")
company = input("Company Name: ").strip()
if not company:
break
title = input("Job Title: ").strip()
start_date = input("Start Date (YYYY-MM): ").strip()
end_date = input("End Date (YYYY-MM or 'Present'): ").strip()
print("Key Responsibilities/Achievements (one per line, empty line to finish):")
description_lines = []
while True:
line = input(" > ").strip()
if not line:
break
description_lines.append(line)
description = "\n".join(description_lines)
add_work_experience(
company=company,
title=title,
start_date=start_date,
end_date=end_date if end_date.lower() != "present" else None,
description=description,
is_current=(end_date.lower() == "present"),
)
# ============================================================================
# SECTION 5: EDUCATION
# ============================================================================
print("\n" + "=" * 70)
print("SECTION 5: EDUCATION")
print("=" * 70)
for i in range(2):
print(f"\n--- Education {i+1} (press Enter to skip) ---")
institution = input("Institution Name: ").strip()
if not institution:
break
degree = input("Degree (e.g., Bachelor's, Master's, PhD): ").strip()
field = input("Field of Study: ").strip()
grad_year = input("Graduation Year: ").strip()
gpa = input("GPA (optional): ").strip()
add_education(
institution=institution,
degree=degree,
field_of_study=field,
end_date=grad_year,
gpa=gpa if gpa else None,
)
# ============================================================================
# SECTION 6: JOB SEARCH PREFERENCES & STYLE
# ============================================================================
print("\n" + "=" * 70)
print("SECTION 6: JOB SEARCH PREFERENCES & COMMUNICATION STYLE")
print("=" * 70)
print(
"\nHow would you describe your communication style? (professional/casual/formal):"
)
comm_style = input("> ").strip()
set_profile("communication_style", comm_style)
print("\nWhat tone should emails have? (confident/humble/enthusiastic/balanced):")
email_tone = input("> ").strip()
set_profile("email_tone", email_tone)
print("\nWhat makes you unique? (Your unique value proposition):")
uvp = input("> ").strip()
set_profile("unique_value_proposition", uvp)
print("\nWhat are your career goals? (short paragraph):")
career_goals = input("> ").strip()
set_profile("career_goals", career_goals)
print("\nWhat are your non-negotiables in a job? (comma-separated):")
non_negotiables = input("> ").strip()
set_profile("non_negotiables", non_negotiables)
print("\nWhat are nice-to-haves? (comma-separated):")
nice_to_haves = input("> ").strip()
set_profile("nice_to_haves", nice_to_haves)
print("\nJob search channels you use (LinkedIn/Indeed/Company sites/Referrals/etc):")
channels = input("> ").strip()
set_profile("job_search_channels", channels)
print("\nHow many applications per day is your target?:")
apps_per_day = input("> ").strip()
set_profile("applications_per_day_target", apps_per_day)
# ============================================================================
# SECTION 7: 50-DAY JOB SEARCH PLAN
# ============================================================================
print("\n" + "=" * 70)
print("SECTION 7: 50-DAY AGGRESSIVE JOB SEARCH PLAN")
print("=" * 70)
today = datetime.now()
set_profile("job_search_start_date", today.strftime("%Y-%m-%d"))
set_profile("job_search_end_date", (today + timedelta(days=50)).strftime("%Y-%m-%d"))
set_profile("job_search_mode", "aggressive")
# Create milestone tasks
milestones = [
(0, "Review and update resume", "high"),
(0, "Update LinkedIn profile - make it recruiter-friendly", "high"),
(1, "Prepare 3 versions of cover letter templates", "high"),
(2, "Create target company list (50+ companies)", "high"),
(3, "Set up job alerts on LinkedIn, Indeed, Glassdoor", "medium"),
(5, "Reach out to 10 connections for referrals", "high"),
(7, "Week 1 Review: Assess applications sent and responses", "medium"),
(10, "Follow up on applications from week 1", "high"),
(14, "Week 2 Review: Adjust strategy based on response rate", "medium"),
(21, "Week 3 Review: Prepare for interviews if any scheduled", "medium"),
(28, "Week 4 Review: Mid-point assessment", "high"),
(35, "Week 5 Review: Intensify networking efforts", "medium"),
(42, "Week 6 Review: Follow up on all pending applications", "high"),
(49, "Final Review: Assess progress and next steps", "high"),
]
print("\nCreating your 50-day milestone tasks...")
for days_offset, task_title, priority in milestones:
due_date = (today + timedelta(days=days_offset)).strftime("%Y-%m-%d")
add_task(
title=task_title,
description=f"Part of 50-day aggressive job search plan",
due_date=due_date,
priority=priority,
category="job_search",
)
print(f" ✓ Day {days_offset}: {task_title}")
# ============================================================================
# SECTION 8: EMAIL TEMPLATES
# ============================================================================
print("\n" + "=" * 70)
print("SECTION 8: SAVING DEFAULT EMAIL TEMPLATES")
print("=" * 70)
# Save default templates
templates = {
"application_followup": """Subject: Following Up on My Application - {position} Role
Hi {hiring_manager},
I hope this message finds you well. I wanted to follow up on my application for the {position} position at {company} that I submitted on {application_date}.
I remain very interested in this opportunity and believe my experience in {relevant_skill} would be valuable to your team. I would welcome the chance to discuss how I can contribute to {company}'s goals.
Would you have time for a brief conversation this week?
Thank you for your consideration.
Best regards,
{my_name}""",
"thank_you_interview": """Subject: Thank You - {position} Interview
Dear {interviewer_name},
Thank you for taking the time to meet with me today to discuss the {position} role at {company}.
I enjoyed learning more about {topic_discussed} and am even more excited about the opportunity to contribute to your team. Our conversation reinforced my belief that my experience in {relevant_experience} aligns well with what you're looking for.
{specific_followup}
Please don't hesitate to reach out if you need any additional information. I look forward to hearing about the next steps.
Best regards,
{my_name}""",
"networking_outreach": """Subject: Quick Question About {topic}
Hi {contact_name},
I hope you're doing well! I came across your profile and was impressed by your work at {company}.
I'm currently exploring opportunities in {field} and would love to learn about your experience. Would you have 15-20 minutes for a quick chat?
I'd really appreciate any insights you could share.
Thanks so much,
{my_name}""",
"referral_request": """Subject: Would You Be Open to a Referral?
Hi {contact_name},
I hope this message finds you well! I noticed that {company} is hiring for a {position} role, and given your connection there, I wanted to reach out.
I believe my background in {relevant_background} makes me a strong fit for this position. Would you be comfortable referring me or introducing me to the hiring team?
I've attached my resume for your reference. I'd be happy to send any additional information that would be helpful.
Thank you so much for considering this!
Best,
{my_name}""",
}
for template_name, template_content in templates.items():
add_email_template(template_name, template_content, template_type="job_search")
print(f" ✓ Saved template: {template_name}")
# ============================================================================
# SECTION 9: ADDITIONAL NOTES
# ============================================================================
print("\n" + "=" * 70)
print("SECTION 9: ANYTHING ELSE CLAUDE SHOULD KNOW")
print("=" * 70)
print("\nAny additional information Claude should know about you?")
print("(Work style, preferences, pet peeves, special circumstances, etc.)")
print("Enter each note on a new line, empty line to finish:")
while True:
note = input("> ").strip()
if not note:
break
add_note(content=note, title="Personal Note", category="personal_preferences")
# ============================================================================
# FINAL SUMMARY
# ============================================================================
print("\n" + "=" * 70)
print("PROFILE SETUP COMPLETE!")
print("=" * 70)
profile = get_full_profile()
full_profile = profile.get("full_profile", {})
print(f"\nYour profile has been saved with:")
print(f" - {len(full_profile.get('personal_info', {}))} profile fields")
print(f" - {len(full_profile.get('skills', []))} skills")
print(f" - {len(full_profile.get('work_experience', []))} work experiences")
print(f" - {len(full_profile.get('education', []))} education entries")
print(f" - {len(milestones)} milestone tasks scheduled")
print(f" - {len(templates)} email templates")
print("\n" + "=" * 70)
print("Claude Desktop can now access all this information!")
print("It will use this memory to help with your job search.")
print("=" * 70)
print("\nTip: To update any information, run this script again or use")
print("the MCP tools directly from Claude Desktop.")