Privacy Policy — BAAS

Developer: Milk Krate App: BAAS (iOS and Android) Effective date: 24 July 2026 Last updated: 24 July 2026

1. Summary

2. Data Collection Summary

This table maps each type of data to its purpose, where it goes, and how long it is kept. It is aligned to the Apple App Privacy and Google Play Data Safety categories to make store disclosures straightforward.

Data typeCollected?PurposeWhere it goesRetention
Account / identity (name, email, phone, user ID)No
Places, routine trips, favorites, schedules, settingsOn device onlyYour saved commute setupStays on your phone (never synced)Until uninstall / reset
Trip log (mode, cost, timestamp)On device onlyTrack savings vs ride‑hailingStays on your phone (never synced)Until uninstall / reset (cap 500 entries)
Precise locationUsed, not stored by usNearby stops, alight geofence, CompareOn device only, except Compare‑tab coordinates → OneMapNot retained as personal data
Bus stop code / service numberSentLive arrivals + first/last‑bus timetablesOur proxy → LTA DataMallTransient cache only, no PII
Location‑search text / postal / addressSentAddress autocomplete + geocodingOur proxy → OneMapNot stored as personal data
Expo push token (bus‑arrival bell only)Sent when you opt inDeliver a server push while app is closedOur server → Apple APNs / Google FCMAuto‑deletes within 30 minutes
Crash diagnostics (errors, device info, IP, masked replay)Production onlyDiagnose crashesSentry (EU / Germany)~90 days (Sentry default)
Anonymous analytics (device ID, event names, non‑ID props)Production onlyUnderstand feature usagePostHog (EU)Until you request deletion
Commute Saver selection (opaque tokens / blocked‑app list)On device onlyNudge away from ride‑hailing appsStays on your phoneUntil you change it / uninstall

We collect no advertising identifiers, contacts, photos, health, financial, or biometric data, and we do not track you across other apps or websites.

Some limited data we or our providers process — such as your IP address (received by Sentry), the anonymous device‑generated IDs used for crash and analytics, and masked session replays — may be considered personal data under laws such as the GDPR, even though it is not linked to your name or account. We minimize this data, keep it separate from your on‑device commute contents, and never use it to build a personal profile.

3. Information Stored on Your Device

The following is saved locally on your phone (in the app’s on‑device storage) and is never sent to any server:

This data stays entirely on your device. Uninstalling the app, or using the reset option in Settings, deletes it.

4. Information Sent to Our Server

Our backend acts as a stateless proxy for Singapore government transport APIs. It forwards your request, returns the answer, and does not persist these requests as personal data.

What’s sentPurposeForwarded to
Bus stop code (e.g. “83139”)Look up live bus arrival timesLTA DataMall
Bus stop codeFirst/last‑bus timetable for a stopServed from static data (no live call)
Service numberRoute / service detailsServed from static data
Location‑search text you typeAddress / place autocompleteOneMap
Postal code or addressGeocode to coordinatesOneMap
Origin/destination coordinates (Compare tab)Compare drive vs public‑transport routesOneMap

What we don’t send: no names, emails, phone numbers, or account identifiers (there are none). Bus arrival results may be briefly cached on our server to reduce load on LTA — this cache contains bus timing data only, no personal data.

External services reached through the proxy:

5. Bus‑Arrival Push Alerts (server‑sent)

Most alerts in BAAS are generated on your device (see Section 10). One feature is different: when you tap the bell on a bus stop to be notified before a specific bus arrives, we set up a server‑sent push alert so it can reach you even if the app is closed.

By contrast, alight alerts (“your stop is coming up”) and departure reminders are entirely on‑device and involve no server or push token (see Sections 6 and 10).

6. Location Data

BAAS uses location for a few specific commute features. The permission purpose strings shown to you are:

On iOS the app declares the location background mode. On Android it requests ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION, and ACCESS_BACKGROUND_LOCATION (plus SCHEDULE_EXACT_ALARM for timely reminders).

How your location is actually used:

You can decline location and still use BAAS — you can search for bus stops by code or name instead. Alight alerts simply won’t be available without location permission.

7. Crash Reporting — Sentry

We use Sentry to diagnose crashes, in production builds only (fully disabled in development).

What Sentry receives:

What Sentry does not receive: no account or personal identity (there is none), and no commute contents such as your routine trips, places, or trip log.

Data region: European Union (Germany).

These sampling rates and retention periods reflect current settings and may change.

8. Product Analytics — PostHog

We use PostHog for anonymous product analytics, in production builds only.

What PostHog receives:

What PostHog does not receive: no names, emails, or phone numbers; no location; and no bus stop codes, route details, or trip contents.

Data region: European Union.

You can request deletion of your anonymous analytics data by emailing us (see Contact).

9. Commute Saver

Commute Saver is an optional feature that discourages you from opening ride‑hailing apps (such as Grab, TADA, GoJek, Zig) during commute hours, nudging you toward public transport. Everything about this feature stays on your device — no blocking activity, app selection, or usage data is ever sent to us or any third party.

iOS — Screen Time

Android — Accessibility Service

10. Notifications

BAAS sends two kinds of notifications:

You can control notifications in the app’s Settings and in your OS settings at any time.

11. Data Retention

12. Security

We use reasonable technical and organizational measures to protect the limited data we handle. Traffic between the app, our backend, and third‑party services uses encrypted connections (HTTPS/TLS). Your commute contents stay on your device and are never transmitted to us; our proxy is stateless and does not persist your requests as personal data. Our processors (Sentry, PostHog) maintain their own security programs. No method of transmission or storage is completely secure, but we work to protect your information and will handle any incident.

13. Cross‑Border Data Transfers

Your on‑device data never leaves your phone, and the Singapore government APIs we proxy (LTA DataMall, OneMap) are located in Singapore. Some limited operational data is processed outside Singapore by our providers:

14. Children’s Privacy

BAAS is not directed at children under 13, and it does not include any framework for collecting personal information from children. Because the app has no accounts and does not collect personal identity, the only data that could relate to a user is the limited, minimized operational data described in Section 2 — never used to profile anyone.

15. Your Choices and Rights

16. Changes to This Policy

We may update this policy from time to time. Material changes will be reflected by updating the “Last updated” date above. Continued use of the app after an update constitutes acceptance of the revised policy.

17. Contact Us

Questions about this policy? Email us at hello@mlkkrt.com