Profile management

Practical guides to install and use the app effectively.

Profile Management — Multi-Profile Architecture

HielJobs Ultimate's Multi-Profile System is its core architectural differentiator. This guide explains the isolation model, use cases, and advanced profile management strategies.

Understanding Profile Isolation

┌─────────────────────────────────────────────────────────────────┐
│                 HIELJOBS MULTI-PROFILE ARCHITECTURE          │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌───────────────────────────────────────────────────────────┐   │
│  │                    APPLICATION LAYER                     │   │
│  │                                                          │   │
│  │   Header: ▼ Senior Python Engineer 2024 (Active)        │   │
│  │                                                          │   │
│  │   ┌──────────┐  ┌──────────┐  ┌──────────┐             │   │
│  │   │Profile A │  │Profile B │  │Profile C │             │   │
│  │   │   (CVs)  │  │   (CVs)  │  │   (CVs)  │             │   │
│  │   │  (Drafts)│  │  (Drafts)│  │  (Drafts)│             │   │
│  │   │ (Outbox) │  │ (Outbox) │  │ (Outbox) │             │   │
│  │   │ (History)│  │ (History)│  │ (History)│             │   │
│  │   │ (Email)  │  │ (Email)  │  │ (Email)  │             │   │
│  │   └────┬─────┘  └────┬─────┘  └────┬─────┘             │   │
│  │        │            │            │                     │   │
│  │        └────────────┼────────────┘                     │   │
│  │                     │                                   │   │
│  │                     ▼                                   │   │
│  │   ┌─────────────────────────────────────────┐          │   │
│  │   │      PROFILE SWITCHER (Header)          │          │   │
│  │   │  - Instant context switching             │          │   │
│  │   │  - Isolation enforcement                 │          │   │
│  │   │  - Per-profile settings                  │          │   │
│  │   └─────────────────────────────────────────┘          │   │
│  │                                                          │   │
│  └───────────────────────────────────────────────────────────┘   │
│                                                                  │
│  ┌───────────────────────────────────────────────────────────┐   │
│  │                    DATA LAYER                            │   │
│  │                                                          │   │
│  │   SQLite Database:                                       │   │
│  │   ┌─────────────────────────────────────────────────┐    │   │
│  │   │  profiles table                                  │    │   │
│  │   │    ├── id (PK)                                   │    │   │
│  │   │    ├── name                                      │    │   │
│  │   │    ├── created_at                                │    │   │
│  │   │    └── settings                                  │    │   │
│  │   │                                                 │    │   │
│  │   │  cvs table (FK: profile_id)                      │    │   │
│  │   │  drafts table (FK: profile_id)                   │    │   │
│  │   │  applications table (FK: profile_id)               │    │   │
│  │   │  outbox table (FK: profile_id)                   │    │   │
│  │   │  email_configs table (FK: profile_id)            │    │   │
│  │   └─────────────────────────────────────────────────┘    │   │
│  │                                                          │   │
│  │   System Keyring:                                        │   │
│  │   ├── profile_a_smtp_password                             │   │
│  │   ├── profile_b_smtp_password                             │   │
│  │   └── profile_c_api_keys                                  │   │
│  │                                                          │   │
│  └───────────────────────────────────────────────────────────┘   │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

What is a Profile?

A Profile is a completely isolated workspace within HielJobs Ultimate. Think of it as separate "user accounts" for different career identities.

Data Isolation Model

Each profile maintains independent:

Data TypeIsolation LevelStorage
CV Library100% separateSQLite (per-profile rows)
Draft Emails100% separateSQLite (per-profile rows)
Application History100% separateSQLite (per-profile rows)
Outbox Queue100% separateSQLite (per-profile rows)
Email Settings100% separateSystem keyring (per-profile keys)
AI Provider KeysOptional sharedSystem keyring
Search Preferences100% separateSQLite (per-profile rows)
Analytics Data100% separateSQLite (per-profile rows)
Templates100% separateSQLite (per-profile rows)

What is Shared Across Profiles?

  • Application settings (theme, language)
  • Global AI provider keys (optional, can be per-profile)
  • Software updates (single codebase)

Why Use Multiple Profiles?

Use Case 1: Career Track Separation

Scenario: Software Engineer exploring Product Management

ProfileCV FocusEmail AccountStrategy
SWE-2024Python, Backend, System Designtech@email.comTechnical depth
PM-TransitionLeadership, Metrics, Strategywork@email.comBusiness impact

