Horizon Mobile β€” On-Device Child Safety Filter

Horizon Mobile is a lightweight (~25M parameter) binary risk classifier for on-device child safety detection. Distilled from Horizon Full v2 using knowledge distillation on 1.6M synthetic conversations. Designed to run entirely on-device as a fast first-stage filter before escalating to the full cloud API.

⚠️ License: SafeCircle Research License (SRL-1.0). Commercial use prohibited without written permission. Contact legal@safecircle.tech.


Model Details

Property Value
Base model google/mobilebert-uncased
Architecture MobileBERT encoder β†’ Linear(512, 2) classifier
Parameters ~25M
Format ONNX
Input Conversation text (max 512 tokens)
Output Binary: safe (0) / risk (1) + confidence
Inference ~25ms on CPU
Teacher model safecircleai/horizon-full
Distillation data 1.6M synthetic conversations

Evaluation Results

Metric Score
F1 0.9562
Precision 0.9997
Recall 0.9163
False Positive Rate 0.10% (1 in 1,034 benign)
False Negative Rate 8.37% (332 in 3,966 risk)
Accuracy 96.8%

The 8.4% false negative rate means ~1 in 12 risk conversations are not flagged. This model must always be paired with Horizon Full for full risk assessment. It is a speed/cost optimization, not a replacement.


Deployment Pattern

Incoming message
      β”‚
      β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Horizon Mobile        β”‚  On-device, ~25ms, free
β”‚   (binary filter)       β”‚  MobileBERT ONNX
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚                 β”‚
  safe              risk
    β”‚                 β”‚
    β–Ό                 β–Ό
 No action    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚  Horizon Full     β”‚  Cloud API, ~500ms
              β”‚  (7-category +    β”‚  Llama-3.2 3B
              β”‚   severity JSON)  β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β”‚
                       β–Ό
               Human moderator review

Usage

Python β€” ONNX Runtime

import numpy as np
import onnxruntime as ort
from transformers import AutoTokenizer

session = ort.InferenceSession("horizon-mobile.onnx")
tokenizer = AutoTokenizer.from_pretrained("safecircleai/horizon-mobile")

conversation = "Child: Can we meet up? Don't tell your parents."
enc = tokenizer(
    conversation,
    return_tensors="np",
    truncation=True,
    max_length=512,
    padding="max_length",
)

logits, = session.run(None, {
    "input_ids": enc["input_ids"].astype(np.int64),
    "attention_mask": enc["attention_mask"].astype(np.int64),
})

probs = np.exp(logits[0]) / np.exp(logits[0]).sum()
label = ["safe", "risk"][probs.argmax()]
confidence = float(probs.max())
print(f"{label} ({confidence:.1%})")
# risk (96.2%)

iOS / Android (ONNX Runtime Mobile)

Load horizon-mobile.onnx with the ONNX Runtime Mobile SDK. Tokenize with a WordPiece tokenizer (vocab from this repo). Input: input_ids + attention_mask as int64 tensors, shape [1, 512]. Output: logits shape [1, 2].


Limitations

  • Binary only β€” outputs safe / risk, no category or severity (use Horizon Full for that)
  • 8.4% FNR β€” approximately 1 in 12 risk conversations are missed at this stage
  • English only β€” multilingual performance untested
  • Not standalone β€” must be paired with Horizon Full and human review in production

Citation

@misc{horizon2026,
  title={Horizon: Child Safety Risk Detection via Fine-tuned LLMs},
  author={SafeCircle},
  year={2026},
  url={https://huggingface.co/safecircleai/horizon-full}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for safecircleai/horizon-mobile

Quantized
(4)
this model