Hitler is designed with the bot as the primary interface. Unlike traditional SaaS apps where users interact through a web dashboard, Hitler employees interact primarily through Slack.
The web app provides an ops-brain dashboard for admins and managers, plus a simplified employee dashboard with task filters, list/board views, and pipeline access.
Employee ←→ Slack Bot ←→ Hitler API ←→ Database ↓ LLM Provider
Hitler uses AI to parse natural language into structured tasks, which are auto-confirmed immediately — no draft confirmation step required. Users can modify tasks after creation via text.
Hitler goes beyond simple command parsing - it’s a full conversational assistant that understands context, detects intents, and maintains conversation memory.
User: "tomorrow I need to do the budget review and send invoices"Hitler automatically extracts:1. "budget review" (due: tomorrow)2. "send invoices" (due: tomorrow)
This allows natural conversation without explicit task syntax.
Tasks can be organized into pipeline stages — customizable workflow columns (e.g., “Backlog”, “In Progress”, “Review”, “Done”). Pipeline stages are defined per organization and provide a Kanban-style view of work.
Morning thread follow-ups (submission deadline reminders) use LLM-based matching with scored matching to intelligently determine which users have already submitted and which are missing — rather than relying on exact string matching.
The EOD collection system closes the daily accountability loop started by the morning thread:
5 PM (configurable) — Bot posts a nudge as a reply to the morning thread: “Time to wrap up! Update your tasks with emoji statuses.”
7 PM (configurable) — Bot collects EOD replies and uses LLM per-task matching to determine the status of each task. Instead of simple emoji parsing, the LLM analyzes each user’s reply against their task list and scores how well each status update matches each task:
Done — task marked completed
Carry forward — task rolls to next day, carryForwardCount incremented
Dropped — task cancelled
No update — user did not reply, flagged for follow-up
Summary — Aggregated results posted to the progress channel showing team completion rates and carry-forward counts.
Each task can only generate one notification per user per day. Redis key task-notif:{userId}:{taskId}:{date} tracks whether a task was already mentioned in a morning summary, nudge, or overdue reminder. Prevents the same task from appearing in multiple messages.
After any notification DM is sent, subsequent non-urgent nudges are suppressed for 2 hours. This prevents the 15-min proactive scanner from spamming users who just received a morning summary or batch nudge.
Tasks with priority P1/P2 or due within 2 hours bypass the cooldown entirely. Critical deadlines always get through regardless of recent notifications.
9:00 AM — Morning summary sent (2 overdue tasks) → cooldown starts9:30 AM — User adds 3 new tasks9:45 AM — Scanner fires → cooldown active, tasks are normal priority → skipped11:15 AM — Cooldown expired → scanner sends ONE consolidated LLM nudge for 3 tasks3:00 PM — P1 task due in 1 hour → bypasses cooldown → immediate DM
The 15-min proactive scanner groups all upcoming + stale tasks by user and queues one batch nudge per user. The batch handler generates a single natural-language message via Claude Haiku covering all tasks, instead of sending separate DMs per task.
Users can set reminders via natural language (e.g., “remind me in 1 hour about the standup”). The bot uses LLM-based parsing with chrono-node for time extraction. Reminders are stored in the database and queued as BullMQ delayed jobs, making them restart-safe. Users can snooze reminders when they fire.