Bulk team email — send to filtered selection from /team page #7
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Let a user (likely a project lead or admin) send an email to a filtered subset of team members directly from the Team view. Replaces the current "copy emails into your mail client" flow which is friction-heavy and error-prone.
m's framing (2026-05-07):
Sketch
Two surfaces:
/teampage — gain filter chips: projects (multi-select), HLC offices (Munich / Düsseldorf / Amsterdam / London / Paris / Milan / Hamburg), profession (after issue #6 ships) or currentproject_teams.role. Existing per-row layout stays.MailServiceto dispatch.Existing infrastructure to reuse
MailService(internal/services/mail_service.go) — already wired to SMTP via env vars (SMTP_HOST,SMTP_USERNAME, etc.). Used for invitations + reminders today. Bulk-send fits naturally as a new method./teampage —frontend/src/team.tsx+client/team.ts— has the rendered list of users. Filter chips can hook into existing render path./admin/email-templates— paliad already has email templates (visible in routing peradmin-email-templates.tsx). Bulk-send could reuse template rendering, with placeholders.paliad.partner_unit_events/paliad.project_events— audit table candidates for "broadcast sent" event.Open design questions (for m)
Sender / privacy
paliad@hlc.com, Reply-To: sender's email (clean infra signature, replies route correctly)paliad@hlc.com, body explicitly names the sender, reply via paliad inboxCompose UX
{{name}},{{first_name}},{{role_on_project}}, etc. Recommend a small fixed set with documentation in the compose modal.paliad.email_templates? Or freeform-only at v1 with templates as follow-up?Filtering
Audit + compliance
paliad.project_events(or newpaliad.email_broadcaststable)? Recommend a dedicated table + admin viewer (/admin/broadcasts) with subject + sender + recipient list + timestamp. Compliance for HLC requires this.Backend / deliverability
MailService.Sendin a goroutine pool with timeout, log failures.Out of scope (v1)
References
internal/services/mail_service.go— current SMTP integration (invites + reminders)frontend/src/team.tsx+client/team.ts— current /team pagefrontend/src/admin-email-templates.tsx+ edit — existing template surfacepaliad.users.office— for HLC-office filterWorker brief
mai/<worker>/feat-bulk-team-email