Documentation

Everything you need to know about ProjectPulse — from quick setup to advanced AI features.

Quick Start

Get ProjectPulse running in your workspace in three steps.

01

Install

Click Add to Slack on the landing page. Approve the permissions and ProjectPulse joins your workspace instantly.

02

Connect

Open the App Home tab in Slack. Choose API Key for a quick start or OAuth for per-user attribution.

03

Create

Type /create-ticket in any channel or use /summarize-ticket to let AI draft a ticket from your conversation.

Setup & Configuration

API Key Setup Quick

Best for small teams who want to get started fast. All tickets are created under a shared service account.

App Home → Setup with API Key
Enter Base URL + API Key
Connection test → Done

OAuth Setup Recommended

Per-user attribution — each team member creates tickets under their own OpenProject account.

Admin Setup

App Home → Setup with OAuth
Enter Base URL + Client ID + Secret

Each Team Member

App Home → Connect with OpenProject
Browser OAuth flow
Connected
Tokens refresh automatically — no need for manual reconnects. PKCE is used for security.

Channel-Project Linking

Link a Slack channel to an OpenProject project. After linking, commands in that channel automatically use the linked project as the default.

@ProjectPulse link project Backend

Slash Commands

ProjectPulse provides six slash commands. Use them in any channel where the bot is present.

/create-ticket

Opens an interactive modal to create a work package in OpenProject.

Auto-Membership: When assigning a user who isn't a project member, ProjectPulse automatically adds them. If it can't (permissions), you'll see a friendly message.
Type /create-ticket
Select a project
Choose type, assignee, enter details
Submit — ticket created

You can also create a new project directly from the modal.

/summarize-ticket

AI reads your conversation and drafts a structured ticket with subject, description, and suggested assignee.

Arguments

UsageWhat it does
/summarize-ticketReads the last 30 messages in the channel
/summarize-ticket 50Reads the last 50 messages (max 200)
/summarize-ticket 2hReads messages from the last 2 hours
/summarize-ticket <thread-link>Reads a specific thread
Tip: The AI detects key decisions, action items, and even suggests an assignee from the discussion. It writes in the language of the conversation.

/my-tasks

Shows your assigned open work packages from OpenProject. Each task displays status, type, project, and due date.

Every task has an overflow menu with quick actions: Open in OpenProject, Log Time, and Update Status.

/log-time

Log time spent on a work package. Opens a modal with your assigned tasks, hours, date, and comment fields.

Examples

/log-time #123 2h Bug investigation
/log-time #456 1h30m Code review
/log-time #789 45m

Supported time formats: 2h, 1h30m, 45m, 1.5h

/update-status

Change the status of a work package. Shows only valid status transitions based on your OpenProject workflows.

/update-status #123

/comment-ticket

Add a comment directly to a work package without opening a modal.

/comment-ticket #456 Bug is fixed, ready for testing

Message Shortcut

Right-click (or long-press on mobile) any message in Slack, then select Summarize to Ticket from the shortcuts menu.

Right-click a message
More actions → Summarize to Ticket
AI summarizes the thread
Review & create ticket
This uses the same AI as /summarize-ticket but automatically targets the thread of the clicked message.

@Mention System

Mention @ProjectPulse in any channel and write what you want in natural language. The bot understands both German and English.

Smart Routing: ProjectPulse uses a three-layer system — structural shortcuts for obvious patterns, LLM-powered intent detection for natural language, and keyword fallback for reliability.

Create a Ticket

@ProjectPulse create a ticket from this discussion
@ProjectPulse erstelle ein Ticket "Fix login bug"
@ProjectPulse fasse zusammen

My Tasks

@ProjectPulse my tasks
@ProjectPulse meine Aufgaben

Update Status

@ProjectPulse update #123 to done
@ProjectPulse setze #123 auf in Bearbeitung

Log Time

@ProjectPulse log 2h on #123
@ProjectPulse buche 1h30m auf #456 Code Review

Add Comment

@ProjectPulse comment #123 Looks good, ready for review
@ProjectPulse kommentiere #456 Bug gefixt

Query Work Packages

@ProjectPulse open bugs
@ProjectPulse offene Features im Projekt Backend
@ProjectPulse erledigte Tasks

Filter by type (Bug, Feature, Task, User Story, Epic, Milestone) and status.

