Last updated 2026-05-04

IT helpdesk

A simple in-app ticketing system. Any employee can submit, IT staff triage from a shared queue. Tickets support screenshot/PDF attachments, deadlines, priority queue, and a morning digest email.

Turning it on

Per-tenant module flag: admin → /admin/settings/modules → toggle IT helpdesk ON. Default is OFF for new and existing tenants (it doesn't show up in anyone's sidebar until you enable it).

To make someone an IT-staff member, set their department field to IT at /admin/employees/<id>/edit. They'll start seeing the IT queue automatically.

What employees see

A single sidebar link in Your work:

  • 🛠️ IT tickets → opens /it/mine which has both:
  • The list of their own tickets with current status + due date
  • A prominent "+ Report an issue" button at the top

Click the button → fill in title + category (Hardware / Software / Network / Account / Other) + description → submit. Attach up to 5 screenshots or PDFs (≤ 5 MB each, image/* or application/pdf) on the form or on any follow-up comment. The IT team is emailed immediately.

When IT updates the ticket — comments, status changes — the reporter gets an email with a direct link.

What IT-staff and admins see

A dedicated IT sidebar section with three items:

  • 🛠️ Report IT issue — same form as above
  • My tickets — tickets they've personally submitted
  • IT queue — the shared triage queue

The queue shows every ticket sorted by priority (Urgent → High → Medium → Low), then by due date (overdue surfaces first), then last-update time. Overdue dates render in red. Filter by status (Open / In progress / Resolved / Closed / All) and by category. A 📎N badge in the title column shows attachment count.

Triaging a ticket

Open a ticket from the queue. As IT-staff you get an "IT actions" panel:

  • Claim this ticket — one-click; sets you as assignee, status flips to In progress
  • Status dropdown — Open → In progress → Resolved → Closed
  • Priority dropdown — Low / Medium / High / Urgent
  • Due date picker — sets a deadline; overdue tickets surface in red
  • Assignee dropdown — reassign to another IT-staff member
  • Comment box — visible to the reporter; firing a comment also emails them. Supports attachments.

Manager priority/deadline overrides

Anyone with role manager (or admin) gets a Manager actions panel on a ticket they can view, with just two controls:

  • Priority — promote/demote so urgent items surface
  • Due date — set a deadline to commit to

Managers can't change status or reassign — those stay with IT-staff — but they can flag importance and ETA from any ticket they have access to (their own team's submissions, or all of them if they're admin).

Status semantics

  • Open — fresh ticket, not yet picked up
  • In progress — someone's working on it
  • Resolved — IT thinks it's fixed; reporter gets emailed and can reply if wrong
  • Closed — done, no further activity expected

Morning digest

Every morning at 07:00 UTC, every IT-staff member (and admin) gets one email per company listing all open + in_progress tickets, grouped by priority and sorted by due date. Overdue tickets are flagged inline. The digest is skipped for companies with zero open tickets.

If you want a different time, that's a single line in the prod crontab (/api/cron/it-morning-digest).

Email notifications

When Who gets emailed
Ticket submitted Every IT-staff member + admins (broadcast)
Status change The reporter
Comment added The "other party"
Daily 07:00 UTC All IT-staff for any tenant with open tickets

Attachment policy

  • Allowed types: image/png, image/jpeg, image/gif, image/webp, image/heic, application/pdf
  • Max size: 5 MB per file, 5 files per upload (per submit/comment)
  • Storage: content-addressed via app/storage.py (deduped by sha256)
  • Access: only the reporter, IT-staff, and admins can fetch via /it/attachment/<id>

Out of scope for v1: SLA timers, internal-only comments, asset register, knowledge base, escalation rules. Add as needed via /feedback.


See something wrong or outdated in this article? Report it →