Every 15 minutes
Fill in missing company details automatically
Company rows without an industry get one added, along with a short summary and social links taken from their website.
- Runs
- Every 15 minutes
- Apps
- Supabase
- AI
- Yes, uses the built-in AI allowance
- Access
- secret key (read+write)
Send this to your assistant
Create a ClickRuntime automation: every 15 minutes, find rows in my Supabase companies table where industry is empty, read the company's website, fill in industry, a one-line summary and social links, and update the row.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A sales team collects contacts and companies into a Supabase table through a signup form, a CSV import or an API. The rows arrive with a name and a website and little else. Someone is supposed to fill in the industry, company size and LinkedIn link by hand, so the columns stay empty, segments are impossible to build and outreach goes to the wrong people.
Every 15 minutes, ClickRuntime selects rows where the enrichment fields are still null, fetches each company's website and calls on ClickRuntime's built-in AI to extract the industry, a short description and social links. It then updates the row with a PATCH request. New contacts get filled in within a quarter of an hour of arriving.
It helps founders, RevOps people and anyone who keeps a lead or company table in Supabase and wants it usable without manual research.
What you get out of it
Leads become segment-ready on arrival
With industry and description filled within minutes, a new contact can be routed to the right campaign immediately. You stop sending the wrong message to a bakery and a bank because of a blank column.
Manual research time disappears
Looking up each company and typing details into rows takes minutes per record. Across hundreds of new rows a month, automating it frees a person for conversations instead of copying text from websites into a table.
Data quality improves consistently
Every row is enriched using the same prompt and the same fields, so values are comparable across the table. A consistent industry list makes filters, charts and exports reliable, unlike notes typed by different people.
Only missing rows are touched
Because the query targets rows where enrichment is null, existing data is never overwritten. Hand-corrected rows stay as they are, and re-runs do not waste processing on records that are already complete.
No extra enrichment subscription is needed
The AI step uses ClickRuntime's built-in AI, and the website fetch is a simple request. Small teams get enrichment without paying for a separate data vendor or managing a model key.
How it works
What happens, step by step
Every 15 minutes ClickRuntime looks in your Supabase table for companies that haven't been filled in yet.
It visits each company's website.
AI reads the site and writes the industry, a one-line summary and the social links it finds.
Those details are saved back to the row, so it is not picked up again.
Before it runs live
- Connect Supabase
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 Slack
- Combine it with other Supabase steps into one automation
Under the hood
The code that runs this automation
import re
from clickruntime import on_trigger, credentials, http, report_fetched, ai, log
SUPABASE_URL = "https://your-project.supabase.co"
def sb_headers(**extra):
key = credentials.secret("SUPABASE_SECRET_KEY")
return {"apikey": key, "Authorization": f"Bearer {key}", **extra}
SCHEMA = {"type": "object", "required": ["industry", "summary", "social_links"], "properties": {
"industry": {"type": "string"}, "summary": {"type": "string"}, "social_links": {"type": "array", "items": {"type": "string"}}}}
@on_trigger
def run(event):
rows = http.get(f"{SUPABASE_URL}/rest/v1/companies", params={"select": "id,name,website", "industry": "is.null", "limit": 20},
headers=sb_headers()).json()
report_fetched(len(rows))
if not rows:
return {"enriched": 0}
for row in rows:
try:
html = http.get(row["website"], timeout=10).text
except Exception:
log.warning("site unreachable", {"id": row["id"]})
continue
text = re.sub(r"<[^>]+>", " ", re.sub(r"(?s)<(script|style).*?</\1>", "", html))[:4000]
links = sorted(set(re.findall(r"https?://(?:www\.)?(?:linkedin|x|twitter|facebook|instagram)\.com/[^\"' >]+", html)))[:5]
fields = ai.generate(f"Company: {row['name']}\nSocial links found: {links}\nSite text: {text}",
system="Give the industry, a one-line summary and the company's social links.",
json_schema=SCHEMA, max_output_tokens=200).json
http.patch(f"{SUPABASE_URL}/rest/v1/companies", params={"id": f"eq.{row['id']}"}, json=fields, headers=sb_headers())
return {"enriched": len(rows)}FAQ
Common questions
What if a company website cannot be fetched?
Which Supabase key does it use and can it write to my table?
Can I choose which fields get filled in?
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 Slack message for every new signup
New rows in your table show up in Slack within minutes, grouped together when many arrive at once.
See how it worksLog outages in Supabase and get a diagnosis
When a site you watch fails, an incident row is written and you get an email with a short explanation of the likely cause.
See how it worksGet a daily summary of new feedback
One evening email grouping the day's feedback rows into themes, so you don't read each entry.
See how it worksKeep exploring
Set up “Fill in missing company details automatically” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.