Privacy Policy
How SavvyStocks handles your data
Last updated: April 2026
Data Collection & Storage
SavvyStocks stores the following data you provide:
- Portfolio holdings (ticker symbols, share counts, cost basis, notes)
- Watchlist entries
- Transaction records (buy, sell, dividend)
- AI chat conversation history
- Authentication credentials (hashed, never stored in plaintext)
All data is stored in a secured PostgreSQL database and is only accessible through authenticated sessions.
Market Data
Real-time stock quotes, dividend information, earnings data, and price history are retrieved from third-party market data providers. When you look up a stock or view your portfolio, your requested ticker symbols are sent to these providers to fetch current pricing.
SavvyStocks does not sell or share your portfolio data or search queries with any party other than what is required to fetch market data.
AI-Powered Features & Data Processing
SavvyStocks uses AI-powered features provided by OpenAI (a third-party service). The following AI features process your data:
What Data Is Sent to OpenAI- Hootie Chat Assistant: Your chat messages, conversation history, and portfolio context (holdings, allocations, performance data) are sent to generate personalized responses.
- Daily Portfolio Brief: A summary of your portfolio holdings, sector allocations, and recent performance is sent to generate your daily AI analysis.
- AI Portfolio Services: Portfolio data relevant to your selected analysis prompt (e.g., risk assessment, tax-loss harvesting candidates) is sent for processing.
- Smart Insights: Holdings data is analyzed to generate automated alerts (concentration risk, earnings proximity, etc.).
- SavvyStocks accesses OpenAI via their API. Per OpenAI's API Data Usage Policy, data submitted through the API is not used to train or improve OpenAI's models.
- OpenAI may retain API inputs and outputs for up to 30 days for abuse and misuse monitoring, after which it is deleted, unless required by law.
- For full details, see OpenAI's Privacy Policy.
- AI chat conversation history is stored in the SavvyStocks database and is accessible only to your authenticated account.
- AI-generated portfolio briefs are cached temporarily to improve performance and reduce redundant API calls.
- You can delete any chat conversation at any time from the chat panel.
- You can disable all AI features at any time through Account > Preferences. When disabled, no data is sent to OpenAI.
- AI features are only available to Pro-tier subscribers. Free-tier users do not have data processed by OpenAI.
- Do not share sensitive personal information (Social Security numbers, bank account details, passwords, etc.) in AI chat conversations.
SMS / Text Messaging Program
SavvyStocks offers an optional SMS notification program ("SavvyStocks SMS Alerts") that delivers user-configured account alerts — including price alerts, dividend confirmations, ex-dividend reminders, earnings reminders, and system notices — to a mobile phone number you provide.
How We Collect Your Mobile Number- You provide your mobile number directly to SavvyStocks by signing in to your account, navigating to Account > Message Center > Notification Preferences, entering your number, and explicitly checking the SMS consent box before saving.
- SavvyStocks does not obtain mobile numbers from third parties, purchased lists, data brokers, affiliates, or offline channels. Mobile numbers are collected only through this in-app opt-in flow.
- At the moment you opt in, our server records the timestamp, the IP address used to consent, and the exact disclosure text shown to you, so the consent is auditable.
No mobile information (including your phone number, SMS opt-in status, and consent records) will be shared with third parties or affiliates for marketing or promotional purposes. All categories of personal information described in this policy exclude text messaging originator opt-in data and consent; this information will not be shared with any third parties.
- Your mobile number is shared only with our SMS delivery vendor (Twilio) for the sole purpose of routing the SMS message you requested. Twilio is contractually prohibited from using the data for its own marketing.
- Your mobile number is never sold, rented, leased, or otherwise transferred to any third party for advertising, lead generation, or promotional purposes.
- Your SMS opt-in status, consent timestamp, and consent text are stored solely to demonstrate compliance with applicable carrier and CTIA requirements and are never shared for marketing.
- Message frequency varies and depends entirely on the alert thresholds you configure (for example, the number of price alerts you set or the dividends/earnings tied to your holdings).
- Message and data rates may apply. SavvyStocks does not charge for SMS, but your wireless carrier's standard rates apply.
- Reply STOP to any SavvyStocks SMS message to unsubscribe from all SMS at any time. Reply HELP for support contact information. You can also revoke consent at any time by unchecking the SMS consent box in Account > Message Center > Notification Preferences.
- For SMS support questions, contact support@savvystocks.ai.
For full SMS program terms, see the SMS Program Terms section of our Terms of Service.
Cookies & Local Storage
SavvyStocks uses the following browser storage:
- Session cookie — Maintains your login session (httpOnly, secure, expires after 7 days)
- Sidebar state cookie — Remembers if the sidebar is open or collapsed
- localStorage — Stores UI preferences (theme, column widths, watchlist list names)
No tracking cookies, analytics, or advertising cookies are used.
Security Measures
- Password-based authentication with optional TOTP two-factor authentication
- HTTPS enforced via HSTS headers
- Content Security Policy (CSP) headers to prevent XSS attacks
- Rate limiting on login attempts and API requests
- HttpOnly, Secure, SameSite session cookies
- Input validation on all API endpoints
Data Retention
SavvyStocks runs a single daily job that prunes user-attributed event and audit tables on the schedule below. The retention windows shown here are read directly from the server, so they always match what the backend actually does:
- Hidden Gem engagement events — kept for 6 months, then automatically deleted. Per-user clicks on Hidden Gem cards (copy, share, view) used to power the admin engagement panel. Older rows have no operational value.
- AI usage logs — kept for 1 year, then automatically deleted. Per-user OpenAI request token counts used to enforce daily caps and surface monthly cost transparently. No prompt or response content is stored.
- In-app notifications — kept for 3 months, then automatically deleted. Price alerts, dividend confirmations, earnings reminders, and system notices delivered to your inbox. Read or unread, all are pruned on the same schedule.
- Magic-link login tokens — kept for 7 days, then automatically deleted. One-time email login tokens. Consumed and expired tokens are kept briefly so a security incident can be audited, then deleted.
- System scan history — kept for 1 year, then automatically deleted. Background platform health and security scan results, retained so the team can investigate past incidents.
- Scheduled job run log — kept for 30 days, then automatically deleted. Per-tick success/failure record for every background job (price-alerts, weekly reports, scanners, canary). Powers the admin Scheduled Jobs panel and reliability metrics.
- Alert canary run log — kept for 3 months, then automatically deleted. Daily synthetic-event runs that exercise every alert type × channel against the demo user, used to detect silent per-channel regressions. No real user content stored.
- External API call log — kept for 30 days, then automatically deleted. Per-call forensic record of every external API request (TD, Stooq, Coingecko, OpenAI, SendGrid, Twilio, Stripe, Plaid). Used by the API Diagnostics admin tab and operator alerting. Pruned after 30 days.
- Dividend API snapshot log — kept for 3 months, then automatically deleted. Per-symbol verbatim vendor dividend values (reportedYield, reportedRate, ex-date, last payment) captured on every fetch. Used by the day-over-day delta canary to detect long-tail dividend drift. No user content stored.
- Dividend delta canary run log — kept for 3 months, then automatically deleted. Daily delta-canary runs that compare today's dividend snapshot to the prior one for every held symbol. Used to detect silent vendor-side dividend regressions. No user content stored.
- User-reported dividend issues — kept for 1 year, then automatically deleted. Reports filed by users via the 'Report incorrect dividend' link. Resolved/dismissed reports are kept for one year to support pattern analysis, then deleted.
- User-facing SLO log — kept for 3 months, then automatically deleted. Per-request record of whether each critical user-facing endpoint (/api/quotes/*, etc.) delivered usable data. The SLO truth table that survives a vendor swap unchanged. Pruned after 90 days.
- Last-known-good fallback cache — kept for 7 days, then automatically deleted. Most recent successful payload per (scope, key) used as the durable safety net when every live source fails. Pruned after 7 days — anything older is too stale to be useful even as a last resort.
Records you create directly (holdings, watchlists, transactions, AI chat history, account settings) are kept until you delete them or close your account. See Data Deletion below.
Data Deletion
You can delete your data at any time:
- Individual holdings, watchlist items, and transactions can be deleted from their respective pages
- AI chat conversations can be deleted from the chat panel
- Delete your entire account from Account > Security > Delete my account. This permanently removes your profile, holdings, transactions, watchlists, alerts, preferences, passkeys, brokerage connections, and all associated data, and signs you out immediately.
All deletions are permanent and take effect immediately. We do not retain backups of deleted account data beyond 30 days, after which it is purged from all systems.
This policy may be updated periodically. Continued use of SavvyStocks constitutes acceptance of any changes.