KeptSolid app privacy policy
Updated
This policy covers the KeptSolid iOS and Android app and the office workspace at keptsolid.com/app. They are work tools for a shop's owners, dispatchers and technicians. A shop supplies customer and service information so its team can perform the work. This policy describes the current version of the app. Availability can depend on your shop's setup and the installed build.
Information used by the app
Account and shop access
- Information
- Account identifiers, sign-in details, email, name and profile image where supplied to the sign-in service, shop identifiers, organization memberships, roles and session identifiers.
- Purpose
- Sign you in, identify your shop and check which work you may access. Clerk handles authentication. KeptSolid stores local account and membership records and checks current access before protected operations.
- Who receives it
- Clerk, Convex and the shop members who manage your access. A social sign-in provider receives the authentication information needed when you choose that sign-in method.
Shop communications and on-call settings
- Information
- Owner and business phone numbers, emergency contact names and phone numbers, on-call names and phone numbers, availability days and time windows, ring order, phone hashes and last four digits, confirmation and forwarding-test results, and SMS opt-out state.
- Purpose
- Route enabled shop alerts and emergency calls, check forwarding setup, and respect a phone number's messaging choices. Full phone numbers are encrypted in server storage. Names, availability, ring order, last four digits, hashes and opt-out metadata are not all protected by that same encryption. Removing a contact does not automatically erase its stored record; opt-out records can remain so re-adding a number does not clear its choice.
- Who receives it
- Convex stores these settings. Authorized shop members see the rota details their roles allow; technicians do not receive contact phone details. Twilio receives destination phone numbers and call or message information when the shop's enabled communication workflows run. The retention limits below also apply to these records.
Customer and service records
- Information
- Information entered by your shop, including customer names and contact details, service addresses, access instructions, equipment details, job titles, status, assignments, arrival windows, notes and record history.
- Purpose
- Let the authorized shop team view, schedule and document service work. Owners and dispatchers have broader shop access. Technicians can access work assigned to them under the app's role checks.
- Who receives it
- Convex and authorized members of the same shop. Connected-provider information may also be read from or sent to the provider your shop has enabled. The provider remains the source of its operational records.
Estimates and customer approval
- Information
- Estimate titles and line descriptions, quantities, prices, discounts, configured tax rates and totals, version history, copied customer and service details, approval-link records, approval time, staff identifiers and the job created from an accepted estimate.
- Purpose
- Prepare a priced scope, preserve the exact version a customer approves, and let authorized staff create one linked job. Estimate titles and descriptions and copied customer contents use server encryption. Prices, tax settings, versions, relationships, timestamps and command metadata are not all encrypted in that way. A durable command journal preserves retry results with encrypted contents and financial metadata.
- Who receives it
- Convex and authorized owners or dispatchers in the same shop. Anyone holding a valid customer-review link can view its version's customer name, service address, equipment label, scope and prices, and can approve it without an app account. Share it only with the intended customer. The public review sends its access secret to KeptSolid and Convex to check that access; it does not collect a payment or load advertising or browser error reporting.
Job photos
- Information
- Photos you choose to take for a job, plus the job, shop and author identifiers, dimensions, time and version history.
- Purpose
- Document service work. The app asks for camera permission when you start capture. It resizes captured images and removes embedded image metadata before saving the normalized photo. It does not request full photo-library or microphone access for this workflow.
- Who receives it
- Convex and shop members authorized to view that job. Taking a photo does not publish it on a public page. Store only images your shop is authorized to collect.
Notifications
- Information
- A push delivery token, a random installation identifier, device platform, account, session and shop identifiers, registration status and delivery results. On Android, Firebase installation identifiers, messaging registration data, the app version and the Firebase user agent are also processed automatically. The user agent includes the operating system name and version, device model, brand and form factor such as phone or tablet, the installing app and the Firebase SDK names and versions.
- Purpose
- Send job update notifications when you enable them. The notification text is generic. Its routing data includes shop and job identifiers so the app can recheck your access when you open it; it does not contain the customer's name, phone, address, note or photo. Firebase uses the Android installation and messaging identifiers to register the app installation for messaging whether or not you enable job notifications. Google uses the Firebase user agent to maintain and improve Firebase services and does not link it to a user or device identifier. This build has no separate user control to stop that automatic Android registration or user agent processing.
- Who receives it
- Convex, Expo's push service and Apple Push Notification service or Firebase Cloud Messaging. Delivery services receive the push token and notification payload. Google's Firebase services also receive installation and messaging identifiers, the app version, app configuration data and the Firebase user agent during automatic Android registration.
Device storage
- Information
- Sign-in session material and device keys, plus encrypted note drafts, pending photo drafts and submission state for the current account, session and shop. Language preferences and recovery markers are also stored.
- Purpose
- Protect sign-in and recover an interrupted submission or cleanup. The app stores session material and encryption keys in the device's secure store and encrypted work in local storage. Cleanup runs when you sign out or change the active account or shop. An unfinished cleanup keeps work unavailable until recovery succeeds.
- Who receives it
- Encrypted work drafts remain on your device until you submit that work to the service. Device-held work encryption keys stay local. Session authentication is exchanged with Clerk and Convex for sign-in, authenticated reads and submissions. The current version does not enable general offline assigned-job downloads or automatic offline queue replay.
Diagnostics
- Information
- Technical errors, release and environment information, request and performance metadata and ordinary connection information such as IP addresses needed by hosting and authentication services. Clerk retains sign-in, device and session activity, including approximate city and country inferred from IP addresses. Convex automatically records successful backend operations and errors.
- Purpose
- Operate the service, diagnose failures and protect access. Configured web and server error reporting uses Sentry with redaction rules. Those rules reduce personal data in reports; they are not a promise that all technical metadata is anonymous. Clerk uses this activity and approximate location to protect sign-in and account access. Authentication activity and backend logging are automatic and do not depend on enabling job notifications or configuring Sentry.
- Who receives it
- Vercel, Convex and Clerk for their service operations, and Sentry when configured. The native app has no separate advertising or Sentry SDK in the current build. Marketing analytics do not load in the office workspace or on these app information pages.
Permissions and your choices
Camera access is optional and used for a photo you initiate. Notifications are optional. Declining either does not remove your access to the rest of the app. You can change permissions in your device's settings, and the app's More screen contains the notification control.
The app does not request contacts, SMS, call-log or background-location access. A service address entered by your shop is part of the customer record; it is not a live location feed from your phone.
How records are protected
Protected staff operations check account, shop membership and role. Customer, property and equipment contents, estimate titles and descriptions, job notes, stored job photo bytes, shop communication phone numbers and push tokens use application-level encryption on the server. Record identifiers, relationships, versions, job titles, financial amounts, scheduling data and audit metadata are not all encrypted in the same way. Customer estimate review uses its scoped link rather than staff sign-in.
KeptSolid's server can decrypt protected contents to provide authorized work. This is not end-to-end encryption. Device storage uses separate device-held keys. Keep your device locked and avoid adding unnecessary personal information to notes or photos.
Service providers and connected services
Clerk handles identity and authentication. Convex runs the application backend and stores records. Vercel hosts the office and public web pages. Expo, Apple and Google deliver optional push notifications. Sentry handles configured web and server diagnostics. These services process the information needed for those tasks.
When your shop connects Jobber, its account and operational data are handled through that connection. Other provider choices may be unavailable or use a handoff; selecting a provider does not by itself establish a working integration. Each connected provider also has its own privacy practices.
If your shop uses missed-call recovery, Twilio handles calls and messages, and configured server processing can use OpenAI to extract job details and TypeSafe AI for bounded reply judgments. The SMS privacy notice describes the caller communication program. These functions do not read your phone's personal SMS or call log. Shop subscription billing, where enabled, uses Stripe; the app does not collect a homeowner's payment card.
SMS privacy noticeRetention
Apart from the account deletion requests described below, the current build has no fixed deletion period for account profiles, shop operational records, on-call contacts and opt-out records, scheduling history, audit records or notification recovery records. These records remain stored until an authorized deletion or other cleanup applies. Expiration of an access check or notification registration does not mean the stored record has been erased.
Deleting an individual job photo removes its stored image contents. Small records of its author, job, versions and submission identifiers remain to prevent a retried upload from restoring the deleted image. Caller-message retention settings do not automatically erase job photos or the shop's operational records.
Estimate versions, their copied customer details, tax settings, approval history and durable retry results remain with the shop's records without a fixed deletion period. Expiring or revoking a customer-review link stops access through that link; it does not erase the underlying estimate or its history. The complete account deletion and export processes must also address these records.
Signing out or changing shops clears the outgoing account's protected local work through the app's cleanup process. It does not erase server records. Provider backups and diagnostic retention do not yet have a verified, published deletion schedule. Contact us about the records involved in your request; we will not call a request receipt proof that all copies have been erased.
Account deletion and shared records
Account deletion is not automatic yet, so we handle each request by hand. To delete your account, open Delete account in the app, or sign in at /mobile/delete-account, and send a deletion request. Sending the request emails us your account ID and the time of the request through Resend, our email provider. We will delete your sign-in account and profile within 30 days of the request and email you when it is done. That includes the profile photo stored with the sign-in service. A photo that reaches that service while the account is being deleted can remain as a file with no account attached to it, and the service does not tell us when photo removal finishes. A Google or Apple sign-in photo stays with that provider. If you cannot sign in, email hello@keptsolid.com from the email address you sign in with instead. Jobs, notes and photos you added to a shop are that shop's records and stay with it. If you own a shop, we will work out closing it with you first, including its subscription and connected services, and that can take longer than 30 days.
Keep any saved deletion receipt. Completed receipts remain available for 30 days after verified completion. The customer archive contains customers, properties and equipment only. It excludes jobs, notes, photos, schedules, estimates, settings, history and connected-provider records and is not a complete backup. Continuing shared shops and ownership transfers remain unsupported here.
To ask about deletion, access, correction or an export of your information, use the app support page or contact hello@keptsolid.com. We may need to verify the account and the scope of the records before taking action. Do not send your password, authentication code or customer records by email.
Open app supportContact and policy changes
Roshawn Franklin operates KeptSolid. Privacy questions can be sent to hello@keptsolid.com or by mail to 490 Post St, Ste 500 PMB 2028, San Francisco, CA 94102. Your shop controls the service information it enters, so requests about a customer's business record may also need the shop's participation.
The date above identifies this version of the policy. We will update it when the app's data handling changes.
Marketing website privacy policy