PRIVACY POLICY
Your individual answers stay on your device.
Taking the assessment or Party Match requires no account and does not upload individual answers. If you create or join a room, buy a report, or use another server-backed feature, we process the minimum data needed to deliver it.
Assessment responses and saved sessions
Your assessment answers are processed in your browser. If you leave a test in progress, the site may save the session in your browser's local storage so that you can resume it on the same device. This data is not sent to our server and is removed when you finish or restart the assessment.
Soul Scenario, Daily Choice, and Party Match's individual game choices are also processed and stored only in your browser. Their results are entertainment signals, not the 66-question assessment. Battle Style and Soul Trial read a locally saved game or full result without uploading it. Only a resulting seven-number game summary is sent if you voluntarily create or join a Party Match room.
Shared results
After result access is unlocked, the standard share text uses the matching language homepage URL and includes the final Soul and seven percentages in the copied text itself. The share image is generated locally in your browser, and its QR code opens only that language homepage. Neither format includes individual answers, a user account, or a server-side result record.
Free self-reflection questionnaires
The Big Five, love language, emotional habits, and attachment questionnaires process their answers and scores in your browser. When browser storage is available, each saves its progress, responses, and completion state under its own local key so you can resume on the same device. A fresh quiz replaces that test's locally saved answers. Clearing this site's browser storage removes them. Neither test requires an email, creates a server-side archive, or uploads individual answers. Shared images and copied summaries contain the derived dimension scores and the test address. The image QR code opens that test with share-attribution parameters; it contains no answers or result scores. Usage events record the test name, progress count, completion, and sharing method, without answers or result scores. The questionnaire area is masked in Clarity.
Paid reports and result summaries
We do not create a server-side result record while you only complete the assessment in your browser. When the result page or a Soul Arcade result prompt requests available access options, our server temporarily processes the seven final percentages in a POST request body to match an existing entitlement, Soul Match room, or signed offer; they are not placed in the request URL. We store the seven percentages and derived result keys only when you begin a paid checkout or create a Soul Match room. Opening a Soul Cache stores only a one-way hash of the score summary with the quote details described below. We also use the country code supplied by Cloudflare to select the applicable pricing and payment option and store the country code, zone, pricing version, result-access cohort, and non-personal checkout interface metadata where needed for delivery, support, conversion measurement, and audit. We never upload the 66 individual answers. An unpaid checkout snapshot may be deleted after a short operational period; a paid or unlocked result is retained while needed to deliver, restore, support, audit, or revoke access.
PayPal processes checkout and may provide us with an order ID, capture ID, payer email, currency, gross amount, PayPal fee, net amount, receivable amount, and exchange-rate information. After payment, we use the PayPal payer email for private report delivery and recovery when it is available. If PayPal does not provide a usable email, the paid report page asks you to add one once. We also use payment information for fulfillment, reconciliation, fraud and dispute handling, and financial records. PayPal handles payment credentials under its own privacy practices; Soul Virtues does not receive your card or bank account number.
For visitors in mainland China, we may offer a manual WeChat transfer option. Before displaying the transfer instructions, we store the report email, selected product, CNY amount, random non-sequential payment-note code, and an expiring order identifier. If you submit the transfer for review, we may also store an optional WeChat display name and submission and review timestamps. An administrator protected by Cloudflare Access compares the note, amount, and receipt in WeChat before approving or rejecting the order. The site does not receive your WeChat credentials, funding-account details, contact list, or other WeChat account data. Report access is not granted from the browser's payment claim; it begins only after manual approval.
Soul Cache offer cookie
If you choose to open a Soul Cache, the server selects a promotional tier using cryptographic randomness that is independent of your virtue scores and purchase behavior. We store the tier, quoted prices, language, pricing-zone version, one-way score-summary hash, and expiry for up to 90 days so clearing a cookie or switching between recent results cannot reroll the same quote. A signed HttpOnly same-site cookie keeps a bounded list of recent offer identifiers and hashes so the same browser can restore them. Neither the record nor cookie contains the 66 individual answers.
Invitations, Soul Match, Party Match, and referral unlocks
If you create a Soul Match or Party Match invitation, we upload your seven final percentages or seven-number game summary, derive the leading signal, and issue a random invitation code. The public URL does not expose your scores or individual answers. The same invitation can be sent to multiple people. We store anonymous visit identifiers, completion times, and the seven-score summaries voluntarily submitted by people who complete the comparison for up to 90 days.
Before a visitor uses a saved result, retakes the assessment, or plays the ten-choice game, the invitation screen explains what will be shared. Soul Match can show the seven percentages, primary virtue, completion entry, and calculated resonance. Party Match uses the seven-number summary to show roles, color coverage, formation, and a shared trial without presenting a quick result as the full assessment. The inviter never receives individual answers, email address, paid report, or browser identifier. Inviter access to the room is protected by a signed HttpOnly owner cookie; other visitors cannot list the room's results.
Standalone Party Match rooms do not unlock a paid report or create a referral discount. Where enabled, the same Soul Match room counts eligible completed assessments toward the displayed unlock goal. Partial progress may apply a milestone discount to eligible report prices; reaching the goal unlocks the room owner's standard report. The invited visitor does not inherit that standard entitlement and must choose their own access path. We store the Cloudflare-supplied country code and pricing-zone snapshot needed to calculate and audit these benefits. Signed browser cookies, one-completion-per-browser rules, self-referral checks, and a minimum completion time help limit abuse. Invitation events sent to analytics contain no invitation code, answers, scores, or report content.
AI personalized reports
When you begin AI checkout, we store the seven-score summary, result keys, language, and any optional focus needed to fulfill that specific purchase. After PayPal confirms payment or an administrator confirms a manual WeChat transfer, the report is generated automatically through OpenRouter and the configured model provider; a legacy direct OpenAI connection may be used if OpenRouter is not configured. Provider data collection is disabled in the request where the routing service supports that control.
The optional focus is limited to 300 characters; do not enter sensitive personal, health, financial, or identifying information. We encrypt it while checkout or generation is pending, remove it after completion or fallback, and expire an unpaid pending copy after a short operational period. The generated report and minimal model, version, status, and token-usage metadata may be stored so you can retrieve the purchase and we can operate the service. When we provide an included quality upgrade, the previous generated report may be archived for rollback and the existing report may be processed as context to preserve useful continuity; the original optional focus is not retained or reused after fulfillment. Review OpenRouter's privacy policy before using the optional AI feature.
For a paid handwriting AI interpretation, we store the 18 selected form codes, their game dimensions, the applicable independent handwriting-AI price, and order metadata. Optional age range, writing hand, writing context, interpretation focus, and short note may be skipped. If supplied, that context is allowlisted and encrypted while generation is pending. We do not receive a handwriting photo.
Optional Soul Profile
If you choose to save a result to a Soul Profile, we store its seven final scores, language, save time, a deduplication fingerprint, and a one-way lookup hash of your email. After verification, we also retain your email address to identify the profile and deliver any optional updates you have requested. We do not archive the 66 individual answers. A requested private email link expires after one hour and is consumed only when you confirm it. Unconfirmed result summaries expire with the link. Successful verification sets a signed HttpOnly profile session cookie for up to 30 days so you can view your history on that browser. You can sign out of the profile at any time.
Your profile also lists available paid Soul reports whose delivery email matches the verified address. Opening one checks its current access before restoring it; saving a free summary does not unlock a paid report. Previously unsaved browser-only results cannot be recovered from another device. Profile access emails are transactional. The optional box for occasional English-language emails about new tests and guides is selected by default. You can uncheck it before requesting your private link and still save your result. This subscription takes effect only after email verification; we record the submitted choice, consent version, and time. Your signed-in profile shows your saved preference. You can turn updates off there or use the unsubscribe address in the email. Unsubscribing does not affect saved results, paid reports, or transactional access emails. Email requests are limited using short-lived email hashes and hourly hashed network identifiers. Expired request records are removed during subsequent requests. Saved summaries remain until you request deletion through our contact page; paid records follow the existing order-retention policy.
Transactional email and recovery
Before opening PayPal, you may enter a report email or choose to use the payer email returned by PayPal. A manual WeChat transfer always requires a report email before its order is created. An email entered during PayPal checkout is used for private delivery and recovery and, if that checkout is interrupted, one scheduled reminder after approximately 20 minutes. Successful payment or manual transfer approval sends the private, single-use report link. If you choose the PayPal email option, we cannot send a reminder before PayPal provides that address. If PayPal does not return a usable address, the unlocked report asks you to add one once. Soul Match rooms can be created without an email and are restored in the same browser through a signed owner cookie. New Soul Match invitations are for free comparisons and do not unlock paid reports. Legacy unlock-enabled rooms may have an invitation-progress email. After the first valid completion, if progress remains unchanged for approximately two hours, it may receive at most one message showing the current milestone price. A new completion before delivery reschedules it, and reaching the goal cancels it. Emails do not contain the full report.
Opening a secure management or report link verifies the address. You may later use that email to request another recovery link. Once an email has been stored for a result—whether supplied by PayPal or added after payment—it cannot be replaced through the report interface. We store the address, a one-way lookup hash, verification time, and delivery timestamps while needed to provide order, referral, report, and support access.
These emails are limited transactional messages and do not enroll you in ongoing marketing. They may include a one-time notice when an already purchased report receives a substantial included quality upgrade. An interrupted-checkout reminder may restate the regular price and the Soul Cache price already attached to that result, but it does not create an additional discount. An invitation-progress message states the milestone price already earned by valid completions and links back to that result; it does not create a new recurring campaign. Resend processes and schedules these messages; we cancel a pending message when its cancellation condition is met. Recovery requests return the same response whether or not an address exists, helping prevent account discovery.
Website analytics
Where detailed analytics is enabled, we temporarily remember the first recorded entry in your current browser session and attach its source, medium, campaign label, referring domain, landing-page path and timestamp to new orders. This helps us understand which channels lead to purchases. We do not store full referring URLs, landing-page query strings, invitation codes or recovery tokens in this record. Missing sources remain unknown. The browser record expires after 30 minutes of inactivity or when you turn off detailed analytics; order records follow the report and order retention described above.
We use Google Analytics, Pageview, and Microsoft Clarity to understand general website activity, such as pages visited, approximate location, device and browser information, clicks, scrolling, and how visitors interact with the site. Clarity may provide heatmaps and session playback. Assessment questions, responses, payment areas, and report areas are marked for masking in Clarity. Where detailed analytics is enabled, assessment events may include a random anonymous per-attempt identifier and 10-question progress milestones so starts, resumptions, completion, and result viewing can be measured without sending question text or selected answers. The Story RPG Finder may record only the final recommended game category, official-page click, and share event; its six individual choices are not sent. The identifier is created in the browser for one assessment attempt and is not a user account. Purchase analytics may include the product type, actual amount, currency, language, country pricing zone and version, offer/content version, and transaction ID, but not the order's raw country code. We do not intentionally send answers, result scores, payer information, AI focus, report text, or recovery tokens as analytics properties.
Pageview is loaded by default for basic aggregate traffic measurement. Its current Plausible-compatible client does not set analytics cookies or persistent visitor identifiers. It sends the page URL, referring page, site domain, and event name to the configured Pageview service. You can disable or re-enable this basic measurement below.
You can manage or delete cookies through your browser settings and can install Google's Analytics opt-out browser add-on.
Error monitoring
We use Sentry to diagnose software errors. When an error occurs, Sentry may receive the error message and stack trace, site route without its query string, browser and device information, release version, assessment stage, language, and question number. We do not send question text, selected answers, result scores, payer information, AI focus or report text, recovery tokens, click text, console logs, or direct personal identifiers to Sentry. A random session-only diagnostic identifier may be used to connect an error with the corresponding masked Clarity session.
Learn more in Sentry's privacy policy.
Consent choices in Europe
For visitors in the European Economic Area, the United Kingdom, and Switzerland, we default Google Analytics and advertising storage to denied. We use Cloudflare's same-site trace endpoint only to read a coarse two-letter country code and decide whether to display the regional detailed-analytics choice; we do not retain the endpoint's IP output. Your choice is stored in your browser as a necessary preference and can be changed below.
Choosing detailed analytics permits Google Analytics storage and loads Microsoft Clarity. Basic cookieless Pageview measurement is independent and has its own opt-out below. Advertising storage, advertising user data, and advertising personalization remain denied. If we enable Google AdSense, we will separately use Google's Privacy & messaging consent tool or another Google-certified consent management platform for advertising choices.
Advertising services, if enabled
We do not currently display advertising. We publish an AdSense account-verification meta tag and an ads.txt seller record, but these identifiers do not create an ad unit. The AdSense loading script remains disabled until advertising is intentionally enabled and a Google-certified consent platform is confirmed ready.
If we enable Google AdSense, Google and other advertising partners may collect, share, and use information such as cookies, web beacons, IP addresses, and other identifiers to deliver, measure, limit, or personalize ads where permitted by your choices and applicable law. Third parties may place and read cookies in your browser or use web beacons and IP addresses to collect information when ads are served. Ads will be excluded from assessment, result, payment, referral, administration, and private-report routes.
Learn more about how Google uses data when you use partner sites or apps. We will update the available consent controls before enabling advertising.
Children and younger users
SoulVirtues.com is not directed to children under 13. If you are below the age at which you can provide valid consent or make a digital purchase where you live, do not enter an email address, optional AI focus, or payment information without a parent or guardian's involvement. The site does not knowingly create advertising audiences from children's activity.
Third-party services and links
Payment processing by PayPal or WeChat Pay, AI routing by OpenRouter and its selected model provider, legacy AI generation by OpenAI, transactional email delivery by Resend, and links to third-party websites including GitHub and IPIP are governed by those providers' own privacy practices. We encourage you to review them before providing information.
Contact
For privacy questions, open an issue through our GitHub feedback page.