TallyCraft is an iPhone app for solo mobile-trade operators — landscapers, cleaners, detailers, and the like. It quietly notices when you stop to work during the day, lets you confirm those stops each evening, and keeps the record of your jobs, what they're worth, and who hasn't paid yet. Think of it as your notebook, automated.
This policy explains exactly what the app collects, why, where it lives, and the choices you have. It covers the TallyCraft iOS app (bundle id com.kevinlam.TallyCraft) and the cloud account that backs it up.
The app is operated by Kevin Lam ("we," "us," "TallyCraft"). If anything here is unclear, email us at support@tallycraft.app — a real person reads it.
Our promise in one line: we use your data only to run the app for you. We do not sell it, we do not use it for advertising, and we do not let anyone track you across apps.
What we collect, and why
We try to collect as little as possible, and only what the app actually needs to do its job. Here is everything.
Your location — to notice when you stop
The whole point of the app is that it sees where you pull up and work, so your evening review is one tap instead of a typed log.
While you're using the app (foreground): we read your precise location so we can show you the weather and recognize a stop.
In the background / "Always" (when you turn it on): we record the places you stop even when the app is closed. This is the passive-capture "magic" — and you have to allow it for that to work. iOS shows a location-arrow indicator in the status bar when your location is being used, and you can always see which apps recently used your location in Settings → Privacy & Security → Location Services.
Your location history is your own movements — where you, the operator, drove and stopped. We store each detected stop as a coordinate, the time you arrived and left, how confident we are that it was a real work stop, and (where available) the street address. We do this only to build your own work record. We never share or sell it.
The app records stops, not just jobs. It can't know which stops were work until you tell it, so it records any place you stay put for a few minutes — a customer's yard, but also the supply yard, lunch, or an errand. Each evening you confirm which stops were jobs. If you switch on Record automatically for a customer, the app records that customer's usual job for you when you visit them during your work hours; it shows on your timeline as "Recorded for you", and you can change or remove it. Stops you mark "Not a job" — and stops the app sets aside for you (at home, at one of your places, or outside your work hours at a place that isn't a customer) — are hidden from your review, but they stay in your account's history, like everything else, until you delete your account. Very short stops at places that aren't customers aren't saved at all.
You can grant only "While Using," or turn location off entirely, in iOS Settings — see "Your choices" below. The app keeps working with whatever you allow; passive capture just won't run without "Always."
Motion & Activity — to catch missed stops (optional)
With your permission, we read iOS's Motion & Activity data (the same "are you walking / driving / still" signal your phone already computes). We use it for one thing: a tracking health check. By comparing when you drove and when you stayed put with the stops the app actually recorded, it can tell you "we may have missed a stop" — or warn you that tracking has stopped altogether — instead of you finding out later that a day went unrecorded.
This permission is optional. The app works without it — stops are still recorded; you just get a simpler version of the health warning. You can turn it off any time in iOS Settings.
Motion data stays on your device. It is read and used locally only — never uploaded to our servers or stored in your cloud account.
Your account identity — Sign in with Apple
We use Sign in with Apple to create your account. When you sign in, Apple asks whether you want to share your name and email with us — that choice is yours, and you can use Apple's "Hide My Email" to share a private relay address instead of your real one. Apple sends us a secure token that identifies your account; your account and all your records are tied to that identity so they sync to your other devices and so only you can see them.
We do not get your Apple password, and we never see it.
The business records you enter — including your customers' details
This is the data you type in to run your business:
Customers — name (required), and optionally an address (typed by you, or filled in from the street address of the stop you created the customer from), its map pin, a phone number, a default service, and a default price.
Jobs — the service, the price, whether it's confirmed, whether it's paid, notes, and reminder history.
Stops — every stop the app records (described above), including the ones you mark "Not a job".
Home base (optional) — if you set one in Settings, a single map coordinate for where your working day starts and ends. It is stored as a coordinate only — we never save an address for it — and it is used for two things: measuring your daily driving distance from home to your first job and back, and recognizing stops at home so evenings at home don't show up as work. You can remove it at any time in Settings → Tracking → Home base, and it is deleted with your account like everything else. If you don't set one, your miles simply count the driving between jobs.
My places (optional) — a name and a map coordinate for each place you add in Settings → My places: a second base such as your shop or yard, or a spot you mark "Never here" right after swiping a stop away as "Not a job". Stops at your places are tucked away automatically. A place you add yourself gets the name you give it; a spot you mark "never here" is labelled with that stop's street address. You can remove places at any time.
Account settings — the trade you picked (it sets the job form's quick-pick services), your work days and hours, whether capture is paused, and your subscription status (whether you have Pro, and since when).
Important — these records often include other people's information. A customer's name, phone number, and home address are your customers' personal details, not yours. You are entering them, and you are responsible for having a proper basis to store them (for example, because they're your customer and you do business with them). We store this data on your behalf, as your processor, so the app can power one-tap confirmation, show you what's owed, and let you send a payment reminder. The phone number is only used when you choose to: to call or text the customer from their record, or to send a payment reminder (see "How we use your information") — always from your own phone.
Weather and address lookups sent to Apple
To make the app pleasant and useful, a few lookups go to Apple:
Weather (Apple WeatherKit): we send your current location to Apple's WeatherKit service to get the current conditions and temperature, which power the weather "hero" scene on your main screen. This is a free, cosmetic touch.
Address (Apple MapKit): when we detect a stop, we send that stop's coordinate to Apple's MapKit reverse-geocoding service to turn it into a human-readable street address for your review card. This is convenience only — your records are matched by coordinate and time, not by the address text, so the app still works if the lookup fails (offline, rural areas, etc.).
Address search (Apple MapKit): when you type an address — for your home base, one of your places, or a customer — the text you type is sent to Apple's Maps search to suggest matches and find the spot. For your home base and places we keep only the resulting coordinate; the text you typed is never stored. For a customer, the address you pick is saved as that customer's address, with its map pin.
Driving routes (Apple Maps directions): to work out how far you drove on a working day, we ask Apple for the driving distance between the stops you confirmed as jobs (and your home base, if you set one). We send only those coordinates, and we get back a distance. If the lookup isn't available — you're offline, say — we fall back to a straight-line estimate on your device, marked “est.” until we can replace it.
We don't get anything back about you from these lookups beyond the weather, the address, and the distance — they're standard Apple device services.
A diagnostics log — kept on your phone
To help troubleshoot tracking, the app keeps a short technical log on your phone of what the recorder did: when GPS switched modes, and where it detected stops (map coordinates, including stops it decided not to keep). It holds at most the last 7 days, it is never uploaded, and it is erased when you delete your account or switch accounts. The log also notes which stops the app recorded for you — and, for customers where Record automatically is off, which it would have recorded — by short internal ids, never names. You can view, share, or clear it in Settings → Diagnostics → Capture log. It only leaves your phone if you choose to share it — for example, emailing it to us for help — and anything you send us is used only to help you.
The app also keeps a small on-phone score of how often "Record automatically" would have matched what you did at each customer where it is switched off (Settings → Diagnostics → Automatic recording (preview)). The Record automatically switch itself is saved only on your phone — it isn't synced to your account, so a new phone starts with it off. It holds no map coordinates and no customer names — only which stop and which customer in your records (as internal ids), the day of the visit, what the usual job would have been, and whether you kept it or what you changed. Those per-visit details are kept at most 7 days; after that only plain counts remain (per customer and overall), plus the date the preview started. It is never uploaded, and it is erased when you delete your account or switch accounts. Deleting a customer removes everything tied to them; their visits stay only as an unlabelled part of the overall count.
What we do NOT collect
We want to be just as clear about what we don't do:
No analytics or tracking SDKs. The app contains no analytics, ad, crash-reporting, or marketing toolkits. (Our only third-party code library is the one that talks to our own backend.) If you've chosen in iOS to share analytics with app developers, Apple may pass us its standard, anonymous crash reports — that's Apple's program, and it's your setting.
No advertising identifiers, no IDFA, no App Tracking Transparency prompt — because we don't track you across other apps or websites.
No data brokers. No selling. No ad targeting.
How we use your information
We use your data only to provide the app to you:
To detect and record your stops, so you can confirm which were jobs, and build your own job/customer records.
To show your evening review, your history, your reports, and what's owed.
To draw the weather scene on your main screen.
To back up your records to your account and sync them across your own devices.
To send a payment reminder through your own iPhone's Messages app — see below.
Reminders go from your phone — we never message anyone for you
When you choose to remind a customer about an unpaid job, TallyCraft prefills your iPhone's built-in Messages app with the text and the customer's number, and you tap Send yourself. The message goes from your own phone number, like any text you send. We do not run any messaging service, we never send messages on your behalf, and the text never passes through our servers.
There is no payment system
TallyCraft records whether a job is paid or unpaid — that's it. We do not process payments and we run no payment rail. You collect however you already do (Zelle, Venmo, Stripe, cash, check). We never touch the money.
Where your data lives, and how it's protected
On your phone: the app keeps a local, offline-first copy of your records (using Apple's SwiftData) so it works with no signal and syncs when you're back online.
In the cloud: your records are backed up to our hosted database, Supabase (PostgreSQL), which is the synced source of truth across your devices. Our cloud is hosted in the United States (AWS us-west-2, Oregon).
Protections we rely on:
Per-user row-level security. Every record is tagged with your account id, and our database enforces a strict "you can only ever read or write your own rows" rule at the database level. By default, no row is visible to anyone but its owner.
Encryption in transit and at rest. Traffic between the app and our cloud is encrypted (HTTPS/TLS), and the data stored in our cloud is encrypted at rest. These protections are provided by the Supabase platform that hosts our database.
We keep the administrative ("master") key to the database out of the app entirely; the app only ever holds a limited key whose access is governed by the per-user rule above.
No system is perfectly secure, but this is the standard, current bar for a consumer app, and we don't cut corners on it.
How long we keep your data
Location data: the app does not store a continuous raw GPS trail. The recorder processes raw location updates on your device into discrete stops (a coordinate plus arrival/departure time), and only those stops are saved and synced — including the ones you mark "Not a job", which stay in your account's history (hidden from your review) until you delete your account. The on-phone diagnostics log keeps at most 7 days, and the on-phone automatic-recording preview keeps per-visit details at most 7 days (then only counts). Our retention goal is to keep no fine-grained movement data beyond what those stop records require — and, as a further safeguard, to age detailed location precision down after about 30 days.
We want to be honest about exactly where this stands: the 30-day reduction is our stated retention practice and the direction we are building toward; we are still finalizing the automated process that performs it on a schedule. Until that automated reduction is fully in place, your stop records are retained as part of your data and are removed when you delete your account (see below). We will update this policy to confirm once the scheduled reduction is live, and we will not claim an automated deletion that we are not yet performing.
Your records: we keep your customers, jobs, and stops for as long as your account is active, so your history is there when you want it.
On deletion: when you delete your account, your records are removed (see below).
Server logs: like any online service, our hosting provider keeps standard, short-lived server logs (such as IP addresses and request times) for security and troubleshooting.
Who else touches your data (third parties)
We keep this list short on purpose. We only use processors we actually need to run the app, and each has a single, specific job.
Who
What they do for us
Supabase
Hosts our cloud database and handles sign-in on the backend. This is where your synced records live, and it keeps short-lived server logs (such as IP addresses) for security. Supabase acts as our data processor.
Apple — Sign in with Apple
Authenticates your account (you choose whether to share your name/email; "Hide My Email" is supported).
Apple — WeatherKit
Returns weather for your current location to draw the home-screen scene.
Apple — MapKit
Turns a stop's coordinates into a street address for your review card; finds the spot when you type an address for your home base, a place, or a customer.
Apple — Maps directions
Returns the driving distance between the day's confirmed job stops (and your home base) so we can show your miles.
Apple — App Store / StoreKit (In-App Purchase)
Handles your in-app purchases and billing — the Pro subscription and single-report purchases. Apple processes the payment; we receive your purchase/subscription status, not your card details.
We do not:
sell your personal information,
share it for advertising or use it to target ads,
allow cross-app or cross-site tracking, or
use any data brokers.
We may disclose data if we're legally required to (a valid court order, for example), or to protect the safety and rights of people, but that's a last resort, not a routine.
Your choices and your rights
You're in control of your data. Here's how.
Delete your account — free, from inside the app. This is our unconditional guarantee: you can always leave and take your data with you. Deleting your account removes your records from your device and signs you out, and triggers a full server-side deletion of your account and all of its records (account, customers, jobs, and stops) from our cloud. This server-side deletion is live and verified — "delete" means delete everywhere.
Delete a customer — free, from inside the app. Open the customer's record and choose Delete. Their name, address, phone number, and map pin are erased from their customer record everywhere — on your phone, in your account, and on our servers (the record is kept only as an anonymous placeholder so your job history still adds up). The jobs you recorded for them stay in your history as your own bookkeeping, labelled "Deleted customer", with their dates, services, prices, and paid status unchanged — including where each job took place (that stop's location and street address). This is how you honour a customer's request to remove their details without losing the record of the work you did.
Export your recent data — free. You can export your last 30 days of job records (date, customer, service, price, paid status, paid date) as a CSV file anytime, free. To get your full history, upgrade to Pro. If you'd like a complete copy of your data and don't want to subscribe, email us at support@tallycraft.app and we'll send it to you at no charge — we never hold your own data hostage.
Paid archive (Pro). Pro subscribers get the full historical export plus computed tax/audit summaries and reports. We sell the packaging and computation of your data and the convenience of the full archive — never the right to leave with it: the free 30-day export above always remains available, and a full copy is free on request (see above).
Turn permissions off any time. You can change or revoke Location ("Always," "While Using," or off) and Motion & Fitness in iOS Settings → Privacy & Security, or under TallyCraft's own entry in Settings. The app degrades gracefully — turn off "Always" and passive background capture stops, but you can still add and manage jobs by hand; turn off Motion and you get a simpler tracking-health warning.
Pause for the off-season. Seasonal operators can switch the app's capture off in the winter and back on in spring from inside the app, with all history preserved. Pausing stops new capture without deleting anything.
If you'd like to ask about the data tied to your account, email support@tallycraft.app and we'll help.
Children
TallyCraft is a tool for working adults running a trade. It is not directed to children, and we do not knowingly collect personal information from anyone under 13 (or the minimum age in your jurisdiction). If you believe a child has provided us information, contact us at support@tallycraft.app and we'll delete it.
State and regional privacy rights
California residents: We do not sell your personal information, and we do not share it for cross-context behavioral advertising, as those terms are used under California law (the CCPA/CPRA). You have the right to know what we collect, to access it, to request deletion, and not to be discriminated against for exercising these rights. You can exercise access and deletion directly in the app (export and delete account), or email support@tallycraft.app.
Other US states and regions: Residents of other states with privacy laws (such as Virginia, Colorado, Connecticut, and others), and individuals in regions like the EU/UK where data-protection rules apply, may have similar rights to access, correct, delete, or export their personal data. The in-app export and delete features cover access, portability, and deletion for everyone; for anything else, email support@tallycraft.app and we'll respond. For data you entered about your own customers, you act as the controller of that information and we act as your processor.
Changes to this policy
If we change this policy, we'll post the updated version at https://tallycraft.app/privacy/ and update the "Effective date" at the top. For meaningful changes — especially anything that would expand what we collect or how we use it — we'll make a reasonable effort to let you know in the app before the change takes effect.