Data Disclosure & Storage Policy
Effective Date: March 7, 2026
- Local Storage — Data on Your Computer
- Cloud Storage — Data on Our Servers
- Payment Processing — Stripe
- Chrome Extension Data
- No Traditional Cookies
- Telemetry and Analytics
- Auto-Update Data
- What Stays Local vs. What Goes to Cloud
- Data Retention
- How to Manage and Delete Your Data
- Third-Party Data Processors
- Data Security Measures
- Data Flow Diagram
- Your Rights
- Changes to This Disclosure
- Contact
What This Document Covers
Listing AutomatEr is a desktop application that runs directly on your macOS computer. It is not a website. Because of this, traditional "cookie policies" do not apply in the conventional sense — there are no HTTP cookies, no third-party tracking pixels, and no cross-site advertising cookies.
However, like all modern desktop applications built with web technologies, Listing AutomatEr does use local storage mechanisms within its embedded webview (similar to how a web browser stores site preferences). These mechanisms serve the same purpose as cookies in a browser — persisting your settings, caching data for faster performance, and maintaining your login session — but they operate entirely within the application on your device and are not accessible by websites or other applications.
This Data Disclosure provides a complete, transparent accounting of:
- Every piece of data stored locally on your computer
- Every piece of data sent to or stored on our cloud servers
- Every third-party service that processes your data, and exactly what they receive
- How long each type of data is retained
- How to view, export, or delete your data
This document is a companion to our Privacy Policy and End User License Agreement. Where the Privacy Policy covers your legal rights and our obligations, and the EULA covers software licensing, this Data Disclosure gives you a concrete, technical breakdown of exactly where every piece of data lives and what it does.
1. Local Storage — Data on Your Computer
Listing AutomatEr uses two forms of local storage: localStorage (within the application's embedded webview) and filesystem storage (files saved to your hard drive). Data stored locally never leaves your device unless explicitly noted below.
1.1 Application Preferences (localStorage)
la_settings_posting — Posting Preferences
- What it stores: Photos per post count, delay between posts (seconds), description style selection (AI-generated, template, or manual), timing preferences, scheduling window, field visibility toggles (which listing fields to include in posts), call-to-action text, retry count on failures, and whether to include agent name, brokerage name, listing number, or property address in posts.
- Purpose: Preserves your posting configuration between app sessions so you do not have to reconfigure settings each time you open the app. This key is the single source of truth for all posting-related settings — both the Posting page and the Schedule page read from it.
- Sent to cloud? No. This data stays on your device. When a posting job executes, a snapshot of the relevant settings is passed to the posting engine locally, but the settings themselves are never synced to our servers.
- Size: Typically under 5 KB.
la_settings_compliance — Compliance Settings
- What it stores: Your agent name, real estate license number, brokerage name, brokerage phone number, and any compliance attribution text required by your listing service or brokerage.
- Purpose: These values are used to build compliance footers on listing descriptions (both AI-generated and template-based) so your posts meet listing service and brokerage attribution requirements.
- Sent to cloud? No. Used locally during description generation and posting. The compliance information may appear in the final posted listing content on marketplace platforms, but it is not separately transmitted to our servers.
- Size: Typically under 2 KB.
la_scheduled_posts — Scheduled Posting Queue
- What it stores: Listing IDs selected for scheduled distribution, scheduled start time, scheduled end time, and a snapshot of your posting settings at the time of scheduling.
- Purpose: Allows scheduled jobs to survive app restarts and execute at your configured time without requiring you to keep the app in the foreground.
- Sent to cloud? The schedule configuration itself stays local. When a scheduled job executes and listings are distributed, the resulting posting history (which listings were posted, timestamps, success or failure) is logged to our cloud servers (see Section 2).
- Size: Varies by number of scheduled listings; typically under 50 KB.
la_campaigns — Campaign Configurations
- What it stores: Campaign name, selected listing IDs, schedule parameters (frequency, timing windows), posting settings for the campaign, and campaign status (active, paused, completed).
- Purpose: Campaigns allow you to set up recurring distribution plans for groups of listings. The configuration persists locally so campaigns can resume across app sessions.
- Sent to cloud? No. Campaign configurations stay on your device. Only the resulting posting history is logged to the cloud when a campaign executes.
- Size: Varies by campaign complexity; typically under 20 KB per campaign.
la_posting_lock — Posting Mutex Lock
- What it stores: A simple boolean flag indicating whether a posting session is currently in progress, plus a timestamp.
- Purpose: Prevents multiple posting sessions from running simultaneously, which could cause conflicts or duplicate posts.
- Sent to cloud? No.
- Size: Under 1 KB.
la_event_buffer — Telemetry Event Queue
- What it stores: A buffer of anonymized usage events waiting to be synced to the server. Events include feature usage identifiers (e.g., "user opened Posting page") and error type counts. No listing content, property addresses, personal details, or browsing activity is included.
- Purpose: Events are batched locally and synced periodically rather than sent individually, which is more efficient and reduces network requests.
- Sent to cloud? Yes — when the buffer syncs to our servers. Events that fail to send are dropped (not retried indefinitely). See Section 6 for full telemetry details.
- Size: Typically under 10 KB.
Authentication Tokens (Session)
- What it stores: A JSON Web Token (JWT) containing your user ID and session expiration timestamp. Does not contain your password, email content, or any listing data.
- Purpose: Keeps you logged in between app launches so you do not need to re-enter your credentials every time.
- Behavior: Tokens expire and refresh automatically. If a token expires and cannot be refreshed, you will be prompted to log in again.
- Sent to cloud? Yes — the token is included as an authorization header in requests to our servers to verify your identity. This is standard authentication behavior used by virtually all cloud-connected applications.
- Size: Under 2 KB.
Cached Listing Data
- What it stores: A cached copy of listing data pulled from our servers, stored locally for faster app loading and reduced network dependency.
- Purpose: Allows the app to display your listings immediately on launch without waiting for a network round-trip. The cache is refreshed when new data is available.
- Sent to cloud? No. This is a read-only local cache of data that already exists on our servers.
- Size: Varies by number of listings; can range from 100 KB to several MB for large listing sets.
1.2 Filesystem Storage
AI Model File
- Location:
~/Library/Application Support/com.listingautomater.desktop/models/ - Size: Approximately 1.2 GB
- What it is: A language model fine-tuned specifically for real estate listing description generation. This model runs entirely on your computer's processor.
- Why it is local: All AI description generation happens 100% on your device. No listing data, property information, or generated descriptions are ever sent to any cloud AI service. Your listing data never leaves your machine for AI processing.
- Sent to cloud? Never. The model file and all inference activity remain entirely on your device.
- Updates: Updated AI models may be delivered through the app's standard auto-update mechanism. You will be notified when model updates are applied.
Application Data Directory
- Location:
~/Library/Application Support/com.listingautomater.desktop/ - Contents: The AI model (above), application configuration files, and any temporary working files the app needs during operation.
- Sent to cloud? No. This entire directory and its contents remain on your device.
2. Cloud Storage — Data on Our Servers
Our cloud infrastructure is hosted on Amazon Web Services (AWS) with data centers in the United States. All data transmitted between the app and our servers is encrypted in transit using TLS. Data at rest is encrypted using AES-256.
2.1 User Profile
| Field | Example | Purpose |
|---|---|---|
| Email address | you@example.com | Account login, password reset, important notifications |
| User ID | Auto-generated UUID | Internal identifier linking your account to your data |
| Account creation date | 2026-03-01 | Account management, support reference |
We do not store your name unless you optionally provide it. We do not store your plaintext password — passwords are hashed using bcrypt before storage.
2.2 Subscription Status
| Field | Example | Purpose |
|---|---|---|
| Plan type | Monthly or annual (intro: $149/mo or $99/mo billed as $1,188/yr; standard: $199/mo or $169/mo billed as $2,028/yr; pricing subject to change — current rates at listingautomater.com/#pricing) | Determine feature access |
| Subscription status | active, canceled, past_due | Gate app features based on payment status |
| Stripe customer ID | cus_abc123... | Link your account to your Stripe payment record (not your card number) |
| Billing cycle dates | Start: March 1, Renewal: April 1 | Subscription management |
2.3 Listing Data
When you import listings from your brokerage CSV export, the following data is stored on our cloud servers:
- Property addresses (street, city, state, ZIP)
- Listing prices
- Photo URLs (links to brokerage-hosted images; we do not re-host photos)
- Bedrooms, bathrooms, square footage
- Year built, lot size, garage information
- Property descriptions and remarks (as provided in the listing data)
- Listing agent name and brokerage name
- Listing identification numbers
- Listing category (sale or lease)
- Property type and sub-type
Important: You import this data from your own brokerage access. You are responsible for ensuring you have the appropriate rights to use this data in accordance with your listing service membership agreements and applicable regulations. We store it solely to provide the service to you.
2.4 Posting History
- Which listings were distributed, and to which marketplace
- Timestamps of each distribution event
- Success or failure status of each distribution attempt
- Listing post rounds (tracks which photos were used per post, enabling smart photo rotation on subsequent distributions)
2.5 Event Logs (Anonymized Telemetry)
- Feature usage identifiers (e.g., "posting_started", "csv_imported") — no listing content
- Error type and count (e.g., "timeout_error: 2") — for bug identification and fixing
- Approximate posting success rates (aggregated, not per-listing)
- No personally identifiable information, property addresses, listing content, or browsing activity is included in event logs
3. Payment Processing — Stripe
Stripe handles all payment processing for Listing AutomatEr subscriptions. Stripe is PCI DSS Level 1 certified, the highest level of security certification in the payment card industry.
What Stripe Collects Directly (NOT Stored by Us)
When you subscribe, you interact with Stripe's secure payment interface. Stripe collects:
- Payment card number
- Card expiration date
- CVC / security code
- Billing name and address
We never see, receive, or store your full card number, CVC, or complete billing details. This information goes directly from your screen to Stripe's servers. It never passes through our systems.
What We Store About Your Payments
- Stripe customer ID — a reference identifier (e.g.,
cus_abc123), not payment details - Subscription ID — tracks your subscription plan
- Payment status — succeeded, failed, or refunded
- Last four digits of your card — displayed in your account settings for your reference only
- Billing history — invoice dates and amounts
Stripe's Independent Data Practices
Stripe is an independent data controller for the payment data it collects. Their handling of your payment information is governed by their own privacy policy: https://stripe.com/privacy
You can manage your payment method, view invoices, and update billing information through the Stripe billing portal, accessible from the Listing AutomatEr app settings.
4. Chrome Extension Data
Listing AutomatEr includes a companion Chrome extension that assists with listing distribution on marketplace platforms.
4.1 What the Extension Stores
| Storage Location | Data | Lifetime |
|---|---|---|
chrome.storage.session | Auth token (JWT) | Cleared automatically when Chrome closes |
chrome.storage.session | User ID | Cleared automatically when Chrome closes |
The extension stores only an auth token and user ID in Chrome's session storage. This data exists solely to verify your active subscription before performing any distribution action. It is automatically and completely cleared every time you close Chrome.
The extension does not store:
- Third-party platform credentials or passwords
- Third-party platform cookies or session tokens
- Any content from third-party platform pages
- Browsing history from any website
- Bookmarks, autofill data, or saved passwords
- Files from your computer
- Data from any website other than supported third-party marketplace platforms
4.2 What the Extension Accesses
The Chrome extension accesses supported third-party marketplace platform pages only. It does not run on, read from, or interact with any other website. It does not operate in the background when you are not actively using Listing AutomatEr.
4.3 How the Extension Communicates
The extension communicates with the Listing AutomatEr desktop app via a secure local connection. Key details:
- Local-only: This connection stays entirely on your device. It does not traverse the internet. No data is sent to any external server through this connection.
- What is exchanged: Listing content (photos, descriptions, pricing, location) for distribution, and status updates (success/failure) back to the app.
- Authentication: The desktop app sends an auth token to the extension on each connection to verify subscription status.
4.4 What the Extension Does NOT Do
- Does not track your browsing activity on any website
- Does not inject advertisements or tracking pixels
- Does not modify web pages other than marketplace listing forms during active distribution
- Does not collect or transmit data to any server other than the local desktop app (via secure local connection)
- Does not access your camera, microphone, location, or other device capabilities
5. No Traditional Cookies
Because Listing AutomatEr is a desktop application and not a website, the following common web tracking mechanisms are not present and not used:
| Mechanism | Present? | Notes |
|---|---|---|
| HTTP cookies | No | Desktop app, not a website |
| Third-party tracking cookies | No | No advertising SDK, no ad networks |
| Tracking pixels / web beacons | No | No email tracking or cross-site tracking |
| Browser fingerprinting | No | App does not fingerprint your browser or device |
| Cross-site tracking | No | App does not track activity across websites |
| Third-party advertising SDKs | No | No ads, no ad-supported features |
| Social media tracking widgets | No | No embedded social media buttons or trackers |
The only storage mechanisms used are the application's localStorage (detailed in Section 1.1) and filesystem storage (detailed in Section 1.2), both of which are isolated to the application and not accessible by websites or other software.
6. Telemetry and Analytics
We collect anonymized usage data to improve Listing AutomatEr. Here is exactly how it works.
What We Collect
- Feature usage events: Identifiers like "user opened Posting page" or "user imported CSV." No listing content, property details, or personal information is included in these events.
- Error counts and types: To identify and fix bugs (e.g., "network_timeout: 3 occurrences").
- Approximate posting success rates: Aggregated metrics to improve distribution reliability.
What We Do NOT Collect
- No personally identifiable information in telemetry events
- No listing content, property addresses, photos, or descriptions
- No keystroke logging, screen recording, or clipboard monitoring
- No browsing history or activity outside the app
- No location data or GPS coordinates
How It Works
- Events are generated during normal app use and added to a local buffer (
la_event_bufferin localStorage). - The buffer syncs to our servers periodically (not in real-time). Typical sync interval is every few minutes.
- If a sync fails, the events are dropped — they are not retried indefinitely. Telemetry is strictly best-effort.
- Telemetry does not affect app functionality in any way. The app works identically whether telemetry succeeds or fails.
How to Opt Out
Go to Settings within the app and disable Usage Analytics. When disabled:
- No telemetry events are generated or buffered
- No usage data is sent to our servers
- All app features continue to work normally
- Your choice is persisted locally and respected across app restarts
7. Auto-Update Data
Listing AutomatEr checks for new versions automatically so you always have the latest features and security patches.
Data Sent During Update Checks
| Data | Purpose |
|---|---|
| Current app version number (e.g., 1.2.0) | Determine if an update is available |
| Platform identifier (macOS) | Serve the correct update package |
Data NOT Sent During Update Checks
- User identity, email, or account information
- Usage data, telemetry, or analytics
- Listing data, posting history, or any content
- Device serial number, hardware identifiers, or IP-based location
- Any content from your device
8. What Stays Local vs. What Goes to Cloud
The following tables provide a complete summary of where each category of data resides.
Data That NEVER Leaves Your Device
| Data | Storage Location | Details |
|---|---|---|
| AI model file (~1.2 GB) | Device filesystem (Application Support) | AI model for on-device description generation |
| AI-generated descriptions (drafts) | App memory / localStorage | Generated locally, never sent to a cloud AI service |
| Posting preferences and settings | localStorage (la_settings_posting) | Photos/post, delay, description style, toggles |
| Compliance settings | localStorage (la_settings_compliance) | Agent name, license, brokerage info |
| Scheduled post configurations | localStorage (la_scheduled_posts) | Which listings to post and when |
| Campaign configurations | localStorage (la_campaigns) | Recurring distribution plans |
| Posting lock state | localStorage (la_posting_lock) | Prevents duplicate posting sessions |
| Cached listing data | localStorage | Local copy of cloud listing data for fast loading |
| Chrome extension session auth | chrome.storage.session | Auth token + user ID (cleared on browser close) |
| Application configuration files | Device filesystem (Application Support) | App settings and working files |
Data Sent to Our Cloud (AWS, US-based)
| Data | When It Is Sent | Purpose |
|---|---|---|
| Email address | Account creation, login | Authentication |
| Auth token (JWT) | Every authenticated request | Identity verification |
| Subscription status | Subscription events (via Stripe webhook) | Feature gating |
| Listing data | On CSV import | Store listings for your account |
| Posting history | After each distribution event | Track what was posted and when |
| Listing post rounds | After each distribution event | Enable smart photo rotation on reposts |
| Anonymized telemetry events | Periodic batch sync | Product improvement (opt-out available) |
Data Sent to Stripe (Independent Processor)
| Data | When It Is Sent | Purpose |
|---|---|---|
| Payment card details | During checkout (direct to Stripe) | Process subscription payment |
| Billing address | During checkout (direct to Stripe) | Payment verification |
Data Sent During Updates
| Data | When It Is Sent | Purpose |
|---|---|---|
| App version number | Periodic update checks | Determine if update available |
| Platform identifier (macOS) | Periodic update checks | Serve correct update package |
9. Data Retention
| Data Type | Storage Location | Retention Period |
|---|---|---|
| Account info (email, user ID) | Cloud servers | Active subscription + 30 days after closure |
| Subscription status | Cloud servers | Active subscription + 30 days after closure |
| Listing data | Cloud servers | Updated on each import; removed 30 days after account closure |
| Posting history | Cloud servers | 90 days from each event, then automatically deleted |
| Telemetry events | Cloud servers | 90 days, then automatically deleted |
| Payment data | Stripe | Per Stripe's retention policy and applicable financial regulations |
| Posting settings and preferences | localStorage (your device) | Until you clear app data or uninstall |
| Compliance settings | localStorage (your device) | Until you clear app data or uninstall |
| Scheduled posts and campaigns | localStorage (your device) | Until you clear app data or uninstall |
| AI model file | Device filesystem | Until you uninstall the app |
| Cached listing data | localStorage (your device) | Until you clear app data or uninstall |
| Chrome extension session data | Chrome session storage | Until Chrome is closed |
10. How to Manage and Delete Your Data
Clear Local Data
Go to Settings in the app and select Clear Cache. This removes all localStorage data, including:
- Cached listings
- Posting settings and preferences
- Scheduled post configurations
- Campaign configurations
- Telemetry event buffer
Your cloud data (account, posting history, imported listings) is not affected by clearing local data.
Delete Cloud Data
Contact us at john@listingautomater.com to request deletion of your cloud data. We will process your request within 30 days. Deletion includes:
- Your account profile (email, user ID)
- All posting history
- All imported listing data
- All telemetry events associated with your account
After cloud data deletion, local data on your device (settings, cached data, AI model) is unaffected. You manage that separately.
Export Your Data
Contact us at john@listingautomater.com to request an export of your data. We will provide it in a commonly used, machine-readable format (JSON or CSV) within 30 days. Exportable data includes your account profile, imported listing data, and posting history.
Manage Stripe / Payment Data
- View and update payment method: Access the Stripe billing portal through the app's Settings page.
- View invoices and billing history: Available through the Stripe billing portal.
- Delete payment data: Stripe manages payment data independently. To request deletion of your payment information from Stripe, contact Stripe directly through their support channels or review their data deletion process at https://stripe.com/privacy. Upon account closure with us, we delete the Stripe customer ID from our database, but Stripe may retain payment records as required by financial regulations.
Opt Out of Telemetry
Go to Settings in the app, then navigate to Privacy and disable Usage Analytics. No telemetry will be collected or sent while this is disabled. All app features remain fully functional.
Uninstall Completely
To remove all traces of Listing AutomatEr from your device:
- Delete the app from your Applications folder (drag to Trash).
- Delete the application data directory:
~/Library/Application Support/com.listingautomater.desktop/(this removes the AI model, app config, and any local working files). - Remove the Chrome extension (if installed): Go to
chrome://extensions/in Chrome and remove "Listing AutomatEr."
After uninstalling, any data stored on our cloud servers (account profile, posting history, imported listings) will be retained according to the retention schedule above unless you separately request cloud data deletion.
11. Third-Party Data Processors
Listing AutomatEr relies on the following third-party services. Each is listed with the data they process and their compliance certifications.
Cloud Database Provider (Authentication and Database)
| Role | Data sub-processor (processes data on our behalf) |
| Data processed | Email address, hashed password, account metadata, listing data, posting history, subscription status, telemetry events |
| Hosting | Amazon Web Services (AWS), United States |
| Encryption | TLS in transit, AES-256 at rest |
Stripe (Payment Processing)
| Role | Independent data controller for payment data |
| Data processed | Payment card details, billing address, transaction records |
| Certification | PCI DSS Level 1 (highest payment security certification) |
| What we receive | Stripe customer ID, subscription status, last four card digits, payment status |
| Privacy policy | https://stripe.com/privacy |
App Update Server
| Role | Update distribution |
| Data processed | App version number, platform identifier (macOS) only |
| No personal data | No account info, usage data, or listing content is transmitted |
No other third-party services, analytics platforms, advertising networks, or data brokers receive your data.
12. Data Security Measures
While no system is 100% secure, we implement the following measures to protect your data:
- Encryption in transit: All data transmitted between the app and our servers uses TLS (Transport Layer Security).
- Encryption at rest: Cloud data is encrypted using AES-256 by the underlying AWS infrastructure.
- Password hashing: Passwords are hashed using bcrypt before storage. We never store or have access to plaintext passwords.
- Local data protection: Data stored locally on your device is protected by macOS file system permissions and your user account security. If you enable FileVault (macOS full-disk encryption), local data is encrypted at rest.
- Payment security: Payment processing is handled entirely by Stripe (PCI DSS Level 1 certified). Card numbers never touch our systems.
- Local-only communication: The Chrome extension communicates with the desktop app exclusively via a secure local connection. This connection never traverses the internet.
- Minimal data collection: We follow data minimization principles — we only collect what is necessary to provide and improve the service.
13. Data Flow Diagram
YOUR DEVICE OUR CLOUD (AWS, US)
----------- -------------------
localStorage: Account profile (email, user ID)
- Posting settings Subscription status
- Compliance settings Listing data (imported by you)
- Scheduled posts Posting history + post rounds
- Campaigns Anonymized telemetry events
- Auth tokens (JWT)
- Cached listings
- Event buffer (pre-sync)
Filesystem (Application Support): STRIPE (independent processor)
- AI model (~1.2 GB) Payment card details
- App configuration Billing records / invoices
Chrome Extension (session only): UPDATE SERVER
- Auth token (cleared on close) Receives: app version + platform
- User ID (cleared on close) Sends: update package (if available)
- Marketplace page access ONLY
Local Connection:
- App <-> Extension communication
- Stays entirely on your device
- Never traverses the internet
14. Your Rights
Depending on your jurisdiction, you may have the following rights regarding your personal data:
- Right to access: Request a copy of the personal data we hold about you.
- Right to correction: Request correction of inaccurate or incomplete data.
- Right to deletion: Request deletion of your account and all associated data.
- Right to data portability: Request an export of your data in a machine-readable format.
- Right to opt out of analytics: Disable telemetry collection in app settings at any time.
- Right to know: This document serves as our disclosure of what data we collect, where it is stored, and how it is used.
To exercise any of these rights, contact john@listingautomater.com. We will respond within 30 days.
For California residents: We do not sell your personal information. We do not share your personal information for cross-context behavioral advertising. See our Privacy Policy for full CCPA/CPRA disclosures.
15. Changes to This Disclosure
We may update this Data Disclosure to reflect changes in our data practices, technology, or legal requirements. When we make material changes:
- We will update the "Effective Date" at the top of this document.
- We will notify you via email or in-app notification within Listing AutomatEr.
- The updated disclosure will be available within the app's Settings and on our website.
We encourage you to review this document periodically.
16. Contact
If you have questions about this Data Disclosure or want to know more about how your data is handled:
- Email: john@listingautomater.com
- Company: John Schuch (United States)
- Subject line: "Data Disclosure Inquiry"
We aim to respond to all inquiries within 30 days.