bdbetter.date
Glass Box Privacy

Privacy Policy

Better Date is built so two people can spend less time staring at their phones and more time enjoying their evening. That same philosophy applies to your data: we keep only what we need to plan your night, show you everything we remember, and never sell your attention.

Effective Date: November 12, 2026 • Audited directly against our live codebase

The Plain-English Promise

Five commitments backed by how our software actually works.

  • Zero Data Brokerage: We never sell, rent, or trade your personal data or relationship preferences to ad networks or data brokers.
  • No Background GPS Tracking: We only use the neighborhood or approximate area you choose to plan tonight's route—never continuous background location tracking.
  • Self-Destructing Vibe Checks: Your session mood sliders, partner pairing inputs, and generated plans live in temporary cache (Upstash Redis) and automatically expire after your date—staying active for at least 48 hours (and up to 10 days if planned ahead) so you can leave next-day feedback before disappearing.
  • “Glass Box” Profile Transparency: Anything we remember or infer about your dining and vibe preferences is visible, editable, exportable, and removable by you directly in your profile settings.
  • Pseudonymous Product Improvement: We measure aggregate, de-identified patterns (like whether a venue gets liked or how energy levels balance out between partners) without tying them back to your identity.

1. Information We Collect & How It's Stored

You can plan a date on Better Date without creating an account. Depending on how you use the app, here is the exact data we handle:

A. Account & “Glass Box” Profile Data (Supabase)

If you sign up with email and password or Google OAuth, Supabase stores your account identifier and email address, and our user_profiles table stores:

  • Profile basics: Your display name.
  • Explicit constraints: Dietary restrictions (e.g., vegan, gluten-free), whether you avoid alcohol, and your default budget tier ($ to $$$$).
  • Learned taste notes (inferred_preferences): If you are signed in and give a thumbs-up or thumbs-down on a stop, we record a plain-English note (for example, “Enjoys cozy cocktail spots” or a category you'd rather avoid).

Row Level Security (RLS) is enabled on user_profiles so your profile row is scoped to your authenticated user ID.

B. Ephemeral Vibe Check Sessions (Upstash Redis)

When you start a planning session, we store your inputs under a temporary session:<sessionId> key (and the resulting itinerary under session:<sessionId>:result). This includes energy and dress sliders, mood tags, custom cravings, date/time logistics, dietary/alcohol preferences, any must-include spot, and—if signed in—your user ID and taste notes so both partners' preferences can be combined.

C. Location & Neighborhood Inputs

We never request continuous background GPS. You can search by city, neighborhood, or ZIP code, or optionally click Locate Me, which triggers a single, one-time browser location check (getCurrentPosition). Those coordinates are used solely to resolve your neighborhood and find nearby venues for that session.

D. Cookies & Client-Side Storage

We do not use localStorage, sessionStorage, or IndexedDB. We only set strictly necessary HTTP-only cookies for authentication: betterdate_auth_token (30-day sign-in session) and temporary OAuth redirect/PKCE cookies during Google sign-in.

E. Pseudonymous Analytics, Venue Reports & Pilot Feedback

When two partners complete a session, we log a de-identified compromise record (analytics:compromises) containing only energy/dress differences, shared mood tags, time of day, duration, and occasion—with no user ID, name, IP address, or exact GPS coordinates. Stop likes/dislikes increment aggregate venue counters (venue:metrics:*). If you voluntarily submit a venue issue report or pilot feedback, we store your message, category, and any email address you choose to provide.

2. How We Use Your Data

  • Blending two partners' preferences: Combining both partners' energy levels, dress codes, and mood tags into three distinct, well-paced evening itineraries.
  • Enforcing hard constraints: Filtering out venues that don't fit your dietary restrictions, alcohol-free preferences, budget tier, or operating hours.
  • Improving local curation: Using aggregate venue likes, issue reports, and de-identified mood patterns to keep our local venue recommendations accurate and fresh.

3. Itinerary Curation (Google Gemini)

To assemble multi-stop evening routes and handle stop swaps, Better Date sends structured planning prompts to the Google Gemini API. These prompts include your session mood tags, energy/dress levels, dietary and budget constraints, neighborhood area, optional taste notes, and a shortlist of vetted local venues.

We do not include your name, email address, or account ID in these curation prompts. Under Google's paid Gemini API terms, API prompts and responses are not used to train public models.

4. Infrastructure & Sub-Processors

Every external service that receives request data from Better Date is listed below:

ServiceRoleData Touched
SupabaseDatabase & AuthenticationAccount credentials (email, password hash or Google OAuth), Glass Box profile preferences, vetted venue catalog, and optional pilot feedback or venue reports.
Upstash RedisEphemeral Session Cache & Aggregate MetricsTemporary two-partner vibe check sessions, generated itineraries, and de-identified aggregate counters (such as venue likes/dislikes and mood spread).
Google Gemini APIItinerary Curation & Mood MatchingSession mood tags, energy/dress sliders, dietary and budget filters, neighborhood label, and candidate venue details. No name, email, or account PII is included in curation prompts.
Google Places API (New)Neighborhood & City SearchCity, neighborhood, or ZIP search queries when you look up a location outside our pre-loaded metro hubs.
OpenStreetMap NominatimOne-Time Reverse GeocodingApproximate latitude and longitude only if you click "Locate Me" outside an active pilot metro, used once to look up your neighborhood name.
VercelHosting & Privacy-Friendly Web AnalyticsStandard web request logs and aggregate page-view metrics via Vercel Analytics without third-party advertising cookies.

5. Data Retention, Your Rights & Deletion

  • Ephemeral sessions: Redis session keys automatically expire at 4:00 AM two days after your planned date (minimum 48 hours, maximum 10 days).
  • Account & profile data: Retained while your account is active so your dietary filters and preferences carry over to future dates.
  • Self-serve Glass Box controls: On your Profile page, you can edit your dietary/budget settings, remove any individual learned taste signal or avoided category in one click, wipe all learned preferences, or download a complete JSON export of your profile data.
  • Full account deletion: We do not yet offer a one-click account deletion button in the UI. To permanently delete your authentication record and associated profile data, email privacy@better.date from your account email and we will remove it promptly.

6. Effective Date & Policy Updates

This policy is effective as of November 12, 2026. Whenever we add a new integration, change how long sessions live, or introduce new preference controls, we will update this page to reflect the exact behavior of the app. Questions? Reach us anytime at privacy@better.date.