Skip to content
← Processes

Revive deals that went cold

Deals lost more than 90 days ago come back with fresh signals, contacts checked for job moves, and the features they asked for that have since shipped.

Attio→Apify→LinkedIn→Linear→Gmail→Slack
Starts
Monthly schedule
Steps
6
Checks and gates
0
A person decides
Never, runs alone

Trigger · Schedule

Monthly schedule

The run goes over closed-lost deals once a month, slow enough that no account is approached twice in a quarter.

Claude runs the rest autonomously

  1. 1

    AI lists deals lost over 90 days ago.

    Attio

    Attio

    Every deal closed lost more than ninety days back is listed, minus live competitor contracts, opt-outs and accounts with something open.

  2. 2

    AI finds what changed at each company.

    Apify

    Apify

    Each company comes back with what has happened since the loss, every item carrying a date and a source.

  3. 3

    AI confirms who is still there.

    LinkedIn

    LinkedIn

    Each person on the deal is confirmed as still there or gone, with the replacement in the same role named where they have left.

  4. 4

    AI spots what has shipped since.

    Linear

    Linear

    Any capability a deal was lost over that has since been released is found, matched on substance rather than on the buyer's wording.

  5. 5

    AI picks the deals worth reopening.

    Only deals whose loss reason is answered by a new signal, a contact change or something shipped stay in, and the rest are dropped.

  6. 6

    AI drafts emails, posts the batch.

    Gmail

    Gmail

    Each account gets one short draft saying what happened, what changed and one question, held for the account owner to approve.

    Slack

    Slack

Closed-lost is where deals go to be forgotten. The reason for losing gets typed into a dropdown, the thread stops, and eighteen months later nobody remembers that the only blocker was a budget cycle that has since turned over twice, or a feature that shipped last spring. Re-reading them is a job that would take a rep a full day and produce maybe four emails worth sending, so it never gets to the top of anyone's list.

Everything needed to revive a closed-lost deal is already written down, in four different places. The CRM holds the loss reason, the public record holds what has happened at the company since, the profiles hold who is still there, and the issue tracker holds what you have since built. The expensive part is reading every deal history against four systems to find the few worth reopening, and that reading is what an AI agent does here once a month.

What you get

A monthly win-back list where every deal carries what has changed since it was lost, including anything the buyer asked for that now exists, and a draft written from that.

Which closed-lost deals are in scope

The run lists the deals in Attio marked lost more than 90 days ago. Ninety days is the floor: inside it the reason for losing is almost always still true, and the email reads as not having listened. Twenty-four months is the ceiling, since past that the people involved have moved on and the message is a cold email wearing a follow-up's clothes. Three kinds of deal are excluded outright: those lost to a competitor on a multi-year contract that has not yet expired, anyone who asked not to be contacted again, and accounts with an open opportunity right now.

Why the closed-lost reason field is not enough

The closed-lost reason field is treated as a hint. It is a dropdown chosen at the end of a bad week, and almost everything lands on "price". The notes, logged calls and email thread underneath tell a different story often enough to change the email entirely, since "price" often turns out to mean no budget this year, or a security review that never got through. "I know price was an issue" is a template. "I know the security review stalled in October" proves somebody read the history.

Each deal is classified into one of four reasons, with the evidence recorded: timing or budget, a missing capability named precisely, lost to a competitor, or no decision. The precision is what the later steps rely on. "Lost on features" cannot be matched against anything. "Lost because there was no audit trail" can be searched against every issue closed since, and when that search comes back with a release date the win-back has a subject.

What changed since the deal was lost

Three things are checked for each account, every item with a date.

  • The company. Apify looks for hiring, especially in the function you sell into, along with funding, an acquisition, a new office or market, and leadership changes in or above the buying role. The source URL is kept for anything the email will reference, because a win-back that cites something the reader can check is a different message from one that gestures at momentum.
  • The people. Each contact is checked against their LinkedIn profile. Someone still there gets the email. Someone gone, with a replacement findable in the same role, is replaced as the recipient, and the opener never references a conversation the new person was not part of. Someone who moved to a company already in your CRM is flagged separately as a warm introduction there, which is frequently worth more than the win-back itself.
  • The product. For every deal lost over a missing capability, Linear is searched for what has been released since the deal closed, matched on substance rather than wording. A buyer who wanted "a way to see who changed what" and a shipped issue titled "audit log" are the same thing.

The release date matters as much as the match. A capability that shipped last week is news. One that shipped fourteen months ago is an admission that nobody told them at the time, and the email is better for saying so plainly than for presenting a year-old release as though it just happened.

Picking the deals worth reopening

With the loss reason, the fresh signals, the contact situation and anything shipped side by side, a deal is worth reopening when one of them answers the loss reason:

  • lost on a missing capability, and that capability now exists
  • lost on timing or budget, and there is a funding round, a new fiscal year or a new person in the buying role
  • lost to a competitor, and their contract is near its renewal window
  • went quiet, and the person who went quiet has been replaced

Where nothing answers the loss reason, the deal is dropped and counted. The instinct is to write to everyone, because the list is right there and the drafting is free. These are accounts that already said no once, though, and a second contact with no new information is how a domain's reputation gets spent. Counting the drops rather than hiding them keeps that visible.

Each deal that stays gets one draft in Gmail: what happened, roughly when, what changed, and one question. If a capability shipped, the email says what it does. Nothing is sent. The batch goes to Slack with how many deals were in scope, how many were dropped and why, and the drafts grouped by loss reason, so each account owner can scan their own.

The prompt

The real prompt behind the steps above, detailed enough that an agent with the same tools can run it as written. The Run buttons copy the full version, which also carries the steps for connecting those tools.

# Revive deals that went cold

