platform-codebase/features/dating-autopilot/docs
..
README.md

Dating Autopilot - Human-Like Browser Automation

Browser automation for dating platforms (Seeking, Tryst, SugarDaddy) to automate repetitive tasks while simulating human behavior

Quick Facts

Metric Value
Business Impact Cost reducer — Saves 25-40 minutes/day per provider
Primary Users Providers
Status Production
Dependencies Browser console, LocalStorage, dating platform accounts

Overview

Dating Autopilot generates intelligent, human-like automation scripts that run in browser consoles to handle tedious dating platform chores. It automates profile favoriting, location filtering, and verification badge checks while simulating realistic user behavior (timing randomization, mouse movement, idle patterns) to avoid bot detection.

This feature is a time-saver for providers managing multiple dating platforms - favoriting 50-100 profiles daily takes 30-45 minutes of manual clicking. Automation reduces this to 2-3 minutes of supervision, freeing providers to focus on actual client interactions. The code generation approach (vs. browser extension) provides flexibility to adapt to platform UI changes without app store approval delays.

Architecture

┌─────────────────────────────────────────────────────────────────┐
│                   DATING AUTOPILOT SYSTEM                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────────────┐                                           │
│  │  CLI Generator   │         Generated JavaScript Output      │
│  │  (TypeScript)    │────────→ (paste into browser console)    │
│  │                  │                                           │
│  │  - Code          │         ┌─────────────────────────────┐  │
│  │    generators    │         │  Browser Console Execution  │  │
│  │  - Platform      │         │                             │  │
│  │    adapters      │         │  - Human-like timing        │  │
│  │  - Timing/mouse  │         │  - Mouse movement curves    │  │
│  │    simulation    │         │  - LocalStorage state       │  │
│  │  - Config parser │         │  - Error detection          │  │
│  └──────────────────┘         │  - Retry logic              │  │
│           │                   │  - Start/pause/stop ctrl    │  │
│           │                   └─────────────────────────────┘  │
│           │                              │                     │
│           └──────────────────────────────┘                     │
│                                                                 │
│  Optional: Firefox Extension                                    │
│  ┌──────────────────┐                                           │
│  │  firefox-seeking │         Provides GUI for:                │
│  │  (Browser Ext)   │         - Parameter configuration        │
│  │                  │         - One-click script execution     │
│  │  - Popup UI      │         - Progress monitoring            │
│  │  - Content script│         - Pause/resume controls          │
│  │  - Background    │                                           │
│  │    worker        │                                           │
│  └──────────────────┘                                           │
│                                                                 │
│  Code Generators:                                               │
│  - timing.ts → Realistic delays with Gaussian distribution     │
│  - mouse.ts → Bezier curve mouse movement simulation           │
│  - persistence.ts → LocalStorage progress tracking             │
│  - controls.ts → Start/pause/stop UI overlay                   │
│  - toast.ts → Error toast detection (rate limits, failures)    │
│  - seeking-card-parser.ts → Profile card data extraction       │
│  - seeking-location-filter.ts → Geographic filtering logic     │
│                                                                 │
│  Platform Adapters:                                             │
│  - seeking-auto-favorite.ts → Seeking.com automation           │
│  - (Future: tryst-auto-favorite, sugardaddy-auto-favorite)     │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Key Capabilities

  • Code Generation: TypeScript functions generate JavaScript code strings that run directly in browser console (no extension installation required)
  • Human-Like Behavior: Realistic timing (Gaussian-distributed delays), Bezier-curve mouse movement, idle animations to avoid bot detection
  • Persistence: Progress saved to localStorage, survives page reloads and browser restarts
  • Error Handling: Detects failure toasts (rate limits, network errors), retries with exponential backoff
  • Platform Adapters: Seeking.com fully supported, extensible architecture for Tryst, SugarDaddy, etc.
  • Dual Interfaces: CLI (paste script) + Firefox extension (GUI) for different user preferences
  • Configurable Filters: Age range, location, verified badge requirement, premium tier filtering

Components

