← Back to Skills Marketplace
seraphetx

Dating Pilot

by seraphetx · GitHub ↗ · v1.0.1 · MIT-0
cross-platform ⚠ suspicious
255
Downloads
0
Stars
0
Active Installs
2
Versions
Install in OpenClaw
/install dating-pilot
Description
Tinder dating assistant - swipe with filters (age/distance), conversation manager with smart replies, follow-up messaging. Use when user wants help managing...
README (SKILL.md)

dating-pilot

Tinder dating assistant CLI with smart profile filtering and conversation management. All commands output JSON.

Feature Overview

  • Smart Filtering: Browse and like profiles by age and distance preferences
  • Conversation Manager: Manage messages, draft smart replies, send follow-ups
  • Status Monitoring: Query chat system status and recent activity summary
  • Photo Diagnosis: Analyze profile photos against dating best practices and get per-photo scores with improvement suggestions

Security & Privacy

Source: Published on npm. The source code will be open-sourced on GitHub in a future release.

Authentication: This tool does not collect, store, or transmit any Tinder account credentials. It operates through Playwright on a browser session where the user has already logged into Tinder. No passwords or auth tokens are extracted from the browser.

Data Flow: Conversation data is sent only to the AI endpoint configured by the user (e.g., Claude API). The tool does not relay, collect, or forward any data to third-party servers. All API calls are made directly from the user's machine.

Local Storage: Configuration (including AI API key) is stored locally in ~/.dating-pilot/ on the user's machine. No data is transmitted to any remote server operated by this tool's author.

No Telemetry: There is no telemetry, analytics, crash reporting, or log uploading of any kind. The tool operates entirely offline except for direct calls to Tinder (via browser) and the user-configured AI endpoint.

API Key Best Practices: The AI API key is provided by the user and used solely for calling the user-specified AI service. It is recommended to use a dedicated, permission-scoped API key rather than a master key.

Getting Started

Before use, configure AI parameters (only Anthropic-format APIs are supported, e.g., Claude API or compatible proxy services). Tinder must already be logged in via your browser — this tool uses that existing browser session and never asks for your Tinder credentials.

# Required: Configure AI
dating-pilot config --ai-base-url \x3Curl> --ai-api-key \x3Ckey> --ai-model claude-sonnet-4-6

# Optional: Set a network proxy (for regions where Tinder access requires a proxy) and matching location preferences
dating-pilot config --proxy \x3Cproxy-url> --latitude 32.06 --longitude 118.79 --timezone Asia/Shanghai

Command Reference

Global Options

  • --help — Show help information

config — Configure AI, proxy, and location

# Set AI configuration (only Anthropic-format APIs supported)
dating-pilot config --ai-base-url \x3Curl> --ai-api-key \x3Ckey> --ai-model \x3Cmodel>

# Set network proxy (for regions where Tinder access requires a proxy)
dating-pilot config --proxy \x3Cproxy-url>

# Set match location preferences
dating-pilot config --latitude 32.06 --longitude 118.79 --timezone Asia/Shanghai

# Can be combined
dating-pilot config --ai-base-url \x3Curl> --ai-api-key \x3Ckey> --proxy \x3Cproxy-url>