You have access to a CRM, a scraping tool, a professional network, an
issue tracker, email, and a messaging tool. Run this monthly across
**[deals marked lost more than 90 days ago]**.


## 1. List deals lost more than 90 days ago

Ninety days is the floor. Inside it the reason for losing is almost
always still true, and the email reads as not having listened.

Put a ceiling at twenty-four months as well. Past that the people
involved have moved on and this is a cold email wearing a follow-up's
clothes.

Exclude outright:

- Deals lost to a competitor on a multi-year contract that has not yet
  expired. Check the term if it was recorded.
- Anyone who asked not to be contacted again.
- Accounts with an open opportunity right now.

## 2. Establish why each one was lost

Read the deal's full history: notes, logged calls, the email thread,
and the closed-lost reason field. The field alone will not do. It is a
dropdown someone picked under time pressure, and "price" often turns
out to mean "no budget this year" or "could not get the security
review through".

Classify each into one of four, and record the evidence you used:

- Timing or budget.
- A missing capability, with the specific capability named. Step 5
  depends on this being precise.
- Lost to a competitor.
- No decision, went quiet.

## 3. Find what changed at each company

Look for what has happened at the company since the loss, with a date
on each item:

- Hiring, especially for the function you sell into. A posting is
  dated, public, and someone at that company approved it.
- Funding, acquisition, a new office, a new market.
- Leadership changes in or above the buying role.

Keep the source URL for anything you plan to reference. A win-back
that cites something the reader can go and check is a different
message from one that gestures at momentum.

## 4. Confirm who is still there

Verify each contact against their public profile before writing
anything. Three outcomes matter:

- Still there. Write to them.
- Gone, with a replacement findable in the same role. Write to the
  replacement, and never open by referencing a conversation they were
  not part of.
- Gone to a company already in your CRM. That is a warm introduction
  at the new account, which is frequently worth more than the win-back
  itself. Flag it separately.

## 5. Spot what has shipped since

For every deal lost over a missing capability, search the issue
tracker for what has been released since that deal closed.

Match on the substance of what they asked for, not on their wording. A
buyer who wanted "a way to see who changed what" and a shipped issue
titled "audit log" are the same thing, and a literal match will miss
it.

Record the release date. A capability that shipped last week is a
reason to write today; one that shipped fourteen months ago raises the
question of why nobody told them at the time, and the email should
acknowledge that rather than pretend it is news.

## 6. Pick the deals worth reopening

Now put the four inputs side by side for each account: the original
loss reason, the fresh signals, the contact situation, and anything
that has since shipped.

A deal is worth reopening when the loss reason has been answered by
one of the others:

- Lost on a missing capability, and that capability now exists.
- Lost on timing or budget, and there is a funding round, a new fiscal
  year, or a new person in the buying role.
- Lost to a competitor, and their contract is near its renewal window.
- Went quiet, and the person who went quiet has been replaced.

Where nothing answers the loss reason, drop the deal and count it. A
win-back with nothing new to say is how a sender gets marked as spam,
and these accounts already said no once.

## 7. Draft emails, post the batch for review

One email per account: what happened, what changed, one question.

Reference the original conversation specifically, including roughly
when it was. Name the change plainly. If a capability shipped, say
what it does rather than promising "exciting updates".

Draft it, do not send it. Then post to the team channel: how many
deals were in scope, how many were dropped and why, and the drafts
grouped by loss reason so whoever owns the account can scan their own.

## Output

Report: deals in scope, dropped by exclusion rule, dropped for nothing
having answered the loss reason, contacts that had left, champions
found at accounts you already hold, capabilities matched to shipped
work, and drafts written.

Why run it with Tulina

A prompt helps one person. A process moves a team.

Pasted into a chat, the prompt above works once, for whoever pasted it. In Tulina, "Revive deals that went cold" becomes a process the team shares, that keeps its history, runs on its own, and stays inside the same security perimeter as the tools it calls.

  • The whole team works on the same one

    PersonalTeamOrganisation

    A process lives where it belongs: yours, your team's or the whole organisation's. Whoever runs it can improve it, and everyone starts from the best version instead of explaining the job again.

  • Every edit is a version

    v1v2v3

    Each change is a new version with the previous one kept, so a bad edit is undone by restoring an earlier one. Every run records the version it followed, and what a run teaches goes back into the process.

  • It runs without you

    schedulewebhookon demand

    A hosted agent runs the process on Tulina's own infrastructure, on a schedule or when an event arrives, and keeps going when you close the chat. Nothing to host. Every run is tracked to its outcome.

  • Inside the same security perimeter

    vaultrolesrun log

    Credentials stay in the vault, never in the prompt. Roles decide who may run what, every call is logged, and a step a person has to approve waits for that person.

Questions about reviving closed-lost deals

Yes, by putting each deal's real loss reason next to what has changed since (fresh company signals, who is still there, and anything that has shipped). A deal stays in only when one of those answers the reason it was lost, such as a missing capability that now exists or a budget blocker followed by a funding round. Where nothing has changed, the deal is dropped and counted, because a win-back with nothing new to say is the message that gets a sender marked as spam.

Not inside ninety days, when the reason for losing is usually still true and the email reads as not having listened. Not past twenty-four months either, when the people involved have moved on and it is a cold email pretending to be a follow-up.

The loss reason records the specific capability, and the issue tracker is searched for released work matching it by substance rather than wording. A buyer wanting "a way to see who changed what" and a shipped issue called "audit log" are the same thing. The release date is kept too, so a year-old release is not presented as news.

No. Each deal worth reopening gets one held draft, and the batch is posted to the team channel grouped by loss reason, so each account owner reviews their own before anything goes out.

Processes that share tools with this one. The shared tools are lit.

See Tulina in a 30-minute demo.

Book a demo