|
…
|
||
|---|---|---|
| .. | ||
| 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:
- Navigate to
about:debugging#/runtime/this-firefox - Click "Load Temporary Add-on"
- Select
manifest.jsonfromextensions/firefox-seeking/ - 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
- Create platform-specific code generators in
codegen/(e.g.,tryst-card-parser.ts) - Create autopilot implementation in
platforms/(e.g.,tryst-auto-favorite.ts) - Register generator in
index.tsgenerators registry - 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
- No Credentials Storage: Scripts run in user's browser session - no password/login handling
- User Supervision Required: Automation is semi-autonomous (user must be present to paste script and monitor)
- Platform ToS: Users responsible for compliance with dating platform terms of service
- No Data Exfiltration: All data stays in browser (no external API calls)
- 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
Related Documentation
- 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