Coordinating availability across multiple teams and contexts is a persistent problem in modern work environments. Whether you're juggling client projects, internal teams, volunteer groups, or social circles, broadcasting a single status to everyone creates friction. Being "unavailable" for one commitment shouldn't mean appearing unavailable to all. Existing tools force users into binary states or overshare context across professional boundaries. The challenge was to build a selective availability system that respects context boundaries while remaining simple enough for everyday use, no calendar integrations to configure, no complex automations to maintain, just manual control over who sees what.
Semafor takes a group-first approach to availability management. Users join distinct groups (projects, teams, organizations) and set independent availability statuses for each. A user might be "Available" for their design team, "Busy until 3pm" for a client project, and "Off this week" for a volunteer committee—all simultaneously, with each group seeing only their relevant status.
The system is built around manual status updates rather than automated synchronization, giving users explicit control over their availability narrative. Group administrators can create custom groups and manage membership, while individual users maintain sovereignty over their status within each context. Email notifications through Resend keep group members informed when availability changes, reducing the need for constant app checking.
The architecture prioritizes simplicity: React provides a responsive web interface, Firebase handles real-time status updates and group management, and Digital Ocean ensures reliable hosting. By avoiding calendar integrations and complex automation, Semafor reduces configuration overhead and potential privacy leakage between contexts.
Semafor is currently in active use with several areas identified for enhancement: