Weekly contract renewal radar from Deel to Asana and Slack

By General Input

Every Monday, catch contractor and EOR contracts ending in the next 60 days, open an Asana decision task for each, and post one grouped Slack digest.

Integrations

  • Deel
  • Asana
  • Slack Bot

Type

Agentic Task

Categories

  • HR & People
  • Operations

Every Monday at 8:30am, check Deel for contractor and EOR contracts that are approaching their end date, open an Asana decision task for each one, and post a single grouped digest to our people ops channel in Slack. Run this on a cron schedule: every Monday at 8:30am.

Start by pulling active contracts from Deel with the List Contracts operation, focusing on the contractor and EOR hiring types since those are the agreements with meaningful fixed end dates. The contracts list uses cursor pagination, so keep passing the cursor from each response back as after_cursor until the cursor comes back null. Do not read only the first page: in an organization with any real tenure, that will silently miss expiring contracts sitting further down the list.

Skip any contract that has no end date. Open ended EOR and permanent agreements never expire, and including them would flood this digest with the same names every single week until people stop reading it.

For every contract whose end date falls inside the next 60 days, call Retrieve a Single Contract to get the full detail we need: worker name, team, exact end date, and rate with its currency.

Sort what you find into three urgency buckets: ending within 14 days, ending in 15 to 30 days, and ending in 31 to 60 days.

Before creating anything in Asana, check whether we already opened a task for that contract. Use Get Tasks from a Project against our renewals project and ignore completed tasks. Match on the Deel contract ID, and always write that contract ID into the task description so this check stays reliable week over week even if someone edits the task title. Prefer this over Asana's workspace task search, which requires a paid plan. If an open task already exists for a contract, reuse it and do not create a second one. A contract ending in 45 days will legitimately appear in the digest several weeks in a row, but it should only ever own one task.

For contracts that do not already have an open task, use Create a Task in the renewals project. Title it as a clear renew or end decision naming the worker and the end date, for example "Renew or end: Priya Raman, contract ends 2026-09-12". Put the contract ID, team, rate and currency in the description. Set the due date to roughly two weeks before the contract actually ends so there is time to act, and if that date has already passed, set the due date to today instead.

Finally, post one grouped digest to our people ops channel with the Slack Bot Send a Message operation. Lead with the most urgent bucket and work down, and under each bucket list the worker, team, end date, and rate with currency, plus a link to the Asana task that owns that decision. Send one single message covering everything, not one message per contract.

If nothing is expiring in the next 60 days, still post a short note saying there is nothing expiring, so the team knows the check ran rather than wondering whether it quietly broke.

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