Operations demo
A working ticket queue that tracks every SLA — what's breached, what's about to, and the morning digest you'd send your team. Add tickets, edit them, import a CSV. Built by directing an AI assistant in plain English — one of a few small tools at nateeisenstein.com.
A snapshot of the queue you'd send your team each morning — generated automatically.
Click a row to open it — edit the priority, owner, status, title, or dates, or mark it resolved. Changes are kept in this browser.
| Status | ID | Ticket | Priority | Owner | Opened | SLA due | Age |
|---|
Day to day you'd add tickets right in the queue with “+ Add ticket”. Use a CSV import for the initial bulk load from Jira / Zendesk / a spreadsheet. (In a real deployment this would sync from your ticketing system automatically.) Everything stays in your browser.
CSV/TSV with a header row. Recognised columns (any order):
id, title, requester, owner, priority, opened, status, resolved, link
(only title and opened are required).
Dates like 2026-09-15 09:30. Priority P1–P4 or
Critical / High / Medium / Low. A status of "resolved" / "closed" with a
resolved date counts as done.
A lightweight backend job that keeps a local copy of the queue in sync. Two mechanisms, usually both:
id, title, requester, owner, priority, opened, status, resolved, link), and upsert.POST /rest/api/3/search
with JQL (project = OPS AND updated >= -15m). Auth: an API token (Basic) or a
3-legged OAuth app. Webhooks via a Jira automation rule. SLA data comes straight from JSM's
Time to resolution field, or you compute it from created + a priority→target
map (exactly what this demo does)./api/v2/incremental/tickets?start_time=…) is built for "give me everything changed
since this timestamp". Auth: API token or OAuth. Native webhooks + triggers. Zendesk has
first-class SLA policies, so you can read breach_at directly./api/now/table/incident?sysparm_query=sys_updated_on>…), auth via Basic or OAuth.
Business Rules or Flow Designer to POST outbound on change. SLA timings live in the
task_sla table.API tokens and OAuth credentials live in the sync service's environment — never in the browser. Per-source, least-privilege: read tickets, read users. The browser only ever talks to your backend.
A cron job (say 8:00 a.m. on weekdays) builds the same digest you see here and posts it itself — Slack (incoming webhook or a bot), Teams, or email — with the deep links pointing at the real tickets.
So it's a single file with nothing to run, and anyone can try it without a login. The parsing, SLA math, and digest logic are exactly what the backend would use — only the data source changes.