Skip to content

The moment it happens

Log expenses and catch budget overruns

Your expenses land in a sheet, and you're warned when a category goes over its monthly budget.

Runs
The moment it happens
Apps
Google Sheets
AI
Yes, uses the built-in AI allowance
Access
read+write

Send this to your assistant

Create a ClickRuntime automation: give me a link to send expenses to. Add each to my Expenses sheet with a category, and email me when a category goes over its limit in the Budget tab this month.

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 freelancer logs expenses in a Google Sheet when she remembers to: software, travel, meals, equipment. Categories are inconsistent, so Travel and Transport both exist, and the Budget tab where she set monthly limits is never compared with real spending. At the end of the month she finds that software subscriptions went 40 percent over what she planned, and the money is already gone.

The moment an expense is sent in, ClickRuntime adds it as a row, and if the description is free text, such as lunch with client, the built-in AI picks the category. It then sums the month-to-date spending for each category, compares it with the limits on your Budget tab, and emails any category that has passed its budget.

Freelancers, small teams and households use it to spot overspending while there is still time to adjust.

What you get out of it

  • Overspending is noticed mid-month

    An email when software passes its budget on the 18th gives you two weeks to pause a subscription. A discovery on the 31st gives you a number and nothing to do about it.

  • Categories stay consistent

    Free-text entries are assigned to one category list, so Travel and Transport do not split into two. Totals by category are reliable, and your reports and tax summaries are simpler to prepare.

  • Budgets are actually used

    A budget in a separate tab is easy to ignore. Comparing it with every new expense turns it from a plan on paper into a limit that you are told about when you reach it.

  • Quick logging means more complete records

    Sending a short text takes seconds, so you are more likely to record small purchases. Complete records make end-of-year tax preparation faster and reduce missed deductions. Receipts stop piling up in a drawer until January.

  • A clear view of month-to-date by category

    Each alert shows the amount spent against the budget for that category. You know exactly how much is left, without opening the sheet and adding up a column by hand.

How it works

What happens, step by step

  1. When you send a new expense, ClickRuntime receives it straight away.

  2. AI picks a category for it, such as Software or Travel, and the expense is added as a row in your Google Sheet.

  3. ClickRuntime adds up this month's spending in that category and compares it with the limit on your Budget tab.

  4. If a category goes over budget, you get an email with how much was spent against the limit.

Before it runs live

  • Connect your Google Sheets account and pick the spreadsheets it may use
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Log expenses and catch budget overrunsjust nowSucceeded
Email · Software is over budgetSoftware: 1,284.00 spent this month against a limit of 1,000.00.

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 Google Sheets 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.
expense_log_with_monthly_budget_alert.pyexample
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from datetime import date
from clickruntime import on_event, credentials, state, ai, notify

SHEET_ID = "your-spreadsheet-id"
CATEGORIES = ["Software", "Travel", "Meals", "Office", "Other"]

@on_event
def handle(event):
    exp = event.json or {}
    sheets = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).spreadsheets()
    cat = ai.generate(f"Pick one category from {CATEGORIES} for this expense, reply with it only: {exp['description']}",
                      max_output_tokens=10).text.strip()
    cat = cat if cat in CATEGORIES else "Other"
    today = date.today().isoformat()
    sheets.values().append(spreadsheetId=SHEET_ID, range="Expenses!A:D", valueInputOption="USER_ENTERED",
                           body={"values": [[today, exp["description"], float(exp["amount"]), cat]]}).execute()
    rows = sheets.values().get(spreadsheetId=SHEET_ID, range="Expenses!A2:D").execute().get("values", [])
    spent = sum(float(r[2]) for r in rows if len(r) > 3 and r[3] == cat and r[0][:7] == today[:7])
    limits = dict(sheets.values().get(spreadsheetId=SHEET_ID, range="Budget!A2:B").execute().get("values", []))
    limit = float(limits.get(cat, "inf"))
    alert_key = f"alerted:{today[:7]}:{cat}"
    if spent > limit and not state.get(alert_key):
        notify.email_me(f"{cat} is over budget", f"{cat}: {spent:,.2f} spent this month against a limit of {limit:,.2f}.")
        state.set(alert_key, True)
    return {"category": cat, "spent": spent}

FAQ

Common questions

How does it send an expense in?
Through a link that accepts a short message or a form, with an amount, a description and an optional date. Any tool that can post to a link works, which includes a simple form on your phone's home screen.
What if the AI picks the wrong category?
Edit the category in the sheet and the monthly sums will use your correction. If a certain kind of expense is often misfiled, add it to the instructions as an example, and later entries will follow it.
Can the budget be different each month?
Yes. Keep the limits on the Budget tab by month or as a default with overrides for particular months, such as a higher travel limit in a conference season. The comparison uses the limit for the month of each expense.
What permissions does it need?
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 for each event the app sends.
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 “Log expenses and catch budget overruns” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.