Overview

ButlerBldr is a job management app for solo contractors built by B&N Holdings LLC. We designed ButlerBldr to keep your business information on your device and in your iCloud account — not on our servers. The exceptions are things you explicitly choose to send: a PDF you share by link and, if you turn on card payments, a pay link on an invoice. Both are described in Third-party services below.

The short version: your jobs, quotes, invoices, clients, and photos sync through your personal iCloud account. We do not have access to that data. We do not run analytics SDKs in the app. We do not show ads. We do not sell your data, and nothing is shared except with the services that carry out something you ask the app to do — each one is listed below.

Data we collect

ButlerBldr does not require an account, login, or registration. We do not operate a backend that stores your jobs, quotes, invoices or clients. The information you enter into the app is stored on your device and synced through Apple's CloudKit service to your own iCloud account.

This includes:

  • Job records, quotes, invoices, and line items you create
  • Client names, phone numbers, addresses, and notes you add
  • Photos you attach to jobs
  • Time entries you log against jobs
  • Your business profile (business name, logo, payment terms)

Subscription state (Free vs Pro) is managed by Apple through your App Store account. We receive a signal from Apple indicating whether your subscription is active — we do not receive your payment details, billing address, or any identifiable purchase information.

If you turn on card payments, two things change, and only then. ButlerBldr asks Stripe to create a Stripe account for your business, and our server at butlerbldr.app keeps a small record for each pay link you send: your Stripe account ID, the invoice number, the amount, and whether it has been paid. That record is tied to your Stripe account ID. Nothing else about the invoice, your customer, or your business is kept there. The details are under Stripe in Third-party services below.

How we store your data

Your data lives in two places:

  • On your iPhone or iPad, in the app's local database, protected by iOS file-system encryption and your device passcode or biometrics.
  • In your personal iCloud account, synced through Apple's CloudKit service. This is the same iCloud account you use for Photos, Notes, and Messages. Apple's privacy policy governs this storage — we never see your CloudKit container.

When you uninstall ButlerBldr, your local copy is removed by iOS. To delete the iCloud copy, sign in to iCloud.com and remove the ButlerBldr container from iCloud Storage settings, or reset your iCloud data through iOS Settings.

Permissions we request

ButlerBldr asks for the following permissions only when you use the feature that needs them. Each is optional — declining a permission disables that one feature, not the whole app.

  • Camera — to take photos of work in progress or finished jobs and attach them to a job record. Photos are stored with the job in your iCloud container.
  • Photo library — to attach existing photos to a job, and to select your business logo for use on PDFs.
  • Contacts — to import client names, phone numbers, and addresses from your phone's address book. We only read the contacts you select.
  • Notifications — to remind you about unsent quotes, unsent invoices, and jobs that don't have a quote or invoice yet, and, if you switch them on, about tomorrow's jobs, recurring work that is due to be rebooked, and leads that still have no date. Reminders are created on your device; nothing is sent to us. You can turn this off in iOS Settings at any time.
  • Calendar — only if you turn on calendar sync. ButlerBldr adds your scheduled jobs to a calendar named ButlerBldr on your device. It asks for full calendar access because it also has to move or remove those events when you reschedule or delete a job. It only touches its own calendar, and nothing from your calendars is sent to us. Adding a single job to your calendar by hand needs no permission.

What we do not do

  • We do not run analytics SDKs in the app (no Mixpanel, Amplitude, Segment, Firebase Analytics, etc.). This website uses privacy-preserving, cookieless analytics — see below
  • We do not run advertising SDKs and do not show ads
  • We do not sell or rent your data. We do not share it with third parties, except the service providers that carry out something you ask the app to do — Apple, Cloudflare and, if you turn on card payments, Stripe — each described under Third-party services
  • We do not track you across other apps or websites
  • We do not collect device identifiers (IDFA, advertising ID)
  • We do not have a server that stores your jobs, quotes, invoices, or clients — the only things we store are a PDF you explicitly choose to share by link and, if you turn on card payments, the pay-link records described under Third-party services
  • We do not receive a copy of your contacts, photos, or location

This website

Everything above describes the ButlerBldr app. This website, butlerbldr.com, is separate and collects a small amount of anonymous traffic data so we can tell whether anyone is finding it.

We use Cloudflare Web Analytics, which is privacy-preserving by design:

  • It sets no cookies and uses no client-side state
  • It does not fingerprint your browser or device
  • It does not track you across other websites
  • It records aggregate page views, referrers, and general location at country level — never anything that identifies you
  • It runs only on this website. It is not in the app

We use it to answer one question: which pages people actually read. There is nothing to opt out of that a standard content blocker will not already handle, and blocking it does not affect the website or the app in any way.

Third-party services

ButlerBldr uses a small number of services to deliver core functionality. Each is listed below with what it does and what data it sees.

  • Apple iCloud (CloudKit) — syncs your data between your devices using your personal iCloud account. Governed by Apple's Privacy Policy.
  • Apple App Store — handles purchases and manages your subscription. We receive only an active / inactive signal — never your payment details.
  • Apple MapKit — powers address autocomplete. ButlerBldr never asks for or uses your location. When you type an address, the text you type is sent to Apple so it can return matching suggestions; that is handled under Apple's Privacy Policy and we never see it.
  • butlerbldr.app PDF link — when you send a quote or invoice by text message, the app uploads that PDF to a link hosted at butlerbldr.app (Cloudflare Workers + R2), because a text message can't carry a file attachment. The PDF contains whatever is on the document: your business details, your customer's name, address and contact details, the line items, and the totals. The link address includes a random code so it can't be guessed, but it is not password-protected — anyone you give the link to can open it. Uploaded PDFs are deleted automatically 12 months after upload. We attach no account information and no tracking to the link, and we use these files for nothing other than serving them to the person you sent the link to. Sending by email uploads nothing — the PDF is attached to the email from your device. If you want a shared PDF removed before it expires, email hello@butlerbldr.com with the link and we will delete it. You can stop sharing entirely at any time by using Send via Email instead of Send via SMS, which uploads nothing; to remove the data ButlerBldr holds on your own device, use Settings → Delete All Data.
  • Stripe (card payments) — only if you turn on card payments. When you tap Set up card payments and continue past the screen that explains this, ButlerBldr asks Stripe to create a Stripe account for your business. Stripe collects your business details, identity and bank account directly on its own page; ButlerBldr does not see them, and does not pass your name, email or address to Stripe. When you send an invoice with a pay link, ButlerBldr shares that invoice's number and amount with Stripe so your customer can pay by card. Your customer enters their card and contact details on Stripe's page — ButlerBldr never receives them. The money goes to your own Stripe account; ButlerBldr never holds it. Stripe handles this information under Stripe's Privacy Policy and the data-processing agreement that is part of its services agreement with us.

    To make a pay link work, our server at butlerbldr.app (Cloudflare Workers) keeps your Stripe account ID and, for each pay link, the invoice number, the amount, and whether it has been paid. Each record is kept for up to 400 days after the link was last sent, opened or paid, and is then deleted automatically. While you are setting up, it also keeps a count of setup attempts for two days, stored against a scrambled form of your network address rather than the address itself. To delete the pay-link records sooner, use Settings → Card Payments → Disconnect Stripe: it deletes every one of them and switches off every pay link you have sent. After that we keep only a marker that the Stripe account ID was disconnected, so old links stay switched off. Disconnecting does not close your Stripe account — Stripe holds it, and you close it yourself at dashboard.stripe.com/settings/account.

Children

ButlerBldr is built for working contractors and is not directed at children under 13. We do not knowingly collect information from children.

Changes to this policy

If we change this policy in a way that affects what data the app handles, we will update the "last updated" date at the top of this page and note material changes in the app's release notes. The current version is always available at butlerbldr.com/privacy.

Contact

Questions about this policy or how ButlerBldr handles your data? Email hello@butlerbldr.com and we'll reply within 24 hours on business days.

ButlerBldr is operated by B&N Holdings LLC.