Privacy Policy
Last updated: 2026-09-22
This Privacy Policy explains how pldeditor (the "Service") processes personal data in connection with your use of the Service. The individual identified below is the data controller for the purposes of the EU General Data Protection Regulation (Regulation (EU) 2016/679, "GDPR").
1. Data Controller
- Controller: Zydrunas Salcius, private individual
- Country: Singapore
- Email: z.salcius.sg@gmail.com
- Phone: +65 8365 2885
2. Information processed
The standard editor can be used without an account. pldeditor PRO requires sign-in using an email/password account or a configured Google or Facebook identity. The Service may process the following categories of data:
- Account email address, internal account identifier, creation/update timestamps, and a salted one-way password hash for local accounts. Plaintext passwords are not stored in the database.
- For social sign-in: the provider name, provider-specific user identifier, and email address. Basic profile information may be received during authentication; provider passwords are never received. Linking an additional sign-in method requires an authenticated account session, not just a matching email.
- An active browser-session identifier, password failure counts and temporary lockout expiry, and short-lived hashed request-limit keys derived from IP addresses or recovery-request email addresses. These support authentication, recovery abuse prevention, and one-session-at-a-time access, not device fingerprinting or advertising.
- Uploaded files (e.g.,
.pldor.txtfiles) and their contents. - Identifiers contained in those files or entered by you, such as Vehicle Identification Numbers (VIN), engine serial numbers, ECU serial numbers, and configuration parameters. Where these identifiers can be linked to an identifiable individual, the Service treats them as personal data.
- Selected modification options chosen during your session (e.g., VIN change, engine serial change, speed limit change, Lost ECU, etc.).
- Payment-related data handled by Stripe — see Section 6. The Service processes Stripe customer identifiers, account email addresses and metadata, Checkout session/payment identifiers, and payment status. Card numbers and CVC are not stored by the Service.
- Optional payment bypass codes you may enter (matched against a server-side allowlist) — only the entered value and the match result are processed; the codes themselves are not linked to your identity.
- Technical data such as IP address, browser type/user-agent, timestamps, request paths, error messages, and limited session identifiers.
- Acceptance and acknowledgement records, including timestamps and IP addresses associated with your acceptance of the Terms of Service, the per-transaction acknowledgements (e.g., the speed-change disclaimer), and other in-app confirmations.
- Communications sent to the contact address or phone number
3. Purposes and legal bases for processing
Your data is processed on the following GDPR Article 6 legal bases:
| Purpose | Legal basis |
|---|---|
| Account creation, sign-in, and session management | Performance of a contract (Art. 6(1)(b)) |
| Maintaining a Stripe customer record for account administration and future billing, including free accounts | Legitimate interests in account administration (Art. 6(1)(f)) |
| Receiving, processing, and returning your uploaded files | Performance of a contract (Art. 6(1)(b)) |
| Processing payments and verifying payment status | Performance of a contract (Art. 6(1)(b)) |
| Recording acceptance of Terms and per-transaction acknowledgements | Performance of a contract / legal obligation (Art. 6(1)(b), (c)) |
| Service reliability, debugging, abuse and fraud prevention | Legitimate interests (Art. 6(1)(f)) |
| Complying with legal obligations (e.g., tax, accounting, lawful requests) | Legal obligation (Art. 6(1)(c)) |
| Responding to your support inquiries | Legitimate interests (Art. 6(1)(f)) |
4. How uploaded files are used
Uploaded files are processed automatically to:
- Determine file type and validity,
- Apply the modification you selected,
- Generate the modified output file for your download,
- Verify that the corresponding payment has been completed,
- Diagnose errors if processing fails.
The contents of uploaded files are not used for any purpose unrelated to providing the requested output, except when you explicitly use the optional Pro AI assistant to analyze your open file and request a reviewed change.
5. Retention periods
Data is kept only as long as necessary for the purpose for which it was collected:
- Account identity, password hash, provider link and Stripe customer mappings: retained while the account is maintained. Account deletion can be requested using the contact details below; statutory payment-record retention may still apply.
- The current authentication session identifier is replaced on a new sign-in and cleared on logout or password reset. Old browser cookies cannot authorize further requests. Background browser checks notify open pages when their session ends.
- Request-limit buckets expire after five minutes and are eligible for deletion after a further hour by hourly maintenance while the app is running. A password lockout lasts 15 minutes. When email recovery is enabled, reset tokens have a 30-minute lifetime; only hashes are stored in the account database and successful use clears them atomically. Pending recovery email addresses are held temporarily in an in-memory queue and removed for processing or lost when the app restarts.
- Uploaded files and modified output files: stored in a temporary server folder during processing and deleted immediately after a successful download, after payment cancellation, or — at the latest — automatically removed by the background cleanup routine within 6 hours of upload.
- Session data (selected options, pending modification request, entered VIN / engine / ECU serial / speed values): held in an in-memory server-side session that expires after 30 minutes of inactivity, after which it is discarded.
- Technical/diagnostic logs (IP address, browser type, timestamps, error messages, processing events) collected via Application Insights: retained for up to 90 days for service reliability, debugging, and abuse prevention.
- Acceptance and acknowledgement records (Terms of Service acceptance and per-transaction acknowledgements) captured in logs: retained together with the diagnostic logs above (up to 90 days). For paid transactions, the corresponding acknowledgement is also evidenced by the payment record kept by Stripe.
- Payment records (transaction metadata such as amount, date, Stripe session/payment IDs): retained as required by applicable Singapore accounting and tax rules. Full card details are never stored by this Service; they are held by Stripe under its own retention rules.
- Support correspondence (e.g., emails sent to the contact address): retained for up to 12 months after the matter is resolved.
- Pro AI chats, user messages, assistant findings, historical proposal descriptions, file names/revision identifiers, model identifiers, and rolling conversation summaries are stored in our SQL database until you delete the chat or your account. Chats may contain file excerpts and identifiers discussed with the assistant. Deletion removes these records from the active database; infrastructure backups may retain copies under their configured retention policy. Billing records are retained separately. Browser storage holds only the selected chat identifier, not the transcript.
- When you ask a question, recent saved messages, the conversation summary, and requested current-file sections may be sent to OpenAI. Older messages may also be sent to generate an updated summary; this is billable AI usage. Summaries can omit details, while original messages remain viewable. OpenAI's own retention terms may apply. Temporary investigation checkpoints remain in server memory for up to 30 minutes after progress and are not durable chat records. Uploading a new file can retain the selected conversation, but historical proposals are not restored as executable edits. Proposed changes still require your approval.
6. Payments (Stripe)
When Stripe integration is configured, registration or a later sign-in creates or reuses a Stripe customer record even for a free account. The Service sends the account email address, an internal account identifier, and environment metadata to Stripe and stores the resulting customer identifier. This supports customer administration and future billing; it does not charge a card or start a paid subscription. Test and live customer mappings are kept separate.
Payments are processed by Stripe Payments Europe, Ltd. ("Stripe"). The Service does not store full payment card details. Stripe acts as an independent data controller for the payment data it collects and is subject to its own privacy policy: https://stripe.com/privacy.
7. Recipients and sub-processors
Limited data may be shared with the following categories of recipients:
- Hosting / infrastructure provider: Microsoft Azure App Service and Azure SQL Database, including storage and processing of account and authentication records.
- Google or Meta/Facebook, when the corresponding social sign-in option is used. Their authentication pages and processing are subject to their respective privacy policies.
- Payment processor: Stripe Payments Europe, Ltd. (Ireland).
- Optional Pro AI assistant provider: OpenAI processes saved conversation context, older messages for rolling summaries, and requested sections of your current file, including unsaved changes, when you submit a chat request.
- Error monitoring and diagnostic telemetry: Microsoft Azure Application Insights (part of Azure Monitor), used solely for server-side error tracking and performance diagnostics. No advertising or marketing analytics provider is used.
- Email provider used for support correspondence: Google Ireland Ltd. (Gmail), where you contact the support email address.
- Password-recovery email delivery, when enabled: Microsoft Azure Communication Services processes the recipient email address and message content, including the single-use reset link, together with delivery metadata. Replies are directed to the support Gmail address. Delivery records are subject to the provider's retention policies and configured Azure diagnostic retention.
- Authorities or third parties where required by law or to protect the data controller's legal rights.
8. International data transfers
The primary processing of uploaded files and diagnostic telemetry takes place inside the European Economic Area (EEA), in the Azure West Europe region. However, some service providers (including Stripe and Microsoft) may process limited data outside the EEA, including in the United States — for example for support, administration, or sub-processor operations. Where this happens, transfers are protected by appropriate safeguards under GDPR Chapter V, such as the European Commission's Standard Contractual Clauses (SCCs) and, where applicable, the EU–US Data Privacy Framework.
9. Security
The Service applies reasonable technical and organisational measures to protect uploaded files and related data during transmission and processing, including:
- encryption in transit (HTTPS/TLS) with HTTP Strict Transport Security (HSTS) enforced in production,
- storage of uploaded and generated files only in a temporary server folder, with automatic deletion as described in Section 5,
- session cookies marked HttpOnly and configured as essential, with anti-forgery (CSRF) protection on form submissions,
- access controls on the hosting environment and least-privilege administrative access,
- no storage of full payment card data on this Service — card data is handled exclusively by Stripe.
However, no internet-based service can guarantee absolute security.
10. Your privacy rights
Where the GDPR applies, you have the right to:
- Access the personal data held about you (Art. 15),
- Rectify inaccurate data (Art. 16),
- Erase your data (Art. 17),
- Restrict processing (Art. 18),
- Data portability (Art. 20),
- Object to processing based on legitimate interests (Art. 21),
- Withdraw consent at any time where processing is based on consent (Art. 7),
- Lodge a complaint with a competent data protection authority. In Singapore, this is the Personal Data Protection Commission (PDPC) — https://www.pdpc.gov.sg. Where the GDPR applies, you may also contact the EU supervisory authority in your place of residence, place of work, or place of the alleged infringement.
To exercise these rights, contact the data controller at z.salcius.sg@gmail.com. Where the GDPR applies, requests will receive a response within one month, as required by Art. 12(3) GDPR; otherwise, applicable legal response deadlines apply.
11. Your responsibility for uploaded content
You must not upload files unless you have the legal right to use and modify them. If your files contain personal data, vehicle identifiers, equipment identifiers, or other sensitive information, you confirm that you are authorised to submit that data for processing.
12. Cookies and tracking
Application warnings and errors are also stored in a restricted administrator-only SQL diagnostic archive, retained for 30 days by default. Entries may include timestamps, source categories, messages, exception details, trace IDs and server-instance identifiers. Common credentials and URL query strings are redacted before storage; diagnostics should not contain uploaded file contents or credentials.
The Service uses essential authentication, session, and anti-forgery cookies. The application does not inject browser analytics or advertising scripts. Google, Facebook, and Stripe may use their own cookies on their own pages when you use those services.
Specifically:
- Authentication cookie — encrypted and marked Secure and HttpOnly, with SameSite=Lax. The sign-in ticket has an eight-hour sliding lifetime; activity, including session checks, can renew it. Cookies are issued as browser-session cookies, though browser session restoration behavior varies. A newer sign-in invalidates the older session on subsequent server requests.
- External sign-in cookies — a temporary external identity ticket lasts ten minutes without sliding renewal and is cleared after callback processing. Provider correlation cookies protect the social sign-in handshake.
- Session cookie (set by this Service) — used to keep selected options, pending modification requests, and acceptance state during a visit. Marked Secure and HttpOnly and treated as essential. Server-side session data expires after 30 minutes of inactivity; the cookie is a browser-session cookie, subject to browser session restoration behavior.
- Anti-forgery cookie / token (set by this Service) — used to protect form submissions against cross-site request forgery (CSRF). Strictly necessary.
- Registration protection — a Secure, HttpOnly browser cookie contains a protected random identifier and lasts up to 180 days. A hashed server-side association with an account ID is retained for up to 180 days, including after account deletion, to flag potential repeat registrations for human review. It is not hardware fingerprinting and does not prove that users of a shared browser are the same person. New accounts require email verification; flagged accounts cannot use Pro until approved. Contact support to dispute a review.
- Registration limits — registration attempts share a limit of two per IP address per seven-day window. A hashed IP-based key and attempt count are stored until the window expires and cleanup runs. Users sharing a connection share this allowance; ordinary sign-ins do not consume it.
- Stripe cookies — when you proceed to payment you are redirected to Stripe Checkout (hosted by Stripe). Stripe sets its own cookies on its own domain for payment processing and fraud prevention, governed by Stripe's privacy policy linked in Section 6.
Server-side diagnostic telemetry (Application Insights) is used in this Service without the optional client-side JavaScript snippet, so it does not set browser cookies on your device.
13. Children
The Service is not directed at children under 16 and does not knowingly collect their personal data.
14. Changes to this Policy
This Privacy Policy may be updated from time to time. The "Last updated" date at the top reflects the most recent revision. Material changes will be communicated through the Service.
15. Contact
For privacy, data protection, or file handling questions, contact:
- Email: z.salcius.sg@gmail.com
- Phone: +65 8365 2885 (support in English)
16. Facebook Login data deletion instructions
If you signed in using Facebook Login and want your associated personal data deleted, send a request to z.salcius.sg@gmail.com with the subject line "Facebook Data Deletion Request". Please include the email address used for Facebook Login and any details needed to identify your request.
After verification, personal data linked to the Facebook identity will be deleted from the Service's records unless retention is required by law (for example, payment/accounting obligations). Completion will be confirmed by email. Never include passwords, authentication codes, or reset links in a deletion request.