The moment it happens
Answer support requests from your knowledge base and log every ticket
Each support request gets a suggested answer from your knowledge base in Slack, and every request is logged in your sheet with its category.
- Runs
- The moment it happens
- Apps
- Google Sheets, Pinecone
- AI
- Yes, uses the built-in AI allowance
- Access
- Pinecone read; sheet edit
Send this to your assistant
Create a ClickRuntime automation: when a support request arrives at this link, answer it from my Pinecone knowledge base, post the request and answer to #support, and add the question, answer and category to my Support log sheet.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Small teams answer support from memory and keep no record, so nobody can say which questions come up most or where the documentation falls short. Each answer is also only as good as the person who happened to pick it up.
Small software companies, shops and service teams use it to give every request a well-sourced answer and to build a log that shows what customers keep asking.
What you get out of it
Every request gets a good start
A suggested answer from your knowledge base is ready the moment a request arrives.
A log that tells you something
Categories in the sheet show which topics take up the most support time.
Gaps become visible
Requests the knowledge base cannot answer show where new articles are needed.
The team sees it together
Posting in Slack lets whoever is free pick it up.
How it works
What happens, step by step
When a support request arrives at your automation's link, ClickRuntime receives it straight away.
Your Pinecone knowledge base is searched for the passages that match the request.
AI writes a suggested answer and picks a category.
The request and answer are posted to Slack, and a row is added to your support log sheet.
Before it runs live
- Connect your Google Sheets account and pick the spreadsheets it may use
- Connect Pinecone
- 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 Slack
- Combine it with other Google Sheets and Pinecone steps into one automation
Under the hood
The code that runs this automation
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_event, credentials, http, notify, ai
SHEET_ID = "your-spreadsheet-id"
SCHEMA = {"type": "object", "properties": {"answer": {"type": "string"}, "category": {"enum": ["billing", "shipping", "account", "bug", "other"]}}}
HOST, NS = "https://kb-abc123.svc.aped-1234.pinecone.io", "help" # your index host and namespace
def search(text, k=5):
r = http.post(f"{HOST}/records/namespaces/{NS}/search", json={"query": {"inputs": {"text": text}, "top_k": k}}, headers={
"Api-Key": credentials.secret("PINECONE_API_KEY"), "X-Pinecone-API-Version": "2025-04"}).json()
return [h["fields"] for h in r["result"]["hits"]]
@on_event
def handle(event):
t = event.json or {}
text = str(t.get("message", ""))[:2000]
if not text:
return {"skipped": "empty"}
kb = "\n\n".join(h["chunk_text"] for h in search(text, 4))
out = ai.generate(f"Answer this support request using only the knowledge base, and categorise it.\nKB:\n{kb}\n\n"
f"Request: {text}", json_schema=SCHEMA, max_output_tokens=400).json
notify.slack(f"📩 {t.get('email', 'unknown')} · {out['category']}\n>{text[:300]}\n*Suggested answer:*\n{out['answer']}", channel="#support")
build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False) \
.spreadsheets().values().append(spreadsheetId=SHEET_ID, range="Support log!A:E", valueInputOption="RAW",
body={"values": [[event.received_at[:16], t.get("email", ""), text, out["category"], out["answer"]]]}).execute()
return {"category": out["category"]}FAQ
Common questions
Where do requests come from?
Is the answer sent to the customer?
Can I set the categories?
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
Answer chat questions from your sheet data and documents together
People ask a question in your chat and get an answer that combines the figures in your Google Sheet with the guidance in your documents.
See how it worksAnswer chat questions and take bookings into a sheet
Customers ask questions or book in your chat; questions are answered from your FAQ in Pinecone and bookings are added to your sheet.
See how it worksAnswer your standard questions about each new financial report in a sheet
Each quarter new financial reports are indexed in Pinecone, and the answers to your standard questions about each company are written to your sheet.
See how it worksKeep exploring
Set up “Answer support requests from your knowledge base and log every ticket” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.