Skip to main content

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
Each task gets a display ID (e.g., #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:
This allows natural conversation without explicit task syntax.

Mood Inference

The AI can silently detect mood signals:
This provides mood data without interrupting the conversation flow.

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:
You can also manually set your preferred language in the Chat page settings. Your preference is remembered across sessions.

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:
This provides full auditability and enables analytics.

Moods

Mood tracking helps organizations understand team wellbeing over time.

Mood Values

Privacy Model

Individual mood data is private by default. Managers only see aggregated, anonymized statistics.
  • 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

  1. Employee creates inquiry (optionally linked to a flag)
  2. HR/Manager receives notification
  3. Back-and-forth messaging in private thread
  4. Either party can close the inquiry when resolved

Morning Threads

The morning thread system automates daily task tracking rituals in Slack:
  1. 9 AM (configurable) — Bot posts a thread to #today-in-progress: “Good morning team! Share your tasks for today.”
  2. Team replies — Each user replies to the thread with what they’re working on. The bot records each reply as a thread_submission.
  3. 11 AM (configurable) — Bot checks who hasn’t replied and sends a DM reminder to missing users.
This creates a daily accountability ritual where the team shares their plans publicly and the bot tracks participation automatically.

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:
  1. 5 PM (configurable) — Bot posts a nudge as a reply to the morning thread: “Time to wrap up! Update your tasks with emoji statuses.”
  2. 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
  3. 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 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.

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 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.

Platform Identities

Users can be linked to multiple platform identities:
This allows:
  • 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
Key format: org:{orgId}:{platform}:{secretType} Example: org:abc123:slack:bot_token