The moment it happens
Pull the details out of receipt photos
Photos or screenshots you send are read and returned as tidy fields, like merchant, date and total.
- Runs
- The moment it happens
- Apps
- OpenAI
- AI
- Not needed
- Access
- API key
Send this to your assistant
Create a ClickRuntime automation: give me a link I can post receipt photos to. Read each one with GPT-4o vision, extract the merchant, date and total, and email them to me.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A claims handler at a small insurer receives photos of damaged property from customers, a QA tester collects screenshots of broken layouts, and a bookkeeper gets phone pictures of paper receipts. Someone has to look at each image, describe what is wrong, and retype the details into a form or a ticket. It is slow, the descriptions vary from person to person, and photos that arrive after hours sit untouched until morning.
When an image is posted to your unique link, or when a link to one is sent, it is passed to an OpenAI vision model along with your instructions, such as describe the damage, list the visible error messages, or extract merchant, date and total. The answer is parsed into structured fields and emailed or stored for you, within moments of the upload.
It suits teams that process photos regularly, such as claims, inspections, support tickets, expense reports and quality control.
What you get out of it
Consistent descriptions every time
The same instructions are applied to every image, so each report mentions the same things in the same order. That makes records easier to compare, search and audit than free-form notes written by different people.
Photos are handled outside office hours
A customer who sends a picture at 9 pm gets the image processed straight away, and the result is waiting in the morning. Work begins on day one instead of waiting for someone to open the attachment.
Typing from a picture is avoided
Reading a total or a serial number off a photo and retyping it invites mistakes. Pulling the values out as fields lets a person confirm them quickly, which is faster and more accurate than starting from scratch.
Triage becomes quick
A short description of what the image shows lets you sort urgent cases from routine ones before anyone opens the file, so a photo of a broken pipe is handled before a photo of a scratch.
Structured output feeds other tools
Because the answer is returned as named fields, it can be stored in a sheet or sent onward without cleaning. That avoids a manual step between the photo and the system where the data is needed.
How it works
What happens, step by step
When you send a photo or screenshot to your ClickRuntime link, the automation starts straight away.
AI looks at the image and reads out the details you asked for, such as merchant, date and total on a receipt.
The details are tidied into separate fields and emailed to you, like "Merchant: Northwind Café, Date: 2026-10-18, Total: 14.60".
Before it runs live
- Connect OpenAI
- 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
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other OpenAI steps into one automation
Under the hood
The code that runs this automation
import json
from clickruntime import on_event, credentials, http, notify
@on_event
def handle(event):
image_url = (event.json or {}).get("image_url")
if not image_url:
return {"error": "send JSON with image_url"}
resp = http.post("https://api.openai.com/v1/chat/completions", timeout=60,
headers={"Authorization": f"Bearer {credentials.secret('OPENAI_API_KEY')}"}, json={
"model": "gpt-4o",
"response_format": {"type": "json_object"},
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Read this receipt. Reply as JSON with merchant, date (YYYY-MM-DD) and total."},
{"type": "image_url", "image_url": {"url": image_url}}]}]})
resp.raise_for_status()
r = json.loads(resp.json()["choices"][0]["message"]["content"])
notify.email_me(f"Receipt: {r.get('merchant')} {r.get('total')}",
f"Merchant: {r.get('merchant')}\nDate: {r.get('date')}\nTotal: {r.get('total')}\n{image_url}")
return rFAQ
Common questions
Does this need an OpenAI account?
How accurate is it on blurry or handwritten photos?
Can it handle several images in one message?
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
Turn voice notes into text and action items
Any recording you send to your link comes back as a transcript, a short summary and a list of to-dos.
See how it worksTranslate recordings into English
Audio in another language comes back as an English transcript, with an optional spoken version.
See how it worksTurn text into an MP3
Text you post to a link is read out by an OpenAI voice and the audio file is emailed to you.
See how it worksKeep exploring
Set up “Pull the details out of receipt photos” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.