@adminide-stack/yantra-help-browser 12.0.192 → 12.0.193

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,10 +13,10 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
13
13
  className: "container mx-auto max-w-3xl px-6 lg:px-16",
14
14
  children: [jsx("p", {
15
15
  className: "mb-2 text-sm text-muted-foreground",
16
- children: "Updated and Effective: September 19, 2026"
16
+ children: "Updated and Effective: October 20, 2026"
17
17
  }), jsx("p", {
18
18
  className: "mb-4 text-foreground",
19
- children: "This Privacy Policy (\"Policy\") applies to the Yantra platform, including the Yantra web application, Yantra Browser Chrome extension, and related services (together, the \"Platform\"), owned and operated by CDMBase LLC d/b/a Yantra (\"Yantra,\" \"we,\" or \"us\"). This Policy describes how we collect, use, and disclose your personal information."
19
+ children: "This Privacy Policy (\"Policy\") applies to the Yantra platform, including the Yantra web application, the Yantra mobile apps for iOS and Android, the Yantra Browser Chrome extension, and related services (together, the \"Platform\"), owned and operated by CDMBase LLC d/b/a Yantra (\"Yantra,\" \"we,\" or \"us\"). This Policy describes how we collect, use, share, retain, and delete your personal information."
20
20
  }), jsx("p", {
21
21
  className: "mb-8 text-foreground",
22
22
  children: "By using the Platform, you consent to our Policy, Terms of Use, and any additional applicable policies and terms we post."
@@ -42,6 +42,16 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
42
42
  href: "#share",
43
43
  children: "Under What Circumstances Does the Platform Share or Disclose Information?"
44
44
  })
45
+ }), jsx("li", {
46
+ children: jsx("a", {
47
+ href: "#health",
48
+ children: "Health and Fitness Data"
49
+ })
50
+ }), jsx("li", {
51
+ children: jsx("a", {
52
+ href: "#retention",
53
+ children: "Data Retention and Deletion"
54
+ })
45
55
  }), jsx("li", {
46
56
  children: jsx("a", {
47
57
  href: "#third-party",
@@ -102,7 +112,7 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
102
112
  children: "1. What Information Does the Platform Collect?"
103
113
  }), jsx("p", {
104
114
  className: "mb-4 text-muted-foreground",
105
- children: "We may collect information from you directly, automatically when you use the Platform, and from your interactions with websites you choose to automate. Some of this information may be considered \"personal information\" under various applicable laws. We consider information that identifies you as a specific, identified individual (such as your name, email address, or account credentials) to be personal information."
115
+ children: "We may collect information from you directly, from your device when you give the mobile app permission, automatically when you use the Platform, and from your interactions with websites you choose to automate. Some of this information may be considered \"personal information\" under various applicable laws. We consider information that identifies you as a specific, identified individual (such as your name, email address, or account credentials) to be personal information."
106
116
  }), jsx("p", {
107
117
  className: "mb-4 text-muted-foreground",
108
118
  children: "Note that we may de-identify personal information so that it is non-personal, such as aggregating or converting it to a code, sometimes using a function commonly known as a \"hash.\" We will treat de-identified information as non-personal to the fullest extent allowed by applicable law."
@@ -115,7 +125,26 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
115
125
  children: [jsx("strong", {
116
126
  className: "text-foreground",
117
127
  children: "Account Information:"
118
- }), " When you create an account or sign in, we collect your name, email address, and user ID. If you add a phone number to your account, we also collect that number and its verification status. When using the Chrome extension, we access your existing web application session to authenticate you."]
128
+ }), " When you create an account or sign in, we collect your name, email address, and user ID. If you add a phone number to your account, we also collect that number and its verification status. You may also add a profile photo. When using the Chrome extension, we access your existing web application session to authenticate you."]
129
+ }), jsxs("li", {
130
+ children: [jsx("strong", {
131
+ className: "text-foreground",
132
+ children: "Messages, Files, and Media:"
133
+ }), " The messages you send, and the photos, videos, voice notes, and documents you attach to a chat or add to the canvas."]
134
+ }), jsxs("li", {
135
+ children: [jsx("strong", {
136
+ className: "text-foreground",
137
+ children: "Requests to the AI Assistant:"
138
+ }), " The questions and instructions you give the Yantra assistant, and the results it produces for you."]
139
+ }), jsxs("li", {
140
+ children: [jsx("strong", {
141
+ className: "text-foreground",
142
+ children: "Health and Fitness Information:"
143
+ }), " Data you choose to sync from Health Connect or Apple Health, readings from Bluetooth health devices you pair, and information you log yourself. See", ' ', jsx("a", {
144
+ href: "#health",
145
+ className: "text-primary underline",
146
+ children: "Section 4"
147
+ }), "."]
119
148
  }), jsxs("li", {
120
149
  children: [jsx("strong", {
121
150
  className: "text-foreground",
@@ -124,14 +153,57 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
124
153
  }), jsxs("li", {
125
154
  children: [jsx("strong", {
126
155
  className: "text-foreground",
127
- children: "Search Queries:"
128
- }), " Queries you enter into the Yantra search and AI assistant to receive results and perform tasks."]
156
+ children: "Payment Information:"
157
+ }), " When you buy a subscription, your card details are sent directly to our payment processor. We do not store full card numbers. Purchases made through the App Store or Google Play are processed by Apple or Google."]
129
158
  }), jsxs("li", {
130
159
  children: [jsx("strong", {
131
160
  className: "text-foreground",
132
161
  children: "Communications:"
133
162
  }), " Information you provide when contacting our support team or providing feedback."]
134
163
  })]
