Find stalled JobNimbus jobs and tell each rep what to do

By General Input

Every weekday morning we spot the jobs that have gone quiet, work out what is actually holding each one up, and send your team the next step.

Integrations

  • JobNimbus
  • Slack Bot

Type

Agentic Task

Categories

  • Sales
  • Operations

Every weekday at 7:30am, find the jobs that are quietly dying in our JobNimbus pipeline and tell each rep exactly what to do about them.

Start by pulling every open job from JobNimbus with List Jobs. Use the filter query parameter with the URL-encoded JSON {"must":[{"range":{"date_updated":{"lte":"now-7d"}}}]} so I only get jobs with no activity in the last seven days. Page through with size and from until you have them all. Then drop any job sitting in a won, lost, completed, or otherwise closed status, since those are not stalled, they are finished.

For each remaining job, read the recent notes with JobNimbus List Activities, scoped to that job with the filter {"must":[{"term":{"related.id":"<job jnid>"}}]}. Work out what is actually blocking the job rather than just noting that it went quiet. Typical blockers are an adjuster meeting that was scheduled and never logged, a supplement that has not been filed, a permit or inspection still pending, a material order nobody placed, an estimate that was sent but never signed, or a homeowner who has stopped responding. Work out days stalled from the last activity date or the job's date_updated. If the notes are too thin to tell what is blocking a job, say so plainly and flag it for a human to check rather than inventing a reason.

Post one digest to our operations channel using the Slack Bot Send a Message action. Group it by assigned rep, and within each rep sort by job value first and days stalled second, so the expensive problems sit at the top. For every job give a specific next action. Say "adjuster meeting was set for the 3rd and never logged, call the desk adjuster to confirm it happened" rather than "no activity for 9 days". Include the job name, the customer, the value, the days stalled, and the blocker you inferred, and open with a one-line total of jobs and dollars at risk. Format with Slack mrkdwn, so *bold* rather than **bold**.

Then DM each rep only their own jobs. Take the rep's email from the job owner record, find their Slack account with Look Up User by Email, open a direct message channel with Open a Conversation, and send their personal list with Send a Message. Keep the DM short and actionable, and do not DM a rep who has no stalled jobs. If a rep's email does not match any Slack account, skip the DM and note it at the bottom of the channel digest instead of failing the run.

For any job stalled more than 14 days, also create a follow-up in the CRM with JobNimbus Create a Task assigned to the job owner, so the chase is tracked where the work happens instead of living only in Slack. Set the due date to today, relate the task to the job, and put the recommended next action in the description. JobNimbus requires record_type_name on a task to match one of the account's existing task types, so read the valid values from the account settings endpoint first. Do not create a second task if an open follow-up task already exists for that job, and mark in the digest which jobs got a task.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them