hsg_rag_eea / docs /user_profile_tracking.md
Pygmales's picture
Sync from GitHub dbb86cf4b41e84b3c8d61170a6dca9742c686757
9f2df60 verified
|
Raw
History Blame
4.35 kB

User Profile Tracking System

Overview

This document describes the user profile tracking system implemented in the Executive Agent Chain.

Features

Tracked Profile Information

The system tracks the following user profile data:

  1. User-ID: Unique UUID generated for each user session
  2. Name: User's name extracted from conversation (e.g., "John Doe")
  3. Experience Years: Years of professional experience (extracted from conversation)
  4. Leadership Years: Years of leadership/management experience (extracted from conversation)
  5. Field: Professional field/industry (e.g., Finance, Technology, Healthcare)
  6. Interest: Content interests (e.g., Strategy, Innovation, Digital Transformation)
  7. Suggested Program: Recommended program based on user profile (EMBA, IEMBA, or EMBA X)
  8. Handover: Whether user requested appointment/contact (true/false/null)

Additional Tracked Data

  • User language (locked after first message)
  • Program interests mentioned in conversation
  • Topics discussed

Configuration

Profile tracking is controlled by the TRACK_USER_PROFILE flag in config.py:

TRACK_USER_PROFILE = True  # Enable/disable user profile tracking

How It Works

1. Profile Extraction

The system uses regex patterns to extract information from user conversations:

  • Experience years: Patterns like "10 years experience", "working for 5 years"
  • Leadership years: Patterns like "5 years of leadership", "managed for 3 years"
  • Field: Matches against common industries (finance, technology, healthcare, etc.)
  • Interest: Identifies keywords like strategy, innovation, leadership, digital transformation

2. Program Recommendation

The system automatically suggests programs based on extracted profile:

  • EMBA: Recommended for users with 5+ years experience and 2+ years leadership
  • IEMBA: Recommended for users with 5+ years experience
  • emba X: Recommended for users interested in digital/innovation/technology

3. Profile Logging

User profiles are logged to JSON files in logs/user_profiles/ directory:

  • Logs are created every 5 user messages
  • Logs are created when a program is suggested
  • File format: profile_{user_id}_{timestamp}.json

Example Log File

{
  "user_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "name": "John Doe",
  "timestamp": "2025-11-25T10:15:30.123456",
  "experience_years": 10,
  "leadership_years": 5,
  "field": "Technology",
  "interest": "innovation, digital transformation",
  "suggested_program": "EMBA",
  "handover": true,
  "user_language": "en",
  "program_interest": ["EMBA", "EMBA X"]
}

Implementation Details

Key Methods

  1. _extract_experience_years(conversation): Extracts professional experience years
  2. _extract_leadership_years(conversation): Extracts leadership experience years
  3. _extract_field(conversation): Identifies professional field/industry
  4. _extract_interest(conversation): Identifies content interests
  5. _determine_suggested_program(): Recommends program based on profile
  6. _update_conversation_state(query, response): Updates profile from conversation
  7. _log_user_profile(): Saves profile to JSON file

Integration

Profile tracking is integrated into the main query() method:

if TRACK_USER_PROFILE:
    self._update_conversation_state(processed_query, formatted_response)
    # Log profile every 5 messages or when program is suggested
    message_count = len([m for m in self._conversation_history if isinstance(m, HumanMessage)])
    if (message_count % 5 == 0 or self._conversation_state.get('suggested_program')):
        self._log_user_profile()

Privacy Considerations

  • User profiles are stored locally in the logs directory
  • Each session gets a unique UUID
  • No personally identifiable information is required
  • The system only extracts professional information volunteered during conversation

Language Support

The extraction patterns support both English and German:

  • English: "10 years experience", "5 years leadership"
  • German: "10 Jahre Erfahrung", "5 Jahre Führung"

Disabling Profile Tracking

To disable profile tracking, set TRACK_USER_PROFILE = False in config.py. This will:

  • Skip all profile extraction
  • Prevent profile logging
  • Reduce processing overhead