# nspam — Nostr reply-spam classifier (v2.2) On-device spam scoring for Nostr reply notes. See `model_card.md` for details. ## Files | file | purpose | |---|---| | `model.txt / model.json` | trained model | | `calibration.npz` | isotonic calibration table | | `config.json` | feature layout + hashing convention | | `parity_fixtures.jsonl` | reference inputs + expected scores | | `hash_fixtures.jsonl` | token-level hash checks | ## Integrating A port needs: 1. **Feature extraction** — reproduce preprocessing + hashing + structural features. See `config.json` for the exact layout. 2. **Model inference** — load `model.txt` via LightGBM4j (Kotlin/Java), LightGBM C API, or ONNX conversion. 3. **Calibration** — piecewise-linear interpolate the raw score through `calibration.npz` knots. Validate your port against `parity_fixtures.jsonl`.