Benefit: SWE applications emphasize coding skills; PM applications emphasize stakeholder management. Never mix messaging.

Use Case 2: Geographic Markets

Scenario: Seeking roles in both France and Morocco

ProfileLanguageCV StyleJob Sources
France-TechFrenchEuropass formatLinkedIn FR, Indeed FR
Maroc-TechFrench/ArabicCV MarocainReKrute, Emploi.ma

Benefit: Location-appropriate CV formats, language-specific drafts, regional job board optimization.

Use Case 3: Identity Segmentation

Scenario: Freelance consultant with multiple specialties

ProfileSpecialtyRate RangeClient Type
Data-ConsultingAnalytics, ML$150-200/hrEnterprise
WebDev-FreelanceReact, Node.js$80-120/hrSMB/Startup
Training-WorkshopsPython Training$2000/dayCorporate

Benefit: Different pricing, different positioning, different client communications — completely separated.

Use Case 4: Job Search Phases

Scenario: Active search with different urgency levels

ProfileApproachVolumeQuality Focus
Dream-CompaniesHighly customizedLow (2-3/week)Perfect fit only
Active-SearchTemplate-basedMedium (5-10/week)Good matches
Spray-And-PrayMinimal customizationHigh (20+/week)Volume play

Benefit: Different strategies don't pollute each other's analytics or workflow.

Creating and Managing Profiles

Creating a New Profile

Settings → Profiles → New Profile

1. Enter Profile Name (max 50 chars)
   Examples:
   ✅ "Senior Backend Engineer 2024"
   ✅ "Freelance Data Consulting"
   ✅ "Product Manager - Tech Industry"
   ❌ "Profile 1"
   ❌ "Test"
   ❌ "New"

2. (Optional) Add Description
   - Career goals for this profile
   - Target companies/industries
   - Geographic focus

3. Configure Email (SMTP/IMAP)
   - Host: smtp.gmail.com / smtp.outlook.com
   - Port: 587 (TLS) or 465 (SSL)
   - Username: profile-specific email
   - Password: App-specific password (stored in keyring)

4. Import CVs
   - Upload PDF/DOCX
   - Review extraction
   - Tag skills and categories

5. Set Defaults
   - Default CV for drafts
   - Preferred AI provider
   - Default tone setting

Profile Switching

Methods to Switch:

  1. Header Dropdown — Click active profile name → Select new profile
  2. Keyboard ShortcutCtrl+P / Cmd+P → Quick switch dialog
  3. Settings Menu — Settings → Profiles → Click to activate

What Happens on Switch:

┌─────────────────────────────────────────┐
│         PROFILE SWITCH SEQUENCE         │
├─────────────────────────────────────────┤
│ 1. Save current view state               │
│ 2. Flush pending operations             │
│ 3. Load new profile data from SQLite     │
│ 4. Update UI (CVs, Drafts, History)    │
│ 5. Refresh email configuration         │
│ 6. Load profile-specific settings      │
│ 7. Update header indicator             │
└─────────────────────────────────────────┘

Switching is instant (< 100ms) and complete — no data leaks between profiles.

Profile Data Export/Import

Export Profile:

Settings → Profiles → [Profile] → Export

Exports:
- CVs (PDF/DOCX files)
- Draft templates (JSON)
- Application history (CSV)
- Analytics data (CSV)
- Configuration (JSON, no passwords)

Import Profile:

Settings → Profiles → Import Profile

Supports:
- HielJobs export bundles (.hjp)
- Individual CV files
- CSV application history

Best Practices

Naming Conventions

PatternExampleUse When
Role-YearSeniorDev-2024Time-bound searches
Role-MarketEngineer-EuropeGeographic focus
Identity-TypeFreelance-DataIdentity-based separation
Company-TargetFAANG-PrepTarget company focus

Email Configuration Strategy

Option A: One Email per Profile

  • tech-career@email.com → SWE profile
  • product-lead@email.com → PM profile
  • Benefit: Complete separation, professional appearance

Option B: Shared Email with Filters

  • One email, set up filters in your email client
  • HielJobs can tag outgoing emails by profile
  • Benefit: Simpler management

CV Organization

Per-Profile CV Strategy:

Profile: "Senior Backend Engineer 2024"
├── CVs/
│   ├── Full-Backend-CV.pdf (3 pages)
│   ├── Concise-Backend-CV.pdf (1 page)
│   ├── Python-Specialist-CV.pdf
│   └── DevOps-Focused-CV.pdf

