Privacy at a Glance
A plain-language summary of what data we collect, why, and where it goes.
Email addressAccount authenticationSupabase AuthAWS us-east-1Life of account
Business name & configPersonalize AI responsesSupabase, Anthropic (as context)AWS us-east-1Life of account
Customer phone numberRoute SMS repliesTwilio (delivery only)Supabase — hash + encryptedLife of account
SMS message contentAI reply generation, inbox viewAnthropic API (anonymized context)Supabase — AES-256-GCM encrypted90 days
Voice call dataMissed-call detection, softphoneTwilio (call handling)Not stored — trigger onlyNot retained
Appointment dataBooking confirmation SMSCalendly webhook → SupabaseAWS us-east-1Life of account
Payment infoSubscription billingStripe (never stored by us)Stripe's serversPer Stripe policy
Usage analyticsProduct improvementPostHog (US region)PostHog — pseudonymous2 years
Error reportsBug diagnosisSentry (US region)Sentry90 days
Server logsSecurity & debuggingVercelVercel — US East30 days
1. Who We Are
Complete OS LLC (“we,” “us,” “our”) operates CompleteLine, an AI-powered SMS and voice communications platform for local businesses. Our service is available at completeline.app.
Data controller: Complete OS LLC, Colorado Springs, CO
Contact: hello@completeos.app
2. Data We Collect
2a. Data you provide directly (agency / business owners)
- Email address — used for authentication via Supabase Auth. Never sold.
- Business name and configuration — your agency name, client business names, services, pricing, booking links, and hours you enter. Used to personalize AI responses sent on your behalf.
- Payment information — entered directly into Stripe's hosted form. We never receive or store raw card numbers. We receive a Stripe Customer ID and subscription status only.
- Google OAuth tokens — if you connect Google for review monitoring or calendar access, we store a refresh token (encrypted) scoped only to the permissions you grant. You can revoke at any time from your Google Account settings.
2b. Data from your customers’ interactions (collected on your behalf)
You are the data controller for your customers. We process the following as your data processor:
- Phone number — when a customer calls or texts your business number, their phone number is received by Twilio. We store it two ways: (1) as a one-way SHA-256 hash for lookup, and (2) as an AES-256-GCM encrypted value in a separate restricted-access table. The two representations are kept in separate tables to prevent simple re-linkage.
- First name — as provided voluntarily by the customer in conversation. Stored in plaintext in the contacts table.
- SMS message content — inbound and outbound messages stored encrypted at rest (AES-256-GCM). A rolling 10-message window is sent to Anthropic’s API as context for AI reply generation. No full phone number is included in the API call. Messages are deleted after 90 days.
- Appointment data — booking time, service type, and status, received via Calendly or Acuity webhooks.
- Opt-in / opt-out records — STOP/UNSTOP/HELP keyword responses are recorded with timestamps for TCPA compliance. These are never shared.
2c. Data collected automatically
- Usage events — feature interactions (page views, button clicks, feature usage) tracked via PostHog. No message content is included. Events are pseudonymous (user ID, not email).
- Error events — crash reports and exceptions sent to Sentry, including stack traces and anonymized request context. Message content is not included in error reports.
- Server request logs — IP address, request path, HTTP status code, timestamp. Retained 30 days. Used for security monitoring and debugging only.
- Auth session cookies — a session cookie set by Supabase Auth is stored in your browser for authentication state. No advertising or behavioral tracking cookies are set.
3. How Your Data Flows
Here is the step-by-step data path for the core features:
Missed-call text-back
- Customer calls your business number → call forwards to Twilio on no-answer.
- Twilio posts a webhook to CompleteLine (our Vercel server, US East) with the caller’s phone number and your Twilio account SID.
- We verify Twilio’s HMAC-SHA1 signature to confirm the request is authentic.
- The caller’s phone number is hashed (SHA-256) and an encrypted copy is stored in Supabase (AWS us-east-1).
- A prompt including your business name, services, and the last 10 messages (if any) is sent to Anthropic’s API (US servers). No full phone number is sent.
- The AI response is sent back through Twilio to the customer’s phone as an SMS.
- The outbound message is stored encrypted in Supabase. The AI action is logged in the audit table (no message content in the log).
2-way SMS inbox
- Customer replies → Twilio posts webhook to CompleteLine.
- Message content is encrypted and stored in Supabase.
- If AI is active for that contact, the same Anthropic flow as above occurs.
- If you (the operator) reply manually via the inbox, your message goes from our server → Twilio → customer. It is stored encrypted in Supabase.
Browser softphone (Voice)
- When you open the Phone dashboard, a short-lived Twilio Access Token (JWT, 1-hour TTL) is issued by our server and delivered to your browser.
- Your browser establishes a WebRTC connection via Twilio’s Voice SDK. Audio travels peer-to-peer over Twilio’s infrastructure.
- We do not record, store, or analyze call audio.
Billing
- When you subscribe, you are redirected to a Stripe-hosted checkout page. Your card details go directly to Stripe — never to our servers.
- Stripe sends us a webhook confirming payment. We store your Stripe Customer ID and subscription status in Supabase.
4. Third-Party Services
We use the following services to operate CompleteLine. Each receives only the data necessary for its function.
Anthropic (Claude)AI response generationBusiness context + last 10 messages (no phone numbers)Anthropic US serversanthropic.com/privacy StripePayment processingCard details (entered directly on Stripe); we receive customer ID + status onlyStripe US serversstripe.com/privacy PostHogProduct analyticsPseudonymous usage events (no message content)PostHog US regionposthog.com/privacy SentryError monitoringStack traces & anonymized request context (no message content)Sentry US regionsentry.io/privacy GoogleReview links & optional calendar / GBPOAuth scopes you authorize; review links direct customers to your public profileGoogle infrastructurepolicies.google.com/privacy Calendly / AcuityAppointment dataWebhook events (appointment time, service, customer name)Their respective infrastructurePer their policies
We do not sell your data or your customers’ data to any third party for advertising or marketing purposes.
SMS opt-in data: No mobile opt-in information or consent records are shared with any third party under any circumstances, including affiliates.
5. Data Security
- Encryption at rest: SMS message content encrypted with AES-256-GCM. Phone numbers stored as a SHA-256 hash (irreversible) and separately as an AES-256-GCM ciphertext in a restricted-access table.
- Encryption in transit: All data transmitted over TLS 1.2+ (HTTPS). WebRTC voice traffic encrypted by Twilio.
- Database isolation: Row-level security (RLS) enforced at the Supabase layer — each agency can only query its own data, enforced by policy, not application code.
- Webhook verification: Every Twilio inbound request is verified using Twilio’s HMAC-SHA1 signature before processing.
- Secret management: All API keys and secrets stored in Doppler (not in source code or environment files). Rotated on suspected exposure.
- Access tokens: Twilio Voice Access Tokens have a 1-hour TTL and are issued only to authenticated users.
- Audit log: AI actions (message sent, escalation triggered) are logged without storing message content, for compliance review.
No security system is perfect. In the event of a breach affecting personal data, we will notify affected users within 72 hours of discovery, as required by applicable law.
6. Data Retention
SMS message content90 daysDeleted automatically. Configurable per client.
Contact records (hash + encrypted phone)Life of accountDeleted within 30 days of account closure.
Account data (email, agency config)Life of subscription + 30 daysDeleted after grace period post-cancellation.
Audit logs1 yearRetained for compliance. No message content.
Server request logs30 daysIP address, path, status code only.
Voice call recordsNot retainedWe do not record or store call audio.
Twilio Access Tokens1 hour TTLExpire automatically; not stored server-side.
Usage analytics (PostHog)2 yearsPseudonymous events only.
7. SMS Messaging Program
CompleteLine sends automated SMS messages on behalf of businesses in direct response to inbound calls that went unanswered. The recipient’s phone number is obtained from the inbound call via caller ID — messages are sent only to individuals who have called the business first. No third-party lists or marketing databases are used.
Carrier-required disclosures:
- Who receives messages: Individuals who placed an inbound call to a CompleteLine-enabled business phone number.
- Basis for sending: Caller ID — the customer initiated contact by dialing the business; the SMS is a direct reply to that call attempt.
- Message types: Transactional only — missed-call acknowledgment, scheduling assistance, appointment confirmations. No marketing or promotional content.
- Frequency: 1 message per missed call. Additional messages sent only if the customer replies. Msg & data rates may apply.
- Opt-out: Reply STOP to stop all messages. Reply START or UNSTOP to re-subscribe. Reply HELP for assistance.
- Data sharing: SMS opt-in data is never shared with third parties, affiliates, or data brokers under any circumstances.
- 10DLC registration: Messaging is registered under a 10-digit long code (10DLC) A2P campaign with The Campaign Registry (TCR) for compliant business messaging in the US.
For full details, see our SMS Terms & Messaging Disclosures.
8. No Protected Health Information
CompleteLine is designed for aesthetics, wellness, and similar service businesses. It is not designed to transmit, collect, or store Protected Health Information (PHI) as defined by HIPAA. Using CompleteLine in a healthcare context where PHI is involved is prohibited absent a signed Business Associate Agreement, which we do not currently offer.
9. Your Rights (Agency / Business Owners)
You have the following rights regarding the data we hold about you:
- Access: Request a copy of the data we hold about your account.
- Correction: Request correction of inaccurate account data.
- Deletion: Request deletion of your account and all associated data.
- Portability: Request an export of your data in JSON format.
- Opt-out of analytics: Request removal from PostHog tracking.
- Restrict processing: Request that we limit processing of your data in certain circumstances.
To exercise any right, email hello@completeos.app. We respond within 30 days. Identity verification may be required.
10. Your Customers’ Rights
You (the agency or business owner) are the data controller for your customers’ data. When customers ask about their data, you are the responsible party. We will assist you in fulfilling access or deletion requests from your customers upon written request.
All customers can opt out of SMS messages at any time by replying STOP. The Service processes STOP automatically, records the opt-out, and will not send further messages to that number on your behalf. To resubscribe, the customer texts START.
11. Children’s Privacy
The Service is not directed to individuals under 18. We do not knowingly collect personal information from children under 13. If you believe we have collected such information, contact us at hello@completeos.app and we will delete it promptly.
12. Cookies
We set one first-party session cookie required for authentication (a Supabase Auth session token). We do not set advertising cookies, cross-site tracking cookies, or fingerprinting identifiers. PostHog may set a persistent pseudonymous ID cookie to count unique sessions; this contains no personally identifiable information.
13. Changes to This Policy
We will notify you by email at least 14 days before any material change takes effect. The effective date at the top of this page will be updated on every change. Continued use of the Service after a change takes effect constitutes acceptance.
14. Governing Law
This Privacy Policy is governed by the laws of the State of Colorado. Disputes will be resolved in El Paso County, Colorado courts.