Job-Market Sentiment ยท EECS 767

Reddit · Sentiment analysis · 2017–2025

Job-Market Sentiment Across Market Shifts

Measuring how sentiment in four computer-science job-market communities on Reddit changed across the pre-COVID, COVID, and post-COVID periods.

Anahita Memar & Nifemi Lawal

University of Kansas · EECS 767 · Spring 2026

Abstract

We collected 1.54 million posts from four Reddit communities that discuss the computer-science job market — r/jobs, r/cscareerquestions, r/csmajors, and r/recruitinghell — spanning 108 months from 2017 to 2025. Each post is labeled by a logistic-regression classifier trained on the 1.6-million-tweet Sentiment140 corpus, and the results are aggregated by month, community, and topic. Positive sentiment falls from 52.0% before the pandemic to 46.5% afterward. The lowest sentiment appears in posts about layoffs (22.4% positive) and compensation (30.2%), while discussion of AI and large language models grows sharply after 2022.

1.54M
Reddit posts labeled
108
months, 2017–2025
4
communities
48.3%
positive overall
1.6M
training tweets

1Motivation

Between 2017 and 2025 the computer-science job market moved through a hiring boom, a pandemic, a broad correction in tech hiring, and the arrival of generative AI. Each of these shifts was discussed on Reddit in real time, often well before it showed up in official labor statistics. We wanted to know whether that discussion carries a measurable signal: does the sentiment of what people write about the CS job market track the market's turns, and how does it differ between communities and between the topics people raise?

Reddit is not a representative sample of the labor market, and online discussion skews toward people with a question or a complaint. But it is large, timestamped, and public, which makes it a practical source for measuring how one community's mood changes over an eight-year window. We treat the result as a descriptive signal, not a forecast.

2Data and methods

The project runs as a sequence of small, self-contained scripts, so the pipeline can be re-run end to end from the raw data to the tables and figures shown below. It has four parts.

Model

We trained a sentiment classifier on Sentiment140, a corpus of 1.6 million tweets each labeled positive or negative. Text is turned into features with TF‑IDF. We compared logistic regression against multinomial naive Bayes on a held-out split; logistic regression performed better and was used for all inference. Training on tweets and applying the model to Reddit introduces a domain mismatch, which we return to under limitations.

Corpus

We filtered public submissions from the four subreddits, merged and de-duplicated them, and combined each post's title and body into a single text field for the model to label. This produced 1,535,813 labeled posts across 108 months.

Aggregation

Each post is assigned a calendar month and one of three periods: pre-COVID (2017–2019), COVID (2020–2021), and post-COVID (2022 onward). We also tag posts into six keyword-defined topics — recruiting pipeline, compensation, work mode, companies, layoffs and market, and AI/LLM. A post may carry more than one tag; 807,244 posts (52.6%) received at least one.

Reporting

A final step writes the summary tables and figures below, and records — for each of the four research questions in Section 4 — whether the assembled dataset is positioned to test it.

StageWhat it doesCode
TrainFit and select the sentiment classifier on Sentiment140src/training/
BuildFilter, merge, clean, and label the Reddit corpussrc/pipeline/
AnalyzeGroup by month and period; tag topics; comparesrc/analysis/
ReportCheck research questions; write tables and figuressrc/reporting/

Python, pandas, NumPy, scikit-learn (TF‑IDF, logistic regression, naive Bayes), matplotlib, zstandard.

3Findings

Sentiment drifted down over the eight years

Across the whole corpus, 48.3% of posts are labeled positive. Averaged by period, the positive rate falls from 52.0% before the pandemic to 49.0% during it and 46.5% afterward. The monthly series makes the timing visible: sentiment is highest and steadiest in 2017–2019, drops during the pandemic years, and settles into a lower, choppier band once tech hiring tightens after early 2022.

Figure 1. Monthly positive-sentiment rate, January 2017 through December 2025. The shaded band marks the COVID period as defined in the analysis (calendar years 2020–2021).
Figure 2. Positive-sentiment rate by market period (left) and by community (right). Community mood spans roughly twenty points, from r/csmajors at 59.1% to r/recruitinghell at 39.6%.

Community matters as much as timing

The gap between communities is wider than the gap between periods. Posts in r/csmajors (59.1% positive) and r/cscareerquestions (56.48%) — communities centered on students and early-career questions — run well above the corpus average. Posts in r/jobs (42.1%) and r/recruitinghell (39.6%), where people more often arrive to vent a rejection, run well below it. Any read of the overall trend has to account for how much of the volume comes from which community.

Layoffs and pay are the most negative topics

Sentiment varies sharply by subject. Posts tagged layoffs and market are only 22.4% positive — the lowest of any topic — followed by compensation (30.2%) and work mode (31.0%). At the other end, posts naming specific companies are 59.0% positive and AI/LLM posts are near the average at 49.7%. The recruiting pipeline topic is by far the largest, covering 645,071 posts (42% of the corpus), at 45.5% positive.

Figure 3. Positive-sentiment rate by topic. Bars are colored by topic and reused in Figure 4. Hover a bar for the topic's definition.

AI discussion rises fastest after 2022

Indexing each topic to 100 at its first active month isolates the shape of its growth independent of its size. On that basis, AI/LLM discussion climbs faster than any other topic from 2022 onward, and posts about layoffs and compensation also grow through the post-COVID correction — the same period in which overall sentiment sits at its lowest.

Figure 4. Topic volume over time, indexed to 100 at each topic's first active month, so trends of different sizes can be compared by shape. Click a legend entry to hide or show a topic.

4Questions the data is positioned to test

We framed four questions before the analysis. The reporting step records, for each one, whether the assembled dataset is large enough and structured to test it. Confirming them with formal significance testing is future work; the notes below give the counts the assessment is based on.

5Limitations and future work

Limitations

  • The training labels come from Sentiment140 (Twitter), so a domain mismatch with Reddit can affect accuracy.
  • Topic tagging is keyword-based and can miss nuanced phrasing or implicit context.
  • The classifier does not reliably capture sarcasm or more complex discourse.
  • Reddit reflects community discussion, not the full CS job-market population.
  • The results are correlational and should not be read as causal.

Future work

  • Fine-tune the sentiment model on Reddit-native labeled data for a closer domain fit.
  • Replace keyword tagging with a semantic topic classifier.
  • Extend the analysis to comment threads and to individual users over time.
  • Bring in external labor-market indicators to contextualize the trend.

6Resources