Tagging System:

  • By technology: python, golang, kubernetes
  • By level: senior, lead, staff
  • By format: full, short, specialized

Security Considerations

Credential Storage:

CredentialStorageEncryption
SMTP PasswordOS KeyringAES-256 (platform-specific)
IMAP PasswordOS KeyringAES-256 (platform-specific)
API KeysOS KeyringAES-256 (platform-specific)
OAuth TokensOS KeyringAES-256 (platform-specific)

Profile Isolation Security:

  • Foreign key constraints in SQLite prevent cross-profile data access
  • Application-level filtering on all queries
  • No shared memory caches between profiles
  • Separate keyring entries per profile

Advanced Profile Management

Profile Templates

Create standardized starting points:

Settings → Profiles → New from Template

Templates Available:
├── Software Engineer
│   └── Pre-configured: tech CV, GitHub email, code-focused tone
├── Product Manager
│   └── Pre-configured: business CV, professional email, formal tone
├── Data Scientist
│   └── Pre-configured: research CV, academic tone, Jupyter mentions
└── Freelance Consultant
    └── Pre-configured: project CV, personal email, friendly tone

Automated Profile Switching

Context-Aware Switching (Future Feature):

IF job_description contains "Python" AND profile == "PM-Transition"
THEN suggest_switch TO "SWE-2024"

Current Workaround:

  • Use descriptive job search saved searches per profile
  • Switch profile before starting search session

Profile Analytics Comparison

Compare performance across profiles:

Analytics → Compare Profiles

Metrics:
├── Response Rate by Profile
├── Applications per Week
├── Source Performance
├── Time to First Response
└── Best Performing Templates

Use this to identify which career track is gaining traction.

Troubleshooting

Profile Won't Switch

  1. Check if unsaved changes exist (save or discard)
  2. Verify profile exists in database
  3. Restart application
  4. Check SQLite database integrity

Data Appears in Wrong Profile

This should never happen — if it does:

  1. Report as critical bug
  2. Export affected data
  3. Delete incorrect entries
  4. Verify foreign key constraints are enabled

Email Not Sending After Switch

  1. Verify email config in current profile
  2. Test connection in Settings → Email
  3. Check keyring has correct password
  4. Confirm profile-specific SMTP settings

Profile Data Corruption

Recovery Steps:

  1. Export all other profiles as backup
  2. Use Settings → Advanced → Repair Database
  3. If unsuccessful, restore from export
  4. Contact support with database file

Integration with Other Features

→ Smart Draft

  • Auto-selects CVs from current profile only

  • Company name badges in results

  • Quick lookup button on each job card

  • Company rating overlay (if available)

  • Saved company tracking across searches

With Analytics

  • Track response rates by company type
  • Identify best-performing company stages
  • Optimize targeting by industry
  • Compare salary offers by company size

Practical Workflows

Target Company Workflow

graph LR
    A[Identify 10-15 dream companies] -->|Create dedicated "Dream-Companies" profile|> B
    B -->|Set up job alerts for each company|> C
    C -->|Deep research on each (Company Lookup)|> D
    D -->|Create tailored templates per company type|> E
    E -->|Apply within 24 hours of new posting|> F
    F -->|Track responses in Analytics|> G

Batch Research Workflow

graph LR
    A[Run broad job search (50+ results)] -->|Star promising roles|> B
    B -->|Weekend: Batch company research|> C
    C -->|Prioritize by:|> D
    D -->|Company quality (4.0+ rating)|> E
    D -->|Role fit (80%+ match)|> E
    D -->|Application freshness (< 3 days)|> E
    E -->|Generate drafts for top 5|> F
    F -->|Queue for Monday morning send|> G

Data Sources & Limitations

Available Data Sources

SourceData TypeCoverageReliability
LinkedInSize, industry, employeesHighHigh
GlassdoorRatings, reviews, salariesMediumMedium
CrunchbaseFunding, investors, foundingMediumHigh
Company WebsiteMission, products, teamHighHigh
News APIsRecent eventsVariableMedium
Job BoardsHiring velocityHighHigh

Known Limitations

  • Small companies: Limited data availability
  • Stealth mode: No public information
  • International: Varying data coverage by region
  • Real-time: Some data delayed by 24-48 hours

Privacy & Ethics

  • Only uses publicly available data
  • Respects robots.txt and rate limits
  • No employee personal information
  • Aggregated data only for ratings

Company Lookup works best when combined with Smart Draft for personalized applications and Profile Management for organized job searches.