# View current configuration
dating-pilot config --show
Parameter Required Description
--ai-base-url Required on first use AI API endpoint (Anthropic format)
--ai-api-key Required on first use AI API key
--ai-model No AI model name (e.g., claude-sonnet-4-6)
--proxy No Network proxy for regions where Tinder requires one (e.g., socks5://host:port)
--latitude No Latitude for match location preference
--longitude No Longitude for match location preference
--timezone No Timezone for match location preference (e.g., Asia/Shanghai)
--show No Show current configuration

swipe — Batch swipe with filters

dating-pilot swipe --like-count \x3CN> [--min-age \x3CN>] [--max-age \x3CN>] [--max-distance \x3CN>]
Parameter Required Description
--like-count Yes Target number of likes
--min-age No Minimum age
--max-age No Maximum age
--max-distance No Maximum distance (km)

Output example:

{
  "success": true,
  "message": "Filtered swipe complete: liked 10, skipped 5, matched 2",
  "data": {
    "likedCount": 10,
    "skippedCount": 5,
    "matchedCount": 2
  }
}

chat start — Start conversation manager

⚠️ Long-running task: Once started, the conversation manager runs in the background. Use exec background:true to invoke. Automatically checks configuration and launches the browser on startup (no manual launch needed). Use chat stop at any time to terminate the manager and release all resources.

dating-pilot chat start [--max-chats \x3CN>] [--user-preferences "\x3Cpreferences>"]
Parameter Required Description
--max-chats No Maximum number of chats to handle at once (default: all). Use a small number (e.g., 3-5) to start.
--user-preferences No User preferences (injected into AI personality, e.g., "girls who like sports")

chat stop — Stop conversation manager

dating-pilot chat stop

Stops the conversation manager and releases resources.

chat status — Query chat status

dating-pilot chat status [--since \x3Cminutes>]
Parameter Required Description
--since No Query activity summary for the last N minutes

Output example (with --since 30):

{
  "success": true,
  "data": {
    "initialized": true,
    "browserId": "tinder",
    "recentActivity": {
      "since": "2026-03-11T10:00:00.000Z",
      "newMessagesReceived": 5,
      "aiRepliesSent": 3,
      "activeChats": [
        {
          "sessionId": "abc123",
          "userName": "Alice",
          "lastMessage": "Haha okay, see you this weekend!",
          "lastMessageTime": "2026-03-11T10:25:00.000Z",
          "direction": "in"
        }
      ]
    }
  }
}

chat proactive — Send follow-up messages

dating-pilot chat proactive

Analyzes conversations and sends follow-up messages to active matches. This runs autonomously once triggered, sending messages to matches that haven't responded. The scope is limited by the --max-chats value set in chat start. Requires the conversation manager to be initialized. Use chat stop to terminate at any time.

open — Open a specific user's chat

dating-pilot open --user "\x3Cusername>"

send — Send a message

dating-pilot send --message "\x3Cmessage content>" [--user "\x3Cusername>"]

If --user is specified, it will first open that user's chat before sending.

diagnose — Analyze profile photos

Analyzes your Tinder profile photos against dating photo best practices using Vision API. Automatically launches the browser and fetches your latest profile photos from Tinder — no need to run chat start first.

dating-pilot diagnose

Output example:

{
  "success": true,
  "message": "Photo diagnosis complete. Overall score: 7/10",
  "data": {
    "overallScore": 7,
    "photoCount": 4,
    "summary": "Strong first photo with clear face. Missing action and animal photos.",
    "photos": [
      {
        "index": 0,
        "score": 8,
        "detectedCategory": "portrait",
        "strengths": ["Clear face", "Good lighting"],
        "suggestions": ["Try a more natural setting"],
        "ruleViolations": []
      }
    ],
    "combinationAdvice": {
      "coveredCategories": ["portrait", "travel"],
      "missingCategories": ["action", "funny", "animal"],
      "duplicateTypes": [],
      "suggestions": ["Add an action shot showing a hobby", "Include a photo with a pet"]
    }
  }
}

Typical Workflow

# 0. First use: Configure AI (only Anthropic-format APIs supported)
dating-pilot config --ai-base-url http://your-api.com/claude --ai-api-key sk-xxx --ai-model claude-sonnet-4-6

# 1. Diagnose profile photos (can run independently, no chat start needed)
dating-pilot diagnose

# 2. Filtered swipe: Like 10 users aged 22-28 within 30km
dating-pilot swipe --like-count 10 --min-age 22 --max-age 28 --max-distance 30

# 3. Start conversation manager (long-running task, runs in background, auto-launches browser)
dating-pilot chat start --user-preferences "Goal: serious relationship, Style: casual and humorous"

# 4. Check chat status
dating-pilot chat status --since 30

# 5. Trigger proactive chat
dating-pilot chat proactive

# 6. Stop chat
dating-pilot chat stop

Heartbeat Monitoring

Used together with HEARTBEAT.md. The Agent periodically calls dating-pilot chat status --since 30 to get recent activity:

  • Activity detected: Summarize new message count, AI reply count, and active chat list, then report to user
  • No activity: Return HEARTBEAT_OK

Recommended heartbeat interval: heartbeat.every: "30m"

Notes

  1. Configuration required before first use — Run dating-pilot config to set AI parameters before using chat start
  2. Smart replies only support Anthropic-format APIs — e.g., Claude API or compatible proxy services
  3. chat start is a long-running task — Use exec background:true to run in the background, otherwise it will block the Agent
  4. chat start auto-launches the browser — No manual launch needed, but Tinder must already be logged in via the browser
  5. Conflict detection — While conversation manager is running, commands that operate the browser (swipe/open/send) will be rejected; run chat stop first
  6. Like limit — Free users have a daily like limit; operate in batches (10-20 per batch)
  7. Data stays local — All configuration and conversation data remain on your machine. No data is sent anywhere except to Tinder (via browser) and your configured AI endpoint
  8. Use a dedicated API key — For safety, use a separate, permission-scoped API key rather than your primary key
  9. Start small with proactive messaging — Use --max-chats with a small number first to review AI message quality before scaling up
Usage Guidance
Before installing or running this skill: - Treat the npm package as code you will execute locally. Inspect the package source (github/npm page, repository, recent commits, maintainer) and prefer packages with an auditable repo and releases. - Understand the tool will use your logged-in browser session (cookies/session tokens). If you want to limit exposure, run it in a separate browser profile or container (or a disposable VM) rather than your primary browser. - The tool stores your AI API key in ~/.dating-pilot/ — use a scoped, permission-limited key (not a master key), restrict file permissions, and consider deleting the key after use. - The tool sends conversation data to whichever AI endpoint you configure. Do not point it at untrusted endpoints. If you must test, use a local or trusted proxy you control. - Because the skill runs background browser automation, consider running it initially with conservative limits (small --max-chats), monitor network activity, and run npm audit before installation. What would increase confidence: a public, pinned source repository (GitHub) with reproducible releases, code review or audits, clear privacy/telemetry statements in code, and a small, well-scoped permission model. If you cannot review the npm package source, consider not installing or only running within an isolated environment.
Capability Analysis
Type: OpenClaw Skill Name: dating-pilot Version: 1.0.1 The skill facilitates automation of Tinder accounts and requires users to input sensitive AI API keys, which are handled by an external CLI tool ('dating-pilot' from the 'tinder-automation' npm package). While the documentation includes a detailed 'Security & Privacy' section claiming no data exfiltration, the tool is currently closed-source and operates via background processes and browser session manipulation. Anomalies such as future timestamps in _meta.json (2026) and references to non-existent models (claude-sonnet-4-6) suggest this may be a deceptive or poorly vetted package, posing a risk of credential or session theft.
Capability Assessment
Purpose & Capability
Name/description match the declared install (npm package tinder-automation -> binary dating-pilot). No unrelated cloud credentials or unrelated binaries are requested in the manifest.
Instruction Scope
SKILL.md instructs the tool to launch a browser (Playwright) and operate using the user's logged-in Tinder session (implicit access to cookies/session tokens) and to run a background conversation manager. These actions access sensitive browser state and perform long‑running tasks; the metadata did not explicitly declare access to browser/session data or the home config path that will be written (~/.dating-pilot/). The tool also sends conversation data to a user-configured AI endpoint — which is expected — but that creates an exfiltration vector if a malicious endpoint is supplied.
Install Mechanism
Install is via npm package tinder-automation which produces the dating-pilot binary. This is the expected mechanism for a Node CLI but carries usual npm risks (unreviewed third-party code will be installed and executed locally). The skill bundle itself contains no code files for review.
Credentials
The manifest lists no required env vars, but SKILL.md requires the user to provide and store an AI API key and base URL (sensitive secrets) in local config. The skill also implicitly uses the browser's Tinder session (sensitive auth tokens) even though it claims not to collect credentials. The mismatch between declared requirements and actual instructions reduces transparency.
Persistence & Privilege
always:false (good). However the conversation manager is explicitly a long‑running background task that will launch browsers and handle chats autonomously when invoked. Autonomous/background execution combined with access to a browser session and stored API keys increases blast radius if the package is malicious or buggy.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install dating-pilot
  3. After installation, invoke the skill by name or use /dating-pilot
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.1
- Added a new Security & Privacy section detailing data handling, local storage, and privacy assurances. - Added "Photo Diagnosis" feature for analyzing Tinder profile photos with improvement suggestions. - Updated metadata to include npm homepage link. - Expanded documentation with more detailed usage notes for configuration, proxy handling, and command behaviors. - Clarified that Tinder credentials are never collected and the tool only works with logged-in browser sessions.
v1.0.0
dating-pilot 1.0.0 — Initial Release - Smart swipe functionality with age and distance filters for Tinder profiles. - Conversation manager with automated smart replies and proactive follow-up messaging. - Batch commands for filtered swiping, starting/stopping chat management, and querying activity/status. - Requires configuration of Anthropic-format AI (e.g., Claude API) before use. - Outputs all results in JSON for easy scripting and integration. - Includes heartbeat monitoring for activity tracking and reporting.
Metadata
Slug dating-pilot
Version 1.0.1
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 2
Frequently Asked Questions

What is Dating Pilot?

Tinder dating assistant - swipe with filters (age/distance), conversation manager with smart replies, follow-up messaging. Use when user wants help managing... It is an AI Agent Skill for Claude Code / OpenClaw, with 255 downloads so far.

How do I install Dating Pilot?

Run "/install dating-pilot" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Dating Pilot free?

Yes, Dating Pilot is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Dating Pilot support?

Dating Pilot is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Dating Pilot?

It is built and maintained by seraphetx (@seraphetx); the current version is v1.0.1.

💬 Comments