164
+ }), jsx("h3", {
165
+ className: "mb-2 mt-6 text-lg font-medium text-foreground",
166
+ children: "Information From Your Device (Mobile Apps)"
167
+ }), jsx("p", {
168
+ className: "mb-2 text-sm text-muted-foreground",
169
+ children: "The mobile apps ask for each of these permissions only when you use the feature that needs it. You can turn any of them off at any time in your device settings."
170
+ }), jsxs("ul", {
171
+ className: "mb-4 list-inside list-disc space-y-2 text-sm text-muted-foreground",
172
+ children: [jsxs("li", {
173
+ children: [jsx("strong", {
174
+ className: "text-foreground",
175
+ children: "Contacts:"
176
+ }), " If you allow it, the app reads the names, phone numbers, and photos in your address book to show which of your contacts already use Yantra so you can start a chat. Only the phone numbers are sent to our servers, where they are compared with the verified phone numbers of Yantra users at the time of the request. We do not store your contact list or use it for any other purpose. Names and photos stay on your device."]
177
+ }), jsxs("li", {
178
+ children: [jsx("strong", {
179
+ className: "text-foreground",
180
+ children: "Microphone and Speech Recognition:"
181
+ }), " When you use voice input, the app records what you say and turns it into text. Depending on your device, this is done by your phone's built-in speech recognition service (provided by Apple or Google) or by our speech-to-text service provider. We do not keep voice input recordings after they are transcribed. Voice notes you send in a chat are kept as messages."]
182
+ }), jsxs("li", {
183
+ children: [jsx("strong", {
184
+ className: "text-foreground",
185
+ children: "Camera and Photo Library:"
186
+ }), " Used only when you take or choose a photo, video, or document to attach. Only the items you pick are uploaded."]
187
+ }), jsxs("li", {
188
+ children: [jsx("strong", {
189
+ className: "text-foreground",
190
+ children: "Health Connect and Apple Health:"
191
+ }), " Only if you connect them. See", ' ', jsx("a", {
192
+ href: "#health",
193
+ className: "text-primary underline",
194
+ children: "Section 4"
195
+ }), "."]
196
+ }), jsxs("li", {
197
+ children: [jsx("strong", {
198
+ className: "text-foreground",
199
+ children: "Bluetooth:"
200
+ }), " Used to connect to health devices you pair, such as a scale or blood-pressure monitor. On Android 11 and earlier, Android requires the location permission to scan for Bluetooth devices. Yantra asks for it only when you pair a device, and does not read or store your location."]
201
+ }), jsxs("li", {
202
+ children: [jsx("strong", {
203
+ className: "text-foreground",
204
+ children: "Notifications:"
205
+ }), " If you allow notifications, we store a push token for your device so we can deliver them. Notification content is delivered through Apple's and Google's push notification services."]
206
+ })]
135
207
  }), jsx("h3", {
136
208
  className: "mb-2 mt-6 text-lg font-medium text-foreground",
137
209
  children: "Information We Collect Automatically"
@@ -151,7 +223,17 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
151
223
  children: [jsx("strong", {
152
224
  className: "text-foreground",
153
225
  children: "Device Information:"
154
- }), " Browser type, operating system, device type, and screen resolution."]
226
+ }), " Browser type, operating system, device type, screen resolution, and your device's language and region settings (used to show prices in your currency)."]
227
+ }), jsxs("li", {
228
+ children: [jsx("strong", {
229
+ className: "text-foreground",
230
+ children: "Log Data:"
231
+ }), " Our servers record your IP address, request times, and error details when you use the Platform. We use this to keep the Platform secure, prevent abuse, and fix problems."]
232
+ }), jsxs("li", {
233
+ children: [jsx("strong", {
234
+ className: "text-foreground",
235
+ children: "Location (Web Application, Optional):"
236
+ }), " If you allow your browser to share your location, the web application uses it to show local results, such as weather and nearby places. If you do not, the weather panel may estimate your approximate city from your IP address. We use location only to provide these features."]
155
237
  }), jsxs("li", {
156
238
  children: [jsx("strong", {
157
239
  className: "text-foreground",
@@ -177,19 +259,17 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
177
259
  }), jsxs("ul", {
178
260
  className: "list-inside list-disc space-y-1 text-sm text-muted-foreground",
179
261
  children: [jsx("li", {
180
- children: "Browsing history of tabs not actively attached to the relay"
262
+ children: "Your device's location in the mobile apps"
181
263
  }), jsx("li", {
182
- children: "Keystrokes or form input on non-automated tabs"
183
- }), jsx("li", {
184
- children: "Personal files from your device"
264
+ children: "Text messages (SMS) stored on your device"
185
265
  }), jsx("li", {
186
- children: "Location data (GPS or IP-based)"
266
+ children: "Files on your device other than those you choose to upload"
187
267
  }), jsx("li", {
188
- children: "Financial or payment information (beyond what is processed by our payment provider)"
268
+ children: "Browsing history of tabs not actively attached to the relay"
189
269
  }), jsx("li", {
190
- children: "Health information"
270
+ children: "Keystrokes or form input on non-automated tabs"
191
271
  }), jsx("li", {
192
- children: "Microphone or camera data"
272
+ children: "Full payment card numbers (these are handled by our payment processor)"
193
273
  })]
194
274
  })]
195
275
  }), jsxs("section", {
@@ -208,6 +288,20 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
208
288
  className: "text-foreground",
209
289
  children: "Enable AI Search and Automation:"
210
290
  }), " Provide search results, AI-driven browser automation, and task completion services."]
