Inspiration
In many workplaces, women are disproportionately assigned non-promotable tasks (NPTs), which are responsibilities like organizing meetings, taking notes, onboarding coworkers, or handling administrative work that keeps teams running but does little to advance career growth. These tasks are often invisible, untracked, and unevenly distributed. We wanted to create a tool that could bring transparency to this imbalance and help organizations recognize patterns that are normally overlooked. That idea led us to build Fair&, a Slack-integrated tool designed to identify and track non-promotable tasks in workplace communication. According to Harvard Kennedy School, “Both men and women are 12 percentage points more likely to ask women to volunteer to take the non-promotable task than they are to ask men. People expect women to volunteer and agree to requests to volunteer more often than men do. Women are also in fact more likely to agree to requests to volunteer than men are. Women are more likely to feel pressure to do non-promotable tasks and are more worried than men about the negative repercussions of declining such requests.” According to American Economic Association, “Seminal studies highlight that women are 48% more likely to volunteer for, and are 44% more likely to be asked to perform, NPTs that benefit the team but penalize the individual's career.”
What it does
Fair& is a Slackbot that monitors workplace conversations and identifies when non-promotable tasks are being assigned. The system tracks who is receiving these tasks, what kinds of tasks they are, and how frequently they occur. The collected data is displayed on a dashboard that gives teams and organizations visibility into task distribution across members. By surfacing patterns in invisible labor, Fair& helps organizations encourage fairer workloads and more equitable opportunities for career advancement. Key features include:
- Slack message monitoring and analysis
- Detection and categorization of non-promotable tasks
- Member-level task tracking
- Analytics dashboard for visualization and insights
- Historical data storage for long-term trends, CSV export
How we built it
We built Fair& using a full-stack JavaScript architecture powered by Node.js and React. For the frontend, we used React 19 with Create React App to build an interactive dashboard that visualizes workplace task distribution. Styling was handled through CSS with optional Tailwind tooling integrated into the project setup. On the backend, we built an Express.js server that handles Slack events, API communication, and analytics processing. We integrated Slack using the Bolt SDK with Socket Mode and slash command support, allowing the bot to monitor conversations in real time. To classify messages, we integrated Anthropic’s SDK into our AI pipeline to analyze Slack conversations and identify potential non-promotable tasks based on language and context. Data storage and persistence were handled through Supabase, giving us a scalable Postgres-backed database for tracking historical trends and analytics. We also implemented CSV export support, environment-based configuration using dotenv, and lightweight logging throughout the application for debugging and observability. Tech stack highlights:
- React 19 + Create React App
- Node.js + Express
- Slack Bolt SDK
- Anthropic AI SDK
- Supabase/Postgres
- Tailwind CSS tooling
- JavaScript ES Modules
Challenges we ran into
One of the biggest challenges was defining what actually counts as a non-promotable task. Workplace responsibilities can be highly contextual, and many tasks exist in gray areas. Designing an AI pipeline that could identify these patterns without oversimplifying workplace dynamics required a lot of iteration. Another challenge was reducing false positives in Slack message classification. Conversations are informal, abbreviated, and often ambiguous, so distinguishing real task assignments from casual discussion was difficult. We also had to think carefully about privacy and ethics. Since workplace communication can contain sensitive information, we wanted Fair& to focus on aggregate insights and workplace trends rather than individual surveillance. Finally, integrating real-time Slack events with backend processing and dashboard updates required careful coordination between our frontend, backend, and database systems.
Accomplishments that we're proud of
One accomplishment we're particularly proud of is the AI classification pipeline. We built a two-layer system where common NPT patterns are caught instantly via regex rules, and ambiguous cases fall through to a Claude-powered LLM with carefully engineered prompting. This lets the bot respond in real time without unnecessary API calls, while still catching nuanced phrasing like "pretty please could you just quickly..." or indirect language like "someone should probably write a recap."
We're also proud of the equity measurement layer. Rather than just counting tasks, we implemented a Gini coefficient to quantify imbalance — the same metric economists use to measure income inequality. Seeing a 0 mean equal distribution and a 1 mean one person carries everything gives teams a single actionable number to track over time. The UX design was another win. Fair& is intentionally non-confrontational: suggestions appear only to the message sender as private ephemeral messages, so no one is called out publicly. When the bot redirects a task, it posts a neutral public notice framed around workload balance, not blame. This design choice was deliberate, and we think it's what makes the tool actually usable in a real workplace.
Finally, building a working agentic note-taking feature, where the bot can take over a notes NPT end-to-end by prompting for a transcript and returning a formatted Slack summary. This demonstrated that Fair& can go beyond detection and actually reduce the burden it flags.
What we learned
We learned that defining "non-promotable" is deceptively hard. The academic research draws a clear line, but workplace language is informal, indirect, and full of social softeners. A lot of our iteration went into recognizing phrasing like guilt-adjacent requests ("I know you're busy but...") or enthusiastic pressure ("omg can you pleeeease") that a naive classifier misses entirely.
We also learned how much context matters in AI pipelines. A message like "can you grab resos?" is ambiguous in isolation but clearly an NPT when you understand that "resos" means reservations for a team dinner. Encoding that domain knowledge into the prompt, rather than hoping the model infers it, made a significant difference in accuracy.
On the engineering side, Slack's Block Kit and Socket Mode have a steep learning curve. Managing interactive message state, ephemeral payloads, and action callbacks across async handlers required careful design to avoid race conditions and stale button data. We also learned firsthand that false negatives (missing an NPT) are more damaging than false positives, so we tuned our prompts to err on the side of flagging, giving the human the final call. Perhaps most importantly, we came to appreciate how much invisible labor research has documented a problem that most organizations have no tooling to address.
What's next for Fair&
The most immediate next step is expanding into direct messages. Right now Fair& only monitors public channels, but NPT assignment often happens in 1:1 DMs where no one is watching. We'd want to add support for users to forward DM conversations to the bot for analysis, and for the bot to proactively DM the redirect recipient when a task is reassigned. We also want to build out the agentic layer further. The current notes automation (summarizing a transcript on demand) is a proof of concept; we see this expanding to categories like support triage, where the bot can draft a response to a common question and post it for human approval before sending. On the analytics side, we'd like to add weekly equity digest messages sent to team leads, a lightweight summary of the Gini trend, who's been carrying the most load, and which categories are driving imbalance. This gives managers a recurring signal without requiring them to log into a dashboard. Longer term, we think Fair& has a role in onboarding and performance review processes. If NPT history were surfaced alongside promotion packets, it would give a much fuller picture of someone's contribution.
Built With
- anthropic
- html/css
- javascript
- node.js
- react
- supabase
Log in or sign up for Devpost to join the conversation.