Work Hub — User Guide

Work Hub is your unified productivity workspace on the Haiven platform. It connects meetings, emails, documents, tasks, AI drafting, calendar management, and automated research dispatch into one place. Access it at https://work.haiven.site.


Table of Contents

  1. Getting Started
  2. Tasks
  3. AI Draft Generation
  4. Meetings
  5. Email
  6. Calendar
  7. Importing Content
  8. Taxonomy Management
  9. Research Auto-Dispatch
  10. Agent Integration
  11. Common Workflows
  12. Tips

Getting Started

Open https://work.haiven.site in your browser. The interface has a left sidebar with navigation sections:

The backend API is fully documented at https://work.haiven.site/api/docs.


Tasks

Tasks are the core of Work Hub. Each task has:

Field Description
Title Short description of the work
Status open, in_progress, done, blocked, archived, queued, context_ready
Priority low, medium, high, critical
Company Client or organisation (from taxonomy)
Project Project within a company
Tags Classification labels
Assignee Person responsible
Source Where the task came from (manual, agent, email, meeting)
Due date Optional deadline
Context Free-text or JSON context block (written by agents)

Creating a Task

In the UI, click New Task, fill in the title and fields, then save.

Via API:

curl -X POST https://work.haiven.site/api/v1/tasks \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Prepare Q1 report",
    "priority": "high",
    "status": "open",
    "source": "manual"
  }'

Updating a Task

Status transitions are enforced — you cannot skip states. Valid paths:

open → in_progress → done
open → in_progress → blocked → in_progress
open → archived
queued → context_ready → in_progress
in_progress → done / archived
done → archived
curl -X PATCH https://work.haiven.site/api/v1/tasks/{id} \
  -H "Content-Type: application/json" \
  -d '{"status": "in_progress"}'

Filtering Tasks

The task list supports filtering by status, priority, company, project, assignee, source, and source_application. Use the filter bar in the UI or pass query parameters to the API:

# All open high-priority tasks for a specific company
curl "https://work.haiven.site/api/v1/tasks?status=open&priority=high&company_id=<uuid>"

Task History

Every field change is recorded with a timestamp and actor. View the full history:

curl https://work.haiven.site/api/v1/tasks/{id}/history

AI Draft Generation

Work Hub can generate an AI draft for any task using RAG — it searches your embedded meetings, documents, and emails for relevant context, then uses glm-4-7-flash to produce a draft.

Using the Draft Button

Open a task and click Draft. The system:

  1. Embeds the task title and context using qwen3-embedding-4b
  2. Searches Qdrant for the most relevant chunks from your knowledge base
  3. Passes the retrieved context to GLM-4.7-Flash to generate a response
  4. Saves the result as a versioned draft on the task

Drafts are versioned — each time you click Draft, a new version is saved and accessible from the draft history.

Via API

# Generate a new draft
curl -X POST https://work.haiven.site/api/v1/tasks/{id}/draft

# View draft history (all versions)
curl https://work.haiven.site/api/v1/tasks/{id}/drafts

Improving Draft Quality

Draft quality depends on what is in your knowledge base. If the draft lacks context:


Meetings

Work Hub automatically receives and embeds meeting notes approved in Meeting Scribe via webhook. You can also browse and search meetings.

Browsing Meetings

The Meetings section lists all embedded meetings with title, date, and attendees. Click a meeting to view the full markdown-rendered notes.

Search across all meeting notes using natural language:

curl -X POST https://work.haiven.site/api/v1/meetings/search \
  -H "Content-Type: application/json" \
  -d '{"query": "budget approval decisions from Q4", "limit": 5}'

Email

Work Hub has two complementary email capabilities: reading email via IMAP (into the knowledge base) and sending email via Microsoft Graph (O365).

Sending Email (Microsoft Graph)

Requires CONN_EMAIL_OAUTH2_* environment variables configured by an administrator. Limited to 20 sends per hour.

curl -X POST https://work.haiven.site/api/v1/email/send \
  -H "Content-Type: application/json" \
  -d '{
    "to": "recipient@example.com",
    "subject": "Action items from today'\''s meeting",
    "body": "Hi,\n\nHere are the action items we discussed..."
  }'

To reply within an existing email thread, include thread_id with the original Message-ID:

