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

DATING SAFETY

Generally available

Catch the romance scam before the money moves - not after the report.

200 dating-risk labels across 40 languages - romance scams, catfishing, coercion, minor safety - each returned with the configuration ID and receipt you need to reproduce the call. No generative model is used to produce classifications.

200 labels · 5 risk groups · 40 languages · p95 target <500ms · No generative model is used to produce classifications

detection result
romance_scam
scam_money_requestvery high
scam_customs_feevery high
LanguageEN
Configurationsqcfg_SNEEC9V3
Fingerprintfp_a3f8…e2

Re-run with the same pinned version → identical result

What this analyzer does and doesn't do

  • Detect 200 labeled dating-risk behaviors in member text
  • Return confidence-ranked signals your safety engine can route on
  • Cover 40 languages
  • ✕Analyze photos, profiles, video, or audio
  • ✕See match history, payment records, or account metadata
  • ✕Determine whether a user is actually a scammer
  • ✕Replace your moderation team or make the final call

Sentiqra returns structured signals. Your policy, reviewers, and models make the decision. See the full boundary statement →

WHAT YOU'LL DETECT

Not "suspicious: 0.91". The specific risk behavior - with the label your policy already knows.

Romance Scam & Financial Exploitation

scam_money_request

“The customs office is holding your gift - I need €400 for the release fee” → very high

Catfishing & False Identity

catfish_refuses_video

“My camera is broken, I can’t do video calls” → very high

Grooming & Psychological Manipulation

groom_isolation

“You don’t need to tell your friends about us” → very high

Minor Safety & Predatory Behavior

minor_age_deception

Detected - example withheld

Threats & Coercive Control

threat_revenge_porn

Detected - example withheld

200 indicators across 5 risk groups - covering 40 languages.

Same deterministic product contract as every Sentiqra analyzer: pinned configuration, signed receipt, replayable results. Per-language benchmark publication is pending for this analyzer - evaluate it on your own labeled workload; the published methodology applies when results ship.

p95 latency target <500ms No generative model is used to produce classifications Every run tied to a config ID
See benchmarks and methodology

WHERE IT GETS USED

Three jobs this analyzer does well.

Romance-scam triage before the money moves

A dating platform runs member conversations through Dating Safety and routes scam_money_request, scam_emergency_medical, and traffick_job_offer hits to a specialized queue - so financial lures get reviewed before a victim sends funds, not after the chargeback.

Fit signals: financial-exploitation losses · specialist review queues · multilingual member base

Minor safety and age-deception escalation

minor_age_deception and minor_meetup_request signals bypass the normal queue entirely and escalate to your highest-severity lane. The receipt attached to each hit gives investigators an exact, replayable record of what was flagged and why.

Fit signals: regulatory exposure · zero-tolerance category · audit trail required

Off-platform and unsafe-contact warnings

When abuse_off_platform or privacy_phone_demand fires alongside scam indicators, the platform shows the member an in-context warning - "this match is asking to move off-platform fast" - instead of silently banning and teaching the scammer nothing.

Fit signals: in-product warnings · member education · risk-friction UX

Send text. Get ranked labels + a receipt you can replay.

request
POST /v1/analyze
Authorization: Bearer sq_live_your_api_key_here

{
  "text": "My love, the customs office is holding your package. I need €400 for the release fee - can you send it today?",
  "language": "en",
  "analyzers": ["dating-safety"]
}
response
{
  "language": "en",
  "signals": [
    { "analyzer": "dating-safety", "code": "deception_manipulation", "label": "Deception & Manipulation", "score": 0.9, "confidence": "very_high", "level": "category" },
    { "analyzer": "dating-safety", "code": "scam_money_request", "label": "Direct request for money or financial help", "score": 0.9, "confidence": "very_high", "level": "label", "parent": "deception_manipulation" },
    { "analyzer": "dating-safety", "code": "scam_emergency_medical", "label": "Fabricated medical emergency needing funds", "score": 0.9, "confidence": "very_high", "level": "label", "parent": "deception_manipulation" }
  ],
  "meta": { "analyzers": [{ "name": "dating-safety", "status": "completed", "signal_count": 3, "billed": true }], "partial": false },
  "usage": { "analyzer_runs": 1, "billed": true },
  "verification": {
    "configuration": "sqcfg_SNEEC9V3",
    "fingerprint": "fp_8a72...19f",
    "input_commitment": "ic_31bd...a42",
    "signature": "sig_ed25519_4c1f...e2a"
  }
}

READING THE OUTPUT

What a Dating Safety result tells you - and what it doesn't.

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.

Dating Safety is on every plan. Even Free.

Free

5,000 runs/mo

Build

$149/mo · 50,000 runs/mo

Growth

$349/mo · 150,000 runs/mo

Production

$799/mo · 500,000 runs/mo

Scale

$2,999/mo · 2,500,000 runs/mo

Enterprise

By agreement · SOC 2 Type II in progress

Deterministic by construction, provable by receipt.

A signed verification receipt - configuration ID (sqcfg_...), result fingerprint (fp2_...), input commitment (ic3_...), and Ed25519 signature (sig_ed25519_...) - ships with every successful analysis result. Pin it to the stored decision and a later replay under the same supported configuration and output profile yields the identical canonical result - the difference between "the model said so" and evidence.

Verify a receipt

Where it fits in your pipeline

MEMBER MESSAGES ↓ DATING SAFETY ↓
Romance Scamvery high
Catfishingvery high
Coercive Controlvery high
↓ YOUR POLICY ↓ Allow · Warn · Review · Restrict

Often paired with: Fraud & Scam for payment and investment lures, Trust & Safety for general platform abuse, Emotion Analysis for manipulation and distress scoring.

Used in: Marketplace & Messaging Safety and Content Moderation

Try it on your hardest scam conversations.

5,000 analyzer runs/month · No card required

Analyzer FAQ

New to Sentiqra? It's a deterministic text-analysis API - you send text, you get labeled, confidence-scored signals plus a replayable receipt. Dating Safety is the romance scam & unsafe contact detection analyzer.

What does Dating Safety detect?

Detect romance scams, coercion, unsafe contact escalation, and dating-platform risk signals in multilingual text.

Which languages does it cover?

40 supported languages. Per-language benchmark publication is pending for this analyzer - evaluate it on your own labeled workload before relying on a specific language. Coverage is per-analyzer, not platform-wide.

How do I call it?

POST /v1/analyze with "analyzers": ["dating-safety"]. Same endpoint, auth, and response shape as every other analyzer - you can pair it with one more analyzer in the same request.

What does a call cost?

One analyzer run per call, billed against your plan's included runs (overage per plan). All GA analyzers are on every plan, including Free - see pricing.

How do I evaluate it on my data?

Label a few hundred of your own examples, run them through the free tier, and compare our signals to your labels. The evaluation playbook walks through building that test set - it's the same method we use internally.