The moment it happens
Research new sign-ups and post strong leads to Slack
When someone signs up, their company is researched and scored, and strong fits are posted to Slack with a short profile.
- Runs
- The moment it happens
- Apps
- Perplexity, Slack
- AI
- Yes, uses the built-in AI allowance
- Access
- API key; chat:write
Send this to your assistant
Create a ClickRuntime automation: when my sign-up webhook fires, research the company with Perplexity, score the fit from 1 to 10 against my ideal customer, and post to #leads if the score is 7 or more.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
When sign-ups arrive faster than the sales team can look at them, the best prospects wait in the queue with everyone else. By the time someone researches them, the trial is half over.
Product-led SaaS teams, founders and sales leads use it to spot the sign-ups worth a personal touch within minutes of them arriving.
What you get out of it
Strong fits get attention first
Only the sign-ups that match your ideal customer reach the channel.
Context in the alert
Each post includes what the company does, its size and why it scored well.
Fast follow-up
A message in Slack within minutes makes a same-day personal welcome easy.
A consistent bar
Every sign-up is judged against the same description of your ideal customer.
How it works
What happens, step by step
When someone signs up, the details arrive at your automation's link straight away.
Perplexity researches the company behind the sign-up.
AI scores the fit from 1 to 10 against your ideal customer and gives a short reason.
Sign-ups that score 7 or more are posted to your Slack channel with the profile and reason.
Before it runs live
- Connect Perplexity
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Google Sheets
- Combine it with other Perplexity and Slack steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, credentials, http, notify, ai
ICP = "B2B software companies with 20-200 staff selling to other businesses in Europe."
SCHEMA = {"type": "object", "properties": {"score": {"type": "integer"}, "reason": {"type": "string"}, "summary": {"type": "string"}}}
def sonar(prompt):
r = http.post("https://api.perplexity.ai/chat/completions", headers={"Authorization": f"Bearer {credentials.secret('PERPLEXITY_API_KEY')}"},
json={"model": "sonar", "messages": [{"role": "user", "content": prompt}]}, timeout=90).json()
return r["choices"][0]["message"]["content"], [s["url"] for s in r.get("search_results", [])]
@on_event
def handle(event):
s = event.json or {}
company = s.get("company") or str(s.get("email", "")).partition("@")[2]
if not company:
return {"skipped": "no company"}
research, links = sonar(f"What does {company} do? Size, market, location, recent news. Short.")
fit = ai.generate(f"Ideal customer: {ICP}\nResearch:\n{research[:3000]}\nScore the fit 1-10, give a one-line reason "
"and a two-line company summary.", json_schema=SCHEMA, max_output_tokens=200).json
if fit["score"] >= 7:
notify.slack(f"🔥 *{company}* scored {fit['score']}/10 · {s.get('name', '')} <{s.get('email', '')}>\n"
f"{fit['summary']}\n_Why:_ {fit['reason']}\n" + " ".join(f"<{l}|source>" for l in links[:3]), channel="#leads")
return {"company": company, "score": fit["score"]}FAQ
Common questions
How is the score decided?
What happens to low scores?
What does the sign-up need to include?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get a researched blog draft each week, announced in Slack
Every Wednesday a trending topic in your niche is researched, written up as a WordPress draft, and Slack tells you it's ready.
See how it worksPost a weekly competitor update to Slack
Every Monday your sales channel gets a short update on each competitor's news, pricing and product changes, with sources.
See how it worksGet error alerts with a plain-English explanation
When one of your jobs or systems fails, #ops gets the error and a one-line guess at the cause, without the same error twice in an hour.
See how it worksKeep exploring
Set up “Research new sign-ups and post strong leads to Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.