Sprint Tickets

@ProjectPulse sprint tickets
@ProjectPulse was ist im Sprint noch offen?

Help

@ProjectPulse help
@ProjectPulse was kannst du?

App Home

Open the ProjectPulse App Home tab in Slack for a personal dashboard.

Connection Status

See your OpenProject connection at a glance and manage your account.

Quick Actions

One-click buttons for Create Ticket, Log Time, and My Tasks.

Your Tasks

Your 5 most recent assigned work packages with status and due dates.

Account

Connect or disconnect your personal OpenProject account (OAuth).

AI & Summarization

ProjectPulse uses AI to transform messy Slack discussions into structured work packages.

Structured Output

The AI generates a subject, detailed description with key decisions and action items, and a suggested assignee.

Language Detection

The ticket is written in the same language as the discussion. German conversation = German ticket.

Mention Resolution

Slack @mentions are automatically resolved to real OpenProject usernames in the ticket.

Intent Detection

The @mention system uses AI to understand what you want — no rigid command syntax needed.

Before & After

A messy Slack discussion turns into a structured, actionable work package — automatically.

Slack Conversation
MK
Maria K.10:23 AM

hey, Safari users are complaining about the login page — it just shows a white screen after clicking "Sign in"

TW
Tom W.10:25 AM

I can reproduce it on Safari 17.2. Chrome works fine. Looks like the OAuth redirect is failing silently

LS
Lisa S.10:31 AM

checked the logs — we're getting a SecurityError on localStorage.setItem. Safari blocks it in cross-origin iframes. We need to switch to a cookie-based fallback

MK
Maria K.10:34 AM

this is blocking the release. @Tom can you take this? Priority high

Generated Ticket
SubjectFix Safari login white screen caused by localStorage blocking
Type Bug
Assignee Tom W.
Description

Summary: Safari 17.2 users see a white screen after clicking "Sign in". The OAuth redirect fails silently due to a SecurityError on localStorage.setItem — Safari blocks localStorage in cross-origin iframes.

Key Decisions:

  • Switch from localStorage to cookie-based session fallback
  • Priority: High — blocks the current release

Action Items:

  • Implement cookie-based fallback for Safari
  • Test on Safari 17.2, 16.x, and iOS Safari

How it works

When you use /summarize-ticket or the message shortcut, ProjectPulse fetches the conversation, resolves all @mentions to real names, and sends the messages to an AI model. The AI returns a structured output with a subject (max 100 characters), a description including a summary, key decisions, and action items, and an optional assignee extracted from the discussion context.

For @mentions, the AI uses a three-layer routing system: first checking for structural patterns (like #123 2h for time logging), then using LLM-powered intent detection for natural language, and finally falling back to keyword matching if the LLM is unavailable.

Security

ProjectPulse takes security seriously. All sensitive data is encrypted and the bot follows the principle of least privilege.

AES-256-GCM Encryption

All API keys, OAuth tokens, and secrets are encrypted at rest with authenticated encryption.

OAuth with PKCE

Authorization Code flow with Proof Key for Code Exchange for maximum security.

Slack Signature Verification

Every request from Slack is verified using signing secrets to prevent tampering.

Per-Workspace Isolation

Each Slack workspace is fully isolated — no cross-workspace data access.

Privacy by Design

Message content is only accessed during explicit summarization. No background reading or logging of conversations.

FAQ & Troubleshooting

The bot can't read messages in a channel

Make sure ProjectPulse is added to the channel. You can invite it by typing /invite @ProjectPulse in the channel.

Slash commands don't work in DMs

This is a Slack limitation — slash commands are only available in channels and group DMs where the bot is present. Use @mentions in channels instead.

Can't assign a user to a ticket

The user might not be a member of the target project in OpenProject. ProjectPulse tries to add them automatically, but if it lacks permissions (403), you'll see a message suggesting to ask an admin.

My OAuth token expired

Tokens refresh automatically in the background. If auto-refresh fails, go to the App Home tab and click Connect with OpenProject to re-authorize.

Can I connect multiple OpenProject instances?

Each Slack workspace connects to one OpenProject instance. If you need multiple instances, use separate Slack workspaces.

How does channel-project linking work?

Use @ProjectPulse link project <name> to link a channel to a project. After linking, commands in that channel automatically default to the linked project — no need to select it each time.