Bot-First Architecture
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.
AI-Driven Task Creation
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.Task Flow
When an employee asks the bot to create a task:1
Natural Language Input
Employee: “Remind me to review the budget proposal by Friday”
2
AI Parsing
LLM extracts: title, due date, priority, description
3
Auto-Confirmed
Task is created and confirmed automatically
4
Bot Reply
Bot replies with a summary of the created task(s)
5
Modify via Text
User can update or cancel tasks through natural language
#12) for easy reference in conversation — users can say “mark #12 done” instead of typing the full title.
Conversational AI
Hitler goes beyond simple command parsing - it’s a full conversational assistant that understands context, detects intents, and maintains conversation memory.Intent Detection
The AI analyzes each message to determine intent:Casual Task Detection
Hitler detects tasks even in casual conversation:Mood Inference
The AI can silently detect mood signals:Memory System
Hitler maintains two types of memory:Session Memory
Short-term (Redis) - Last 10 messages - 30-minute TTL - Enables context-aware replies
Persistent Memory
Long-term (PostgreSQL) - User preferences (language, style) - Conversation summaries -
Pending plans
Language Support
Hitler supports 13 languages with automatic detection and native responses:
The bot automatically detects the language from your message and responds in the same language:
Multi-Tenancy
Hitler is built for multi-tenant deployment. Each organization’s data is completely isolated.Roles & Permissions
Hitler uses role-based access control with three levels:Employee
- View/manage own tasks - Log moods - Create inquiries - View own flags
Manager
- Everything Employee can do - View team tasks - View anonymized team mood stats - Resolve team flags - Respond to inquiries
Admin
- Everything Manager can do - Manage users & roles - Configure integrations - Organization settings - Audit logs
Tasks
Tasks in Hitler go through a specific lifecycle: Tasks are auto-confirmed on creation — there is no draft confirmation step.Task Properties
Pipeline Stages
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.Task Logs
Every task change is recorded in an event log:Moods
Mood tracking helps organizations understand team wellbeing over time.Mood Values
Privacy Model
- Employees see their own mood history and trends
- Managers see team averages and participation rates
- No manager can see an individual employee’s mood entries
Journals
Employees can also keep private journal entries - free-form text reflections that are never shared with anyone.Flags
Flags are system-detected concerns that require attention. They’re raised based on patterns in mood data, task completion, and other signals.Severity Levels
Escalation Actions
Each severity level has recommended actions:Email Notifications
When a flag is created, managers automatically receive email notifications:- Immediate notification - Sent when flag is created (not waiting for escalation)
- Includes severity - Subject line shows severity level (LOW, MEDIUM, HIGH, CRITICAL)
- Employee context - Shows employee name and flag reason
- All managers notified - Emails sent to all managers and admins in the organization
Email notifications require the
RESEND_API_KEY environment variable to be configured. See
Environment Variables.Inquiries
Inquiries provide a private communication channel between employees and HR/managers.Inquiries can be linked to flags for context, or created independently for any HR-related
question.
Inquiry Flow
- Employee creates inquiry (optionally linked to a flag)
- HR/Manager receives notification
- Back-and-forth messaging in private thread
- Either party can close the inquiry when resolved
Morning Threads
The morning thread system automates daily task tracking rituals in Slack:- 9 AM (configurable) — Bot posts a thread to
#today-in-progress: “Good morning team! Share your tasks for today.” - Team replies — Each user replies to the thread with what they’re working on. The bot records each reply as a
thread_submission. - 11 AM (configurable) — Bot checks who hasn’t replied and sends a DM reminder to missing users.
Follow-Up Matching
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.Org Preferences
End-of-Day Collection
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,
carryForwardCountincremented - 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.
EOD Org Preferences
Daily Cycle
Notification Deduplication & Anti-Spam
Hitler uses a two-layer dedup system to prevent notification flooding while ensuring urgent deadlines are never missed:Layer 1: Task-Level Dedup (24h)
Each task can only generate one notification per user per day. Redis keytask-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.
Layer 2: User-Level Cooldown (2h)
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.Urgent Bypass
Tasks with priority P1/P2 or due within 2 hours bypass the cooldown entirely. Critical deadlines always get through regardless of recent notifications.Example Flow
Batching
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.Smart Reminders
Users can set reminders via natural language (e.g., “remind me in 1 hour about the standup”). The bot uses LLM-based parsing withchrono-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.
Platform Identities
Users can be linked to multiple platform identities:- Single sign-on via Slack/Teams
- Bot interactions linked to correct user
- Cross-platform identity resolution
Secrets Management
Platform tokens (Slack bot tokens, etc.) are stored securely:- Encrypted at rest using AES-256-GCM
- Stored in Cloudflare KV (not in the database)
- Scoped per organization
- Short-lived in memory - fetched, used, discarded
org:{orgId}:{platform}:{secretType}
Example: org:abc123:slack:bot_token