SimpleCaller
Upload a CSV, filter to the contacts you haven't reached, and dial through them one at a time from your own phone. Whoever doesn't pick up gets a "tried to reach you" email automatically — you're already on the next call.
- Built by
Harry Forsman- Category
- Sales
- Updated
- Sep 7, 2026
- Price
- Free to start
Gallery
Overview
Call a contact list from your phone, with no-answer emails sent automatically.
Upload a CSV, filter to the contacts you haven't reached, and SimpleCaller serves them one at a time as tel: links. When someone doesn't pick up, it sends your “tried to reach you” email from Gmail while you move on to the next contact.
- 1tap to dialtel: link, your own phone
- 5call outcomesInterested, Not interested, Did not answer, Callback, Wrong number
- 0typed follow-upsthe no-answer email sends automatically
- ~5 minto first sessionassistant-guided setup
SimpleCaller turns a spreadsheet into a working call list. You upload a CSV with a header row — first_name, last_name, phone, email, company — and every valid row becomes a contact. Rows missing a phone number or first name are skipped, never silently: the import reports how many came in, how many were skipped, and why, row by row.
The contacts view is home base. Each contact shows how many times they've been called, the last outcome, and when — and a "Show only non-contacted" filter narrows the list to people with no recorded call outcome yet. One button, "Start session" ("Will start session with contacts currently in view"), snapshots exactly the contacts you're looking at, in order, into a call session.
The session serves one contact at a time: the phone number is a tel: link, so your own phone or softphone places the call, and you record one of five outcomes — Interested, Not interested, Did not answer, Callback, Wrong number — with optional notes. "Did not answer" automatically sends your configured "tried to reach you just now" email; after "Interested" a Send follow-up button appears. Both templates live on the Emails page with {{first_name}}-style merge fields. Gmail is optional throughout: without it every outcome still records, and the app tells you exactly why an email was skipped. Each attempt sends each email at most once — and anything you want to work differently, you tell the assistant.
What's inside
- Import & filter
A call list built from the CSV you already have
Import expects a header row and maps first_name, last_name, phone, email, and company, case-insensitively. Rows missing a phone or first name are skipped and reported with reasons — nothing disappears silently. The table then carries each contact's history: recorded attempts, last outcome, last call time. Flip on "Show only non-contacted" to see contacts with no recorded outcome, and press Start session — it snapshots the contacts currently in view, in display order, into your next calling run.
- Call session
One contact at a time, your phone does the dialing
The session always serves the next uncalled contact in order. The number renders as a tel: link — tap it and your phone or softphone places the call, nothing to configure. Record Interested, Not interested, Did not answer, Callback, or Wrong number, add a note, and advance with Next contact when you're ready. A did-not-answer outcome sends the "tried to reach you" note immediately and shows you exactly what happened — sent, or skipped with the reason. When nothing is left pending, you get the session's counts per outcome.
- Emails
Two templates, written once, reused every session
The Emails page holds both templates: the did-not-answer note ("Hey — tried to reach you just now") that auto-sends on that outcome, and the follow-up you send with a button after an interested call. Each has a subject and plain-text body with {{first_name}}, {{last_name}}, and {{company}} merge fields. Gmail is optional, and the page says so up front: leave it unconnected and outcomes still record — the app reports exactly why an email was skipped, whether that's no template yet, no email address on the contact, or Gmail not connected. Each attempt sends each email type at most once.
- Runs your way
Ask across your calls, change how it works
SimpleCaller is a Luo workspace, so nothing about it is fixed. Ask who wanted a callback this week and get names with your own notes attached. Want the did-not-answer note to promise a retry tomorrow, an extra CSV column mapped, or a sixth outcome button? Say so — the assistant reshapes the workspace and the pages follow.
How it works
The calling loop
Import
CSV rows become contacts; skipped rows are counted and explained.
Filter
non-contacted means no recorded outcome — your next-call list.
Dial
tel: link, five outcomes, notes, explicit next contact.
Follow up
no-answers get the note automatically; interested calls get a button.
Who it's for
Built for people who still pick up the phone
- Founder doing first outreach“I have a spreadsheet of 200 leads and a phone. Every tool wants me to migrate a CRM first.”
- SDR working a fresh list“Half my afternoon is logging who I called and pasting the same ‘tried to reach you’ email.”
- Recruiter screening candidates“I need to get through the shortlist and know exactly who I still haven't reached.”
What changes
What changes when the list runs itself
Getting started
Start the template
Calls go through your own phone via tel: links. Gmail is optional — connect it if you want the emails to send, skip it if you don't.
Import your contacts
Upload the CSV; valid rows become contacts and skipped rows are reported with reasons. Write the two email templates while you're at it.
Filter and dial
Show only non-contacted, press Start session, and work the list — dial, record the outcome, next contact.
Built on Luo
- Ready on day one. Start from the template and connect your tools — nothing to install, no developer involved.
- Change it in chat. Add a field, rename a stage, wire up an alert: say it and the assistant reshapes the workspace.
- Part of your Company OS. It lives beside your knowledge base and every other tool you build on Luo.
FAQ
Do I need a phone system?
No. The number is a tel: link; whatever handles tel: links on your device places the call — your mobile, a desktop softphone, or a headset app.
What if I don't connect Gmail?
Everything still works: contacts import, sessions run, outcomes record. The app simply tells you why an email was skipped. Connect Gmail later and the templates start sending.
What does my CSV need?
A header row with first_name, last_name, phone, email, and company (case-insensitive). Rows missing a phone or first name are skipped and reported, never silently dropped.
Can I change the outcomes or the email wording?
Yes. The templates live on the Emails page with {{first_name}}-style merge fields, and anything structural — an extra outcome, a different filter — you ask the assistant to change.
Will it email someone twice?
No. Each call attempt sends each email at most once, and the follow-up after “Interested” only goes when you press the button.