291
+ }), jsxs("li", {
292
+ children: [jsx("strong", {
293
+ className: "text-foreground",
294
+ children: "Provide Messaging:"
295
+ }), " Deliver your messages and attachments, and help you find contacts who already use Yantra."]
296
+ }), jsxs("li", {
297
+ children: [jsx("strong", {
298
+ className: "text-foreground",
299
+ children: "Provide Fitness Features:"
300
+ }), " Show your health scores, trends, and coaching, as described in", ' ', jsx("a", {
301
+ href: "#health",
302
+ className: "text-primary underline",
303
+ children: "Section 4"
304
+ }), "."]
211
305
  }), jsxs("li", {
212
306
  children: [jsx("strong", {
213
307
  className: "text-foreground",
@@ -223,11 +317,21 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
223
317
  className: "text-foreground",
224
318
  children: "Maintain Relay Connections:"
225
319
  }), " Manage WebSocket connections to the relay server, monitor connection health, and automatically reconnect when connections are interrupted."]
320
+ }), jsxs("li", {
321
+ children: [jsx("strong", {
322
+ className: "text-foreground",
323
+ children: "Process Payments:"
324
+ }), " Manage your subscription and billing."]
226
325
  }), jsxs("li", {
227
326
  children: [jsx("strong", {
228
327
  className: "text-foreground",
229
328
  children: "Communicate With You:"
230
329
  }), " Respond to your questions, send important notices, and provide customer support."]
330
+ }), jsxs("li", {
331
+ children: [jsx("strong", {
332
+ className: "text-foreground",
333
+ children: "Keep the Platform Secure:"
334
+ }), " Detect and prevent fraud, abuse, and unauthorized access."]
231
335
  }), jsxs("li", {
232
336
  children: [jsx("strong", {
233
337
  className: "text-foreground",
@@ -239,6 +343,9 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
239
343
  children: "Comply with Legal Requirements:"
240
344
  }), " Fulfill legal obligations and enforce our terms and policies."]
241
345
  })]
346
+ }), jsx("p", {
347
+ className: "mt-4 text-sm text-muted-foreground",
348
+ children: "We do not use your content, including your health data, to train AI models, and we do not use it for advertising."
242
349
  })]
