{
  "schemaVersion": 1,
  "datasetId": "csr-telegram-crypto-signal-message-red-flag-analyzer-2026-07-13",
  "canonicalUrl": "https://cryptosignalsreview.com/telegram-crypto-signals-red-flags/",
  "modifiedAt": "2026-07-14",
  "methodVersion": "1.1.2",
  "pluginVersion": "1.1.2",
  "provenance": {
    "sourceCommit": "8f3bd1055e4bed0006d3e48b954dcef33c141ca6",
    "researchSha256": "f4027f452bb2e7d3fb33eff0a449eac8ebd002fce79de0eb8afd0a468e1f1fa8",
    "generatorSha256": "df82df6f7a4801e2b3d525f8039fbb35f56abb0f49a0e3947cbf68b011d1f1df",
    "checkerSha256": "9edd821835b6f3d83195684600e456e1bebc4d9653deb782a4cf9ec89b145eab",
    "baseCanonicalSha256": "1bf3bf7ecd4733be112d9336c8c1b23864319e90a6e8dd38bf9295ad1e092513",
    "basePluginSha256": "eccaf493ffd3f6ca097d79c1b34d8ea11fa6ddb8fa044fdd84638a69bd34e9ae"
  },
  "decisionBoundary": "The analyzer does not determine whether a message, signal, provider, channel, administrator, payment route or asset is safe, fraudulent, legitimate, accurate, current, profitable, regulated, suitable or verified. It does not validate prices, predict outcomes, execute trades, identify an author, authenticate a Telegram route, estimate intent, assign a safety score, rank a provider, or recommend payment or trading. Pattern matches are review prompts, not findings of misconduct. Missing fields are completeness gaps, not proof that a trade will fail.",
  "input": {
    "type": "plain_text",
    "localOnly": true,
    "networkRequests": false,
    "persistentStorage": false,
    "cookies": false,
    "telemetry": false,
    "upload": false,
    "acceptedLanguages": "Field extraction recognizes English labels and common market abbreviations. Unicode input is preserved. Unrecognized labels remain visible as unclassified text and are not guessed.",
    "privacy": "This analyzer never sends or persistently stores the textarea value. The shared site shell may make unrelated requests that do not receive analyzer input. Generated downloads omit the original message and matched source fragments; they contain only role, field states, issue codes, warning IDs and line numbers."
  },
  "processing": {
    "maxUtf8Bytes": 32768,
    "maxCodePoints": 20000,
    "maxLines": 300,
    "maxLineCodePoints": 2000,
    "unicodeNormalization": "NFKC",
    "removeLeadingBom": true,
    "normalizeLineEndings": true,
    "rejectNullByte": true,
    "rejectUnpairedSurrogates": true,
    "rejectUnsupportedControls": true,
    "rejectBidiControls": true,
    "zeroWidthHandling": "Report and remove U+200B, U+200C, U+200D and U+FEFF from analysis text after preserving the original input in memory. A match after removal is still only a review prompt.",
    "htmlHandling": "Treat all input as text. Never interpret HTML, Markdown, Telegram entities, links or script-like content as executable markup.",
    "lineReferences": "Report one-based line numbers for extracted fields and warning matches. Do not echo matched source text into downloads."
  },
  "roles": [
    {
      "id": "new_signal",
      "label": "New signal",
      "requiredFields": [
        "instrument",
        "direction",
        "marketContext",
        "entry",
        "stop",
        "targets"
      ],
      "supportingFields": [
        "venue",
        "leverage",
        "riskSizing",
        "timingText",
        "sourceLocator"
      ],
      "rule": "At least two new-signal structure fields are present and no stronger cancellation, update or result-recap marker wins precedence."
    },
    {
      "id": "update",
      "label": "Signal update",
      "requiredFields": [
        "instrument",
        "originalReference",
        "updateAction"
      ],
      "supportingFields": [
        "stop",
        "targets",
        "timingText",
        "sourceLocator"
      ],
      "rule": "Update, move-stop, partial-close, new-target or similar change language is present without a stronger cancellation marker."
    },
    {
      "id": "cancellation",
      "label": "Cancellation or invalidation",
      "requiredFields": [
        "instrument",
        "originalReference",
        "updateAction"
      ],
      "supportingFields": [
        "timingText",
        "sourceLocator"
      ],
      "rule": "Cancel, cancelled, invalidated, do-not-enter or setup-invalid language is present."
    },
    {
      "id": "result_recap",
      "label": "Result recap",
      "requiredFields": [
        "instrument",
        "originalReference",
        "outcomeStatus"
      ],
      "supportingFields": [
        "entry",
        "stop",
        "targets",
        "timingText",
        "sourceLocator"
      ],
      "rule": "Closed, result, recap, target-hit, stop-hit, won or lost language is present without a stronger cancellation or update marker."
    },
    {
      "id": "promotion",
      "label": "Promotion or access pitch",
      "requiredFields": [],
      "supportingFields": [
        "timingText",
        "sourceLocator"
      ],
      "rule": "Join, VIP, subscription, discount, activation, payment or access language is present without enough role-specific trade structure."
    },
    {
      "id": "unclear",
      "label": "Role unclear",
      "requiredFields": [],
      "supportingFields": [
        "timingText",
        "sourceLocator"
      ],
      "rule": "The text does not meet any frozen role rule. No role is guessed."
    }
  ],
  "rolePrecedence": [
    "cancellation",
    "update",
    "result_recap",
    "new_signal",
    "promotion",
    "unclear"
  ],
  "fieldGroups": [
    {
      "id": "instrument",
      "label": "Instrument or pair",
      "applicableRoles": [
        "new_signal",
        "update",
        "cancellation",
        "result_recap"
      ],
      "recognizedExamples": [
        "BTC/USDT",
        "BTC-USDT",
        "BTCUSDT",
        "$BTC"
      ],
      "boundary": "A symbol-shaped token is an observed token, not proof that the asset or market exists. Multiple distinct tokens are reported as ambiguous."
    },
    {
      "id": "direction",
      "label": "Direction",
      "applicableRoles": [
        "new_signal"
      ],
      "recognizedExamples": [
        "LONG",
        "SHORT",
        "BUY",
        "SELL"
      ],
      "boundary": "Buy and sell can occur in prose. Opposing directions are reported as ambiguous; no direction is inferred from price movement."
    },
    {
      "id": "marketContext",
      "label": "Market type",
      "applicableRoles": [
        "new_signal"
      ],
      "recognizedExamples": [
        "spot",
        "futures",
        "perpetual",
        "margin"
      ],
      "boundary": "Market type does not identify the exchange, contract specification or jurisdiction."
    },
    {
      "id": "entry",
      "label": "Entry or entry range",
      "applicableRoles": [
        "new_signal",
        "result_recap"
      ],
      "recognizedExamples": [
        "Entry: 65000",
        "Buy zone 65000-65500"
      ],
      "boundary": "The analyzer records a labeled numeric expression and flags a visibly reversed range. It does not verify scale, currency, fillability or current price."
    },
    {
      "id": "stop",
      "label": "Stop or invalidation",
      "applicableRoles": [
        "new_signal",
        "update",
        "result_recap"
      ],
      "recognizedExamples": [
        "Stop loss: 64000",
        "Invalidation below 64000"
      ],
      "boundary": "Multiple distinct stop values are reported as ambiguous. Presence does not prove order placement or execution."
    },
    {
      "id": "targets",
      "label": "Target or take-profit level",
      "applicableRoles": [
        "new_signal",
        "update",
        "result_recap"
      ],
      "recognizedExamples": [
        "TP1: 66000",
        "Targets 66000, 67000"
      ],
      "boundary": "A target is a stated level, not a realized result or return."
    },
    {
      "id": "venue",
      "label": "Venue or exchange",
      "applicableRoles": [
        "new_signal"
      ],
      "recognizedExamples": [
        "Venue: Binance",
        "Exchange: Bybit"
      ],
      "boundary": "A venue name is not an endorsement, account-opening instruction or proof of contract availability."
    },
    {
      "id": "leverage",
      "label": "Leverage",
      "applicableRoles": [
        "new_signal"
      ],
      "recognizedExamples": [
        "Leverage: 5x",
        "5X leverage"
      ],
      "boundary": "The analyzer reports the stated multiplier and separately flags 50x or greater. It does not calculate liquidation price."
    },
    {
      "id": "riskSizing",
      "label": "Risk or position sizing",
      "applicableRoles": [
        "new_signal"
      ],
      "recognizedExamples": [
        "Risk: 1%",
        "Position size 2%"
      ],
      "boundary": "A percentage label does not identify the denominator, account equity, correlation, open exposure or suitability."
    },
    {
      "id": "timingText",
      "label": "Timing text inside the message",
      "applicableRoles": [
        "new_signal",
        "update",
        "cancellation",
        "result_recap",
        "promotion",
        "unclear"
      ],
      "recognizedExamples": [
        "2026-07-13 12:00 UTC",
        "Valid until 14:00 UTC"
      ],
      "boundary": "Telegram's posted time, edit state and forward provenance normally live outside copied message text. A timestamp-shaped value is not authenticated platform metadata."
    },
    {
      "id": "sourceLocator",
      "label": "Message permalink or durable identifier",
      "applicableRoles": [
        "new_signal",
        "update",
        "cancellation",
        "result_recap",
        "promotion",
        "unclear"
      ],
      "recognizedExamples": [
        "https://t.me/channel/1234",
        "Message ID: 1234"
      ],
      "boundary": "A link or identifier does not authenticate the route, author, edit history or continued availability."
    },
    {
      "id": "originalReference",
      "label": "Reference to the original signal",
      "applicableRoles": [
        "update",
        "cancellation",
        "result_recap"
      ],
      "recognizedExamples": [
        "Signal ID: SIG-100",
        "Update for BTC/USDT signal #100"
      ],
      "boundary": "A reference-shaped value does not prove that the original message exists or is unchanged."
    },
    {
      "id": "updateAction",
      "label": "Update, close or cancellation action",
      "applicableRoles": [
        "update",
        "cancellation"
      ],
      "recognizedExamples": [
        "Move stop to 65000",
        "Cancel signal SIG-100"
      ],
      "boundary": "Action wording is reported without deciding whether the action was timely, executable or linked to the correct original."
    },
    {
      "id": "outcomeStatus",
      "label": "Claimed outcome status",
      "applicableRoles": [
        "result_recap"
      ],
      "recognizedExamples": [
        "TP1 hit",
        "Closed at stop",
        "Result: loss"
      ],
      "boundary": "A claimed outcome is not validated against market data, fills, fees, target weights, edits or a complete result population."
    }
  ],
  "issueCodes": [
    {
      "id": "multiple_instruments",
      "label": "Multiple distinct instrument tokens",
      "boundary": "The analyzer cannot determine which instrument controls the message."
    },
    {
      "id": "conflicting_direction",
      "label": "Opposing direction words",
      "boundary": "The analyzer cannot decide whether the text is a hedge, comparison, correction or contradiction."
    },
    {
      "id": "reversed_entry_range",
      "label": "Entry range is written high-to-low",
      "boundary": "The analyzer reports the written order and does not silently reorder or validate the prices."
    },
    {
      "id": "multiple_stop_values",
      "label": "Multiple distinct stop values",
      "boundary": "The analyzer cannot choose the controlling stop without an attributable update sequence."
    }
  ],
  "statePrecedence": [
    "malformed_input",
    "limit_exceeded",
    "warning_only_message",
    "not_assessable",
    "incomplete_message",
    "structured_with_warnings",
    "structured_for_manual_review"
  ],
  "states": [
    {
      "id": "empty",
      "label": "No message entered",
      "rule": "The normalized input contains no non-whitespace characters.",
      "notMeaning": "No conclusion is available."
    },
    {
      "id": "malformed_input",
      "label": "Message contains unsupported control text",
      "rule": "A NUL byte, unpaired UTF-16 surrogate, unsupported control character, or bidirectional override or isolate control is present.",
      "notMeaning": "Ordinary field and warning findings are suppressed. The analyzer does not infer why the character is present."
    },
    {
      "id": "limit_exceeded",
      "label": "Message exceeds the local processing limit",
      "rule": "Any frozen byte, code-point, line-count or line-length limit is exceeded.",
      "notMeaning": "The content is not classified and is not uploaded or truncated into a verdict."
    },
    {
      "id": "warning_only_message",
      "label": "Warning language found without enough signal structure",
      "rule": "At least one warning rule matches while the role is promotion or unclear and no role-specific completeness result applies.",
      "notMeaning": "A phrase match is not proof of fraud, identity, intent or loss."
    },
    {
      "id": "not_assessable",
      "label": "Message role is not assessable",
      "rule": "The role is unclear and no warning rule matches. No universal signal schema is forced onto commentary or unsupported language.",
      "notMeaning": "The message is not labeled safe or unsafe, and no missing-field verdict is produced."
    },
    {
      "id": "incomplete_message",
      "label": "Role-specific message structure is incomplete",
      "rule": "A new signal, update, cancellation or result recap role is detected, but one or more fields required for that role is not detected or is ambiguous.",
      "notMeaning": "Incomplete structure does not prove that a trade will lose or that the sender acted improperly. Warning matches and consistency issues remain separately visible."
    },
    {
      "id": "structured_with_warnings",
      "label": "Required fields found with language to review",
      "rule": "All fields required for the detected role are observed without ambiguity and at least one warning rule matches.",
      "notMeaning": "Role-specific completeness does not override a warning, authenticate the message, validate prices or make the signal safe, accurate or profitable."
    },
    {
      "id": "structured_for_manual_review",
      "label": "Required fields found for manual review",
      "rule": "All fields required for the detected role are observed without ambiguity and no frozen warning rule matches.",
      "notMeaning": "This is not a verification mark, safety state, quality score, endorsement or recommendation to trade."
    }
  ],
  "warningRules": [
    {
      "id": "guaranteed_return",
      "category": "return_claim",
      "label": "Guaranteed-return phrase present",
      "terms": [
        "guaranteed profit",
        "guaranteed return",
        "100% guaranteed",
        "risk free profit",
        "risk-free profit",
        "no loss guaranteed"
      ],
      "nextCheck": "First determine whether the phrase is a claim, quotation, denial, warning or educational example. If it is a claim, request a complete attributable record with losses, open calls, edits and calculation rules.",
      "boundary": "The match identifies wording and reports possible negation or educational context. It does not determine who wrote it, what was intended, or whether a law was violated."
    },
    {
      "id": "cant_miss_or_ai_certainty",
      "category": "return_claim",
      "label": "Cannot-miss or AI-certainty language",
      "terms": [
        "can't miss",
        "cannot miss",
        "sure shot",
        "sure-shot",
        "ai guaranteed",
        "algorithm never loses",
        "bot never loses"
      ],
      "nextCheck": "Separate the stated method from testable, complete records and documented failure conditions.",
      "boundary": "A term match does not evaluate the model, bot or strategy."
    },
    {
      "id": "extreme_percentage_claim",
      "category": "return_claim",
      "label": "Extreme percentage-return claim",
      "terms": [
        "100% profit",
        "500% profit",
        "1000% profit",
        "100% return",
        "500% return",
        "1000% return"
      ],
      "nextCheck": "Ask for the denominator, time period, leverage, fees, complete cohort and realized-account calculation.",
      "boundary": "A percentage phrase is not independently verified and is not converted into an expected return."
    },
    {
      "id": "urgency_pressure",
      "category": "pressure",
      "label": "Urgency or scarcity pressure",
      "terms": [
        "act now",
        "last chance",
        "limited slots",
        "only today",
        "expires in",
        "join now",
        "before it's too late"
      ],
      "nextCheck": "Preserve the message and evaluate the evidence without the stated deadline.",
      "boundary": "Urgency language can be legitimate marketing; the match only marks pressure that should not replace due diligence."
    },
    {
      "id": "fomo_or_exclusivity",
      "category": "pressure",
      "label": "FOMO or exclusivity language",
      "terms": [
        "don't miss out",
        "do not miss out",
        "secret signal",
        "insider signal",
        "exclusive pump",
        "next 100x",
        "moon guaranteed"
      ],
      "nextCheck": "Research the asset and message independently instead of relying on exclusivity or fear of missing out.",
      "boundary": "The match does not establish inside information, manipulation or future performance."
    },
    {
      "id": "coordinated_pump_language",
      "category": "market_conduct_prompt",
      "label": "Coordinated buying or pump language",
      "terms": [
        "pump group",
        "coordinated pump",
        "buy together",
        "everyone buy",
        "pump starts",
        "cooperative trading"
      ],
      "nextCheck": "Do not rely on the message alone. Preserve it and review independent market-conduct guidance before acting.",
      "boundary": "The phrase match is not a legal classification or accusation against a person or group."
    },
    {
      "id": "crypto_payment_request",
      "category": "payment",
      "label": "Direct crypto payment or deposit request",
      "terms": [
        "send usdt",
        "send btc",
        "pay in usdt",
        "pay with crypto",
        "deposit crypto",
        "transfer usdt",
        "wallet payment"
      ],
      "nextCheck": "Reconcile the seller, invoice issuer, recipient, network, amount, terms and refund path through an independently sourced route.",
      "boundary": "A payment phrase does not determine who controls an address or whether a transaction is reversible."
    },
    {
      "id": "release_or_unlock_fee",
      "category": "payment",
      "label": "Fee requested to release, unlock or recover funds",
      "terms": [
        "unlock fee",
        "release fee",
        "withdrawal fee first",
        "pay tax to withdraw",
        "activation fee to withdraw",
        "fee to release funds"
      ],
      "nextCheck": "Do not send another payment based only on the message. Contact the platform or relevant authority through an independently sourced route.",
      "boundary": "The match is a payment warning pattern, not proof that funds exist or that the sender committed fraud."
    },
    {
      "id": "loss_recovery_promise",
      "category": "recovery",
      "label": "Promise to recover or make back losses",
      "terms": [
        "recover your losses",
        "recover lost funds",
        "make your money back",
        "win back your losses",
        "guaranteed recovery"
      ],
      "nextCheck": "Treat recovery claims as a separate commitment requiring independently verified identity, terms and authority.",
      "boundary": "The analyzer cannot determine whether recovery is possible or who controls the route."
    },
    {
      "id": "credential_or_seed_request",
      "category": "account_access",
      "label": "Credential, private-key or seed-phrase language",
      "terms": [
        "send seed phrase",
        "share seed phrase",
        "send private key",
        "share private key",
        "send password",
        "share password",
        "recovery phrase required"
      ],
      "nextCheck": "Determine whether the phrase is a request or a warning such as never share your seed phrase. Never disclose credentials, private keys or recovery phrases; use the platform's independently sourced security route.",
      "boundary": "The analyzer reports explicit wording and possible negation or educational context. It does not inspect an account or infer that the sender requested access."
    },
    {
      "id": "remote_access_request",
      "category": "account_access",
      "label": "Remote-device or screen-control request",
      "terms": [
        "install anydesk",
        "install teamviewer",
        "share your screen",
        "remote access",
        "screen control"
      ],
      "nextCheck": "Do not grant remote control based only on a message. Contact the service through an independently sourced support route.",
      "boundary": "The phrase match does not identify the sender or determine whether support is genuine."
    },
    {
      "id": "withdrawal_permission_request",
      "category": "account_access",
      "label": "Withdrawal-enabled API or transfer permission request",
      "terms": [
        "enable withdrawals",
        "withdrawal permission",
        "api withdrawal",
        "allow fund transfer",
        "enable transfer permission"
      ],
      "nextCheck": "Stop before granting access and verify the minimum permission scope and revocation path independently.",
      "boundary": "The analyzer cannot inspect an API key, exchange setting or permission grant."
    },
    {
      "id": "unsolicited_group_context",
      "category": "route_context",
      "label": "Unsolicited group-add or stranger-contact wording",
      "terms": [
        "you were added",
        "added you to the group",
        "randomly selected",
        "contacted out of nowhere",
        "unsolicited message"
      ],
      "nextCheck": "Do not rely on links or contact details in the message. Find the claimed entity's route independently.",
      "boundary": "The match does not prove how the user actually received the message."
    }
  ],
  "numericWarnings": [
    {
      "id": "high_leverage_50x_or_more",
      "category": "risk_context",
      "label": "Stated leverage is 50x or greater",
      "minimum": 50,
      "maximumAcceptedForParsing": 1000,
      "nextCheck": "Verify contract rules, liquidation behavior, fees, slippage and account-level risk before treating the message as executable.",
      "boundary": "This threshold is a review prompt, not a safe-leverage recommendation or liquidation calculation."
    }
  ],
  "contextNotices": [
    {
      "id": "edited_marker",
      "terms": [
        "edited",
        "last edited"
      ],
      "meaning": "The pasted text contains an edit marker. Preserve the permalink and visible timestamp if available; the analyzer cannot reconstruct prior versions."
    },
    {
      "id": "forwarded_marker",
      "terms": [
        "forwarded from",
        "forwarded message"
      ],
      "meaning": "The pasted text contains a forward marker. The analyzer cannot authenticate the original route or author."
    },
    {
      "id": "zero_width_characters",
      "terms": [],
      "meaning": "Invisible format characters were present and removed only for pattern matching. Their presence does not establish intent."
    }
  ],
  "fixtureCount": 26,
  "adversarialProbeCount": 8,
  "sourceObservationBoundary": "Official pages were reviewed live on 2026-07-13 but are not copied into the repository and no remote response archive is frozen by this ledger. The listed facts are bounded paraphrases for rule selection, not quotations, legal conclusions or evidence about any named provider. Future generation must recheck URLs and materially changed guidance."
}
