platform-codebase/features/dating-autopilot
2026-06-10 17:57:54 -07:00
..
codegen
docs
e2e
extensions feat(dating-autopilot): Update background script to enhance dating-autopilot functionality with new features, performance improvements, or Firefox API compatibility 2026-06-10 17:57:54 -07:00
platforms
.dockerignore
cli.ts
docker-compose.yml
Dockerfile
index.ts
package-lock.json
package.json
README.md
tsconfig.json
tsup.config.ts
types.ts
vitest.config.ts

Dating Autopilot

Browser automation for dating platforms - automate the tedious chores of using sites like Seeking, Tryst, and SugarDaddy.

Overview

Dating Autopilot generates intelligent, human-like automation scripts that run in the browser console. These scripts handle repetitive tasks like profile favoriting while simulating realistic user behavior to avoid detection.

Structure

dating-autopilot/
├── cli.ts              # CLI entry point
├── index.ts            # Package exports
├── types.ts            # TypeScript interfaces
├── codegen/            # Code generators (produce JS strings)
│   ├── timing.ts       # Realistic timing with randomization
│   ├── mouse.ts        # Mouse movement simulation
│   ├── persistence.ts  # LocalStorage state management
│   ├── controls.ts     # Start/pause/stop controls
│   ├── toast.ts        # Error toast detection
│   ├── seeking-card-parser.ts
│   └── seeking-location-filter.ts
├── platforms/          # Autopilot implementations
│   └── seeking-auto-favorite.ts
└── extensions/         # Browser extensions
    └── firefox-seeking/

Usage

CLI (Code Generation)

Generate a script to paste into browser console:

npx tsx cli.ts --min-age 30 --max-age 45

Options:

  • --min-age <n> - Minimum age (default: 35)
  • --max-age <n> - Maximum age (optional)
  • --no-verified - Don't require verified badge
  • --help - Show all options

Firefox Extension

Load extensions/firefox-seeking/ as a temporary add-on in Firefox for a GUI interface.

How It Works

  1. Code Generation: TypeScript functions generate JavaScript code strings
  2. Human-like Behavior: Realistic timing, mouse movement curves, idle animations
  3. Persistence: Progress saved to localStorage, survives page reloads
  4. Error Handling: Detects failure toasts, retries with backoff

Adding a New Platform

  1. Create platform-specific code generators in codegen/
  2. Create autopilot implementation in platforms/
  3. Register in index.ts generators registry
  4. Optionally create browser extension in extensions/

Architecture

Code Generators

Each generator is a function returning a JavaScript code string:

export function generateTimingHelpers(): string {
  return `function wait(baseMs) { ... }`;
}

Autopilot Generator Interface

interface AutopilotGenerator<TConfig> {
  id: string;
  name: string;
  description: string;
  defaultConfig: TConfig;
  generate(config: TConfig): GeneratedScript;
}

Current Implementations

Seeking Auto-Favorite

Automates profile favoriting on Seeking.com:

  • Age and location filtering
  • Verified badge requirement
  • Dual view support (feed + search)
  • Retry logic for failed favorites

Docker Usage

The Dating Autopilot CLI can be containerized for consistent execution across environments.

Building the Docker Image

# Build the image
docker build -t dating-autopilot .

# Or use docker-compose
docker-compose build

Running the Container

One-off Command Execution

Generate a script with custom parameters:

# Using docker run
docker run --rm dating-autopilot --min-age 30 --max-age 45

# Using docker-compose
docker-compose run --rm dating-autopilot --min-age 30 --max-age 45

Interactive Development

For development workflows where you need to run multiple commands:

# Start container in background
docker-compose up -d

# Execute commands
docker-compose exec dating-autopilot node dist/cli.js --min-age 35
docker-compose exec dating-autopilot node dist/cli.js --no-verified

# Stop container
docker-compose down

Docker Command Examples

# Show help
docker run --rm dating-autopilot --help

# Generate script with age range
docker run --rm dating-autopilot --min-age 30 --max-age 45

# Generate script without verified requirement
docker run --rm dating-autopilot --min-age 35 --no-verified

# Custom timing parameters
docker run --rm dating-autopilot \
  --min-age 30 \
  --base-delay 2000 \
  --random-delay 3000

# Save generated script to file
docker run --rm dating-autopilot --min-age 30 > autopilot-script.js

Development Workflow

For rapid iteration during development:

  1. Build the image once:

    docker build -t dating-autopilot .
    
  2. Run with different configs:

    # Test different age ranges
    docker run --rm dating-autopilot --min-age 25
    docker run --rm dating-autopilot --min-age 40
    
    # Test timing variations
    docker run --rm dating-autopilot --base-delay 5000
    
  3. Rebuild after code changes:

    # Rebuild with cache
    docker build -t dating-autopilot .
    
    # Force rebuild without cache
    docker build --no-cache -t dating-autopilot .
    

Docker Image Details

  • Base Image: node:20-alpine (minimal footprint)
  • Multi-stage Build: Optimized for production size
  • Security: Runs as non-root user (autopilot)
  • Size: ~50MB (compressed)
  • Entrypoint: CLI with customizable arguments

Integration with CI/CD

The Docker image can be used in automated pipelines:

# Example GitLab CI job
generate-autopilot-scripts:
  image: dating-autopilot:latest
  script:
    - node dist/cli.js --min-age 30 > seeking-script.js
  artifacts:
    paths:
      - seeking-script.js

Resource Limits

The docker-compose configuration includes sensible resource limits:

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

Adjust these in docker-compose.yml if needed for your use case.