We are currently building something exciting and will be launching soon. Registration is temporarily closed. Launching soon — registration temporarily closed.

INDICATORS REFERENCE

Dating Safety Indicators

Dating Safety covers 200 indicators across 5 risk groups. Each signal has a stable slug and code for programmatic access. Representative signals are shown publicly; the complete reference is available to customers.

200
Indicators
5
Risk Groups
40
Languages
40
Avg / Group
5 results

Showing 5 representative indicators of 200. The complete taxonomy is available to customers.

Request access
# Indicator Slug code Risk Group
001 scam money request scam_money_request deception_manipulation.scam_money_request Deception Manipulation
002 stalk repeated messaging stalk_repeated_messaging abuse_threats.stalk_repeated_messaging Abuse Threats
003 sexhar explicit unsolicited sexhar_explicit_unsolicited sexual_boundaries.sexhar_explicit_unsolicited Sexual Boundaries
004 minor targeting minor_targeting exploitation.minor_targeting Exploitation
005 spam promotional link spam_promotional_link platform_misc.spam_promotional_link Platform Misc

Browse by Risk Group

Alternatively, explore indicators grouped by their parent risk group:

1

Deception Manipulation

deception_manipulation
50 Indicators

The complete signal list for this risk group is available to customers. Request access to view it.

2

Abuse Threats

abuse_threats
50 Indicators

The complete signal list for this risk group is available to customers. Request access to view it.

3

Sexual Boundaries

sexual_boundaries
30 Indicators

The complete signal list for this risk group is available to customers. Request access to view it.

4

Exploitation

exploitation
30 Indicators

The complete signal list for this risk group is available to customers. Request access to view it.

5

Platform Misc

platform_misc
40 Indicators

The complete signal list for this risk group is available to customers. Request access to view it.

Reading Dating Safety output

What you can safely infer from a result - and what you must not.

Intended task

Flag documented dating-risk patterns - scam lures, coercion, unsafe-contact escalation - in member text for review and warning flows.

Input requirements

  • text - the only field analyzed; up to 4,096 Unicode code points. Over the limit is rejected with input_too_long, never truncated.
  • language - must be a language this analyzer supports. Unsupported codes are rejected with 400 unsupported_language, never analyzed as a different language.
  • analyzers - include "dating-safety"; up to 2 analyzers per request, one billed run each.
  • No context beyond text - no user IDs, history, profiles, or attachments are read or inferred.
  • Analyzes the submitted message only - profiles, photos, match history, and payment records are not inputs.

Ordinary positive

“My love, the customs office is holding your package. I need EUR 400 for the release fee - can you send it today?”

romance_scam very high
scam_money_request very high
scam_customs_fee high

Safe inference: The message matches documented romance-scam and money-request patterns - route it to the specialized queue before money moves.

Confusing negative · Quotation

“He wrote "the customs office is holding your gift - I need EUR 400 for the release fee" - is this a scam?”

What happens: Scam signals can still fire: the member is quoting the lure to report it, but the analyzer scores the submitted text as written. The signal means the text contains documented scam language - not that the sender of this message is a scammer.

Why it's tricky: Reports, safety warnings, and appeals all quote the messages they describe. Combine the signal with who sent the text and your own context - and remember that a bare "can you send me money?" may be too thin to match strongly. Absence is "not detected," never clearance.

What you can safely infer

  • Which documented risk behaviors the text matched, and at what signal-match strength.
  • That the receipt ties each flag to the configuration that produced it - a replayable record for investigators.

What you must not infer

  • ✕That the sender is actually a scammer - the signal describes the text, not the person.
  • ✕That the recipient is a victim or that a reported incident occurred.
  • ✕That unflagged conversations are safe - a missing signal means "not detected," never "cleared."
  • ✕Anything outside the submitted text - no photos, profiles, or account metadata are analyzed.

Boundary: Dating Safety signals flag risk language in a message - they do not determine that a user is a scammer, and a clean result is not clearance. Enforcement stays with your moderation team.

Using Indicators in API Responses

When you call /v1/analyze, the response includes matched indicators with signal-match scores. Each signal is identified by its code and includes a level field (“category” or “label”). A score expresses signal-match strength under a particular analyzer configuration. It is not a probability that the signal or a downstream action is correct. Validate action thresholds on representative labeled data.

{
    "language": "en",
    "language_source": "declared",
    "signals": [
        {
            "analyzer": "dating-safety",
            "code": "deception_manipulation",
            "label": "Deception & Manipulation",
            "score": 0.94,
            "level": "category"
        },
        {
            "analyzer": "dating-safety",
            "code": "scam_money_request",
            "label": "Direct request for money or financial help",
            "score": 0.92,
            "level": "label",
            "parent": "deception_manipulation"
        },
        {
            "analyzer": "dating-safety",
            "code": "scam_emergency_medical",
            "label": "Fabricated medical emergency needing funds",
            "score": 0.9,
            "level": "label",
            "parent": "deception_manipulation"
        }
    ],
    "meta": {
        "analyzers": [
            {
                "name": "dating-safety",
                "status": "completed",
                "applicability": "analyzable",
                "assessment": "signals_detected",
                "signal_count": 3,
                "billed": true
            }
        ]
    },
    "usage": {
        "analyzer_runs": 1
    },
    "verification": {
        "configuration": "sqcfg_SNEEC9V3",
        "fingerprint": "fp_8a72...19f",
        "input_commitment": "ic_31bd...a42",
        "signature": "sig_ed25519_4c1f...e2a",
        "key_id": "edk_af4f218e"
    }
}