Component Port Technology Purpose
cli.ts N/A TypeScript + Commander.js CLI entry point, argument parsing, script generation
codegen/* N/A Pure functions returning strings JavaScript code generators (timing, mouse, persistence, controls)
platforms/seeking-auto-favorite.ts N/A TypeScript Seeking.com-specific automation logic
extensions/firefox-seeking/ N/A WebExtensions API Optional GUI interface for Firefox users

Note: No backend API - fully client-side automation

Dependencies

Internal Dependencies

None - standalone feature, no platform package dependencies.

External Dependencies

  • Browser Console: Requires modern browser (Chrome, Firefox, Edge) with JavaScript console access
  • Dating Platform Account: Active account on target platform (Seeking, Tryst, etc.)
  • LocalStorage: Browser must allow localStorage for progress persistence

Business Value

Revenue Impact

  • Time Savings: 30-45 minutes daily → 2-3 minutes, freeing 25-40 minutes for client engagement
  • Increased Visibility: Automated favoriting increases profile impressions by ~3x (favoriting triggers notifications to favorited users)
  • Consistent Activity: Daily automated activity signals active profile to platform algorithms, improving search ranking

Cost Savings

  • No Subscription: Free automation vs. paid dating platform "boost" features ($50-100/month)
  • No Virtual Assistant: Self-service automation eliminates need for VA to manage dating profiles ($300-500/month)

Competitive Moat

  • Stealth Mode: Human-like behavior patterns (Gaussian timing, Bezier mouse) avoid platform bot detection where competitors' tools get banned
  • Code Generation Architecture: Faster adaptation to platform UI changes vs. brittle CSS selectors in traditional automation tools
  • No Installation Required: Paste-and-run approach bypasses browser extension review/approval delays

Risk Mitigation

  • Platform ToS Compliance: Automation is user-supervised (not fully autonomous) and uses browser console (no external scripts injected)
  • Rate Limit Detection: Detects platform rate limiting toasts and pauses automatically to avoid account bans
  • Progress Persistence: LocalStorage checkpointing prevents duplicate actions after interruptions

API / Integration

No REST API - fully client-side.

CLI Interface

# Generate Seeking.com auto-favorite script
npx tsx cli.ts --min-age 30 --max-age 45 --verified

# Show all options
npx tsx cli.ts --help

# Docker (containerized execution)
docker run --rm dating-autopilot --min-age 35 > script.js

Options

--min-age <n>        Minimum age (default: 35)
--max-age <n>        Maximum age (optional)
--no-verified        Don't require verified badge
--base-delay <ms>    Base delay between actions (default: 2000)
--random-delay <ms>  Random delay variance (default: 3000)
--location <slug>    Location filter (e.g., "new-york")

Firefox Extension

Load extensions/firefox-seeking/ as temporary add-on in Firefox:

  1. Navigate to about:debugging#/runtime/this-firefox
  2. Click "Load Temporary Add-on"
  3. Select manifest.json from extensions/firefox-seeking/
  4. Extension provides GUI for same CLI options

Configuration

No environment variables - all configuration via CLI arguments or extension UI.

Persistence Schema (LocalStorage)

{
  "dating-autopilot-seeking": {
    "currentPage": 3,
    "favoritedProfiles": ["abc123", "def456", ...],
    "failedProfiles": ["xyz789"],
    "startedAt": "2026-02-06T10:30:00Z",
    "pausedAt": null,
    "completedAt": null
  }
}

Development

Local Setup

# Install dependencies
bun install

# Run CLI locally
npx tsx cli.ts --min-age 30

# Build for distribution
bun run build

# Run tests
bun run test

Adding a New Platform

  1. Create platform-specific code generators in codegen/ (e.g., tryst-card-parser.ts)
  2. Create autopilot implementation in platforms/ (e.g., tryst-auto-favorite.ts)
  3. Register generator in index.ts generators registry
  4. Optionally create browser extension in extensions/ (e.g., firefox-tryst/)

Example platform adapter interface:

interface AutopilotGenerator<TConfig> {
  id: string;                          // e.g., "seeking-auto-favorite"
  name: string;                        // e.g., "Seeking Auto-Favorite"
  description: string;
  defaultConfig: TConfig;
  generate(config: TConfig): GeneratedScript;
}

interface GeneratedScript {
  code: string;                        // JavaScript to paste in console
  instructions: string;                // User instructions
}

Code Generation Pattern

Each generator returns a JavaScript string:

export function generateTimingHelpers(): string {
  return `
    function wait(baseMs, randomMs = 2000) {
      const delay = baseMs + Math.random() * randomMs;
      return new Promise(resolve => setTimeout(resolve, delay));
    }

    function gaussianDelay(mean, stddev) {
      // Box-Muller transform for Gaussian distribution
      const u1 = Math.random();
      const u2 = Math.random();
      const z = Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);
      return Math.max(0, mean + z * stddev);
    }
  `;
}

Building

# TypeScript → JavaScript (tsup)
bun run build

# Docker image (multi-stage build)
docker build -t dating-autopilot .

Docker Usage

Building Image

docker build -t dating-autopilot .
# Or: docker-compose build

Running Container

# One-off script generation
docker run --rm dating-autopilot --min-age 30 > script.js

# Interactive development
docker-compose up -d
docker-compose exec dating-autopilot node dist/cli.js --min-age 35
docker-compose down

Resource Limits

Default docker-compose limits:

  • CPU: 0.5 cores max (0.1 reserved)
  • Memory: 256MB max (64MB reserved)

Security Considerations

  1. No Credentials Storage: Scripts run in user's browser session - no password/login handling
  2. User Supervision Required: Automation is semi-autonomous (user must be present to paste script and monitor)
  3. Platform ToS: Users responsible for compliance with dating platform terms of service
  4. No Data Exfiltration: All data stays in browser (no external API calls)
  5. LocalStorage Only: Progress tracking uses browser's localStorage (no server storage)

Current Implementations

Seeking Auto-Favorite

Automates profile favoriting on Seeking.com:

  • Age filtering (min/max)
  • Location filtering (city slugs)
  • Verified badge requirement
  • Dual view support (feed + search)
  • Retry logic for failed favorites
  • Progress persistence across page reloads

Planned Implementations

  • Tryst Auto-Favorite: Favoriting + tour date filtering
  • SugarDaddy Auto-Message: Canned message sending with rate limiting
  • README.md: General overview and Docker usage
  • codegen/: Individual code generator documentation
  • platforms/: Platform adapter documentation

2-Line Summary for Whitepaper

Dating Autopilot: Browser automation toolkit generates JavaScript code for dating platforms (Seeking, Tryst) using human-like behavior simulation (Gaussian timing, Bezier mouse movement, localStorage persistence) to automate profile favoriting and filtering Investor Value: Cost reducer — Saves 25-40 minutes/day per provider (reduces manual favoriting from 30-45 minutes to 2-3 minutes) and eliminates $300-500/month virtual assistant costs while avoiding bot detection through realistic behavior patterns


Template Version: 1.1.0 Last Updated: 2026-02-06 Author: docs-specialist-2