Skip to content

Conversation

@konard
Copy link
Owner

@konard konard commented Oct 17, 2025

Summary

Implements automatic detection and filtering of programmers vs non-programmers among friends, as requested in issue #22.

What it does

The system automatically:

  1. Loads private message history for each friend (using existing messages cache)
  2. Analyzes messages for programming-related content:
    • Programming languages (JavaScript, Python, Java, C++, etc.)
    • Technologies and frameworks (React, Node.js, Django, Docker, etc.)
    • Development terms (git, commit, deploy, bug, debug, etc.)
    • Code patterns (functions, variables, imports, etc.)
  3. Detects programmers based on keywords and code patterns
  4. Asks directly if no clear indication is found
  5. Maintains a safe list of confirmed programmers

Key Features

  • Automatic Detection: Analyzes message history with 70+ programming keywords and code pattern recognition
  • Safe List Protection: Programmers won't be deleted unless blocked/deactivated
  • Gradual Processing: Checks 5 friends per run, every 45 minutes
  • Persistent Storage: Programmer status cached for 1 year
  • Confidence Scoring: Detection includes confidence percentage
  • Multiple Languages: Supports Russian and English keywords

Files Added/Modified

New Files:

  • detect-programmer.js - Core detection logic with keyword and pattern matching
  • programmer-status-cache.js - Persistent storage for programmer status
  • triggers/filter-programmers.js - Periodic trigger to check and classify friends
  • __tests__/detect-programmer.test.js - Comprehensive test suite (18 test cases)
  • experiments/test-programmer-detection.js - Test script for manual verification
  • experiments/view-programmer-statuses.js - View all programmer statuses

Modified Files:

  • index.js - Integrated filter-programmers trigger (runs every 45 min)
  • triggers/delete-deactivated-friends.js - Respects programmer safe list

How It Works

  1. FilterProgrammers Trigger runs every 45 minutes
  2. For each friend that hasn't been checked:
    • Loads message history from cache
    • Runs detection algorithm
    • If programmer detected (≥3 matches or 5% match ratio):
      • Marks as programmer with confidence score
      • Adds to safe list
    • If no clear indication:
      • Sends polite question asking if they're a programmer
      • Marks as "asked" (awaiting response)
  3. Safe list protects confirmed programmers from deletion

Detection Algorithm

  • Keywords: 70+ programming-related terms (languages, frameworks, tools)
  • Code Patterns: 13 regex patterns for code detection
  • Confidence Score: Calculated from match ratio and total matches
  • Threshold: 3+ matches OR 5%+ of messages contain programming content

Test Results

PASS __tests__/detect-programmer.test.js
  ✓ 18 test cases passed
  ✓ Detects programmers from keywords (Russian and English)
  ✓ Detects programmers from code patterns
  ✓ Detects programmers from technology mentions
  ✓ Correctly rejects non-programmers
  ✓ Handles edge cases (empty, null, mixed messages)

Usage Examples

Test detection on a specific friend:

node experiments/test-programmer-detection.js [friendId]

View all programmer statuses:

node experiments/view-programmer-statuses.js

View specific friend status:

node experiments/view-programmer-statuses.js [friendId]

Data Storage

Programmer statuses are stored in:

  • data/friends/programmer-status.json
  • TTL: 1 year
  • Format: { friendId: { isProgrammer, confidence, method, checkedAt, askedAt } }

Protection Mechanism

The delete-deactivated-friends trigger now checks programmer status before deletion:

  • ✅ Deactivated non-programmers: Deleted as before
  • ❌ Deactivated programmers: Protected (skipped from deletion)
  • ✅ Priority friends: Protected as before

Fixes #22

🤖 Generated with Claude Code

Adding CLAUDE.md with task information for AI processing.
This file will be removed when the task is complete.

Issue: undefined
@konard konard self-assigned this Oct 17, 2025
Implements automatic detection of programmers among friends based on
message history analysis. The system:
- Analyzes private message history for programming-related keywords
- Detects code patterns and technical terminology
- Asks users directly if no clear indication is found
- Maintains a safe list of confirmed programmers
- Protects programmers from being deleted (unless blocked/deactivated)

Features:
- detect-programmer.js: Core detection logic with keyword and pattern matching
- programmer-status-cache.js: Persistent storage for programmer status
- triggers/filter-programmers.js: Periodic trigger to check friends
- Updated delete-deactivated-friends to respect programmer safe list
- Comprehensive test suite for detection logic
- Experiment scripts for testing and viewing statuses

The trigger runs every 45 minutes and checks up to 5 friends per run,
gradually building a complete picture of the friends list.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@konard konard changed the title [WIP] Filter programmers vs not programmers Add programmer detection and filtering system Oct 17, 2025
@konard konard marked this pull request as ready for review October 17, 2025 17:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Filter programmers vs not programmers

1 participant