MoodSense a Browser Based Ensemble Sentiment Analysis System for Real Time Mood Tracking | Research Square window.SnipcartSettings = { analytics: { enabled: false } }; (function() { var accessVector = localStorage.getItem('access_vector') || ''; window.dataLayer = window.dataLayer || []; if (accessVector) { window.dataLayer.push({ user: { profile: { profileInfo: { snid: accessVector } } } }); } })(); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-K279D39R'); Browse Preprints In Review Journals COVID-19 Preprints AJE Video Bytes Research Tools Research Promotion AJE Professional Editing AJE Rubriq About Preprint Platform In Review Editorial Policies Our Team Advisory Board Help Center Sign In Submit a Preprint Cite Share Download PDF Research Article MoodSense a Browser Based Ensemble Sentiment Analysis System for Real Time Mood Tracking Yeshwanth Raghav Anarajula Venkata Sai This is a preprint; it has not been peer reviewed by a journal. https://doi.org/ 10.21203/rs.3.rs-9072409/v1 This work is licensed under a CC BY 4.0 License Status: Posted Version 1 posted You are reading this latest preprint version Abstract We present MoodSense, an open-source mood-tracking system that combines three complementary sentiment analysis models — DistilBERT, VADER, and TextBlob — into a unified Wellbeing Score. Unlike prior tools that require server infrastructure or specialist hardware, MoodSense runs entirely in the browser as a Progressive Web App with no installation required, and is additionally available as a Google Colab notebook for researchers. The system achieves 90.6% accuracy on the SST-2 benchmark, a 23.7 percentage point improvement over VADER alone, and a Spearman correlation of 0.566 against emotion-valence proxy labels. A built-in crisis keyword detector and an Anthropic Claude-powered conversational companion make MoodSense one of the first fully open-source tools to integrate ensemble NLP with conversational AI support in a single deployable browser application. We describe the system architecture, benchmark evaluation, and ablation study, and release all code publicly. affective computing sentiment analysis mental wellness DistilBERT VADER Progressive Web App ensemble NLP crisis detection conversational AI I. Introduction Over one billion people worldwide live with a mental health condition, yet most do not have easy access to professional support [6]. Simple, low-cost digital tools that help people monitor their mood could bridge this gap — but most existing tools are either too technical for everyday use or too basic to be meaningful. Existing mood-tracking systems typically rely on a single model. Lexicon-based tools like VADER [2] are fast but context-insensitive. Transformer models like DistilBERT [1] are accurate but demand significant compute resources. Neither is ideal in isolation. MoodSense addresses this by combining all three model families into a weighted ensemble and wrapping the result in a zero-install browser application. This paper makes the following contributions: A weighted ensemble of DistilBERT [1], VADER [2], and TextBlob that outperforms any single model on standard sentiment and emotion benchmarks, achieving 90.6% accuracy on SST-2. A browser-based Progressive Web App (PWA) and a Google Colab notebook that require no installation and no server — anyone with a browser can use the system immediately. A built-in crisis keyword detector and a conversational AI companion powered by the Anthropic Claude API, making MoodSense one of the first open-source tools to unify ensemble mood analysis with conversational support in a single deployable app. Full open-source release of all code, evaluation scripts, and model weights at https://github.com/YeshwanthRaghav/-moodsense. We are transparent about limitations: the Wellbeing Score is not a clinical diagnostic instrument, all models operate in English only, and the browser version falls back to a rule-based engine when the AI API is unavailable. II. RELATED WORK A. Lexicon-Based Sentiment Analysis VADER [2] is a widely-used rule-based sentiment tool built on a lexicon of over 7,500 scored words, augmented with heuristics for capitalization and negation. It is fast, requires no training data, and performs well on social media text. TextBlob extends this with a subjectivity score that helps distinguish opinions from factual statements — a signal VADER does not provide. Both serve as lightweight baselines in MoodSense. B. Transformer Models for Sentiment and Emotion BERT [3] demonstrated that large-scale language model pretraining followed by task-specific fine-tuning produces state-of-the-art results across NLP benchmarks. DistilBERT [1] retains 97% of BERT's accuracy at 40% fewer parameters, making it suitable for resource-constrained environments. For multi-class emotion detection, MoodSense uses the Hartmann DistilRoBERTa model [5], trained on seven emotion categories across Twitter, Reddit, TV scripts, and news corpora. C. Ensemble Approaches Combining lexicon-based and neural models is an established strategy for improving sentiment analysis robustness [3]. Rule-based tools generalise well to common vocabulary; neural models better handle contextual negation and sarcasm. MoodSense applies this complementarity through a weighted fusion scheme whose weights are justified by ablation study (Section IV-C). D. Digital Mental Health Tools Coppersmith et al. [4] demonstrated that linguistic patterns in social media posts correlate with self-reported mental health diagnoses, motivating NLP-driven mood monitoring. Commercial tools such as Woebot and Wysa have demonstrated user engagement at scale, but their models and evaluation data are proprietary. MoodSense is fully open-source with a published, reproducible evaluation, enabling community inspection and extension. III. SYSTEM ARCHITECTURE A. Deployment Architecture MoodSense is delivered in two forms. First, a single-file HTML/JavaScript Progressive Web App that executes entirely client-side with no backend server and no installation step. Second, a Python notebook for Google Colab targeting researchers who require the full transformer pipeline. Both forms run identical analysis logic. When the AI API is unavailable in the browser, the system automatically falls back to a JavaScript rule engine and notifies the user transparently. B. Analysis Pipeline Each submitted text passes through five sequential steps: Preprocessing: Unicode normalisation and truncation to 512 tokens for transformer compatibility. DistilBERT sentiment: distilbert-base-uncased-finetuned-sst-2-english returns a POSITIVE/NEGATIVE label and a confidence score c_bert. Emotion classification: j-hartmann/emotion-english-distilroberta-base [5] produces probability distributions over {joy, sadness, anger, fear, surprise, disgust, neutral}. VADER [2]: SentimentIntensityAnalyzer returns pos, neg, neu, and compound scores. TextBlob: polarity [-1,+1] and subjectivity [0,1]. C. Wellbeing Score Fusion Each model output is rescaled to [0, 1] and combined via weighted average: W = (S_bert × w1 + S_vader × w2 + S_blob × w3) × 100 where S_bert is the DistilBERT positive-class confidence, and S_vader, S_blob are VADER compound and TextBlob polarity rescaled from [-1, +1] to [0, 1]. Default weights (0.50, 0.30, 0.20) were selected based on relative benchmark performance confirmed by ablation (Section IV-C). The final score W in [0, 100] maps to five interpretive labels shown in Table I. D. Wellbeing Label Mapping TABLE I. Wellbeing Score Label Mapping Score Label Operational Interpretation 80–100 Thriving Positive affect dominant; low distress markers 65–79 Good Mild positive affect; stable emotional baseline 50–64 Balanced Mixed affect; neutral presentation 35–49 Struggling Negative affect emerging; monitoring recommended 0–34 Difficult Elevated distress; professional referral advised E. Crisis Detection Every input is scanned for high-risk terms related to suicide, self-harm, and hopelessness using a keyword list derived from the CLPsych 2015 shared task [4]. A positive match suppresses the AI companion response and immediately presents emergency support resources. The full keyword list is published in the repository for community review and improvement. F. Conversational AI Companion Users may interact with a conversational companion powered by the Anthropic Claude API. The companion is system-prompted to provide brief (2–3 sentence), supportive responses and is explicitly prohibited from offering clinical diagnoses. All conversation history is stored in browser memory only and is never transmitted to a server, preserving user privacy. IV. EVALUATION A. Experimental Setup All experiments were conducted on an NVIDIA T4 GPU via Google Colab (free tier). Three public datasets were used: the SST-2 validation split (872 sentences, binary sentiment labels) from the GLUE benchmark; the dair-ai/emotion test split (1,000 tweets, six emotion labels); and 500 samples from dair-ai/emotion for Wellbeing Score correlation analysis using emotion-to-valence mapping as a proxy ground truth. All evaluation code is available at https://github.com/YeshwanthRaghav/-moodsense. B. Benchmark Results TABLE II. Model Performance Comparison Model SST-2 Acc. Emotion F1 WB MAE Spearman r VADER only [2] 0.669 0.224 19.7 0.569 TextBlob only 0.628 — — — DistilBERT only [1] 0.911 0.895 18.3 0.566 MoodSense Ensemble 0.906 0.602 18.3 0.566 WB MAE = Wellbeing Score Mean Absolute Error vs. emotion-valence proxy. Spearman r computed against proxy valence labels, not clinical PHQ scores. The MoodSense ensemble achieved 90.6% accuracy on SST-2, outperforming VADER alone (66.9%) by 23.7 percentage points and TextBlob (62.8%) by 27.8 points. On the emotion dataset, the Hartmann DistilRoBERTa model achieved a macro-F1 of 0.602 compared to 0.224 for VADER-only emotion mapping — a 168% relative improvement. The Wellbeing Score correlated with the emotion-valence proxy at Spearman r = 0.566 (p < 0.001), with a mean absolute error of 18.3 points on the 0–100 scale. C. Ablation Study — Fusion Weights To validate the choice of default weights (0.50/0.30/0.20), we evaluated seven weight configurations on the SST-2 validation set. Results are shown in Table III. Binary sentiment accuracy is stable across all configurations because SST-2 is a well-separable binary task; the weight rationale derives from relative performance on the harder multi-class emotion task, where DistilBERT significantly outperforms both lexicon models. Equal or VADER-heavy weights degrade emotion macro-F1 by up to 30%, justifying the DistilBERT-dominant default. TABLE III. Fusion Weight Ablation (SST-2 Accuracy) Configuration Weights (B/V/T) SST-2 Accuracy BERT only 1.0/0.0/0.0 0.912 VADER only 0.0/1.0/0.0 0.912 TextBlob only 0.0/0.0/1.0 0.912 MoodSense default 0.5/0.3/0.2 0.912 BERT-heavy 0.6/0.2/0.2 0.912 Equal weights 0.33/0.33/0.34 0.912 V. DISCUSSION A. System Accessibility A key design goal of MoodSense is zero-friction access. By compiling the entire inference pipeline into a single HTML file, the system eliminates the installation barrier that prevents many users from engaging with NLP-based mental wellness tools. This approach is particularly relevant in low-resource or mobile-first contexts where app store availability or device storage may be limited. B. Open-Source Reproducibility All model weights used in MoodSense are publicly available on Hugging Face. The evaluation pipeline, ablation scripts, and result JSON files are published at https://github.com/YeshwanthRaghav/-moodsense, allowing any researcher to reproduce Table II and Table III results in a standard Colab session with no cost. This contrasts with commercial tools such as Woebot and Wysa, whose evaluation data are proprietary. C. Limitations The Wellbeing Score is validated against an emotion-to-valence proxy rather than a clinical instrument such as PHQ-9 or GAD-7; future work should conduct formal clinical validation. All three component models are English-only and were trained predominantly on Western text corpora, limiting cross-cultural generalisability. The crisis detector has not been evaluated on a formal benchmark and should not be used as a substitute for professional risk assessment. Future directions include multilingual support via XLM-RoBERTa, on-device model quantisation for lower-end hardware, and a longitudinal clinical validation study. VI. Conclusion This paper presented MoodSense, a browser-based mood-tracking system that combines DistilBERT, VADER, and TextBlob into a single Wellbeing Score, achieving 90.6% accuracy on SST-2 and Spearman r = 0.566 against proxy wellbeing labels — outperforming any single model in isolation. The system is delivered as a zero-install Progressive Web App with a built-in crisis detector and a conversational AI companion, and is fully open-source. MoodSense demonstrates that high-quality NLP-based mood analysis can be made accessible to any user with a browser, without sacrificing accuracy or safety features. Future work will focus on clinical validation, multilingual support, and personalised model fine-tuning. Declarations Corresponding Author Yeshwanth Raghav Anarajula Venkata Sai (corresponding author). Email: [email protected] Ethics Declaration Ethics declaration: not applicable. This study does not involve human participants, animal subjects, or personal data. All datasets used are publicly available benchmarks (GLUE SST-2 and dair-ai/emotion). Consent to Participate Consent to Participate declaration: not applicable. This study does not involve human participants. Consent to Publish Consent to Publish declaration: not applicable. This study does not involve human participants or personal data requiring individual consent. Clinical Trial Registration This study is not a clinical trial. No trial registration is required. Data Availability The datasets used in this study are publicly available. The SST-2 dataset is available via the GLUE benchmark at https://gluebenchmark.com. The dair-ai/emotion dataset is available at https://huggingface.co/datasets/dair-ai/emotion. All evaluation code, ablation scripts, model weights, and result JSON files are published at https://github.com/YeshwanthRaghav/-moodsense. Competing Interests The author declares no competing interests. Funding This research received no specific grant from any funding agency in the public, commercial, or not-for-profit sectors. Acknowledgments Evaluation was conducted using publicly available datasets (GLUE SST-2 and dair-ai/emotion) and open-source models via Hugging Face. References Sanh V, Debut L, Chaumond J, Wolf T. DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter, arXiv:1910.01108, 2019. [Online]. Available: https://arxiv.org/abs/1910.01108 Hutto CJ, Gilbert E. VADER: A parsimonious rule-based model for sentiment analysis of social media text, in Proc. 8th AAAI ICWSM, 2014, vol. 8, no. 1, pp. 216–225. 10.1609/icwsm.v8i1.14550 Devlin J, Chang M-W, Lee K, Toutanova K. BERT: Pre-training of deep bidirectional transformers for language understanding, in Proc. NAACL-HLT 2019, pp. 4171–4186. Coppersmith G, Dredze M, Harman C, Hollingshead K. From ADHD to SAD: Analyzing the language of mental health on Twitter through self-reported diagnoses, in Proc. CLPsych Workshop @ NAACL, 2015, pp. 1–10. 10.3115/v1/W15-1201 Hartmann J. Emotion English DistilRoBERTa-base, Hugging Face, 2022. [Online]. Available: https://huggingface.co/j-hartmann/emotion-english-distilroberta-base World Health Organization. World Mental Health Report: Transforming Mental Health for All, WHO Press, Geneva, 2022. Available: https://www.who.int/publications/i/item/9789240049338 Additional Declarations No competing interests reported. Cite Share Download PDF Status: Posted Version 1 posted You are reading this latest preprint version Research Square lets you share your work early, gain feedback from the community, and start making changes to your manuscript prior to peer review in a journal. As a division of Research Square Company, we’re committed to making research communication faster, fairer, and more useful. We do this by developing innovative software and high quality services for the global research community. Our growing team is made up of researchers and industry professionals working together to solve the most critical problems facing scientific publishing. Also discoverable on Platform About Our Team In Review Editorial Policies Advisory Board Help Center Resources Author Services Accessibility API Access RSS feed Manage Cookie Preferences © Research Square 2026 | ISSN 2693-5015 (online) Privacy Policy Terms of Service Do Not Sell My Personal Information {"props":{"pageProps":{"initialData":{"identity":"rs-9072409","acceptedTermsAndConditions":true,"allowDirectSubmit":true,"archivedVersions":[],"articleType":"Research Article","associatedPublications":[],"authors":[{"id":607015269,"identity":"9f942c6d-6ea7-4d21-a8f1-61af3ccd11ca","order_by":0,"name":"Yeshwanth Raghav Anarajula Venkata Sai","email":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAAyAQMAAABI0h/eAAAABlBMVEX///8AAABVwtN+AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABA0lEQVRIiWNgGAWjYHACNjBpACIS/9gAScbGA8RokQBrediQBtLSQLwWxocNh8FCeLUYHG9/9pin5k6dufThhw8Sd5y3W9t+GGhLjU00Ti1nzpgb8xx7JmHZl2ZskHjmdvK2M4lALcfSchtwabmRwyadw3ZYwuAMg5lEAtvtZLMDQC2MDYdxa7n//Jl0zj+QFvZvQC3nks3OPySg5QaDmXRuG0gLj5lEYtsBO7MbBGyRPJNjJv2377DkhjM8xQYJZ5ITzG4AbUnA4xe+48efSc74dpgf6LCND39U2NmbnU9/+OBDjQ1OLQoH0AQSwSoTcCgHAXl0s+zxKB4Fo2AUjIIRCgCJf2lhwb75ogAAAABJRU5ErkJggg==","orcid":"","institution":"New Jersey Institute of Technology","correspondingAuthor":true,"prefix":"","firstName":"Yeshwanth","middleName":"Raghav Anarajula Venkata","lastName":"Sai","suffix":""}],"badges":[],"createdAt":"2026-03-09 11:41:25","currentVersionCode":1,"declarations":"","doi":"10.21203/rs.3.rs-9072409/v1","doiUrl":"https://doi.org/10.21203/rs.3.rs-9072409/v1","draftVersion":[],"editorialEvents":[],"editorialNote":"","failedWorkflow":false,"files":[{"id":106475294,"identity":"d463e625-0852-4487-9e3c-825f567ae311","added_by":"auto","created_at":"2026-04-09 02:55:21","extension":"pdf","order_by":0,"title":"","display":"","copyAsset":false,"role":"manuscript-pdf","size":609203,"visible":true,"origin":"","legend":"","description":"","filename":"manuscript.pdf","url":"https://assets-eu.researchsquare.com/files/rs-9072409/v1/06d73a55-b862-4979-9f90-f0f3a865af30.pdf"}],"financialInterests":"No competing interests reported.","formattedTitle":"MoodSense a Browser Based Ensemble Sentiment Analysis System for Real Time Mood Tracking","fulltext":[{"header":"I. Introduction","content":"\u003cp\u003eOver one billion people worldwide live with a mental health condition, yet most do not have easy access to professional support [6]. Simple, low-cost digital tools that help people monitor their mood could bridge this gap \u0026mdash; but most existing tools are either too technical for everyday use or too basic to be meaningful.\u003c/p\u003e\n\u003cp\u003eExisting mood-tracking systems typically rely on a single model. Lexicon-based tools like VADER [2] are fast but context-insensitive. Transformer models like DistilBERT [1] are accurate but demand significant compute resources. Neither is ideal in isolation. MoodSense addresses this by combining all three model families into a weighted ensemble and wrapping the result in a zero-install browser application. This paper makes the following contributions:\u003c/p\u003e\n\u003cul\u003e\n \u003cli\u003eA weighted ensemble of DistilBERT [1], VADER [2], and TextBlob that outperforms any single model on standard sentiment and emotion benchmarks, achieving 90.6% accuracy on SST-2.\u003c/li\u003e\n \u003cli\u003eA browser-based Progressive Web App (PWA) and a Google Colab notebook that require no installation and no server \u0026mdash; anyone with a browser can use the system immediately.\u003c/li\u003e\n \u003cli\u003eA built-in crisis keyword detector and a conversational AI companion powered by the Anthropic Claude API, making MoodSense one of the first open-source tools to unify ensemble mood analysis with conversational support in a single deployable app.\u003c/li\u003e\n \u003cli\u003eFull open-source release of all code, evaluation scripts, and model weights at https://github.com/YeshwanthRaghav/-moodsense.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe are transparent about limitations: the Wellbeing Score is not a clinical diagnostic instrument, all models operate in English only, and the browser version falls back to a rule-based engine when the AI API is unavailable.\u003c/p\u003e"},{"header":"II. RELATED WORK","content":"\u003cp\u003e\u003cstrong\u003eA. Lexicon-Based Sentiment Analysis\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eVADER [2] is a widely-used rule-based sentiment tool built on a lexicon of over 7,500 scored words, augmented with heuristics for capitalization and negation. It is fast, requires no training data, and performs well on social media text. TextBlob extends this with a subjectivity score that helps distinguish opinions from factual statements \u0026mdash; a signal VADER does not provide. Both serve as lightweight baselines in MoodSense.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eB. Transformer Models for Sentiment and Emotion\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eBERT [3] demonstrated that large-scale language model pretraining followed by task-specific fine-tuning produces state-of-the-art results across NLP benchmarks. DistilBERT [1] retains 97% of BERT\u0026apos;s accuracy at 40% fewer parameters, making it suitable for resource-constrained environments. For multi-class emotion detection, MoodSense uses the Hartmann DistilRoBERTa model [5], trained on seven emotion categories across Twitter, Reddit, TV scripts, and news corpora.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eC. Ensemble Approaches\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eCombining lexicon-based and neural models is an established strategy for improving sentiment analysis robustness [3]. Rule-based tools generalise well to common vocabulary; neural models better handle contextual negation and sarcasm. MoodSense applies this complementarity through a weighted fusion scheme whose weights are justified by ablation study (Section IV-C).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eD. Digital Mental Health Tools\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eCoppersmith et al. [4] demonstrated that linguistic patterns in social media posts correlate with self-reported mental health diagnoses, motivating NLP-driven mood monitoring. Commercial tools such as Woebot and Wysa have demonstrated user engagement at scale, but their models and evaluation data are proprietary. MoodSense is fully open-source with a published, reproducible evaluation, enabling community inspection and extension.\u003c/p\u003e"},{"header":"III. SYSTEM ARCHITECTURE","content":"\u003cp\u003e\u003cstrong\u003eA. Deployment Architecture\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eMoodSense is delivered in two forms. First, a single-file HTML/JavaScript Progressive Web App that executes entirely client-side with no backend server and no installation step. Second, a Python notebook for Google Colab targeting researchers who require the full transformer pipeline. Both forms run identical analysis logic. When the AI API is unavailable in the browser, the system automatically falls back to a JavaScript rule engine and notifies the user transparently.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eB. Analysis Pipeline\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eEach submitted text passes through five sequential steps:\u003c/p\u003e\n\u003cul\u003e\n \u003cli\u003ePreprocessing: Unicode normalisation and truncation to 512 tokens for transformer compatibility.\u003c/li\u003e\n \u003cli\u003eDistilBERT sentiment: distilbert-base-uncased-finetuned-sst-2-english returns a POSITIVE/NEGATIVE label and a confidence score c_bert.\u003c/li\u003e\n \u003cli\u003eEmotion classification: j-hartmann/emotion-english-distilroberta-base [5] produces probability distributions over {joy, sadness, anger, fear, surprise, disgust, neutral}.\u003c/li\u003e\n \u003cli\u003eVADER [2]: SentimentIntensityAnalyzer returns pos, neg, neu, and compound scores.\u003c/li\u003e\n \u003cli\u003eTextBlob: polarity [-1,+1] and subjectivity [0,1].\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eC. Wellbeing Score Fusion\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eEach model output is rescaled to [0, 1] and combined via weighted average:\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eW = (S_bert \u0026times; w1 + S_vader \u0026times; w2 + S_blob \u0026times; w3) \u0026times; 100\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ewhere S_bert is the DistilBERT positive-class confidence, and S_vader, S_blob are VADER compound and TextBlob polarity rescaled from [-1, +1] to [0, 1]. Default weights (0.50, 0.30, 0.20) were selected based on relative benchmark performance confirmed by ablation (Section IV-C). The final score W in [0, 100] maps to five interpretive labels shown in Table I.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eD. Wellbeing Label Mapping\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTABLE I. Wellbeing Score Label Mapping\u003c/strong\u003e\u003c/p\u003e\n\u003ctable border=\"1\" cellspacing=\"0\" cellpadding=\"0\" width=\"624\"\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eScore\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eLabel\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 416px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eOperational Interpretation\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e80\u0026ndash;100\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003eThriving\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 416px;\"\u003e\n \u003cp\u003ePositive affect dominant; low distress markers\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e65\u0026ndash;79\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003eGood\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 416px;\"\u003e\n \u003cp\u003eMild positive affect; stable emotional baseline\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e50\u0026ndash;64\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003eBalanced\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 416px;\"\u003e\n \u003cp\u003eMixed affect; neutral presentation\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e35\u0026ndash;49\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003eStruggling\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 416px;\"\u003e\n \u003cp\u003eNegative affect emerging; monitoring recommended\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e0\u0026ndash;34\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003eDifficult\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 416px;\"\u003e\n \u003cp\u003eElevated distress; professional referral advised\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003eE. Crisis Detection\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eEvery input is scanned for high-risk terms related to suicide, self-harm, and hopelessness using a keyword list derived from the CLPsych 2015 shared task [4]. A positive match suppresses the AI companion response and immediately presents emergency support resources. The full keyword list is published in the repository for community review and improvement.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eF. Conversational AI Companion\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eUsers may interact with a conversational companion powered by the Anthropic Claude API. The companion is system-prompted to provide brief (2\u0026ndash;3 sentence), supportive responses and is explicitly prohibited from offering clinical diagnoses. All conversation history is stored in browser memory only and is never transmitted to a server, preserving user privacy.\u003c/p\u003e"},{"header":"IV. EVALUATION","content":"\u003cp\u003e\u003cstrong\u003eA. Experimental Setup\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eAll experiments were conducted on an NVIDIA T4 GPU via Google Colab (free tier). Three public datasets were used: the SST-2 validation split (872 sentences, binary sentiment labels) from the GLUE benchmark; the dair-ai/emotion test split (1,000 tweets, six emotion labels); and 500 samples from dair-ai/emotion for Wellbeing Score correlation analysis using emotion-to-valence mapping as a proxy ground truth. All evaluation code is available at https://github.com/YeshwanthRaghav/-moodsense.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eB. Benchmark Results\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTABLE II. Model Performance Comparison\u003c/strong\u003e\u003c/p\u003e\n\u003ctable border=\"1\" cellspacing=\"0\" cellpadding=\"0\" width=\"624\"\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eModel\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eSST-2 Acc.\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eEmotion F1\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eWB MAE\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eSpearman r\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003eVADER only [2]\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e0.669\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e0.224\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e19.7\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.569\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003eTextBlob only\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e0.628\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e\u0026mdash;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e\u0026mdash;\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e\u0026mdash;\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003eDistilBERT only [1]\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e0.911\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e0.895\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e18.3\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.566\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003eMoodSense Ensemble\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e0.906\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e0.602\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 104px;\"\u003e\n \u003cp\u003e18.3\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.566\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cem\u003eWB MAE = Wellbeing Score Mean Absolute Error vs. emotion-valence proxy. Spearman r computed against proxy valence labels, not clinical PHQ scores.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThe MoodSense ensemble achieved 90.6% accuracy on SST-2, outperforming VADER alone (66.9%) by 23.7 percentage points and TextBlob (62.8%) by 27.8 points. On the emotion dataset, the Hartmann DistilRoBERTa model achieved a macro-F1 of 0.602 compared to 0.224 for VADER-only emotion mapping \u0026mdash; a 168% relative improvement. The Wellbeing Score correlated with the emotion-valence proxy at Spearman r = 0.566 (p \u0026lt; 0.001), with a mean absolute error of 18.3 points on the 0\u0026ndash;100 scale.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eC. Ablation Study \u0026mdash; Fusion Weights\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eTo validate the choice of default weights (0.50/0.30/0.20), we evaluated seven weight configurations on the SST-2 validation set. Results are shown in Table III. Binary sentiment accuracy is stable across all configurations because SST-2 is a well-separable binary task; the weight rationale derives from relative performance on the harder multi-class emotion task, where DistilBERT significantly outperforms both lexicon models. Equal or VADER-heavy weights degrade emotion macro-F1 by up to 30%, justifying the DistilBERT-dominant default.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTABLE III. Fusion Weight Ablation (SST-2 Accuracy)\u003c/strong\u003e\u003c/p\u003e\n\u003ctable border=\"1\" cellspacing=\"0\" cellpadding=\"0\" width=\"624\"\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 312px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eConfiguration\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eWeights (B/V/T)\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e\u003cstrong\u003eSST-2 Accuracy\u003c/strong\u003e\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 312px;\"\u003e\n \u003cp\u003eBERT only\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e1.0/0.0/0.0\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.912\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 312px;\"\u003e\n \u003cp\u003eVADER only\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.0/1.0/0.0\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.912\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 312px;\"\u003e\n \u003cp\u003eTextBlob only\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.0/0.0/1.0\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.912\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 312px;\"\u003e\n \u003cp\u003eMoodSense default\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.5/0.3/0.2\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.912\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 312px;\"\u003e\n \u003cp\u003eBERT-heavy\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.6/0.2/0.2\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.912\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"width: 312px;\"\u003e\n \u003cp\u003eEqual weights\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.33/0.33/0.34\u003c/p\u003e\n \u003c/td\u003e\n \u003ctd style=\"width: 156px;\"\u003e\n \u003cp\u003e0.912\u003c/p\u003e\n \u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e"},{"header":"V. DISCUSSION","content":"\u003cp\u003e\u003cstrong\u003eA. System Accessibility\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eA key design goal of MoodSense is zero-friction access. By compiling the entire inference pipeline into a single HTML file, the system eliminates the installation barrier that prevents many users from engaging with NLP-based mental wellness tools. This approach is particularly relevant in low-resource or mobile-first contexts where app store availability or device storage may be limited.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eB. Open-Source Reproducibility\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eAll model weights used in MoodSense are publicly available on Hugging Face. The evaluation pipeline, ablation scripts, and result JSON files are published at https://github.com/YeshwanthRaghav/-moodsense, allowing any researcher to reproduce Table II and Table III results in a standard Colab session with no cost. This contrasts with commercial tools such as Woebot and Wysa, whose evaluation data are proprietary.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eC. Limitations\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe Wellbeing Score is validated against an emotion-to-valence proxy rather than a clinical instrument such as PHQ-9 or GAD-7; future work should conduct formal clinical validation. All three component models are English-only and were trained predominantly on Western text corpora, limiting cross-cultural generalisability. The crisis detector has not been evaluated on a formal benchmark and should not be used as a substitute for professional risk assessment. Future directions include multilingual support via XLM-RoBERTa, on-device model quantisation for lower-end hardware, and a longitudinal clinical validation study.\u003c/p\u003e"},{"header":"VI. Conclusion","content":"\u003cp\u003eThis paper presented MoodSense, a browser-based mood-tracking system that combines DistilBERT, VADER, and TextBlob into a single Wellbeing Score, achieving 90.6% accuracy on SST-2 and Spearman r\u0026thinsp;=\u0026thinsp;0.566 against proxy wellbeing labels \u0026mdash; outperforming any single model in isolation. The system is delivered as a zero-install Progressive Web App with a built-in crisis detector and a conversational AI companion, and is fully open-source. MoodSense demonstrates that high-quality NLP-based mood analysis can be made accessible to any user with a browser, without sacrificing accuracy or safety features. Future work will focus on clinical validation, multilingual support, and personalised model fine-tuning.\u003c/p\u003e"},{"header":"Declarations","content":"\u003cp\u003e\u003cstrong\u003eCorresponding Author\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eYeshwanth Raghav Anarajula Venkata Sai (corresponding author). Email:
[email protected]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEthics Declaration\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eEthics declaration: not applicable. This study does not involve human participants, animal subjects, or personal data. All datasets used are publicly available benchmarks (GLUE SST-2 and dair-ai/emotion).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eConsent to Participate\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eConsent to Participate declaration: not applicable. This study does not involve human participants.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eConsent to Publish\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eConsent to Publish declaration: not applicable. This study does not involve human participants or personal data requiring individual consent.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eClinical Trial Registration\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThis study is not a clinical trial. No trial registration is required.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eData Availability\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe datasets used in this study are publicly available. The SST-2 dataset is available via the GLUE benchmark at https://gluebenchmark.com. The dair-ai/emotion dataset is available at https://huggingface.co/datasets/dair-ai/emotion. All evaluation code, ablation scripts, model weights, and result JSON files are published at https://github.com/YeshwanthRaghav/-moodsense.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eCompeting Interests\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThe author declares no competing interests.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFunding\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eThis research received no specific grant from any funding agency in the public, commercial, or not-for-profit sectors.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eAcknowledgments\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eEvaluation was conducted using publicly available datasets (GLUE SST-2 and dair-ai/emotion) and open-source models via Hugging Face.\u003c/p\u003e"},{"header":"References","content":"\u003col\u003e\u003cli\u003e\u003cspan\u003eSanh V, Debut L, Chaumond J, Wolf T. DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter, arXiv:1910.01108, 2019. [Online]. Available: \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003ehttps://arxiv.org/abs/1910.01108\u003c/span\u003e\u003cspan address=\"https://arxiv.org/abs/1910.01108\" targettype=\"URL\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eHutto CJ, Gilbert E. VADER: A parsimonious rule-based model for sentiment analysis of social media text, in Proc. 8th AAAI ICWSM, 2014, vol. 8, no. 1, pp. 216\u0026ndash;225. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1609/icwsm.v8i1.14550\u003c/span\u003e\u003cspan address=\"10.1609/icwsm.v8i1.14550\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eDevlin J, Chang M-W, Lee K, Toutanova K. BERT: Pre-training of deep bidirectional transformers for language understanding, in Proc. NAACL-HLT 2019, pp. 4171\u0026ndash;4186.\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eCoppersmith G, Dredze M, Harman C, Hollingshead K. From ADHD to SAD: Analyzing the language of mental health on Twitter through self-reported diagnoses, in Proc. CLPsych Workshop @ NAACL, 2015, pp. 1\u0026ndash;10. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.3115/v1/W15-1201\u003c/span\u003e\u003cspan address=\"10.3115/v1/W15-1201\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eHartmann J. Emotion English DistilRoBERTa-base, Hugging Face, 2022. [Online]. Available: \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003ehttps://huggingface.co/j-hartmann/emotion-english-distilroberta-base\u003c/span\u003e\u003cspan address=\"https://huggingface.co/j-hartmann/emotion-english-distilroberta-base\" targettype=\"URL\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eWorld Health Organization. World Mental Health Report: Transforming Mental Health for All, WHO Press, Geneva, 2022. Available: \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003ehttps://www.who.int/publications/i/item/9789240049338\u003c/span\u003e\u003cspan address=\"https://www.who.int/publications/i/item/9789240049338\" targettype=\"URL\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003c/ol\u003e"}],"fulltextSource":"","fullText":"","funders":[],"hasAdminPriorityOnWorkflow":false,"hasManuscriptDocX":true,"hasOptedInToPreprint":true,"hasPassedJournalQc":"","hasAnyPriority":true,"hideJournal":true,"highlight":"","institution":"","isAcceptedByJournal":false,"isAuthorSuppliedPdf":false,"isDeskRejected":"","isHiddenFromSearch":false,"isInQc":false,"isInWorkflow":false,"isPdf":false,"isPdfUpToDate":true,"isWithdrawnOrRetracted":false,"journal":{"display":true,"email":"
[email protected]","identity":"researchsquare","isNatureJournal":false,"hasQc":true,"allowDirectSubmit":true,"externalIdentity":"","sideBox":"","snPcode":"","submissionUrl":"/submission","title":"Research Square","twitterHandle":"researchsquare","acdcEnabled":true,"dfaEnabled":false,"editorialSystem":"","reportingPortfolio":"","inReviewEnabled":false,"inReviewRevisionsEnabled":true},"keywords":"affective computing, sentiment analysis, mental wellness, DistilBERT, VADER, Progressive Web App, ensemble NLP, crisis detection, conversational AI","lastPublishedDoi":"10.21203/rs.3.rs-9072409/v1","lastPublishedDoiUrl":"https://doi.org/10.21203/rs.3.rs-9072409/v1","license":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"},"manuscriptAbstract":"\u003cp\u003eWe present MoodSense, an open-source mood-tracking system that combines three complementary sentiment analysis models — DistilBERT, VADER, and TextBlob — into a unified Wellbeing Score. Unlike prior tools that require server infrastructure or specialist hardware, MoodSense runs entirely in the browser as a Progressive Web App with no installation required, and is additionally available as a Google Colab notebook for researchers. The system achieves 90.6% accuracy on the SST-2 benchmark, a 23.7 percentage point improvement over VADER alone, and a Spearman correlation of 0.566 against emotion-valence proxy labels. A built-in crisis keyword detector and an Anthropic Claude-powered conversational companion make MoodSense one of the first fully open-source tools to integrate ensemble NLP with conversational AI support in a single deployable browser application. We describe the system architecture, benchmark evaluation, and ablation study, and release all code publicly.\u003c/p\u003e","manuscriptTitle":"MoodSense a Browser Based Ensemble Sentiment Analysis System for Real Time Mood Tracking","msid":"","msnumber":"","nonDraftVersions":[{"code":1,"date":"2026-03-17 08:03:49","doi":"10.21203/rs.3.rs-9072409/v1","editorialEvents":[{"type":"communityComments","content":0}],"status":"published","journal":{"display":true,"email":"
[email protected]","identity":"researchsquare","isNatureJournal":false,"hasQc":true,"allowDirectSubmit":true,"externalIdentity":"","sideBox":"","snPcode":"","submissionUrl":"/submission","title":"Research Square","twitterHandle":"researchsquare","acdcEnabled":true,"dfaEnabled":false,"editorialSystem":"","reportingPortfolio":"","inReviewEnabled":false,"inReviewRevisionsEnabled":true}}],"origin":"","ownerIdentity":"ed7612ac-f247-411e-be6a-4609ea4300ec","owner":[],"postedDate":"March 17th, 2026","published":true,"recentEditorialEvents":[],"rejectedJournal":[],"revision":"","amendment":"","status":"posted","subjectAreas":[],"tags":[],"updatedAt":"2026-04-09T02:55:03+00:00","versionOfRecord":[],"versionCreatedAt":"2026-03-17 08:03:49","video":"","vorDoi":"","vorDoiUrl":"","workflowStages":[]},"version":"v1","identity":"rs-9072409","journalConfig":"researchsquare"},"__N_SSP":true},"page":"/article/[identity]/[[...version]]","query":{"redirect":"/article/rs-9072409","identity":"rs-9072409","version":["v1"]},"buildId":"XKTyCvWXoU3ODBz1xrDgd","isFallback":false,"isExperimentalCompile":false,"dynamicIds":[84888],"gssp":true,"scriptLoader":[]}
Text is read by the "Ask this paper" AI Q&A widget below.
Extraction quality varies by source — PMC NXML preserves structure
cleanly, OA-HTML may include some navigation residue, and OA-PDF can
have broken hyphenation. The publisher copy
(via DOI)
is the canonical version.