# Privacy Policy (v2, effective 2026-11-09) This policy applies to Shunlu (顺路), a trip-cost-sharing information board for Southern California, offered as an iPhone app together with its web pages at https://shunlu.app, and operated by LUQ Labs LLC, a California limited liability company (the "Platform", "we"). Effective date: 2026-11-09. The current version of this policy is also published at https://api.shunlu.app/privacy.html (this English version) and https://api.shunlu.app/privacy-zh.html (Chinese). ## 1. What we collect ### Information you provide - Phone number (sign-in). - Nickname; avatar (optional: a photo you choose from your library, which the app re-saves on your phone before uploading it); WeChat ID, which you type in yourself; gender (optional, asked only when you turn on "优先同性别同行"). - School email address (optional; school verification). - Driver verification, submitted in the app: a photo of the front of your driver's license and a photo of your vehicle, taken with the camera or chosen from your library and re-saved on your phone before upload, so the photo's embedded data (such as where it was taken) is left out; the last 4 characters of the license plate; the vehicle make or model and color; and your two confirmations on the form with the time of each. The reviewer may record the license expiry date shown on the photo. You may cover the license number and your address before taking the photo; we only need your name, photo, expiry date and date of birth to be readable. - Trip posts: the start and end points you choose, which our server rounds to a grid of about 500 meters (about 0.3 mile) and stores with the place name you chose, which can name a specific place such as a building, or a neighborhood name, never a street address (a point within about a mile of an airport is stored as that airport); the date and time, or the landing time for a trip from an airport; a flight number (optional); the number of people and large bags; your preference (都可以 / 偏好车主 / 偏好 Uber) or the seats you offer; your note; the same-gender and school-only settings; and, for a Driver post or a request you make as a driver on a Rider post, the time you confirmed the "I was going anyway" (我本来就要走这一趟) commitment and the version of that wording. We also keep the trip distance and the cost-share figures the Platform calculates for the trip. - Request messages (100 characters or fewer), decline reasons and notes, trip outcome marks, reports (reason and any details you add), and the users you block. - Your statement that you are at least 18 and your acceptance of the Terms (version and time). ### Information collected automatically - Your phone's location, only when you tap "用我现在的位置" (Use my current location): the app asks iOS for permission, reads your position once, rounds it on your phone to the same grid of about 500 meters, and sends only the rounded point to us to look up the name of the area. That point is used, still rounded, for your searches; our servers keep it only if you use that place in a post, and your phone keeps it as the last place you chose (Section 9). The app never reads your location in the background or at any other time. - Your device's push token, if you allow notifications: the address Expo and Apple use to deliver notifications to this phone, with when it was registered, last seen and turned off. - When you request a verification code by SMS or to your school email: the phone number or email, your IP address and the time (to limit abuse; deleted after 48 hours). - Sign-in session records: a hash of the session token, the client type and its expiry. - The network information that reaches our hosting provider with each request, such as your IP address (Section 4). ### Information from other users - Reports about you, outcome marks on trips you took, and blocks. ### What we do not collect - The app does not read your contacts or your photo library (it receives only the photos you choose), does not read your location except as described above, uses the camera only when you take driver verification photos, and does not collect advertising identifiers. When you save a trip image to share, the app only adds that image to your photo library. ## 2. How we use it - To display the trip posts you and other users publish, and to let users request to join and contact each other. - To show the trips that go the same way as a search, with the distance between the approximate points: for riders, ordered by how well their time and place fit; for drivers, listed by departure time (optionally within a distance). And to calculate each trip's distance and, for a Driver post or a driver's request on a Rider post, the cost-share cap. - To verify your phone number and school email. - To review driver verification manually. - To send in-app notifications and, if you allow them, push notifications about your account and your trips: new requests, confirmations, declines, withdrawn requests, cancellations, departure reminders, prompts to mark a trip's outcome, account restrictions, driver verification results, and, for the authors of Rider posts only, notices of new trips going the same way (at most one a day). - To check content: a list of words that are not allowed, plus filters for contact details (Terms, Section 7). - To apply the rules of the Terms: outcome counts, trip and post limits, commercial-driver review, restrictions and bans, and their carry-over to a new account with the same phone number. - To handle reports and safety incidents, including alerting the founders by a push notification to their own Shunlu accounts; the alert says only that a report exists and names neither the reporter nor the reported user. - To limit abuse (rate limits by phone number, email and IP address). - To comply with the law. - We do not sell or rent personal information, and we do not use it for advertising or marketing. ## 3. What other users can see - People who have not signed in see, in search results: the route as place or neighborhood names, the date and time, the post type and preference, the per-person amount of a Driver post, seats or head count, large bags, the distance from the place they searched, and the author's badges and counts of completed trips and no-shows marked by others; not the author's nickname, avatar, vehicle or note. They cannot open a post's page in the app. - Signed-in users see, on cards, a post's page and your profile page: your nickname, avatar, school badge, "Verified driver" with the vehicle make or model and color and last plate characters (if verified), your counts of completed trips, late cancellations and no-shows marked by others (hidden when zero), and how long ago you joined; and, for your posts, the place or neighborhood names and the distance from them, the date and time, the flight number if you added one, people and bags, your preference or seats, the per-person amount of a Driver post, your note and the post's settings. - The author of a post you request to join sees your request message and, when the author enabled the same-gender preference, whether your gender matches the author's (same, different, or not disclosed). Your gender itself is not shown, but a "different" result may let the author infer it. - The applicant sees the reason and note you give when you decline their request. - After the author confirms a request, the author and that applicant see each other's WeChat ID, and the author can copy the WeChat IDs of everyone confirmed on the trip. - Your avatar is served at a link that does not require sign-in: anyone who has the link can view it. - Never shown to other users: your phone number, school email, identity documents, push token, or any location more precise than the place or neighborhood name chosen for a post and a distance. - Each post has a public link page, whether or not anyone shares it; it shows only the route, the time, the post type and the seats left or the group size. When you share a post, the share image and text also show the per-person amount of a Driver post or a Rider post's preference. ## 4. Who we share it with - Service providers that process data for us, each under its own privacy policy and only for the purpose listed: Supabase (database and file storage, in data centers in the United States); Cloudflare (API and web hosting, and delivery of the school-email verification code through Cloudflare Email Service: your school email address and the code, and we send no other email; also the network information needed to serve requests, such as your IP address); Twilio (verification codes by text message through Twilio Verify: your phone number); Apple (place search, area names and driving distances through the Apple Maps Server API — our server sends only the text you search for or rounded points, never your name, phone number or account — and the Apple Push Notification service, which delivers notifications to your iPhone); and Expo (push delivery: when the app asks for a push token, Expo receives your phone's Apple device token from the phone and issues the push token; for each notification, Expo receives the push token and the notification's title, text and the trip it opens, which may include another user's nickname, a route and a time, a decline note, or your own driver-review note. Push notifications also carry the safety-report alerts to our founders, which say only that a report exists and name no one). - WeChat: the app shares nothing with WeChat. When you tap "复制并打开微信" (Copy and open WeChat), the app copies the WeChat ID to your phone's clipboard and opens the WeChat app; what you do in WeChat is governed by WeChat's own terms and privacy policy. - Advertisers and sponsors: the app shows no advertising or sponsored content, and we give advertisers and sponsors no personal information about any user. - Legal requirements and safety: we disclose information when required by law, legal process or a government request, or when necessary to deal with a safety incident. - Business transfer: if the Platform's business is transferred, your information moves with it under this policy. - We do not sell personal information, we do not share it for cross-context behavioral advertising, and we do not disclose it to third parties for their own direct marketing purposes. ## 5. Where it is stored and use outside the United States - Business data is stored in the United States (Supabase). Cloudflare's global network relays requests. Apple and Expo process push notifications, and Apple processes place searches, on their own systems under their own terms. - The Service is operated from the United States for people in Southern California. If you use it from outside the United States — including from mainland China, for example during a school break — the information you submit is sent to and stored in the United States, where data-protection rules may differ from those where you are. ## 6. How long we keep it - Driver's license and vehicle photos: deleted 7 days after the review decision, and at once when you delete your account. Only the review result is kept (status, decision time, the reason if not approved, and the license expiry date while your account exists). Driver photos that were uploaded but never attached to a submission are deleted by a daily cleanup once they are more than 7 days old. - Verification-code request records (phone number or email, IP address, time): 48 hours. - School email verification codes: only a hash is stored; a code expires after 15 minutes and is deleted about a day after expiry. - Avatar: the file is deleted at once when you replace it or delete your account; if that automatic deletion fails, or you upload an image without keeping it as your avatar, the leftover file is removed in our regular cleanup, normally within about a month. Copies already cached by browsers or CDNs may remain for up to 24 hours, and copies cached by the app on other users' phones until those phones clear their cache. - Push tokens: a token is normally turned off when you sign out on that phone (if the phone is offline at that moment, notices can continue until the token is next registered or stops working); it is also turned off when it stops working, and deleted when you delete your account. - Searches: the places and times you search with are not stored in our database. - Account profile, and your posts, requests, notifications and sign-in session records (a token hash, client type and dates — never a usable token): while your account exists, and after deletion as set out below. - Cleared at once when you delete your account: phone number, WeChat ID, school email and school badge, avatar, driver review notes, identity document photos, vehicle make or model and color, last plate characters, license expiry date, push tokens, and gender (reset to undisclosed); your nickname becomes "Deleted user" (已注销用户); every sign-in session is revoked. - Kept after you delete your account, for as long as needed for safety, for other users' trip records, and to prevent circumvention of bans and restrictions: a salted hash of your phone number; ban and restriction status and reason; your counts of completed trips, late cancellations and no-shows; your driver status and the times of your review and your confirmations; your Terms and age consent record; your registration time; your revoked sign-in session records; the historical rows of your posts (with their place names and rounded points), requests, outcome marks, reports and blocks (shown to the other party as "Deleted user" (已注销用户)); and notification records — in-app and push notifications, which may include a nickname, a decline note or a driver-review note. Notifications that other users received keep the nickname you had when each was written. - Backups: data deleted from our database can remain in our database provider's backups for a limited period until those backups are overwritten. - Service-provider logs: kept under the policies of Supabase, Cloudflare, Twilio, Apple and Expo. ## 7. Your choices and rights - View and change your nickname, avatar and WeChat ID from "我 → 编辑资料" (Me → Edit profile). To change your phone number or your gender, or to request a copy of your data, email markqiu@luqlabs.com. - Verify or re-verify your school email at any time from "我" (Me). - Location, camera, photos and notifications: the app asks iOS for location, camera and photo access only when you use the feature that needs it, and asks once for notifications after your profile is complete, with a short explanation first; you can refuse, or change your choice later in the iPhone's Settings. Without location you can still search for places, and without push notifications your notices still appear in the "通知" (Notifications) tab. - Sign out from "我 → 退出登录" (Me → Sign out); that phone then normally stops receiving your notifications (Section 6 covers a phone that was offline). - Delete your account from "我 → 注销账号" (Me → Delete account); deletion takes effect at once (Section 6). - For any other request, email markqiu@luqlabs.com. Before we act on a request to see, copy, change or delete information, we may ask you to confirm it in the app or with a code sent to the phone number on your account. ## 8. Text messages (SMS) By entering your phone number and submitting, you agree to receive SMS verification codes from Shunlu; message and data rates may apply. - The only text messages we send you are verification codes, sent when you ask for one and only to United States (+1) numbers; Twilio Verify sends them. - We do not send trip notifications, marketing or promotional content by text message; trip notifications come as in-app and push notifications (Section 2). - We do not share your phone number or your SMS consent with third parties or affiliates for their marketing purposes. Text-messaging opt-in data and consent records are not shared with any third party, except the service providers that store and deliver them for us (Supabase and Twilio). ## 9. Data on your phone, cookies, tracking and Do Not Track - On your phone, the app keeps in the iOS keychain: your sign-in tokens; the start and end points you last chose (rounded, with their names), so the form opens with them; and, for each account signed in on that phone, its push token, whether the notification prompt was shown, and which version of the driver commitment was checked. Signing out or deleting your account removes the sign-in tokens, the last points and that account's push token from the phone. - The app contains no advertising, analytics or crash-reporting tools, and we do not track you across other companies' apps or websites. Apart from Apple, which operates iOS and the App Store and collects information under its own terms and privacy policy, we do not allow any third party to collect personal information about your online activities over time and across different websites or apps when you use the Service. - Our web pages set no cookies; our hosting provider may set a strictly necessary security cookie to protect the Service from abuse. - Our web pages do not respond to browser Do Not Track signals. Because we do not track you across websites in the first place, we treat visits with and without the signal the same way. ## 10. Minors - The Service is only for people who are at least 18 years old. If we learn that an account belongs to a minor, we restrict or delete it, and we remove the content it posted on request. "A minor using the Service" is one of the report reasons. ## 11. Data protection and breach notification - Identity documents and avatars are stored in private storage buckets; document photos have no public link, and avatars are served only through the Platform's own link (Section 3). Session tokens and verification codes are stored on our servers only as hashes, and on your phone the app keeps its sign-in tokens in the iOS keychain. Data is encrypted in transit. - If a data breach occurs, we will notify affected California residents as required by Cal. Civ. Code §1798.82, and notify the California Attorney General when 500 or more California residents are affected. ## 12. Changes to this policy - Updates are announced in the app and the effective date changes. A material change will ask you to tick the consent box again in the app before you can post, request to join or confirm a request again. We will not use information collected under an earlier version in a materially different way without your agreement. ## 13. Contact - LUQ Labs LLC - markqiu@luqlabs.com