GEOFF KELLY.
← ALL WORK
WRK//0012025 to now

Kynos.

A detection platform that scores conversations for grooming risk and seals every result into a cryptographically verifiable evidence chain.

ROLE

Sole engineer, all seven codebases

STATUS

v1 live, pre-launch

FOR

Platforms, schools, and youth-serving organizations

YEAR

2025 to now

The problem.

When abuse happens in an online conversation, a screenshot is not evidence. It can be edited, it has no chain of custody, and it falls apart under legal scrutiny. Detection tools exist, but their output usually cannot survive a courtroom.

Kynos is my answer to both halves of that problem: detect grooming patterns in conversations with a purpose-trained language model, and make every scored message independently verifiable years later.

What I built.

  • A Rust API that seals every scored message into an append-only SHA-256 hash chain. A database trigger physically blocks updates and deletes on evidence rows. Exports are signed with Ed25519 and carry RFC 3161 trusted timestamps from an independent authority.
  • The export is a self-contained bundle a forensic examiner can verify offline with nothing but openssl, jq, and python3. No Kynos account required, no trust in me required. That is the point.
  • The detection side is a Longformer transformer fine-tuned in two stages on roughly 580,000 records, chosen for its 4,096-token context so it reads a whole conversation arc instead of a snippet. It runs alongside 14 deterministic behavioral features that can be reproduced by hand in front of a judge.
  • A locally-hosted 14B LLM writes structured forensic reports under a constrained grammar, with every quoted message validated verbatim against the transcript so it cannot invent evidence.
  • Customer and admin dashboards in React 19, and the evaluation pipeline treats the model like it will be cross-examined: locked test splits, calibration held separate from training, fairness checks per cohort, and regression tests pinning every data-leakage bug I found and fixed.

Engineering notes.

  • 694 automated tests across the Rust API and the ML pipeline, with integration tests running against a real migrated Postgres instance
  • Versioned hash encoding: when I found a field-boundary weakness in v1, v2 length-prefixed every field while old rows still verify under v1
  • Constant-time API key auth, TOTP two-factor, HMAC-signed webhooks with replay protection, and an IP allowlist between services
  • 36 database migrations, structured JSON logging, Prometheus metrics
  • Every stored score records the exact model, config hash, and git build that produced it, so results stay attributable after the fact
Kynos dashboard overview with risk scores and session activity
DASHBOARD OVERVIEW // SEEDED DEMO DATA
Kynos evidence chain with cryptographic verification status per message
EVIDENCE CUSTODY CHAIN
Kynos analytics screen with risk trends over time
ANALYTICS
Kynos API playground for testing scoring endpoints
API PLAYGROUND
NEXT // WRK//002

Zenith Kids Platform