curl -X POST https://work.haiven.site/api/v1/email/send \
  -H "Content-Type: application/json" \
  -d '{
    "to": "recipient@example.com",
    "subject": "Re: Action items",
    "body": "Confirming I'\''ve completed item 1.",
    "thread_id": "<original-message-id@mail.example.com>"
  }'

Each send is automatically logged to haiven-knowledge for future RAG context.

IMAP Email Sync (Reading)

When the IMAP connector is enabled by an administrator, Work Hub polls your mailbox in the background and embeds all emails into Qdrant for search and draft context.

Check sync status:

curl https://work.haiven.site/api/v1/email/status

Trigger an immediate sync:

curl -X POST https://work.haiven.site/api/v1/email/sync

Backfill a date range:

curl -X POST "https://work.haiven.site/api/v1/email/backfill?since_date=2026-02-01&before_date=2026-03-01"

List available IMAP folders:

curl https://work.haiven.site/api/v1/email/folders

Calendar

Requires CONN_EMAIL_OAUTH2_* environment variables with Calendars.ReadWrite scope. Uses the same Azure AD app registration as email send.

List Events

curl "https://work.haiven.site/api/v1/calendar/events?start=2026-03-10T00:00:00Z&end=2026-03-17T00:00:00Z"

Returns up to 50 events ordered by start time. Each event includes: id, summary, start, end, attendees, description, web_link.

Create an Event

curl -X POST https://work.haiven.site/api/v1/calendar/events \
  -H "Content-Type: application/json" \
  -d '{
    "summary": "Quarterly Review",
    "start": "2026-03-15T14:00:00Z",
    "end": "2026-03-15T15:30:00Z",
    "attendees": ["alice@example.com", "bob@example.com"],
    "description": "Q1 performance review and Q2 planning"
  }'

If Microsoft Graph detects a scheduling conflict, the API returns 409 Conflict. Adjust the time slot and retry.

Delete an Event

curl -X DELETE https://work.haiven.site/api/v1/calendar/events/{event_id}

Importing Content

Work Hub can ingest content from many sources. All imported content is chunked, embedded into Qdrant, and becomes available for search and draft generation.

Single Document (Text or Markdown)

curl -X POST https://work.haiven.site/api/v1/import/document \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Q1 Strategy Document",
    "content": "## Goals\n\nIncrease revenue by 20%...",
    "doc_type": "strategy",
    "source": "manual"
  }'

File Upload

Drag and drop files onto the Import section in the UI, or use the file picker. Supported formats and limits:

Type Formats Size Limit
Documents PDF, DOCX, EML, HTML, CSV, ICS, MD, TXT 50 MB
Audio/Video MP3, M4A, WAV, OGG, WEBM, MP4, FLAC 500 MB
Archives PST (Outlook) 500 MB

Via API:

curl -X POST https://work.haiven.site/api/v1/import/upload \
  -F "file=@/path/to/document.pdf"

Audio / Video Transcription

Upload a recording and Work Hub sends it to haiven-transcribe. Transcription takes 30–120 seconds depending on file length. The transcript is then embedded and searchable.

curl -X POST https://work.haiven.site/api/v1/import/audio \
  -F "file=@/path/to/meeting-recording.mp4"

Directory Import

Import all supported files from a server-side directory:

curl -X POST https://work.haiven.site/api/v1/import/directory \
  -H "Content-Type: application/json" \
  -d '{"path": "/mnt/storage/documents/reports"}'

PST Archive (Outlook)

Upload an Outlook PST file. Work Hub extracts all contained emails and calendar items, ingests them with full metadata, and deduplicates by Message-ID.

curl -X POST https://work.haiven.site/api/v1/import/pst \
  -F "file=@/path/to/archive.pst"

Backfill Meeting Scribe Notes

Import all historical approved notes from Meeting Scribe in one operation:

# Preview without writing
curl -X POST "https://work.haiven.site/api/v1/backfill/scribe-notes?dry_run=true"

# Run the actual backfill
curl -X POST https://work.haiven.site/api/v1/backfill/scribe-notes

Taxonomy Management

Companies, projects, and tags help you organise tasks and filter content. Manage them from the Taxonomy section in the UI or via API.

Companies

# List
curl https://work.haiven.site/api/v1/companies

# Create
curl -X POST https://work.haiven.site/api/v1/companies \
  -H "Content-Type: application/json" \
  -d '{"name": "Acme Corp", "domain": "acme.com"}'

