runbookify
← All plans
Customer Support & Service / SLA & Escalation Tracking

Pending / On-Hold Aging Tracker

Build an internal tool that watches every ticket stuck in pending, on-hold, or waiting-on-customer, computes how long it's been aging, drafts polite nudges, and flags the safe-to-close ones - with a human approval gate before any reminder goes out or any close is recorded.

BeginnerAn afternoonBuilds onNext.js (App Router) on VercelSupabase (Postgres + Auth + RLS + Storage)Resend (email)
What you'll build

A logged-in tool where your stuck tickets are loaded, aging is computed per pending state, nudge drafts and safe-to-close candidates are surfaced, and a human approves each one before reminders are sent via Resend or close actions are logged and exported.

Gated download

Enter your email — the plan downloads instantly and a copy lands in your inbox.

By submitting your email you'll also receive the weekly runbookify newsletter. You can unsubscribe at any time.

Before you start

  • A free Supabase account
  • A free Vercel account
  • A free Resend account (for sending nudge emails)
  • A CSV or Google Sheet export of open tickets (status, last-customer-reply date, owner)

The problem this kills

Some tickets never really close. They slip into "pending," "on-hold," or "waiting-on-customer," and then they just... sit there. The customer never replied. Nobody followed up. Three weeks later someone finds a ticket that's been silently aging for 19 days and no one knew.

The usual "fix" is a manual spreadsheet that one person babysits, or a rule in your helpdesk that fires reminders on a schedule nobody trusts - so it either nags customers too hard or forgets them entirely. Meanwhile your SLA reports look great because technically the ticket is "paused."

This tool makes the long tail visible. It tells you exactly how long each stuck ticket has been waiting, drafts a human-sounding nudge for the ones worth chasing, and quietly flags the dead ones as "no response - safe to close?" - and it never sends or closes anything until a person says yes.

What you'll build

A small, private web app for your support team that:

  • Loads your open tickets from a CSV or Google Sheet (status, last-customer-reply date, owner) - no helpdesk API required to start.
  • Computes aging per pending state - so "waiting on customer for 12 days" and "on-hold for 12 days" can be treated differently.
  • Only counts time since the last real customer reply - internal notes don't reset the clock.
  • Drafts a polite, personalized nudge for tickets that should be chased.
  • Flags safe-to-close candidates - tickets that have aged past your limit with no customer response.
  • Respects a max number of nudges before a ticket escalates instead of being nudged again.
  • Puts a human approval gate in front of everything: a person reviews each draft and each suggested close, and only then does the reminder send (via Resend) or the close get recorded.
  • Keeps a full audit trail and a duplicate guard so the same nudge can't fire twice.

What's inside the Implementation Plan

A complete, paste-and-go runbook written for a non-coder. The very first thing it does is interview you about your business - your pending statuses, where your tickets live, what your data columns are actually called, your typical and peak volumes, and your nudge/escalation/close rules - so the tool is tailored to your support process instead of a generic template. It reads a short spec back to you for a thumbs-up before it builds anything.

From there it walks you, prompt by prompt, through:

  • Setting up the accounts and the project.
  • Importing your tickets and computing aging per pending state.
  • Building the nudge-draft and safe-to-close logic around your rules.
  • The review-and-approve screen (the human gate).
  • Sending approved nudges through Resend and logging approved closes.
  • The CSV-export fallback so the tool is fully useful today, even with zero integration.

Each step ends with a ready-to-copy prompt you paste into your AI coding agent.

The governance it includes (this is the point)

This isn't a script that blasts emails. It's an internal tool with real controls baked in:

  • Login so only your team can open it.
  • Row-level security so people only ever see their own organization's tickets.
  • A complete audit trail - who approved what, and when.
  • A hard human-in-the-loop approval gate - the AI drafts, a person reviews, and only an approved nudge sends or close gets recorded.
  • Duplicate guards keyed on ticket ID + nudge count, so the same reminder can't go out twice.

Who it's for

Support agents and team leads who manage the long tail of open tickets - the pending, on-hold, and waiting-on-customer pile that quietly grows until something falls through. If you live in a helpdesk queue and a spreadsheet, this is for you.

You've got this - paste the first prompt and let the agent interview you.

Gated download

Enter your email — the plan downloads instantly and a copy lands in your inbox.

By submitting your email you'll also receive the weekly runbookify newsletter. You can unsubscribe at any time.