Hilton College TMS

A ticket management system for IT support at UH's Hilton College: support emails become tickets on their own, and staff work them from one dashboard.

Year
2026
Role
Built it, while working part time in Hilton College IT
Team
Solo
Stack
React, Vite, Supabase (Postgres, edge functions), Resend or Pipedream inbound email, SheetJS

How it works

Email from a sender not in the directory

Not in the directory, priority stays medium

Replies sent 1

  1. New
  2. Open
  3. In progress
  4. Awaiting customer
  5. Resolved
  6. Closed
TicketCurrent statusRejected rowEvery support email opens a ticket at New, a sender found in the faculty directory is raised to high priority, and a reply goes out when the ticket is created and again when it is resolved.

The system

Email to ticket, and back A faculty email is forwarded to Pipedream, posted to a Supabase edge function that verifies and parses it, matches the sender in the faculty directory and inserts a ticket that appears as New on the staff dashboard; database webhooks then send the acknowledgment and later staff updates back by email through Resend. sends email POST + token verify, parse match faculty faculty role insert ticket shows as New insert hook ack, Resend staff update notify hook update, Resend Faculty member sends an email Mail relay Outlook to Pipedream Edge functions Supabase, Deno Tickets database Postgres, Realtime Staff dashboard React web app Call Return Async event Reaches the dashboard Ingest pipeline

The job

Requests to the college's IT support arrive as email. Keeping track of them meant copying details by hand and remembering who asked for what.

Email in, ticket out

An inbound email webhook hands each message to a Supabase edge function, which turns it into a ticket and matches the sender against the faculty directory. There are two inbound paths: Resend with a delegated domain, or Pipedream forwarding when no domain is available.

From there a ticket moves through New, Open, In Progress, Awaiting Customer, Under Review, Escalated, Resolved and Closed, and can be reopened. Staff arrange their own dashboard from widgets.

The faculty directory

Faculty records import from CSV or Excel. The file is parsed in the browser with SheetJS, so nothing reaches the server until the preview is confirmed.

Next, OfficeQA RAG →