# Update
curl -X PATCH https://work.haiven.site/api/v1/companies/{id} \
  -H "Content-Type: application/json" \
  -d '{"domain": "acmecorp.com"}'

# Delete
curl -X DELETE https://work.haiven.site/api/v1/companies/{id}

Projects

# List (optionally filter by company)
curl "https://work.haiven.site/api/v1/projects?company_id={company_uuid}"

# Create
curl -X POST https://work.haiven.site/api/v1/projects \
  -H "Content-Type: application/json" \
  -d '{"name": "Website Redesign", "company_id": "{uuid}", "status": "active"}'

# Update status
curl -X PATCH https://work.haiven.site/api/v1/projects/{id} \
  -H "Content-Type: application/json" \
  -d '{"status": "completed"}'

Tags

# List
curl https://work.haiven.site/api/v1/tags

# Create
curl -X POST https://work.haiven.site/api/v1/tags \
  -H "Content-Type: application/json" \
  -d '{"name": "urgent", "source": "manual"}'

# Delete
curl -X DELETE https://work.haiven.site/api/v1/tags/{id}

Research Auto-Dispatch

Work Hub automatically dispatches tasks to the research agent when you create a task with:
- Status: queued
- Title: begins with Research: (case-insensitive match on the word "research")

The dispatcher checks every 60 seconds. When it finds a matching task it:

  1. Transitions the task: queued → context_ready → in_progress
  2. Strips the "Research: " prefix from the title
  3. Posts to the research agent with the query and task ID
  4. The research agent writes its findings back as artifacts when done

To trigger a research task:

curl -X POST https://work.haiven.site/api/v1/tasks \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Research: Best practices for async Python database access",
    "status": "queued",
    "source": "manual"
  }'

Within 60 seconds the task moves to in_progress. When research completes, the task transitions to done and artifacts are attached.


Agent Integration

Work Hub exposes dedicated endpoints for agent write-back. The briefing agent, research agent, and other Haiven services use these to push structured data back to tasks.

Voice Instructions

Append a timestamped instruction to a task. Each entry carries a processed: false flag so agents know which instructions are pending.

curl -X PATCH https://work.haiven.site/api/v1/tasks/{id}/voice-instructions \
  -H "Content-Type: application/json" \
  -d '{"instruction": "Focus on the executive summary. Keep it under 3 paragraphs."}'

Artifacts

Attach a reference to an agent output (research session, briefing output, etc.):

curl -X PATCH https://work.haiven.site/api/v1/tasks/{id}/artifacts \
  -H "Content-Type: application/json" \
  -d '{"type": "research_output", "path": "<session_id>"}'

Agent Status Write-Back

Agents completing a task write their final context and status:

curl -X PATCH https://work.haiven.site/api/v1/tasks/{id} \
  -H "Content-Type: application/json" \
  -d '{
    "status": "done",
    "context": "{\"summary\": \"...\", \"sources\": [...]}"
  }'

Common Workflows

Meeting to Action Items

  1. Conduct and record a meeting in Meeting Scribe
  2. Approve the notes in Meeting Scribe — the webhook fires automatically
  3. Work Hub embeds the notes into Qdrant
  4. In Work Hub, create tasks from the action items
  5. Click Draft on any task to generate an AI-assisted response using the meeting notes as context

Email Triage

  1. Enable the IMAP connector (WH_IMAP_ENABLED=true in .env)
  2. Emails arrive and are embedded automatically
  3. Create tasks linked to specific emails using source=email
  4. Use Draft to generate replies — the email thread is included in RAG context
  5. Send the reply via POST /api/v1/email/send with thread_id set to the original Message-ID

Research Task

  1. Create a task: title="Research: <topic>", status=queued
  2. The dispatcher picks it up within 60 seconds
  3. The research agent runs the pipeline and writes artifacts back
  4. Review the task — status is done and artifacts contain the research output

Bulk Document Import

  1. Place documents in a server directory (e.g. /mnt/storage/documents/reports/)
  2. Call POST /api/v1/import/directory with the path
  3. All supported files are chunked and embedded
  4. Use meeting search or draft generation to surface the content

Calendar-Driven Task Creation

  1. Call GET /api/v1/calendar/events to list upcoming meetings
  2. For each meeting, create a prep task in Work Hub
  3. Use Draft to generate a pre-meeting briefing using accumulated context
  4. After the meeting, Meeting Scribe sends notes back via webhook automatically

Tips