M.S. Computer Science, Stevens Institute of Technology, 2026. I work where NLP research meets backend engineering: dataset pipelines, model evaluation, and the APIs that put models in front of people.
news articles from Common Crawl mention YouTube or Snapchat near words like anxiety, depression, or therapy. Each dot is one article.
02Filter
1,492
are actually about youth mental health. A GPT-4o ensemble scores relevance, and three human annotators decide the borderline cases. Passing mentions are dropped.
03Label
4 classes
Negative, Mixed, Positive, Neutral. Two LLMs label each article; when they disagree, four models vote. Ties go to the more critical label.
04Result
66.8%
of articles take a negative stance. News mostly covers risk, so the dataset keeps that skew rather than hiding it. That makes it a hard benchmark.
A stance dataset for how news covers teens, video apps, and mental health
Sentiment models call an article negative when it reports bad news. Stance asks a harder question: what position does the writer take? SCREEN is a benchmark built to test that.
I built the NLP pipeline from Common Crawl to labeled corpus, designed the GPT-4o / GPT-4o-mini relevance screen with human-in-the-loop validation, and trained and evaluated the supervised baselines on AWS EC2.
932 labeled by 2-model agreement560 sent to a 4-model voteFleiss’ κ 0.38 on that hard subset
Macro-F1 · held-out test set (448 articles)trainedzero-shot LLM
Logistic RegressionTF-IDF
0.85
Longformer
0.84
RoBERTa
0.84
SVMTF-IDF
0.84
Claude Sonnet 4.6
0.79
GPT-4o-mini
0.75
DeBERTa-v3
0.20
0.25.50.751
A plain TF-IDF model matched the transformers. DeBERTa-v3 collapsed onto the majority class. Zero-shot LLMs struggled most with Neutral reporting, often reading factual coverage of harm as a negative stance.
Dataset on GitHub ↗with J. Singh, T. Xie, S. W. Bae, P. Wang · manuscript in preparation
AKVStevens Marketplace · May 2026–present
An AI interviewer that checks whether the candidate actually knows it
Stevens Marketplace connects organizations, faculty, and students on funded, real-world projects. Faculty review applicants through resume matching and an LLM-run interview. I build the backend services and APIs, and I helped build the interview assistant.
If a candidate pastes answers from another AI, the interview means nothing. I designed Adaptive Knowledge Verification (AKV), a multi-stage process that follows up on each answer to test understanding beyond the first response.
How AKV probes · illustrative exchange
Interviewer
How would you handle class imbalance in a four-class text classifier?
Candidate
Class weights or oversampling, then I’d report accuracy.
Interviewer
Say one class is 7% of the data. What could accuracy hide there?G5 reasoning
Candidate
A model could ignore that class and still score high. Macro-F1 would show it.
Interviewer
Earlier you chose accuracy. Which metric goes in your report now, and why?G2 consistency
G1
Dynamic question perturbation
Questions change shape between candidates and sessions, so prepared answers stop fitting.
G2
Cross-response consistency
Claims made early in the interview are checked against later answers.
G3
Practical competency validation
Asks how the candidate would apply the idea, not only define it.
G4
Rubric-based evaluation
Scores answers against an explicit rubric that faculty can read.
G5
Adaptive reasoning verification
Pushes on the reasoning behind an answer until it holds or breaks.
A personal knowledge base you can talk to. It ingests your documents, notes, and course material, then answers questions with GPT-4o and cites the page each answer came from.
Embedding and vector-retrieval pipelines on FAISS for low-latency semantic search, FastAPI services that connect retrieval to generation, a CLI for ingesting folders, and a Streamlit app for asking questions. The FAISS index stays on your machine.
Try retrieval on this pageTF-IDF · runs in your browser
The real project uses dense embeddings in FAISS. This demo ranks passages from this site with TF-IDF and cosine similarity.
An LLM reviewer for pull requests. Static analysis flags security, complexity, and style problems, then the model explains design and refactoring issues in context.
Scores a resume against a job description on a fixed five-part rubric and returns strict JSON with evidence and suggested fixes. Runs on OpenAI or a local model.