bogdanraduta commited on
Commit
3c371db
·
verified ·
1 Parent(s): 4bda903

Add inference contract: schema_scamguard_v1.json (scamguard_sys_v1)

Browse files
inference_contract/schema_scamguard_v1.json ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$defs": {
3
+ "DetectedTactic": {
4
+ "additionalProperties": false,
5
+ "description": "One detected manipulation tactic with its verbatim evidence span.",
6
+ "properties": {
7
+ "tactic": {
8
+ "$ref": "#/$defs/TacticId"
9
+ },
10
+ "evidence": {
11
+ "description": "Verbatim substring of the input message that triggered this tactic.",
12
+ "minLength": 1,
13
+ "title": "Evidence",
14
+ "type": "string"
15
+ },
16
+ "explanation": {
17
+ "description": "Calm, plain-language sentence(s) a non-technical person can act on.",
18
+ "minLength": 1,
19
+ "title": "Explanation",
20
+ "type": "string"
21
+ }
22
+ },
23
+ "required": [
24
+ "tactic",
25
+ "evidence",
26
+ "explanation"
27
+ ],
28
+ "title": "DetectedTactic",
29
+ "type": "object"
30
+ },
31
+ "SafeAction": {
32
+ "description": "Fixed list of recommended safe actions.\n\nThe model must pick one of these; it can never compose free-text advice\nthat points back at the scammer's own channel. End-user wording lives in\nthe demo/report layer; these are stable machine-readable ids.",
33
+ "enum": [
34
+ "call_bank_official_number",
35
+ "do_not_click_link",
36
+ "verify_via_official_app_or_site",
37
+ "call_family_member_known_number",
38
+ "do_not_share_codes_or_credentials",
39
+ "do_not_send_money",
40
+ "ignore_and_delete",
41
+ "report_to_authorities",
42
+ "check_sender_address",
43
+ "no_action_needed"
44
+ ],
45
+ "title": "SafeAction",
46
+ "type": "string"
47
+ },
48
+ "TacticId": {
49
+ "description": "Fixed tactic taxonomy ids (taxonomy.yaml v1).",
50
+ "enum": [
51
+ "urgency_pressure",
52
+ "authority_impersonation",
53
+ "payment_redirect",
54
+ "credential_phishing",
55
+ "courier_customs_fee",
56
+ "prize_lottery",
57
+ "investment_too_good",
58
+ "romance_advance_fee",
59
+ "family_emergency_impersonation",
60
+ "tech_support",
61
+ "link_obfuscation",
62
+ "refund_overpayment",
63
+ "subscription_trap"
64
+ ],
65
+ "title": "TacticId",
66
+ "type": "string"
67
+ },
68
+ "Verdict": {
69
+ "description": "Three-level verdict. Deliberately not a probability (CLAUDE.md section 2).",
70
+ "enum": [
71
+ "scam_likely",
72
+ "suspicious",
73
+ "no_indicators"
74
+ ],
75
+ "title": "Verdict",
76
+ "type": "string"
77
+ }
78
+ },
79
+ "additionalProperties": false,
80
+ "description": "Complete model output for one input message.",
81
+ "properties": {
82
+ "verdict": {
83
+ "$ref": "#/$defs/Verdict"
84
+ },
85
+ "tactics": {
86
+ "description": "Detected tactics; empty when verdict is no_indicators.",
87
+ "items": {
88
+ "$ref": "#/$defs/DetectedTactic"
89
+ },
90
+ "title": "Tactics",
91
+ "type": "array"
92
+ },
93
+ "explanation": {
94
+ "description": "Overall plain-language explanation of the verdict.",
95
+ "minLength": 1,
96
+ "title": "Explanation",
97
+ "type": "string"
98
+ },
99
+ "recommended_action": {
100
+ "$ref": "#/$defs/SafeAction"
101
+ }
102
+ },
103
+ "required": [
104
+ "verdict",
105
+ "explanation",
106
+ "recommended_action"
107
+ ],
108
+ "title": "ScamGuardOutput",
109
+ "type": "object"
110
+ }