Skip to content

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.

Paste it into your assistant. It tells you what it will send or change before it runs live.

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

  1. Every 15 minutes ClickRuntime looks in your Supabase table for companies that haven't been filled in yet.

  2. It visits each company's website.

  3. AI reads the site and writes the industry, a one-line summary and the social links it finds.

  4. Those details are saved back to the row, so it is not picked up again.

Before it runs live

  • Connect Supabase

What you get

RunsEvery 15 minutes
Fill in missing company details automaticallytoday, 9:00Succeeded
Supabase · companiesNorthwind Logistics → industry: Freight & logistics · summary: Same-day B2B delivery across the Midwest

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
ai_enrich_new_rows.pyexample
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?
If the request fails or returns nothing useful, the row is left unenriched and tried again on a later run, or marked as failed after a set number of attempts so it does not loop forever. You can choose which behavior suits your table.
Which Supabase key does it use and can it write to my table?
It uses a service role key or an API key with the right row policy, stored as a secret. Row level security still applies to anon keys, so the key you provide must be allowed to read and update the table in question.
Can I choose which fields get filled in?
Yes. The fields are whatever columns you tell your assistant about, such as industry, employee range, headquarters country or a tagline. The proposed change shows the new fields and prompt for approval, and the next run uses them.
What permissions does it need?
secret key (read+write). Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

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.