243
350
  }), jsxs("section", {
244
351
  id: "share",
@@ -251,16 +358,28 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
251
358
  children: "We do not sell your personal information to third parties. We do not share your personal information with third parties for those third parties' own direct marketing purposes. We may share information in the following circumstances:"
252
359
  }), jsx("h3", {
253
360
  className: "mb-2 mt-4 text-lg font-medium text-foreground",
254
- children: "AI Backend Services"
361
+ children: "AI Processing"
255
362
  }), jsx("p", {
256
363
  className: "mb-4 text-sm text-muted-foreground",
257
- children: "Search queries, page content, accessibility data, screenshots, and tab metadata from relay-attached tabs are transmitted to the Yantra AI backend via secure connections. This data is processed to execute your requested tasks and is not used for advertising or marketing purposes."
364
+ children: "Your requests to the assistant, the files you attach, and the information needed to complete them are processed by the Yantra AI backend and by AI model providers that process it on our behalf to generate a response. For example, when you ask the fitness coach a question, the coach reads the health data it needs to answer you. Search queries, page content, accessibility data, screenshots, and tab metadata from relay-attached tabs are sent to the Yantra AI backend over secure connections. This data is processed to complete your requested tasks and is not used for advertising or marketing."
258
365
  }), jsx("h3", {
259
366
  className: "mb-2 mt-4 text-lg font-medium text-foreground",
260
367
  children: "Service Providers"
261
368
  }), jsx("p", {
262
369
  className: "mb-4 text-sm text-muted-foreground",
263
- children: "We use third-party service providers to provide services to us or on our behalf, such as cloud hosting, payment processing, and analytics. We give these providers access to your information so they can provide these services."
370
+ children: "We use third-party service providers that act on our behalf, such as providers of cloud hosting and storage, AI models and speech-to-text, sign-in and authentication, payment processing, email, SMS and push notification delivery, and map and place search. We give these providers only the information they need to provide their service to us."
371
+ }), jsx("h3", {
372
+ className: "mb-2 mt-4 text-lg font-medium text-foreground",
373
+ children: "Other Yantra Users"
374
+ }), jsx("p", {
375
+ className: "mb-4 text-sm text-muted-foreground",
376
+ children: "The people you chat with see the messages and files you send them, and your name and profile photo. Members of a workspace you belong to can see your name, profile photo, and the content you share in that workspace. If you verify a phone number for Yantra Chat, people who have that number in their contacts can see that you use Yantra."
377
+ }), jsx("h3", {
378
+ className: "mb-2 mt-4 text-lg font-medium text-foreground",
379
+ children: "Messaging Services You Choose"
380
+ }), jsx("p", {
381
+ className: "mb-4 text-sm text-muted-foreground",
382
+ children: "If you choose to receive messages from Yantra over SMS, WhatsApp, Telegram, or iMessage, the content of those messages is delivered through that service and is also subject to its privacy policy."
264
383
  }), jsx("h3", {
265
384
  className: "mb-2 mt-4 text-lg font-medium text-foreground",
266
385
  children: "Business, Tax, and Legal Purposes"
@@ -278,14 +397,243 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
278
397
  children: "With Your Consent"
279
398
  }), jsx("p", {
280
399
  className: "text-sm text-muted-foreground",
281
- children: "We may share information when you direct us to do so."
400
+ children: "We may share information when you direct us to do so, for example when you connect a third-party account and ask Yantra to act in it."
401
+ })]
402
+ }), jsxs("section", {
403
+ id: "health",
404
+ className: "mb-10",
405
+ children: [jsx("h2", {
406
+ className: "mb-4 text-2xl font-semibold text-foreground",
407
+ children: "4. Health and Fitness Data"
408
+ }), jsx("p", {
409
+ className: "mb-4 text-muted-foreground",
410
+ children: "The Yantra mobile apps can read health and fitness data from Health Connect (Android) and Apple Health (iOS), and can read measurements from Bluetooth health devices you pair. This only happens if you choose to connect them. This section explains what we access, how we use it, who can see it, how long we keep it, and how to delete it."
411
+ }), jsx("h3", {
412
+ className: "mb-2 mt-6 text-lg font-medium text-foreground",
413
+ children: "What We Read"
414
+ }), jsxs("ul", {
415
+ className: "mb-4 list-inside list-disc space-y-2 text-sm text-muted-foreground",
416
+ children: [jsxs("li", {
417
+ children: [jsx("strong", {
418
+ className: "text-foreground",
419
+ children: "Health Connect (Android):"
420
+ }), " steps, distance, active calories burned, exercise sessions, elevation gained, heart rate, resting heart rate, heart rate variability, sleep, weight, body fat, lean body mass, VO2 max, oxygen saturation, respiratory rate, body temperature, blood pressure, and blood glucose."]
421
+ }), jsxs("li", {
422
+ children: [jsx("strong", {
423
+ className: "text-foreground",
424
+ children: "Apple Health (iOS):"
425
+ }), " steps, walking and running distance, active energy, resting energy, exercise minutes, workouts, heart rate, resting heart rate, heart rate variability, sleep, wrist temperature during sleep, time in daylight, mindful minutes, weight, body fat, lean body mass, body mass index, waist circumference, VO2 max, oxygen saturation, respiratory rate, body temperature, blood pressure, and blood glucose."]
426
+ })]
427
+ }), jsx("p", {
428
+ className: "mb-4 text-sm text-muted-foreground",
429
+ children: "You choose which types to share, and you can change this at any time in Health Connect or the Health app. When you first connect, Yantra reads the last 30 days. After that, it reads the data added since the last sync each time you open the app. Yantra does not read your health data in the background."
430
+ }), jsx("h3", {
431
+ className: "mb-2 mt-6 text-lg font-medium text-foreground",
432
+ children: "What We Write"
433
+ }), jsx("p", {
434
+ className: "mb-4 text-sm text-muted-foreground",
435
+ children: "Only if you turn on \"Also save to Health Connect\" (or Apple Health) for a paired device, Yantra saves that device's readings: weight, body fat, lean body mass, body mass index (iOS), blood pressure, heart rate, oxygen saturation, body temperature, and blood glucose. Yantra writes only readings taken from your paired devices, and never changes or deletes data written by other apps."
436
+ }), jsx("h3", {
437
+ className: "mb-2 mt-6 text-lg font-medium text-foreground",
438
+ children: "Bluetooth Health Devices"
439
+ }), jsx("p", {
440
+ className: "mb-4 text-sm text-muted-foreground",
441
+ children: "Yantra can read scales, blood-pressure monitors, heart-rate straps, pulse oximeters, thermometers, and glucose meters that use standard Bluetooth health profiles. For scales that keep a profile for each user, Yantra sends your age, sex, and height to the scale so it can calculate body composition."
442
+ }), jsx("h3", {
443
+ className: "mb-2 mt-6 text-lg font-medium text-foreground",
444
+ children: "Information You Log"
445
+ }), jsx("p", {
446
+ className: "mb-4 text-sm text-muted-foreground",
447
+ children: "You can also add health information yourself on the Fitness page or by telling the coach, such as body measurements, meals, lab results, or cycle tracking. We treat it the same way as the data described above."
448
+ }), jsx("h3", {
449
+ className: "mb-2 mt-6 text-lg font-medium text-foreground",
450
+ children: "How We Use It"
451
+ }), jsxs("ul", {
452
+ className: "mb-4 list-inside list-disc space-y-2 text-sm text-muted-foreground",
453
+ children: [jsx("li", {
454
+ children: "Only to provide the fitness features you see in Yantra: your daily Sleep, Recovery, and Strain scores, trends in your weight, body composition, and blood pressure, health alerts, and coaching."
455
+ }), jsx("li", {
456
+ children: "Your health data is sent over an encrypted connection to Yantra's fitness service and stored with your account, so these features work across your devices and on the web."
457
+ }), jsx("li", {
458
+ children: "When you chat with the fitness coach, or reply to a coach message, the coach reads the health data it needs to answer you, such as your recent sleep, recovery, and workouts. That data is processed by AI model providers on our behalf only to generate the reply."
459
+ }), jsx("li", {
460
+ children: "If you turn on coach messages by SMS, WhatsApp, Telegram, or iMessage, those messages may include health information, such as your Recovery score, and are delivered through that service."
461
+ })]
462
+ }), jsx("h3", {
463
+ className: "mb-2 mt-6 text-lg font-medium text-foreground",
464
+ children: "What We Never Do"
465
+ }), jsxs("ul", {
466
+ className: "mb-4 list-inside list-disc space-y-2 text-sm text-muted-foreground",
467
+ children: [jsx("li", {
468
+ children: "We do not sell your health data or transfer it to advertising platforms, data brokers, or information resellers."
469
+ }), jsx("li", {
470
+ children: "We do not use your health data to serve ads, including personalized ads."
471
+ }), jsx("li", {
472
+ children: "We do not use your health data to determine credit-worthiness, lending, insurance, or employment eligibility."
473
+ }), jsx("li", {
474
+ children: "We do not use your health data to train AI models."
475
+ }), jsx("li", {
476
+ children: "Yantra staff do not look at your health data unless you ask us to (for example, in a support request), it is needed for security, or the law requires it."
477
+ })]
478
+ }), jsx("h3", {
479
+ className: "mb-2 mt-6 text-lg font-medium text-foreground",
480
+ children: "Limited Use"
481
+ }), jsx("p", {
482
+ className: "mb-4 text-sm text-muted-foreground",
483
+ children: "Yantra's use of information received from Health Connect adheres to the Health Connect Permissions policy, including the Limited Use requirements. Data from Apple HealthKit is not used for advertising or data mining, and is not shared with third parties except as needed to provide Yantra's health and fitness features."
484
+ }), jsx("h3", {
485
+ className: "mb-2 mt-6 text-lg font-medium text-foreground",
486
+ children: "How Long We Keep It and How to Delete It"
487
+ }), jsxs("ul", {
488
+ className: "mb-4 list-inside list-disc space-y-2 text-sm text-muted-foreground",
489
+ children: [jsx("li", {
490
+ children: "We keep your health data with your account until you delete it or delete your account."
491
+ }), jsxs("li", {
492
+ children: [jsx("strong", {
493
+ className: "text-foreground",
494
+ children: "Stop syncing:"
495
+ }), " in the app, open Health and tap Disconnect. Choose \"Stop and delete synced data\" to also delete the data Yantra synced from Health Connect or Apple Health."]
496
+ }), jsxs("li", {
497
+ children: [jsx("strong", {
498
+ className: "text-foreground",
499
+ children: "Delete by source:"
500
+ }), " on the Fitness page, use \"Remove data\" on any source, including your Bluetooth devices."]
501
+ }), jsxs("li", {
502
+ children: [jsx("strong", {
503
+ className: "text-foreground",
504
+ children: "Remove access:"
505
+ }), " on Android, you can also remove Yantra's access in Health Connect settings. On iOS, open the Health app, then Apps, then Yantra."]
506
+ }), jsxs("li", {
507
+ children: [jsx("strong", {
508
+ className: "text-foreground",
509
+ children: "Delete your account:"
510
+ }), " we delete your health data within 30 days, as described in", ' ', jsx("a", {
511
+ href: "#retention",
512
+ className: "text-primary underline",
513
+ children: "Section 5"
514
+ }), "."]
515
+ }), jsx("li", {
516
+ children: "Readings from paired devices are also kept on your phone for up to 120 days, and are removed when you uninstall the app."
517
+ })]
518
+ }), jsx("p", {
519
+ className: "text-sm text-muted-foreground",
520
+ children: "Yantra's fitness features are for general wellness only. They are not a medical device and do not diagnose or treat any condition."
521
+ })]
522
+ }), jsxs("section", {
523
+ id: "retention",
524
+ className: "mb-10",
525
+ children: [jsx("h2", {
526
+ className: "mb-4 text-2xl font-semibold text-foreground",
527
+ children: "5. Data Retention and Deletion"
528
+ }), jsx("p", {
529
+ className: "mb-4 text-muted-foreground",
530
+ children: "We keep personal information only as long as we need it to provide the Platform, for the purposes described in this Policy, or as required by law. How long we keep each kind of information:"
531
+ }), jsxs("ul", {
532
+ className: "mb-4 list-inside list-disc space-y-2 text-sm text-muted-foreground",
533
+ children: [jsxs("li", {
534
+ children: [jsx("strong", {
535
+ className: "text-foreground",
536
+ children: "Account information:"
537
+ }), " for as long as your account exists."]
538
+ }), jsxs("li", {
539
+ children: [jsx("strong", {
540
+ className: "text-foreground",
541
+ children: "Messages, files, and AI conversations:"
542
+ }), ' ', "until you delete them or delete your account. Some deleted items, such as files, are kept in a recoverable state and are erased when you delete your account, or sooner if you ask us."]
543
+ }), jsxs("li", {
544
+ children: [jsx("strong", {
545
+ className: "text-foreground",
546
+ children: "Health and fitness data:"
547
+ }), " until you delete it or delete your account (see", ' ', jsx("a", {
548
+ href: "#health",
549
+ className: "text-primary underline",
550
+ children: "Section 4"
551
+ }), "). Records of coach messages we text you are deleted after 45 days."]
552
+ }), jsxs("li", {
553
+ children: [jsx("strong", {
554
+ className: "text-foreground",
555
+ children: "Contacts:"
556
+ }), " not kept. Phone numbers from your contacts are used only while we look for matches."]
557
+ }), jsxs("li", {
558
+ children: [jsx("strong", {
559
+ className: "text-foreground",
560
+ children: "Voice input:"
561
+ }), " not kept after it is turned into text. Voice notes you send in a chat are kept as messages."]
562
+ }), jsxs("li", {
563
+ children: [jsx("strong", {
564
+ className: "text-foreground",
565
+ children: "Verification codes:"
566
+ }), " stored only in hashed form and expire after 10 minutes."]
567
+ }), jsxs("li", {
568
+ children: [jsx("strong", {
569
+ className: "text-foreground",
570
+ children: "Server logs:"
571
+ }), " kept for up to 30 days."]
572
+ }), jsxs("li", {
573
+ children: [jsx("strong", {
574
+ className: "text-foreground",
575
+ children: "Billing and tax records:"
576
+ }), " kept for as long as tax and accounting laws require, even after you delete your account."]
577
+ }), jsxs("li", {
578
+ children: [jsx("strong", {
579
+ className: "text-foreground",
580
+ children: "Security records and SMS consent records:"
581
+ }), ' ', "kept as long as needed to protect the Platform, prevent fraud, and honor your messaging choices."]
582
+ }), jsxs("li", {
583
+ children: [jsx("strong", {
584
+ className: "text-foreground",
585
+ children: "Data on your device:"
586
+ }), " data the mobile apps and the Chrome extension store on your device stays there until you uninstall them or clear their data."]
587
+ })]
588
+ }), jsx("h3", {
589
+ className: "mb-2 mt-6 text-lg font-medium text-foreground",
590
+ children: "Deleting Your Account"
591
+ }), jsx("p", {
592
+ className: "mb-2 text-sm text-muted-foreground",
593
+ children: "You can delete your account at any time:"
594
+ }), jsxs("ul", {
595
+ className: "mb-4 list-inside list-disc space-y-2 text-sm text-muted-foreground",
596
+ children: [jsxs("li", {
597
+ children: [jsx("strong", {
598
+ className: "text-foreground",
599
+ children: "In the mobile app:"
600
+ }), " open the menu, tap Account, then Delete Account."]
601
+ }), jsxs("li", {
602
+ children: [jsx("strong", {
603
+ className: "text-foreground",
604
+ children: "On the web:"
605
+ }), " sign in at", ' ', jsx("a", {
606
+ href: "https://yantra.app/account/details",
607
+ className: "text-primary underline",
608
+ children: "yantra.app/account/details"
609
+ }), ' ', "and choose Delete account."]
610
+ }), jsxs("li", {
611
+ children: [jsx("strong", {
612
+ className: "text-foreground",
613
+ children: "By email:"
614
+ }), " write to", ' ', jsx("a", {
615
+ href: "mailto:support@yantra.app",
616
+ className: "text-primary underline",
617
+ children: "support@yantra.app"
618
+ }), ' ', "from the email address on your account."]
619
+ })]
620
+ }), jsx("p", {
621
+ className: "mb-4 text-sm text-muted-foreground",
622
+ children: "When you delete your account, we immediately remove your name, email address, phone numbers, and profile photo from it, and remove you from your workspaces and teams. We delete the rest of the data associated with your account, including your messages, files, AI conversations, and health data, within 30 days. We keep only what we must keep for legal, tax, security, or fraud-prevention reasons, as listed above. Messages and files you shared with other people, such as in a group chat or a shared workspace, may remain available to them."
623
+ }), jsxs("p", {
624
+ className: "text-sm text-muted-foreground",
625
+ children: ["You can also delete individual chats, AI conversations, files, or health data without deleting your account, or ask us to delete specific data by writing to", ' ', jsx("a", {
626
+ href: "mailto:support@yantra.app",
627
+ className: "text-primary underline",
628
+ children: "support@yantra.app"
629
+ }), "."]
282
630
  })]
283
631
  }), jsxs("section", {
284
632
  id: "third-party",
285
633
  className: "mb-10",
286
634
  children: [jsx("h2", {
287
635
  className: "mb-4 text-2xl font-semibold text-foreground",
288
- children: "4. Third Party Content and Links"
636
+ children: "6. Third Party Content and Links"
289
637
  }), jsx("p", {
290
638
  className: "mb-4 text-sm text-muted-foreground",
291
639
  children: "This Policy does not apply to the practices of third parties that we do not own or control, including any third-party websites and services that may be linked to or from the Platform. The Platform may interact with websites at your direction, and those websites are governed by their own privacy policies and terms of service. We encourage you to review the privacy policies of any websites you interact with through the Platform."
@@ -298,7 +646,7 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
298
646
  className: "mb-10",
299
647
  children: [jsx("h2", {
300
648
  className: "mb-4 text-2xl font-semibold text-foreground",
301
- children: "5. General Audience Platform"
649
+ children: "7. General Audience Platform"
302
650
  }), jsx("p", {
303
651
  className: "text-sm text-muted-foreground",
304
652
  children: "The Platform is not intended for individuals younger than the age of eighteen (18), and we request that these individuals do not use the Platform. We do not knowingly collect information from individuals younger than eighteen (18)."
@@ -308,7 +656,7 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
308
656
  className: "mb-10",
309
657
  children: [jsx("h2", {
310
658
  className: "mb-4 text-2xl font-semibold text-foreground",
311
- children: "6. How We Handle Data Security"
659
+ children: "8. How We Handle Data Security"
312
660
  }), jsx("p", {
313
661
  className: "mb-4 text-sm text-muted-foreground",
314
662
  children: "We use commercially reasonable security measures to protect against loss, misuse, and alteration of your personal information under our control, including:"
@@ -317,13 +665,18 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
317
665
  children: [jsxs("li", {
318
666
  children: [jsx("strong", {
319
667
  className: "text-foreground",
320
- children: "Encrypted Connections:"
321
- }), " All communication between the Platform and our backend services uses secure WebSocket (WSS) and HTTPS connections."]
668
+ children: "Encryption:"
669
+ }), " All communication between the Platform, including the mobile apps, and our backend services uses encrypted HTTPS and secure WebSocket (WSS) connections. Your data is stored on cloud infrastructure that encrypts data at rest."]
322
670
  }), jsxs("li", {
323
671
  children: [jsx("strong", {
324
672
  className: "text-foreground",
325
673
  children: "Token-Based Authentication:"
326
- }), " Authentication tokens are derived using HMAC-SHA256 and are scoped to specific sessions."]
674
+ }), " Access to the data in your account requires a signed token that identifies you, and your health data can be read only with a token for your own account."]
675
+ }), jsxs("li", {
676
+ children: [jsx("strong", {
677
+ className: "text-foreground",
678
+ children: "Hashed Codes:"
679
+ }), " Verification codes are stored only in hashed form."]
327
680
  }), jsxs("li", {
328
681
  children: [jsx("strong", {
329
682
  className: "text-foreground",
@@ -338,7 +691,7 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
338
691
  children: [jsx("strong", {
339
692
  className: "text-foreground",
340
693
  children: "Access Controls:"
341
- }), " Strict access controls and authentication requirements for all backend services."]
694
+ }), " Strict access controls and authentication requirements for all backend services, and limited staff access to personal data."]
342
695
  })]
343
696
  }), jsx("p", {
344
697
  className: "text-sm text-muted-foreground",
@@ -349,7 +702,7 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
349
702
  className: "mb-10",
350
703
  children: [jsx("h2", {
351
704
  className: "mb-4 text-2xl font-semibold text-foreground",
352
- children: "7. Mobile Messaging and SMS"
705
+ children: "9. Mobile Messaging and SMS"
353
706
  }), jsx("p", {
354
707
  className: "mb-4 text-muted-foreground",
355
708
  children: "If you give us a mobile number, we may send you text messages to verify that number, to deliver an invitation to an organization, and to send account or security notices. We use a third-party messaging provider to transmit these messages on our behalf."
@@ -375,7 +728,23 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
375
728
  className: "mb-10",
376
729
  children: [jsx("h2", {
377
730
  className: "mb-4 text-2xl font-semibold text-foreground",
378
- children: "8. Your Choices About the Information We Collect"
731
+ children: "10. Your Choices About the Information We Collect"
732
+ }), jsx("h3", {
733
+ className: "mb-2 mt-4 text-lg font-medium text-foreground",
734
+ children: "Mobile App Permissions"
735
+ }), jsx("p", {
736
+ className: "mb-4 text-sm text-muted-foreground",
737
+ children: "You can turn off access to contacts, the microphone, the camera, photos, Bluetooth, notifications, Health Connect, or Apple Health at any time in your device settings. Features that need that access stop working until you turn it back on."
738
+ }), jsx("h3", {
739
+ className: "mb-2 mt-4 text-lg font-medium text-foreground",
740
+ children: "Health Data"
741
+ }), jsxs("p", {
742
+ className: "mb-4 text-sm text-muted-foreground",
743
+ children: ["You can stop syncing and delete your health data at any time, as described in", ' ', jsx("a", {
744
+ href: "#health",
745
+ className: "text-primary underline",
746
+ children: "Section 4"
747
+ }), "."]
379
748
  }), jsx("h3", {
380
749
  className: "mb-2 mt-4 text-lg font-medium text-foreground",
381
750
  children: "Extension Controls"
@@ -399,18 +768,22 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
399
768
  children: "Account Deletion"
400
769
  }), jsxs("p", {
401
770
  className: "text-sm text-muted-foreground",
402
- children: ["You may request deletion of your Yantra account and associated data by contacting us at", ' ', jsx("a", {
771
+ children: ["You can delete your account in the mobile app, on the web, or by writing to", ' ', jsx("a", {
403
772
  href: "mailto:support@yantra.app",
404
773
  className: "text-primary underline",
405
774
  children: "support@yantra.app"
406
- }), "."]
775
+ }), ". See", ' ', jsx("a", {
776
+ href: "#retention",
777
+ className: "text-primary underline",
778
+ children: "Section 5"
779
+ }), ' ', "for how and what we delete."]
407
780
  })]
408
781
  }), jsxs("section", {
409
782
  id: "transfer",
410
783
  className: "mb-10",
411
784
  children: [jsx("h2", {
412
785
  className: "mb-4 text-2xl font-semibold text-foreground",
413
- children: "9. Consent to International Transfer of Your Information"
786
+ children: "11. Consent to International Transfer of Your Information"
414
787
  }), jsx("p", {
415
788
  className: "text-sm text-muted-foreground",
416
789
  children: "We are a US-based company. If you are located outside of the United States, please be aware that the information that we collect from you will be transferred to, and stored at, a destination outside of your country. By using the Platform or providing us with any information, you fully understand and unambiguously consent to this transfer to, and processing, usage, sharing, and storage of your information in the United States and other jurisdictions, which may have different or less protective privacy laws than those in your country."
@@ -420,17 +793,17 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
420
793
  className: "mb-10",
421
794
  children: [jsx("h2", {
422
795
  className: "mb-4 text-2xl font-semibold text-foreground",
423
- children: "10. Changes to This Privacy Policy"
796
+ children: "12. Changes to This Privacy Policy"
424
797
  }), jsx("p", {
425
798
  className: "text-sm text-muted-foreground",
426
- children: "To the extent allowed by applicable law, we reserve the right to change this Policy at any time without prior notice. If we make material changes to this Policy, we will revise the \"Updated and Effective\" date at the top of this Policy. We may also provide notice through the Platform or via the Chrome Web Store listing. Your continued use of the Platform following these changes constitutes acceptance of the revised Policy."
799
+ children: "To the extent allowed by applicable law, we reserve the right to change this Policy at any time without prior notice. If we make material changes to this Policy, we will revise the \"Updated and Effective\" date at the top of this Policy. We may also provide notice through the Platform, the app store listings, or the Chrome Web Store listing. Your continued use of the Platform following these changes constitutes acceptance of the revised Policy."
427
800
  })]
428
801
  }), jsxs("section", {
429
802
  id: "contact",
430
803
  className: "mb-10",
431
804
  children: [jsx("h2", {
432
805
  className: "mb-4 text-2xl font-semibold text-foreground",
433
- children: "11. Contact Us"
806
+ children: "13. Contact Us"
434
807
  }), jsxs("p", {
435
808
  className: "text-sm text-muted-foreground",
436
809
  children: ["If you have any questions, comments, or concerns regarding our Policy and/or practices, please send an email to:", ' ', jsx("a", {
@@ -447,7 +820,7 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
447
820
  className: "mb-10",
448
821
  children: [jsx("h2", {
449
822
  className: "mb-4 text-2xl font-semibold text-foreground",
450
- children: "12. Notice to California Residents"
823
+ children: "14. Notice to California Residents"
451
824
  }), jsx("p", {
452
825
  className: "text-sm text-muted-foreground",
453
826
  children: "California Civil Code Section 1798.83 permits residents of California to request certain details about how their personal information has been shared during the calendar year with third parties for those third parties' own direct marketing purposes. We do not share personal information about you with third parties for their own direct marketing purposes."
@@ -464,7 +837,7 @@ import {jsxs,jsx}from'react/jsx-runtime';import {Link}from'@remix-run/react';imp
464
837
  className: "mb-10",
465
838
  children: [jsx("h2", {
466
839
  className: "mb-4 text-2xl font-semibold text-foreground",
467
- children: "13. Notice to Nevada Residents"
840
+ children: "15. Notice to Nevada Residents"
468
841
  }), jsxs("p", {
469
842
  className: "text-sm text-muted-foreground",
470
843
  children: ["Nevada S.B. 220 provides consumers with the ability to opt out of the sale of their personal information. We do not sell your personal information as defined in S.B. 220. However, you may still submit an opt-out request, and if our practices were to change in the future, we would honor your request. If you are a Nevada resident and would like to opt out, please contact us at", ' ', jsx("a", {