jagnani73P.03
[the record]STATUS: NTU SINGAPORE — AUG 2026

Stories

HACKCBS 3.0
anonymous peer support — matched by shared worries, with a toxicity gate on every message
fig. 1 — peers matched on shared tags; every message passes a toxicity gatescore-matched · TF.js filter

MATCH · scoring…

burnoutanxietylonelinessfamily
seekersupporter

ANONYMOUS CHAT

01THE PROBLEMsupport, without exposure

People in distress need someone who actually shares their worry — and a guarantee the conversation stays safe and anonymous.

Stories matches users — as a seeker or a supporter — for anonymous, judgment-free conversation, pairing those who share the most concern tags. Real-time chat runs on Socket.IO with room state in Redis; every message passes a toxicity classifier before it reaches the seeker. Built for HackCBS 3.0.

02THE ARCHITECTUREscore-matched · filtered in transit

Matching is score-based — pairing users with the most shared tags. Messaging runs on Socket.IO with room state in Redis; every outgoing message is scored by a TensorFlow.js toxicity classifier and censored before delivery. Repeated reports trigger an IP + email ban via Redis-backed middleware.

01

TAG

pick your worries

React

02

MATCH

highest shared-tag score wins

scoring

03

CHAT

real-time, room state in Redis

Socket.IO · Redis

04

GATE

toxic messages censored in transit

TensorFlow.js

STACK — React · TypeScript · Node · Socket.IO · Redis · TensorFlow.js
03WHAT I BUILTfrontend · chat + admin

I built the complete frontend — the tag-selection flow, the live chat window, and the admin panel — around a safety-first model:

01

tag matching

seekers and supporters paired by shared concerns

02

toxicity filter

harmful messages censored before they land

03

report + ban

IP + email ban via Redis middleware

04

anonymous by design

no identities exchanged, ever

04IN THE WILDplates 01–04 · the app