Privacy Policy
1. Data Protection at a Glance
General Information
The following information provides a simple overview of what happens to your personal data when you visit this website or use our apps and services (PDF Content Search for iOS and macOS, PDF.Scanner. for Android, Inkra for macOS and iPadOS, and Solarpegel for web, iPhone, iPad and Android). Personal data is any data that can personally identify you. For detailed information on data protection, please refer to our complete privacy policy listed below this text.
Data Collection on This Website
Who is responsible for data collection on this website?
Data processing on this website is carried out by the website operator. You can find the contact details in the section “Information about the Responsible Party” in this privacy policy.
How do we collect your data?
Your data is collected when you provide it to us. This could, for example, be data you send us via email or telephone. Other data is automatically collected by our IT systems when you visit the website. This is primarily technical data (e.g., internet browser, operating system, or time of page access). This data is collected automatically as soon as you enter this website.
What do we use your data for?
Some of the data is collected to ensure the proper functioning of the website. Other data may be used to analyze your user behavior.
What rights do you have regarding your data?
You always have the right to receive information about the origin, recipient, and purpose of your stored personal data free of charge. You also have the right to request the correction or deletion of this data. If you have given consent to data processing, you can revoke this consent at any time for the future. You also have the right to request the restriction of the processing of your personal data under certain circumstances. Furthermore, you have the right to lodge a complaint with the competent supervisory authority.
2. Hosting
We host the content of our website with the following provider:
External Hosting
This website is hosted externally. The personal data collected on this website is stored on the servers of the host(s). This may include IP addresses, contact requests, meta and communication data, contract data, contact details, names, website accesses, and other data generated via a website.
External hosting is carried out for the purpose of fulfilling contracts with our potential and existing customers (Art. 6 para. 1 lit. b GDPR) and in the interest of secure, fast, and efficient provision of our online offering by a professional provider (Art. 6 para. 1 lit. f GDPR).
3. General Information and Mandatory Information
Data Protection
The operators of these pages take the protection of your personal data very seriously. We treat your personal data confidentially and in accordance with statutory data protection regulations and this privacy policy.
When you use this website, various personal data is collected. Personal data is data with which you can be personally identified. This privacy policy explains what data we collect and what we use it for. It also explains how and for what purpose this happens.
We would like to point out that data transmission over the Internet (e.g., when communicating by email) can have security gaps. Complete protection of data against access by third parties is not possible.
Information about the Responsible Party
The responsible party for data processing on this website is:
Jürgen Koller Software GmbH
Wilhelmstr. 5
74072 Heilbronn
Germany
Phone: +49 7131 9244166
Email: datenschutz@juergenkoller.software
The responsible party is the natural or legal person who alone or jointly with others decides on the purposes and means of processing personal data (e.g., names, email addresses, etc.).
Storage Duration
Unless a more specific storage period has been specified within this privacy policy, your personal data will remain with us until the purpose for data processing no longer applies. If you assert a legitimate request for deletion or revoke consent to data processing, your data will be deleted unless we have other legally permissible reasons for storing your personal data (e.g., tax or commercial retention periods); in the latter case, deletion will take place after these reasons cease to apply.
Retention Periods and Backup Storage
Certain personal data is subject to statutory retention obligations that prevent immediate complete deletion. In particular, the following retention periods apply under German law:
- 10 years: Tax and accounting-relevant data such as invoices, accounting records, and annual financial statements (§ 147 AO, § 257 HGB)
- 6 years: Commercial correspondence such as order confirmations and business letters (§ 257 HGB)
If you request deletion of your data (e.g., by deleting your customer account), your data will be removed immediately from all active systems. Data subject to statutory retention obligations will be stored in secured, immutable backups (WORM storage). This data is locked and no longer accessible for operational purposes. After the respective statutory retention period expires, final deletion will occur automatically.
All other personal data not subject to statutory retention obligations will be deleted immediately and completely upon a deletion request.
Legal basis: Art. 6 para. 1 lit. c GDPR (compliance with a legal obligation) in conjunction with § 147 AO, § 257 HGB.
Revocation of Your Consent to Data Processing
Many data processing operations are only possible with your express consent. You can revoke consent you have already given at any time. The legality of the data processing carried out until the revocation remains unaffected by the revocation.
Right to Object to Data Collection in Special Cases and to Direct Advertising (Art. 21 GDPR)
IF DATA PROCESSING IS BASED ON ART. 6 PARA. 1 LIT. E OR F GDPR, YOU HAVE THE RIGHT TO OBJECT TO THE PROCESSING OF YOUR PERSONAL DATA AT ANY TIME FOR REASONS ARISING FROM YOUR PARTICULAR SITUATION; THIS ALSO APPLIES TO PROFILING BASED ON THESE PROVISIONS. THE RESPECTIVE LEGAL BASIS ON WHICH PROCESSING IS BASED CAN BE FOUND IN THIS PRIVACY POLICY. IF YOU OBJECT, WE WILL NO LONGER PROCESS YOUR PERSONAL DATA UNLESS WE CAN DEMONSTRATE COMPELLING LEGITIMATE GROUNDS FOR THE PROCESSING THAT OVERRIDE YOUR INTERESTS, RIGHTS, AND FREEDOMS, OR THE PROCESSING SERVES TO ASSERT, EXERCISE, OR DEFEND LEGAL CLAIMS (OBJECTION UNDER ART. 21 PARA. 1 GDPR).
IF YOUR PERSONAL DATA IS PROCESSED FOR DIRECT ADVERTISING PURPOSES, YOU HAVE THE RIGHT TO OBJECT AT ANY TIME TO THE PROCESSING OF PERSONAL DATA CONCERNING YOU FOR THE PURPOSE OF SUCH ADVERTISING; THIS ALSO APPLIES TO PROFILING INSOFAR AS IT IS RELATED TO SUCH DIRECT ADVERTISING. IF YOU OBJECT, YOUR PERSONAL DATA WILL SUBSEQUENTLY NO LONGER BE USED FOR DIRECT ADVERTISING PURPOSES (OBJECTION UNDER ART. 21 PARA. 2 GDPR).
Right to Lodge a Complaint with the Competent Supervisory Authority
In the event of violations of the GDPR, data subjects have the right to lodge a complaint with a supervisory authority, particularly in the member state of their habitual residence, place of work, or place of the alleged violation. The right to lodge a complaint exists without prejudice to other administrative or judicial remedies.
Right to Data Portability
You have the right to have data that we process automatically based on your consent or in fulfillment of a contract handed over to you or to a third party in a common, machine-readable format. If you request the direct transfer of the data to another responsible party, this will only be done to the extent that it is technically feasible.
Information, Deletion, and Correction
Within the framework of the applicable legal provisions, you have the right at any time to free information about your stored personal data, its origin and recipient, and the purpose of data processing and, if applicable, a right to correction or deletion of this data. For this purpose, as well as for further questions on the subject of personal data, you can contact us at any time.
Right to Restriction of Processing
You have the right to request the restriction of the processing of your personal data. For this, you can contact us at any time. The right to restriction of processing exists in the following cases:
- If you dispute the accuracy of your personal data stored by us, we usually need time to verify this. For the duration of the verification, you have the right to request the restriction of the processing of your personal data.
- If the processing of your personal data happened/is happening unlawfully, you can request the restriction of data processing instead of deletion.
- If we no longer need your personal data, but you need it to exercise, defend, or assert legal claims, you have the right to request restriction of the processing of your personal data instead of deletion.
- If you have lodged an objection pursuant to Art. 21 para. 1 GDPR, a balancing of your and our interests must be carried out. As long as it has not yet been determined whose interests prevail, you have the right to request the restriction of the processing of your personal data.
4. Data Collection on This Website
Cookies
Our website uses so-called “cookies”. Cookies are small data packets and do not cause any damage to your device. They are stored on your device either temporarily for the duration of a session (session cookies) or permanently (permanent cookies). Session cookies are automatically deleted after your visit. Permanent cookies remain stored on your device until you delete them yourself or until they are automatically deleted by your web browser.
Cookies can be from us (first-party cookies) or from third-party companies (so-called third-party cookies). Third-party cookies enable the integration of certain services from third-party companies within websites (e.g., cookies for processing payment services).
Cookies have various functions. Many cookies are technically necessary, as certain website functions would not work without them (e.g., the shopping cart function or the display of videos). Other cookies can be used to analyze user behavior or for advertising purposes.
Cookies that are necessary to carry out the electronic communication process, to provide certain functions you have requested (e.g., for the shopping cart function), or to optimize the website (e.g., cookies for measuring web audience) (necessary cookies) are stored on the basis of Art. 6 para. 1 lit. f GDPR, unless another legal basis is specified. The website operator has a legitimate interest in storing necessary cookies for the technically error-free and optimized provision of its services. If consent to the storage of cookies and comparable recognition technologies has been requested, processing is carried out exclusively on the basis of this consent (Art. 6 para. 1 lit. a GDPR and § 25 para. 1 TTDSG); consent can be revoked at any time.
You can set your browser so that you are informed about the setting of cookies and only allow cookies in individual cases, exclude the acceptance of cookies for certain cases or in general, and activate the automatic deletion of cookies when closing the browser. If cookies are deactivated, the functionality of this website may be limited.
You can find out which cookies and services are used on this website from this privacy policy.
For the cookies and browser storage used by the AI product assistant, see the section AI Product Assistant.
Consent Management (Klaro!)
To manage your consent to optional services we use “Klaro!”, an open-source consent manager. Klaro! runs entirely on our own server; nothing is loaded from external servers and nothing is transmitted to the vendor or any other third party.
So that we do not have to ask again on every page you visit, Klaro! stores your decision in a cookie named klaroConsent. The cookie contains only which services you accepted or declined — no identifier that identifies you personally. It applies to the domain .juergenkoller.software including its subdomains (including our store) and is deleted after 365 days.
No optional service is loaded without your consent (opt-in). You can change or withdraw your decision at any time via the “Cookie settings” link in the footer; if you delete the cookie in your browser, the dialogue appears again on your next visit.
The legal basis for storing this decision is § 25 para. 2 no. 2 TDDDG — the cookie is required in order to provide the selection you requested — and our obligation to be able to demonstrate consent (Art. 7 para. 1 in conjunction with Art. 6 para. 1 lit. c GDPR).
Light and Dark Appearance
This website, our store, our free web tools QR-Code, Clipboard, DocPort, Text Cleaner, Games and Solarpegel as well as your customer account (account.juergenkoller.software) and the web version of PlainTime are shown in a light appearance by default. If your browser reports that your device is set to a dark appearance, we show the pages in dark. Your browser reads this setting itself; it is not transmitted to us.
You can choose the appearance yourself using the switch. If your choice differs from your device setting, the respective site stores it in your browser’s local storage (entry jks-theme with the value “light” or “dark”) so that it is kept on further pages. The entry contains no identifier and is not transmitted to us or to third parties. It is deleted as soon as your choice matches your device setting again, or when you delete the website data in your browser.
Your browser keeps this storage separately for each of our addresses. So that the appearance stays the same when you move between our services, we pass it along when you click a link to another of our services: the address then carries the addition theme=light or theme=dark. The target page applies the appearance and removes the addition from the address bar right away. Like any part of a requested address, the addition may briefly appear in the server log files and in the raw log used to count cross-links (see below). It describes only the appearance, not you.
The legal basis for this storage is § 25 para. 2 no. 2 TDDDG: it is strictly necessary to provide the appearance you have explicitly chosen.
Newsletter
You can subscribe to our newsletter on this website and in our store; a menu item in our apps can lead to the sign-up page of this website. It covers new software releases, blog articles and topics related to our products and is published irregularly, typically every two to four months.
What we process: Subscribing requires your email address and your consent. In addition, we store details that we need in order to document the subscription and to prevent abuse:
- your email address
- the language version of the page you subscribed from (German or English), so that you receive the newsletter in the right language
- the place you subscribed from (for example “home page”, “blog”, a product page or the order confirmation in the store, or the menu item “Subscribe to news” in one of our apps), without any further details about your visit. We also evaluate this information in aggregate to see which places lead to sign-ups; we do not look at individual persons in doing so
- the timestamps of subscription, confirmation and, where applicable, unsubscription
- a checksum of your IP address: we do not store the IP address itself. We combine it with a secret value and derive a shortened checksum (SHA-256, 16 characters). This lets us detect whether the same connection subscribes unusually often; the IP address cannot be reconstructed from it.
- the delivery status of your address: if messages keep bouncing, we record this and stop sending to that address.
Confirmation (double opt-in): After subscribing you receive an email containing a confirmation link. We only add you to the distribution list once you click it. This prevents anyone from entering someone else’s address. If you do not confirm, we delete the subscription entirely no later than 30 days after the most recent subscription attempt.
No open or click tracking: Our newsletters contain no tracking pixels and load no content from external servers. We measure neither whether you opened a message nor which links you clicked. Where links in the newsletter contain campaign identifiers, the section Campaign Identifiers in Links applies.
Recipients: We send the newsletter through our own service (newsletter.juergenkoller.software), running on our own infrastructure in Germany. The actual mail delivery uses the mail servers of our hosting provider Strato. We do not use an external newsletter provider, and your address is not passed on to third parties for advertising purposes.
Legal basis: Processing your email address and sending the newsletter are based on your consent (Art. 6 para. 1 lit. a GDPR; for the advertising contact additionally § 7 para. 2 no. 2 UWG). Storing the IP checksum and the delivery status is based on our legitimate interest in abuse-free and functioning distribution, the aggregated evaluation of the sign-up place on our legitimate interest in recognising which of our offers attract interest (in each case Art. 6 para. 1 lit. f GDPR).
Withdrawal and storage period: You can unsubscribe at any time using the unsubscribe link at the end of every message, or informally at datenschutz@juergenkoller.software. Withdrawal takes effect for the future; the lawfulness of processing carried out until then remains unaffected. After you unsubscribe, we keep your address together with the unsubscription record on a suppression list: we must be able to demonstrate that and when you unsubscribed (Art. 7 para. 1 GDPR), and this prevents your address from being contacted again after an accidental re-subscription or an import. Only the address, the unsubscription time and the status are retained (Art. 6 para. 1 lit. f GDPR). You may additionally request full erasure at any time.
Cloudflare Turnstile (Spam Protection of the Newsletter Form)
Our newsletter subscription form is protected by “Turnstile”, a bot detection service provided by Cloudflare, Inc., 101 Townsend St., San Francisco, CA 94107, USA. Turnstile checks in the background whether a subscription comes from a human or from a program; without this protection, the form would be abused to enter other people’s addresses in bulk.
When the service is loaded: The Turnstile script is not loaded when the page opens, but only when you engage with the subscription form: when you click a field, move into it with the keyboard or hover over the form with the mouse. If you do not use the form, no connection to Cloudflare is established.
What data is processed: According to Cloudflare, it processes in particular your IP address, a technical fingerprint of the encrypted connection (TLS), your browser identifier (user agent) and the identifier of our website, and derives a verification token from this. When you submit the form, our server sends that token together with your IP address to Cloudflare for validation. We receive only the result (“passed” or “not passed”). For the check on our website, Cloudflare processes the data on our behalf; to improve its bot detection, Cloudflare states that it processes the data as a controller in its own right on the basis of legitimate interests.
Legal basis: our legitimate interest in protecting our systems and third parties’ email addresses against automated abuse (Art. 6 para. 1 lit. f GDPR). According to Cloudflare, the signals Turnstile collects in the browser are strictly necessary for detecting bots; as the service is only loaded in response to your interaction with the form, it directly serves the subscription you requested (§ 25 para. 2 no. 2 TDDDG).
Transfer to the USA: According to its own statement, Cloudflare, Inc. is certified under the EU-U.S. Data Privacy Framework (adequacy decision under Art. 45 GDPR); in addition, Cloudflare provides EU Standard Contractual Clauses. Further information: Cloudflare Turnstile privacy addendum · Cloudflare privacy policy
AI Product Assistant
At store.juergenkoller.software, at cleantext.juergenkoller.software, and on the home page and contact page of juergenkoller.software, you can ask a chat assistant questions about our apps, pricing and the user manuals. The assistant is labelled as an AI system; you are not talking to a person. It only becomes active when you open the chat window.
Data transmitted: your messages, the history of the current conversation and the page on which you opened the assistant. To generate the answer, this information is transmitted to OpenAI, Inc. (San Francisco, USA), together with the manual and product information the assistant draws on to answer.
Not collected: name, e-mail address, telephone number or any other contact details. The assistant does not ask for them. There is no link to your customer account.
Purpose and legal basis: answering questions about our products and how to use them. Processing is based on our legitimate interest in providing prospective and existing customers with information about our products (Art. 6 para. 1 lit. f GDPR). Using the assistant is voluntary.
Retention: on our server the conversation is held in memory for the duration of the session only and is not stored permanently. When you open the chat window we set a cookie with a random identifier to assign the session; it expires after 7 days and is required for the conversation you requested to work (§ 25 para. 2 no. 2 TDDDG). According to OpenAI, data transmitted via its application programming interface is retained for up to 30 days to detect abuse, unless longer retention is required by law, and is not used to train its models.
Storage in your browser: with your consent the assistant stores the conversation as well as the position and size of the chat window in your browser’s local storage, so that the conversation is still there on a later visit (Art. 6 para. 1 lit. a GDPR, § 25 para. 1 TDDDG). You can give or withdraw this consent at any time in the cookie settings (service “AI assistant”). Without consent the assistant works without restriction; the conversation is then lost when you leave the page.
Usage statistics: we count how often the assistant is used and whether it was able to answer questions from the manuals. These statistics contain no conversation content, no identifiers and no IP addresses, and do not allow conclusions about individual persons.
Please note: do not enter sensitive personal data in the chat. What you write is transmitted to OpenAI to generate the answer. For transfers to the USA, see the section Data Transfer to Third Countries.
Embedded YouTube videos
In some blog articles we show videos from our YouTube channel. When you open the article, nothing is loaded from YouTube: in place of the video there is a preview image, stored on our own server, with a “Play video” button. Only when you click it does your browser load the video in YouTube’s “privacy-enhanced mode” (address youtube-nocookie.com) from Google’s servers. Google then receives in particular your IP address, device and browser information, the address of the page in which the video is embedded, and your interaction with the video; if you are signed in to Google, Google can link this to your account. YouTube may use cookies or similar technologies in your browser. What Google does with this data is decided by Google under its own responsibility. From Google we only receive the aggregated statistics for our channel (see “Social Media Presences”). Each article also provides a link to watch the video directly on YouTube.
Legal basis: your consent, which you give by clicking “Play video” (Art. 6(1)(a) GDPR, Section 25(1) TDDDG). It applies only to that video and that page view. We do not store your decision; the next time you open the page, the video is not loaded again. You end any further transfer by closing or reloading the page.
Provider and transfer to third countries: Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Ireland. Google also transfers data to Google LLC in the USA; according to its own statement, Google LLC is certified under the EU-U.S. Data Privacy Framework (adequacy decision under Art. 45 GDPR). Google Privacy Policy
Storage period: Storage by Google is governed by Google’s privacy information.
5. Analysis Tools and Advertising
Matomo (formerly PIWIK)
This website uses the open-source web analysis service Matomo to create statistics about the use of this website. We host Matomo ourselves on our own servers; the analysis data remains with us and is not passed on to third parties.
Data collected:
- anonymized IP addresses (the last 2 bytes are removed before analysis)
- pages visited and time spent
- referrer URLs (where you came to our website from)
- device and browser information
- approximate location (country/region only, based on the anonymized IP address)
Matomo is configured without cookies and respects the “Do Not Track” setting of your browser.
Legal basis: Matomo is only loaded once you have agreed to the service “Matomo Analytics” in the cookie settings; without your consent, no analysis with Matomo takes place. The legal basis is your consent (Art. 6 para. 1 lit. a GDPR, § 25 para. 1 TDDDG). You can withdraw your consent at any time with effect for the future in the cookie settings; the lawfulness of processing carried out until then remains unaffected.
Additional opt-out: Independently of the cookie settings, you can use the following field to tell Matomo that no data should be stored. For this purpose, an opt-out cookie is set in your browser.
Matomo Opt-Out:
More information about Matomo and privacy can be found at: https://matomo.org/privacy/
Download and Short-Link Counting (Without Cookies)
The download links for our apps on this website and in our store go through addresses of the form store.juergenkoller.software/dl/…. Short links that we mention in videos and in posts on social networks have the form store.juergenkoller.software/v/…. Our server records the request and forwards you immediately: for a download to the file, which our hosting provider delivers (see Hosting), for a short link to the matching product page in our store. No cookie is set, nothing is stored in your browser and no script is executed for this.
Data processed: When the address is requested, our web server records your IP address, the time, the requested address including any campaign identifiers it contains (see Campaign Identifiers in Links), the referrer URL and your browser identifier (user agent), and for downloads also the status code and the amount of data transferred.
How counting works: An evaluation program collects these entries at 15-minute intervals and then deletes the raw log. The IP address is not carried over. Instead, the program derives a shortened check value (hash) from the IP address and user agent, using a key that is generated at random for each day and held only in the working memory of our server. This way, a device that requests the same link several times on one day is counted once; requests cannot be linked across days. After the day has ended we delete the key; from then on, not even we can attribute the check value to an IP address or a device. Requests from our own network and from recognizable search and monitoring programs are not counted.
What is stored permanently: daily totals per product, short link and campaign, and for each counted request an entry without IP address and without user agent, consisting of the time, the product or short link, the check value, the campaign identifiers, the page from which the link was clicked and the shortened referrer URL. We only evaluate this data in aggregated form (for example, downloads per week and campaign) and do not link it to individual persons, customer accounts, orders or Matomo data.
Purpose and legal basis: We want to know how often our apps are downloaded and which posts, videos and channels lead to downloads and store visits, without having to ask for your consent to tracking. The legal basis is our legitimate interest in measuring the reach of our offering and our advertising in a data-minimising way (Art. 6 para. 1 lit. f GDPR). We do not access your device; only information that your browser transmits with the request anyway is processed. You may object to this processing on grounds relating to your particular situation (Art. 21 GDPR).
Storage period: In normal operation, the raw log containing IP addresses exists for no more than 15 minutes, and the key used for the check value no longer than until the end of the following day. We keep the daily totals and the entries without IP address for as long as we need them to compare our campaigns over longer periods.
Access log of the store: Independently of this counting, the web server of store.juergenkoller.software records every request, including requests for download links, in its access log: IP address, time, requested address, status code, amount of data transferred, referrer URL and user agent. This log serves operation, troubleshooting and the detection and defence of attacks (Art. 6 para. 1 lit. f GDPR). It is kept on our own infrastructure in Germany, is not passed on to third parties and is currently deleted after 400 days.
Campaign Identifiers in Links
Links in our posts, videos, newsletters and ads may contain campaign identifiers, for example mtm_campaign, mtm_source, mtm_medium, mtm_content, utm_… or ct. They describe the link, not you — for example “video 1 on YouTube”.
If you open a page of this website or a product page in our store via such a link, the page appends the identifier to its own download links. This way, the identifier reaches the download counting described above. The identifier is read only from the address of the page currently open: no cookie is set, nothing is stored in your browser and no identifier is assigned to you. It is only appended to our own download addresses, never to links to third parties. Matomo only evaluates the identifiers if you have consented to Matomo (see above).
Cross-references between our services: The links by which our website, our store and our free web tools (QR code, Clipboard, DocPort, text cleaner, games, Solarpegel) refer to one another also carry such identifiers (mtm_medium=crosslink). If you open a page on store.juergenkoller.software, qrcode.juergenkoller.software, clipboard.juergenkoller.software, docport.juergenkoller.software, games.juergenkoller.software or solarpegel.juergenkoller.software via such a link, our server counts this request in the same way as described above for downloads and short links: the web server records the IP address, the time, the requested address including the identifiers, the referrer URL and the user agent; the evaluation program collects these entries every 15 minutes, derives the hash described above and deletes the raw log. What is stored permanently are daily counts per target, source and placement of the link and, for each counted request, an entry without IP address and without user agent (time, target, source, placement, hash, shortened referrer URL). For docport.juergenkoller.software the IP address is truncated before it is recorded. No cookie is set and no script is executed. The legal basis is, as for the download counting, our legitimate interest in a data-minimising measurement of whether the references between our pages are used (Art. 6 para. 1 lit. f GDPR); you may object to this processing (Art. 21 GDPR).
If you place an order in our store via such a link, the order summary takes the four identifiers mtm_campaign, mtm_source, mtm_medium and mtm_content from the address into your order. They are stored with the payment on our side and passed to our payment service provider Stripe as an order attribute (see section Payment Processing via Stripe). This shows us which of our campaigns led to a purchase. Here too, the identifier is read only from the address of the page currently open; no cookie is set and nothing is stored in your browser.
Legal basis: our legitimate interest in measuring reach and in attributing orders to our campaigns, as with the download counting (Art. 6 para. 1 lit. f GDPR).
Paid Advertisements
We may run paid advertisements for our apps, in particular in Google Search and on other sites of the Google advertising network (Google Ads) as well as on Facebook and Instagram (Meta). We target these advertisements only through the settings the respective provider offers for this purpose, such as language, region, search terms or interests. We do not pass lists containing data of our customers, newsletter subscribers or website visitors to the providers.
What happens at the provider: When you see or click an advertisement, the provider processes data, for example your IP address, device and browser information and your interaction with the advertisement. It does so under its own privacy policy: Google, Meta. Both providers also transfer data to the USA (see the sections on YouTube and Instagram).
What we receive: From the providers we receive only aggregated figures, for example how often an advertisement was shown and clicked and what it cost. We do not receive information about individual persons.
No pixels, no conversion tracking: We do not embed advertising or measurement pixels or conversion tracking from Google or Meta on our websites or in our store. Whether an advertisement leads to a download or purchase we can tell only from the campaign identifiers in its link (see Campaign Identifiers in Links and Download and Short-Link Counting).
Legal basis: our legitimate interest in advertising our apps and measuring the success of our advertisements (Art. 6 para. 1 lit. f GDPR).
6. Data Processing in Our Apps
The following sections describe the data processing in our apps and services PDF Content Search (iOS and macOS), PDF.Scanner. (Android), Inkra (macOS and iPadOS), Distill (macOS), and Solarpegel (web, iPhone, iPad and Android). Personal data is only processed for the purposes described below. Sections prefixed with “Inkra” apply exclusively to the Inkra app, and the section “PDF.Scanner. for Android” applies exclusively to the PDF.Scanner. app; sections prefixed with “Solarpegel” apply exclusively to Solarpegel; sections whose heading names apps, or which list them in the text, apply to those apps; the other sections in this chapter describe PDF Content Search.
Local Data Processing
The majority of data processing takes place exclusively on your device. This includes in particular:
- Scanning and storing documents
- OCR text recognition using the Apple Vision Framework
- Local full-text search across your documents
- Storage in the local SQLite database
This locally processed data does not leave your device unless you use the features described below.
AI-Powered Filename Generation (OpenAI)
Our app offers the ability to automatically generate filenames from the content of scanned documents using artificial intelligence. When you use this feature, the OCR text of the first page of the scanned document is transmitted to our server and from there to OpenAI, Inc. (San Francisco, USA).
Data transmitted:
- OCR text (recognized text) of the first page of the document
- Your naming rules configured in the app (filename template)
Data not transmitted: The document file itself (PDF/image), your personal data, or location data. Our server additionally receives a random device identifier in order to manage your credits; it is not passed on to OpenAI.
Purpose: Automatic extraction of metadata (date, sender, subject) from the document text for generating a structured filename.
Legal basis: Contract performance (Art. 6 para. 1 lit. b GDPR), as the AI filename generation is a feature actively used by you. The use of this feature is voluntary — you can also assign filenames manually.
Note: Please be aware that the OCR text of your documents may contain personal or sensitive information (e.g., names, addresses, amounts from invoices or contracts). When you use the AI filename generation, this information is transmitted to OpenAI. For information on data transfers to the USA, see the section Data Transfer to Third Countries.
Further information on data protection at OpenAI can be found in OpenAI’s Privacy Policy. OpenAI processes data submitted via the API in accordance with the OpenAI Business Terms and does not use API data for training its models.
Cloud Synchronization Between Devices
PDF Content Search offers the ability to synchronize documents between your iOS and macOS devices. When you activate this feature, your documents are transferred via our own synchronization server.
Data transmitted:
- Complete document files (PDFs/images)
- Filenames and folder structure
- Synchronization metadata (timestamps, change status)
Server location: Our synchronization servers are operated on own infrastructure of Jürgen Koller Software GmbH in Germany.
Encryption: Data transfer is conducted exclusively via encrypted HTTPS connections. Access authorization is handled through symmetrically encrypted folder tokens.
Storage duration: Your synchronized documents remain on the server as long as the associated shared folder is active. When you delete a shared folder or unpair all devices, the associated data is removed from the server.
Legal basis: Contract performance (Art. 6 para. 1 lit. b GDPR). Synchronization is a feature actively set up by you and required for cross-device usage.
Device Pairing
To set up cloud synchronization, a one-time pairing process between your devices is required. The following data is collected during this process:
- Device name (e.g., “Max’s iPhone”)
- Device type (iOS or macOS)
- A unique device ID for assignment
This data is used exclusively for managing the synchronization. You can remove paired devices at any time in the app, which will delete the associated device data.
Background Processing
The app uses iOS background processing to complete pending file uploads for cloud synchronization. This only applies to files that you have actively shared for synchronization.
PDF Content Search: Conversion of Office Files (Only with Your Consent)
In PDF Content Search for macOS, indexing, text recognition and search run locally on your Mac; the app connects to the internet for the licence check (see the section Licence Activation and Licence Check). The app cannot read Office files by itself, though. To make them searchable, it offers to convert these files into PDF files on our server DocPort. This feature is turned off. The app only transfers files once you explicitly turn on the conversion in the app and confirm the “Terms for converting Office files on our server” by ticking the box. Without consent, the app sends no request to DocPort; Office files and Office attachments are then not searched.
Data transmitted:
- Office files (Word, Excel, CSV, PowerPoint, Pages, Numbers, Keynote, OpenDocument) from the folders you have added in the app, in full and with their file names
- Office attachments of emails, if you let the app search Apple Mail and have not turned off Office attachments there — only the attached file, not the text of the email and not the sender, recipients or subject
- technically with every request: IP address, identifier and language of the app, and a short reference to the app’s access key
This feature never transfers PDF files, images or text files.
Purpose: Converting the file into a PDF file from which the app reads the text on your Mac, so that the file becomes searchable. We use the files for this purpose only.
Server location: We run DocPort (docport.juergenkoller.software) ourselves on our own infrastructure of Jürgen Koller Software GmbH in Germany. The transfer is encrypted via HTTPS. The data is not passed on to third parties or transferred to third countries.
Storage period: Uploaded files, finished PDF files and job data (file name, target format, file size, times, IP address, identifier and language of the app) are deleted automatically, after 24 hours at the latest; an intermediate copy in the conversion service after 2 hours at the latest; data to prevent abuse after 1 hour at most. Logs without file names and file contents: error log (full IP address, only for rejected requests and server errors) and application logs 14 days at most, security log 30 days, access log with shortened IP address 400 days. Files are not included in any backup. Details: DocPort privacy policy.
Legal basis: Your consent (Art. 6(1)(a) GDPR). The app stores on your Mac which version of the terms you confirmed and when.
Withdrawal: You can withdraw your consent at any time with effect for the future, in the app under Settings > More with “Turn off and withdraw consent”. From then on, the app no longer transfers any file; files already transferred are deleted by the server 24 hours after the upload at the latest. The lawfulness of processing carried out until the withdrawal remains unaffected.
Note: Office files may contain personal or confidential information, including about other people. If you use the app for work, please check before turning the feature on whether you are allowed to transfer such files to us; we currently do not offer a data processing agreement for this feature.
PDF.Scanner. for Android
The app PDF.Scanner. (Google Play, package name software.juergenkoller.namesandnumbers) is our Android edition of the document scanner. Scanning, text recognition (OCR), and full-text search take place locally on your device. For AI-powered filename generation, the processing described above under “AI-Powered Filename Generation (OpenAI)” applies accordingly; OCR text is only transmitted to OpenAI when you actively trigger this feature. If you use the optional cross-device synchronization, the processing described above under “Cloud Synchronization Between Devices” and “Device Pairing” applies accordingly.
In-app purchases via Google Play (AI Credits). Within PDF.Scanner., paid credit packages (“AI Credits”) for the AI features can be purchased. Payment is processed exclusively via Google Play (provider: Google Ireland Limited); we do not receive any payment, card, or account data. To unlock the purchased credits, the app transmits the purchase token issued by Google and the product identifier to our server. The server verifies the purchase via the Google Play Developer API and credits the balance to your pseudonymous device identifier.
Data transmitted:
- Purchase token and product identifier of the purchased package
- A pseudonymous device identifier generated randomly at installation
Pseudonymous device identifier: Credits and purchases are assigned via an identifier generated randomly at installation. It is not the advertising ID and not your Google account; no registration or sign-in is required.
Legal basis: Contract performance (Art. 6 para. 1 lit. b GDPR) for providing the purchased credits, and our legitimate interest in preventing abuse and fraud (Art. 6 para. 1 lit. f GDPR) for the server-side purchase verification. Google’s Privacy Policy additionally applies to the payment processing by Google.
Storage duration: The data stored for credit and purchase management is retained for the duration of credit usage and within the statutory retention periods (in particular tax and commercial law obligations for purchase receipts); the information in the section “Retention Periods and Backup Storage” applies in addition. You can request deletion of the data stored for your device identifier via the contact details provided in the Legal Notice (Impressum).
No advertising, no analytics: PDF.Scanner. contains no advertising and no third-party tracking, analytics, or crash-reporting services.
Inkra: AI Writing Assistance
Inkra is a Markdown editor with optional AI assistance (e.g., proofreading, shortening, expanding, translating). The AI features are optional; without using them, your document content does not leave your device through this feature. When you trigger an AI action, the relevant text (the entire document or the selected portion) is transmitted to the AI provider you have chosen:
- Inkra KI (default): the text is sent encrypted to our server in Germany and from there to Anthropic PBC (USA), which generates the response. Our server does not store the text. To check your entitlement, the app transmits your licence key to our server. For data transfers to the USA, see the section Data Transfer to Third Countries.
- Anthropic (Claude): transmitted to Anthropic PBC, USA. For data transfers to the USA, see the section Data Transfer to Third Countries.
- OpenAI: transmitted to OpenAI, Inc., USA. For data transfers to the USA, see the section Data Transfer to Third Countries.
- Ollama (local): processing takes place entirely on your own device or your configured local instance; no data is transmitted to us or third parties.
Legal basis: Contract performance or your consent (Art. 6 para. 1 lit. b or lit. a GDPR); using the AI features is optional and actively triggered by you.
Storage of credentials: Any API keys (for Claude/OpenAI) and license keys you enter are stored locally and encrypted in your device’s Apple Keychain. API keys are not transmitted to us; our server receives the licence key only for the licence check (see the section Licence Activation and Licence Check) and when you use Inkra KI.
Note: The transmitted text may contain personal or sensitive information. When using a cloud provider (Inkra KI, Claude, OpenAI), this information is transmitted accordingly. Choose Ollama if you do not want processing to leave your device.
Inkra: Document Synchronization Between Mac and iPad
Inkra offers the ability to synchronize documents between a Mac and an iPad. When you set up this feature, the shared documents are transferred via our own synchronization server.
Transmitted data:
- The complete document content (Markdown/text files)
- File and folder names and the folder structure of the sync folder
- Synchronization metadata (timestamps, change status)
- The name of the device a change or shared folder comes from (e.g. “Max’s MacBook Pro”)
Server location: Our synchronization servers are operated on own infrastructure of Jürgen Koller Software GmbH in Germany.
Encryption: Data transmission occurs exclusively over encrypted HTTPS connections. Access authorization is handled via symmetrically encrypted folder tokens.
Device pairing: Setup involves a one-time pairing process on the local network (device discovery via Bonjour), during which the device name, device type, and a unique device ID are collected for association. You can remove paired devices at any time in the app, which deletes the associated device data.
Background processing: On the iPad, Inkra uses background processing to complete pending file uploads for synchronization — only for files you have actively shared for synchronization.
Storage duration: Synchronized documents remain on the server as long as the associated shared folder is active. When you delete the shared folder or unpair all devices, the associated data is removed from the server.
Legal basis: Contract performance (Art. 6 para. 1 lit. b GDPR). Synchronization is a feature actively set up by you and required for cross-device usage.
Distill: AI-Powered File Renaming (macOS)
Distill suggests a file name for files you drag into the app, select in the Finder, or place in a watched folder, and renames them after you confirm — or immediately if automatic renaming is switched on. To do this, the app reads the content of the file on your Mac (text recognition via the Apple Vision framework, text from PDF, Office, email, and media files).
Before you accept the Terms of Use and Privacy Notice in the app, Distill does not contact our servers or any AI provider.
Distill Cloud (default). “Distill Cloud” is the default provider — and the only one in the Mac App Store version. For each name suggestion, the app transmits to our server:
- the extracted text of the file, at most 4,000 characters (for images at most 2,000 characters of recognized text); for email files, sender, recipients, subject, and date are part of this text
- the file name
- the categories you have set, the app language, and, if provided, your own instructions to the AI (at most 1,000 characters)
- your pseudonymous device identifier (see below)
Not transmitted: the file itself, folder paths, image metadata such as location (GPS) and camera data, and the file’s timestamps.
Our server forwards the text, file name, categories, and instructions to OpenAI, Inc. (San Francisco, USA), which determines the date, category, description, sender, amount, and invoice number. The app assembles the final file name on your Mac. Our server does not store the document content; it only records the credit transaction (device identifier, time, type of transaction, amount). According to OpenAI, data transmitted via its API is retained for up to 30 days for abuse monitoring and is not used to train its models. For the transfer to the USA, see the section Data Transfer to Third Countries.
Note: File contents may include personal or sensitive information (e.g., names, addresses, amounts, contract or health data). If a file should not leave your Mac, rename it yourself or, in the direct-download version, use a local provider such as Ollama.
Legal basis: Performance of a contract (Art. 6 para. 1 lit. b GDPR), as the name suggestions are the app function you use.
Pseudonymous device identifier and AI credits. Each rename via Distill Cloud uses one credit; new users receive starter credits. Credits are assigned via an identifier that the app generates at random and stores on your Mac. It is neither derived from hardware characteristics nor an advertising identifier; no registration or sign-in is needed to use it. Only when you purchase credits in our web store do we link the identifier to your customer account (see “Purchasing credits”). After you have accepted, the app requests the starter credits and your balance at each launch. On our server, the credit account (identifier, app, creation time) and the transactions (starter credits, purchases, redeemed voucher codes, usage) are stored for this identifier. You can find your identifier in the app under Settings → AI Credits; please state it when you request information about or deletion of your credit account.
Legal basis: Performance of a contract (Art. 6 para. 1 lit. b GDPR); for verifying purchases and voucher codes, additionally our legitimate interest in preventing abuse (Art. 6 para. 1 lit. f GDPR).
Storage period: As credits do not expire, the credit account remains until you request its deletion. Transactions relating to purchases are then subject to the statutory retention periods and are kept blocked until these expire (see Retention Periods and Backup Storage).
Purchasing credits. In the Mac App Store version, Apple processes the purchase under its own responsibility; the app transmits the purchase receipt signed by Apple, together with the device identifier, to our server, which verifies it with Apple and credits your account. We do not receive any payment data; Apple’s transaction identifier is stored. In the direct-download version, you purchase credits via the order summary in our web store. The app opens it in your browser and passes the selected package and the device identifier in the page address. The identifier is placed in a part of the address that your browser does not send to our server; it is therefore stored in your browser history, but not in the store’s access log, and reaches our server only with your order. Like any purchase in the web store, the purchase requires a customer account. With the purchase, we link the device identifier to your customer account: it is stored together with your customer account and email address in the record of your declarations on the order summary, in the payment process and — shortened — in the contract confirmation; like all purchase records, we keep this information for the statutory retention periods (see Retention Periods and Backup Storage). Payment is made via Stripe; the section Payment Processing via Stripe applies. Our server passes the device identifier to Stripe to assign the purchase. After payment, we add the credits to the credit account of the device identifier. Legal basis: performance of a contract (Art. 6 para. 1 lit. b GDPR); for retaining purchase records, compliance with a legal obligation (Art. 6 para. 1 lit. c GDPR). When checking and redeeming voucher codes, the code and the device identifier are transmitted.
Your own AI providers (direct-download version only). In the direct-download version, you can use your own access to Anthropic (Claude), OpenAI, Google (Gemini, Vertex AI), or a local Ollama server instead of Distill Cloud. The app then transmits directly, without our server, to the chosen provider: the file name, up to 2,000 characters of text, your categories, template, and instructions, as well as file metadata (for photos e.g. capture date and camera model, for emails sender, recipients, and subject). Location data is not transmitted. This processing is governed by the terms of the respective provider, which you accepted with your own access; we do not receive any data in this process. The app stores your access keys encrypted in the macOS keychain. With Ollama on your Mac (default localhost), the data does not leave your device.
Update check (direct-download version only). After you have accepted, the app asks our server for a new version at most once a day and on request via the menu. It transmits your system’s preferred languages (for the language of the release notes) and the technically unavoidable connection data (IP address as well as app and system version in the connection’s identifier, the “user agent”). No device identifier is transmitted; the app itself determines on your Mac whether a newer version is available. Legal basis: legitimate interest in providing security and bug fixes (Art. 6 para. 1 lit. f GDPR).
Server logs. For every connection to our server (credits, name suggestions, purchases, update check), the web server logs the IP address, time, the requested address, and the user agent. The logs are used exclusively for operation and defense against attacks and are deleted after 14 days. Legal basis: legitimate interest in secure operation (Art. 6 para. 1 lit. f GDPR).
Only on your Mac. The following is stored locally and not transmitted to us: the rename history (old and new path, time, provider used) so that you can undo renames — you can delete it entirely or entry by entry in the “History” tab; the watched folders including their access permissions; your settings; a diagnostic log (at most about 2 MB, older entries are overwritten) with error messages, folder paths, and file names in case of errors, which is only sent if you save and pass it on yourself via the menu. If PDF Content Search is installed on the same Mac, Distill queries the text it has already recognized for a file — locally only. The interface for automation (REST API, MCP server) is reachable only from your Mac if no token is set, and also from your local network if a token is set. By uninstalling the app and deleting its data, you remove all locally stored information.
Messages sent via “Feedback & Support” are covered by the section “In-App Feedback and Support”.
Nemeton Cloud: AI Assistant via Our Server (Subscription)
Nemeton includes a voluntary AI assistant that operates virtual machines (VMs) on your instructions. Before you use it for the first time, you separately agree to the terms for the AI assistant in the app; until then Nemeton sends nothing to an AI service. This section describes the provider “Nemeton Cloud”, which you use with a subscription from our web store. With your own API key the data goes directly from your Mac to the provider you choose, with Ollama it stays on your Mac; we are not involved in either case.
Data transmitted: At every step, Nemeton sends the history of the task so far: your chat messages and the AI’s answers, screenshots of the VM, the content of the VM’s clipboard, text from windows and controls in the VM, output of commands, lists of files and folders, logs, system information and settings of the VM and of Nemeton, the licence status and information about your Mac. What is shown on the screen or held in the clipboard of the VM may also include personal data, including data of other people. In addition, the sign-in token of your customer account is transmitted.
Route of the data: encrypted to our server in Germany and from there to Anthropic PBC (USA), which generates the response. Our server does not store the content. For the transfer to the USA, see the section “Data Transfer to Third Countries”.
Subscription and allowance: Using the sign-in token, our server checks with our licence server whether a subscription exists for your customer account; it normally keeps the result for five minutes, and longer only while the licence server cannot be reached. For the monthly allowance we record after each request, for your customer account and with the time, how many tokens you have used so far in the current calendar month. These entries show when and to what extent you used Nemeton Cloud; they do not contain any content. The purchase is handled through our web store (see the section “Payment Processing via Stripe”); we assign the subscription to the customer account with which you placed the order.
Legal basis: Contract performance (Art. 6 para. 1 lit. b GDPR) for checking the subscription, counting and forwarding; for transmitting the content to the AI service, additionally your consent in the app (Art. 6 para. 1 lit. a GDPR), which you can withdraw there at any time in the settings.
Storage duration: The usage entries document the service provided, for example for compensation in the event of withdrawal; we keep them like the other contract data (see “Retention Periods and Backup Storage”).
Licence Activation and Licence Check (Apps with a Licence Key)
Our apps that you use with a licence key from our web store or with a trial key requested by e-mail (for example PDF Content Search, FreezeText, Inkra and Nemeton) check the licence with our licence server. This also applies to the Inkra app for iPad and iPhone if you enter an Inkra Pro licence key there.
When:
- when a licence key is activated on a device, when a trial key is requested, and when the app releases an activation again;
- for the licence check at start-up and at regular intervals while the app is running. Inkra checks at start-up and after that at most once a day — including after the Mac wakes from sleep or when the internet connection returns — and also when a billing period ends, when you open a locked function or when you choose “Check Now”. If a check does not succeed, for example without an internet connection, the app tries again later.
Data transmitted:
- the licence key and the product identifier;
- a device identifier that lets us tell the activations of a licence apart. FreezeText and Inkra transmit for this only a value that the app derives specifically for itself from the hardware identifier of your Mac (Inkra on iPad and iPhone from an identifier that Apple assigns per vendor); it is not valid for any other app, and the hardware identifier cannot be determined from it. PDF Content Search and Nemeton transmit the hardware identifier of your Mac;
- on activation and when a trial key is requested, also the device type (macOS or iOS) and the app version, and for PDF Content Search and Nemeton also the device name (e.g. “Max’s MacBook Pro”); FreezeText and Inkra do not transmit a device name;
- when you request a trial key, your e-mail address, to which we send the key;
- for technical reasons, your IP address, the program identifier (user agent: name and build number of the app and details of the operating system) and the language setting of your device.
What we store: On activation and when a trial key is requested, we create an entry for the licence containing the device identifier, device type, device name (PDF Content Search and Nemeton only), app version, IP address, program identifier and time; for a trial key, also your e-mail address. If a device that is already registered activates again, we update the app version and time. The regular licence check only reads the status of the licence and creates nothing in the licence database. As with every access, the web server of the licence server records these requests in its access log with the IP address, time, requested address and program identifier; this log serves operation, troubleshooting and the defence against attacks.
Product status: Independently of the licence, the app requests the status of the product at most once every 24 hours, i.e. whether the product and the installed version continue to be provided. This request contains neither the licence key nor a device identifier; only the technically necessary details (IP address, program identifier, language setting) are transmitted.
Purpose: We check whether the licence is valid and belongs to the product, limit the number of devices active at the same time to the agreed scope, and enforce the end of a subscription, a refund or a revocation. If no check succeeds for 40 days, the app restricts its functions until the next check succeeds (Inkra then opens documents read-only); the licence itself remains in place. This way a refunded licence is blocked after 40 days at the latest, even without an internet connection.
Legal basis: performance of a contract, and for a trial key pre-contractual measures (Art. 6(1)(b) GDPR): the licence check is part of the agreed provision of the app. Storing the IP address and program identifier on activation, the access log and requesting the product status are based on our legitimate interest in detecting misuse of licences and operating the apps securely (Art. 6(1)(f) GDPR).
Storage duration: activation entries remain stored with the licence; if the app releases a device, we mark the activation as ended. Otherwise the sections Storage Duration and Retention Periods and Backup Storage apply. You can request deletion at any time via datenschutz@juergenkoller.software.
Server location: the licence server is operated on infrastructure of Jürgen Koller Software GmbH in Germany. No transfer to third countries takes place.
Purchases in the App Store: if you buy an app in the App Store or the Mac App Store, Apple checks your entitlement. Some apps, such as Inkra, transmit the purchase receipt signed by Apple to our licence server after the purchase — and on every further device as long as no licence key is present there yet. We take the transaction identifier, the product and, for subscriptions, the expiry date from it and generate a licence key from it; in Inkra, Inkra KI needs this key. No device identifier is transmitted in this process; we do not receive your name, your e-mail address or payment data from Apple. If the app finds no valid entitlement at Apple, it checks an existing licence key as described above; the product status request also takes place for purchases in the App Store. If you enter a licence key from our web store in an app from the App Store, this entire section applies.
Business Support for PDF Content Search
If you have booked Business Support for PDF Content Search (subscription via our store), we process your requests to business@juergenkoller.software with the information you give us in them, as well as your order number and your customer account, so that we can assign the request to your contract. All employees of the customer may submit requests; of them we process name, email address and the content of the request. We use the phone number you give us for a call-back only for call-backs relating to this contract.
Legal basis: Art. 6(1)(b) GDPR (performance of the contract) for the contracting party; Art. 6(1)(f) GDPR (our legitimate interest in performing the contract with your employer) for employees of the customer who write to us.
Recipients: our email hosting provider Strato AG, Berlin, for business@juergenkoller.software; the provider of our telephone line for call-backs. When drafting replies we use AI services (Anthropic, OpenAI) as processors; only the text of your request is passed on, never attachments; the providers do not use the data for training. A human reviews and sends every reply. You can object to AI assistance for your requests by saying so in the request; the automatic acknowledgement points this out. For the transfer to Anthropic and OpenAI in the USA, see the section Data Transfer to Third Countries.
Documents containing third-party data: If your documents contain personal data of third parties, we conclude a data processing agreement with you on request (Art. 28 GDPR); until then, please redact such data. We do not offer screen sharing.
Storage period: We delete requests and our replies after the end of the contract unless a statutory retention obligation applies (commercial and business letters: six years, Section 257 of the German Commercial Code, HGB); otherwise after it expires. The phone number is part of your request and is stored and deleted together with it.
In-App Feedback and Support (PDF Content Search, Inkra, Nemeton, Distill, FreezeText, EdgeFlow)
In our apps for Mac, iPhone and iPad, “Feedback & Support” (in the app’s menu or its settings) lets you report bugs, request features, ask questions, or raise a billing matter.
What is transmitted: your text, the chosen category, optionally your e-mail address (only if you enter it), and the details shown beneath the form: app version, build, operating system version, distribution channel, and, where the app holds a license, its status. If you are signed in to the app with your customer account (for example in Nemeton or FreezeText), the report is associated with your account. No device or advertising identifier is transmitted.
Where: to our support service on infrastructure operated by Jürgen Koller Software GmbH in Germany. A ticket is created there; status and replies from support are shown in the app. No data is passed on to third parties.
New replies: So that you notice a reply from support even without an e-mail address, the app asks our support service whether there are new replies to your requests: while it is open at launch, when you switch to the app, when you open “Feedback & Support”, when the internet connection returns, and at least every three hours; on iPhone and iPad also occasionally in the background, as far as the system allows. Only requests that are open or were closed less than 30 days ago are checked; if there are none, no request is made. Only the ticket numbers and the corresponding access tokens are transmitted, and when you are signed in with your customer account, its sign-in token. As with every access, the web server records these requests with IP address, time and requested address in its access log; it serves operation, troubleshooting and defence against attacks. To reject overly frequent requests, the support service counts requests per IP address for one hour in memory without storing them. The app shows new replies with a counter and, if you have allowed notifications for the app, with a system notification. It names only the app, the ticket number and the type of request, not the text of the reply.
Read receipt: Once a reply from support has been visible in the app for one second, the app reports to our support service when you read it. This lets us see whether our reply has arrived and follow up if necessary. The time is stored with the ticket and deleted with it. You can switch off read receipts at any time in the app under “Feedback & Support”; times already reported are kept until the ticket is deleted.
On your device: the app stores your sent reports with replies and an unsent draft in the app’s data area (on iPad part of the device backup), and the ticket’s access token in the keychain. You remove sent reports, replies and access tokens in the app via “Clear history”; a draft by clearing the text field.
Crash reports (PDF Content Search for Mac): if PDF Content Search did not quit normally last time, the app asks at the next launch whether you would like to send the crash report to our support; you can do the same at any time via Help > “Send Crash Report…”. Nothing is sent without your confirmation. Usually, in a file dialog, you choose the report that macOS saved on your Mac yourself. If macOS provides the app with a crash report directly through its diagnostics interface (MetricKit), the app keeps it in its data area until you decide and likewise asks first; if you decline, nothing is transmitted and the stored report is deleted. From the report, the app takes the date and time of the crash (with MetricKit, the time at which macOS provides the report), the app version and build, the macOS version, the processor type, the kind and cause of the error, for memory errors a brief note on the memory address concerned, and the place in the program where the error occurred (names, identifiers and addresses of the program libraries and functions involved). It does not take paths, file names, document contents, search terms or error messages. The report is sent to our support service as a ticket, like a message via “Feedback & Support”; the other details of this section apply. Sent reports and reports that could not be delivered appear in the history under Help > “Feedback & Support”, like other messages; you will also find the ticket number there. So that the app can detect an unexpected termination, it creates a marker file with the launch time in its data area and deletes it when it quits normally. So that it does not ask twice about the same crash, it keeps a technical identifier of the program location for each answered report locally and deletes it after 30 days; this identifier does not leave your device.
Legal basis: performance of a contract or pre-contractual measures (Art. 6(1)(b) GDPR) for purchase or license matters; otherwise our legitimate interest in fixing bugs and improving the product (Art. 6(1)(f) GDPR). For checking for new replies and for read receipts, our legitimate interest is to handle your request effectively (Art. 6(1)(f) GDPR). You may object to read receipts at any time (Art. 21 GDPR), most easily with the switch in the app.
Deletion: after sending, a ticket number is shown to you. With this number you can request deletion of the ticket at any time via datenschutz@juergenkoller.software; otherwise we delete tickets after they are closed and the statutory retention periods have expired.
Solarpegel: Monitoring and Control of Balcony Solar Systems
Solarpegel (called SolarPulse until September 2026) consists of a web interface, apps for iPhone, iPad and Android, and a small device for your home network, the hub. The hub reads your inverter over the local network and transmits the readings to our service so that you can view and control your system while away from home.
Account and sign-in
Sign-in is handled by our own account portal at account.juergenkoller.software. Solarpegel creates no accounts and stores no password; it only receives an identifier, your email address, your role and your language setting from the portal.
System data
For each system we store the hub’s serial number and the hardware identifier of its processor, the serial number, model and firmware version of your inverter, the system name you choose, your inverter’s settings and, if you connect a compatible electricity meter, its address on your home network. If you enter prices for your electricity tariff, we store those as well.
Readings
The hub reads your system every 0.5 seconds and transmits average, minimum and maximum values at 10-second intervals. These include generation, battery charge level, grid import and grid export. If you have connected an electricity meter, they also include the power at your house connection, that is, your household’s total consumption.
Please note: a consumption record at this time resolution allows conclusions about your daily routine, such as presence, sleeping hours or absence during holidays. We process this data solely to display your system to you, to raise alerts and to find faults. No profiling for advertising purposes and no disclosure to third parties takes place. The legal basis is the performance of our contract with you (Art. 6(1)(b) GDPR).
Retention
We store readings without a fixed deletion period so that your system history remains permanently available to you; that is the purpose of the service. You may request deletion at any time, see below. Diagnostic reports from the hub (crash reports) are deleted automatically after 7 days, at most 100 per device.
Control and logging
When you control your system through Solarpegel, we log every change with the time, the action, the old and new value, your identifier, your email address and your IP address. This log serves to make interventions in a device that feeds electricity into your home traceable, and to find faults. Only those who may control the system themselves can view it; the email address and IP address are visible to the system’s owner only. The legal basis is our legitimate interest in traceable and safe operation (Art. 6(1)(f) GDPR).
Sharing and invitations
You can invite other people to your system by entering their email address; we then send an invitation email which also names your own email address as the sender of the invitation. The invitation expires after the period you choose.
Alternatively you can create a share link. Anyone holding it sees an overview of your system with its name and current readings, but no contact details and no control log. We log when and how often a share link was used. You can revoke it at any time.
Notifications
If you enable notifications on your mobile device, the app transmits a device identifier (push token) to us. For delivery we use Firebase Cloud Messaging provided by Google Ireland Limited; this identifier and the content of the notification are transmitted to Google and may reach the USA in the process. The notification contains the name or serial number of your system and, depending on the occasion, a reading such as the battery charge level. The legal basis is your consent, which you may withdraw at any time in your device’s system settings (Art. 6(1)(a) GDPR). On Android 13 and later the app asks for this permission once. For transfers to the USA see the section “Data Transfer to Third Countries”.
The hub on your home network
To set it up, you transmit your Wi-Fi name and password to the hub via Bluetooth. The hub does not store the password in clear text but converts it into a derived key and stores only that; it is not transmitted to us. What remains on the hub is the Wi-Fi name, the addresses of the devices detected on your network and its own credentials for our service. The hub keeps readings in memory; only if our servers are unreachable for more than ten minutes does it write them temporarily to its memory card and delete them again after transmission.
The hub also regularly sends us an extract of its technical logs. These logs may contain network identifiers such as your Wi-Fi name or local IP addresses.
If you use the app to set up a Solakon ONE inverter, you transmit your Wi-Fi name and password to the inverter via Bluetooth in the same way. The app then checks on your Wi-Fi network whether the inverter can be reached and, to do so, reads the model and serial number of the devices it finds. This information stays on your phone. Up to Android 11 the system requires the location permission for Bluetooth scanning; the app does not request your location.
Remote maintenance
To assist you in case of a fault, we can send the hub a fixed list of diagnostic commands remotely. There is no command-line access to your device; shipped devices have no SSH access. Depending on the command, the responses contain your Wi-Fi name, the local IP addresses and name servers of your network, the hub’s system load and extracts of its logs. Every call is logged with the time, action, result and the email address of the person who triggered it; we retain these logs and delete them at your request. The legal basis is our legitimate interest in resolving faults (Art. 6(1)(f) GDPR).
Servers and service providers
The application, the database and the logs run on hardware operated by Jürgen Koller Software GmbH in Germany. When you open the web interface, your IP address appears in the server logs. For sending invitation emails we use the mail server of Strato AG. No web analytics take place in Solarpegel; no analytics or tracking services are integrated.
Data export
You can download your readings yourself at any time as a CSV, JSON or Excel file. The export contains the system name and serial number as well as the readings you selected.
Access and erasure
For access, rectification, restriction, portability and erasure of your Solarpegel data, a message to datenschutz@juergenkoller.software is sufficient. At your request we delete your system and reading data together with the associated logs. If you are only a member of someone else’s system, we remove your membership and your details from its logs; the system’s own logs remain with its owner. How to request deletion of your account and data is also described at solarpegel.juergenkoller.software/delete-account; in the Android app you reach this page via Settings → “Delete account”.
Distribution via Google Play
You install and update the Android app through Google Play. Google processes data under its own terms; we only receive aggregated figures from Google, such as install counts and crash statistics that are not linked to you.
Solarpegel: Error Reports and Feedback
In the Solarpegel application (web and apps) you can report a problem or suggest an improvement using the feedback button.
Always transmitted: your description, the page you were on, details about your browser and screen size (in the apps: platform and app version instead) and, if you are signed in, your user ID. In the Android app, the device model, Android version and language setting are only added if you tick “Attach diagnostic data”.
Only if you tick “attach diagnostic data”: technical recordings of the last few minutes, namely the application’s console output, your browser’s most recent requests to our servers including response headers, changes to cookies, and the names of locally stored settings. The box is unticked by default; without the tick, none of this is transmitted.
Automatic redaction: before sending, the application replaces recognisable email addresses, phone numbers, IBANs, access tokens and authentication headers with a placeholder. Redaction is pattern-based and therefore cannot catch every individual case.
Recording without your involvement: in two cases the application records a technical report of the scope described above on its own, without free text and without you reporting anything: when a sign-in or the renewal of your session fails, and when your session is lost although it should still be valid. The second case is limited to at most one recording per day and device. The sole purpose is to find silent sign-in faults that would otherwise go unnoticed. The legal basis is our legitimate interest in a working and secure sign-in process (Art. 6(1)(f) GDPR); you may object to this processing under Art. 21 GDPR.
Storage location and retention: reports are stored on infrastructure operated by Jürgen Koller Software GmbH in Germany and are deleted automatically after 30 days. They are not passed on to third parties.
Legal basis: your consent for the diagnostic attachment (Art. 6(1)(a) GDPR), otherwise our legitimate interest in fixing faults (Art. 6(1)(f) GDPR). You may withdraw your consent at any time with effect for the future by not ticking the box on future reports.
Deletion: after sending, a ticket number is shown to you. Using this number you can request deletion of the report at any time at datenschutz@juergenkoller.software.
Crash reports (Android): if the Android app crashes, it asks on the next start whether to send a report. It contains the location of the error in the program, the app version, the device model, the Android version and the language setting, but no readings and no account identifier; access tokens and email addresses in error messages are made unrecognisable by the app before saving. Nothing is sent without your consent. Storage location and period as for error reports (30 days). The legal basis is your consent (Art. 6(1)(a) GDPR).
7. Payment Processing via Stripe
Purchases in our web store at store.juergenkoller.software are processed through the payment
service provider Stripe.
Provider: The contracting party for the payment services is
Stripe Payments Europe, Limited
One Wilton Park, Wilton Place
Dublin 2, D02 FX04
Ireland
(registered in the Irish commercial register under number 513174)
For the execution of payment services in the European Economic Area, Stripe Technology Europe, Limited, 1 Wilton Park, Wilton Place, Dublin 2, D02 FX04, Ireland is additionally involved; it is authorized as an e-money institution by the Central Bank of Ireland under reference number C187865. Technical parts of the processing are carried out by Stripe, LLC, 354 Oyster Point Boulevard, South San Francisco, California 94080, USA (see “Transfer to the USA” below).
How the payment process works. When you place your order, we redirect you to a payment page
operated by Stripe at checkout.stripe.com. You enter your payment data there, directly with
Stripe. Card numbers, bank details, and comparable payment data never reach our systems. No
scripts or other content from Stripe are embedded on our own pages.
Categories of data processed: In connection with the payment process, Stripe processes in particular:
- name and email address,
- billing address and country,
- the VAT identification number, if you provide one,
- payment data (card details, bank details, information on the payment method chosen),
- amount, currency, time, and the identifiers of the payment and the checkout session,
- IP address, device and browser details for detecting fraudulent payments.
What we receive from it. From Stripe we receive the payment status, the identifiers of the checkout session and of the payment, the amount and currency, your email address, and the details required for the tax treatment and for invoicing (name, billing address, country, and where applicable the VAT identification number).
Purposes: Processing your payment, reversing it in the event of a withdrawal or a refund, handling chargebacks, determining the applicable VAT, creating and retaining purchase and invoice records, and preventing fraud and abuse.
Legal basis:
- Contract performance (Art. 6 para. 1 lit. b GDPR) for processing and reversing the payment.
- Compliance with a legal obligation (Art. 6 para. 1 lit. c GDPR) for the tax treatment and the retention of records, in particular under § 14b and § 22 UStG, § 147 AO, and § 257 HGB.
- Legitimate interest (Art. 6 para. 1 lit. f GDPR) in preventing fraud and payment defaults, for the fraud detection.
Stripe’s role. Stripe processes part of the data on our behalf; to that extent the requirements of Art. 28 GDPR on processing on behalf of a controller apply. For another part — in particular fraud prevention and compliance with its own regulatory, anti-money-laundering, and tax obligations — Stripe is a controller in its own right. Stripe’s privacy policy applies to that part.
Transfer to the USA. As part of the payment processing, data is also transferred to Stripe, LLC in the USA. The USA has an adequacy decision from the European Commission pursuant to Art. 45 GDPR (EU-U.S. Data Privacy Framework); Stripe states that Stripe, LLC is certified under this framework. In addition, Stripe provides EU Standard Contractual Clauses as appropriate safeguards pursuant to Art. 46 para. 2 lit. c GDPR for transfers from the European Economic Area, which also hold if the adequacy decision were to lapse.
Promotion codes. If you enter a promotion code on the order summary, our payment service checks with Stripe whether the code is valid for the selected product and calculates the discount. With your order, we store the code, the regular price, the discount and the amount payable; we pass the code on to Stripe so that Stripe applies the discount, and record it there as an attribute of the payment. Because we issue a separate code for each video and each promotion, the code also shows us which promotion led to a purchase; this is only evaluated in aggregated form (number of purchases per code). The legal basis is contract performance (Art. 6 para. 1 lit. b GDPR) for applying the discount and for the records, and our legitimate interest in measuring the success of our promotions (Art. 6 para. 1 lit. f GDPR) for the evaluation. The code is retained like the other purchase data (see “Storage duration”). The conditions of our promotions are set out in the Promotion Terms.
Subscriptions. For subscriptions (currently Inkra Pro, Nemeton Cloud and Business Support for PDF Content Search), Stripe keeps the payment method you chose on file and uses it to collect the charge at the start of each further billing period; here too, payment data never reaches our systems. From Stripe we receive, for each payment, the information listed above and the status of the subscription (active, cancelled, ended). Nemeton Cloud and Business Support for PDF Content Search can only be ordered with a customer account; we assign the order and the subscription to that customer account. For Business Support, Stripe also records a VAT identification number on the payment page if you enter one as a trader; it is shown on the invoice. The legal basis is contract performance (Art. 6 para. 1 lit. b GDPR).
Storage duration: We retain the purchase and payment data arising on our side for the duration of the contractual relationship and beyond that within the statutory retention periods; for details see the section “Retention Periods and Backup Storage”. Stripe’s privacy policy applies to the storage duration at Stripe.
Further information: Stripe’s Privacy Policy · Stripe’s Data Privacy Framework statement
8. Data Transfer to Third Countries
As part of the AI-powered filename generation (see the section Data Processing in Our Apps), when using Distill Cloud in Distill, when using Inkra’s AI writing assistance with the provider OpenAI, and when using the AI product assistant (see the section AI Product Assistant), data is transmitted to OpenAI, Inc. in the USA. Since July 10, 2023, the USA has had an adequacy decision from the European Commission pursuant to Art. 45 GDPR (EU-U.S. Data Privacy Framework). OpenAI is certified under the EU-U.S. Data Privacy Framework, ensuring an adequate level of data protection.
Additionally, we have concluded a Data Processing Agreement (DPA) with OpenAI that meets the requirements of Art. 28 GDPR and includes EU Standard Contractual Clauses (SCCs) pursuant to Art. 46 para. 2 lit. c GDPR.
When using Inkra’s AI writing assistance with the provider Anthropic (Claude) or with “Inkra KI”, data is transmitted to Anthropic PBC in the USA. The transfer is based on appropriate safeguards pursuant to Art. 46 GDPR (EU Standard Contractual Clauses) or — to the extent the provider is certified under it — the EU-U.S. Data Privacy Framework (Art. 45 GDPR). This also applies to “Inkra KI”, which forwards texts to Anthropic via our server. Only Ollama on your own device avoids a transfer to the USA.
The same applies to Nemeton’s AI assistant with the provider “Nemeton Cloud”, which forwards the data of a task to Anthropic PBC in the USA via our server (see the section “Nemeton Cloud: AI Assistant via Our Server”).
For Business Support for PDF Content Search, when drafting a reply we pass the text of the request — never attachments — to Anthropic PBC or OpenAI, Inc. in the USA unless you have objected to AI assistance (see the section Business Support for PDF Content Search); the preceding paragraphs on Anthropic and OpenAI apply to that transfer.
If you use your own access to Anthropic, OpenAI, or Google in Distill, the app transmits the data directly to that provider, which processes it under its own terms — including in the USA. We are not involved in this transfer and do not receive any data.
For purchases in our web store, including AI credits for Distill, data is transferred to Stripe, LLC in the USA as part of the payment processing. The transfer is based on the adequacy decision of the European Commission pursuant to Art. 45 GDPR (EU-U.S. Data Privacy Framework), under which Stripe, LLC is certified according to Stripe’s own statement, and additionally on the EU Standard Contractual Clauses pursuant to Art. 46 para. 2 lit. c GDPR that Stripe provides for transfers from the European Economic Area. For details, see the section “Payment Processing via Stripe”.
For purchases via the Mac App Store, Apple handles the purchase on its own responsibility; the contracting party is Apple Distribution International Ltd., based in Ireland. We do not receive your name, your e-mail address or payment data in this context; for the purchase receipt that some apps transmit to our licence server, see the section Licence Activation and Licence Check. Apple’s privacy policy applies to the processing by Apple, including any transfer to the USA.
For the spam protection of the newsletter form (Cloudflare Turnstile), data may be transferred to Cloudflare, Inc. in the USA; see the section Cloudflare Turnstile. For our social media presences, see the section Social Media Presences; for embedded videos, see the section Embedded YouTube videos.
All other data processing — the cloud synchronization, the account and license management, and the local processing in our apps — takes place exclusively in Germany or on your device. No transfer to third countries occurs in these cases.
9. Your Rights
You have the following rights regarding your personal data:
- Right to information (Art. 15 GDPR)
- Right to correction (Art. 16 GDPR)
- Right to deletion (Art. 17 GDPR)
- Right to restriction of processing (Art. 18 GDPR)
- Right to data portability (Art. 20 GDPR)
- Right to object (Art. 21 GDPR)
- Right to revoke consent (Art. 7 para. 3 GDPR)
- Right to lodge a complaint with a supervisory authority (Art. 77 GDPR)
To exercise these rights, please contact us at: datenschutz@juergenkoller.software
10. Social Media Presences
We maintain profiles on YouTube, Instagram, TikTok and LinkedIn as well as a page on Facebook, where we present our apps, among other things in short videos. When you visit one of these profiles, watch a video, follow us, comment or send us a message, the respective provider processes your data, for example IP address, device and browser information, your interactions and, if you are logged in, the information from your account. The provider does so under its own terms and on its own responsibility, including for its own purposes such as advertising; we have no influence on this. Details can be found in the providers’ privacy notices linked below.
What we process: We see what you share with us publicly on the platform or by message, and the profile name displayed there. We use this only to reply and to manage our profiles. We also receive aggregated statistics from the providers, for example on views, watch time and countries of origin; they do not allow conclusions about individual persons. Paid advertisements on these platforms are described in the section Paid Advertisements; we do not embed advertising or measurement pixels of these providers on our websites. Links from our profiles and videos lead to our own pages; the sections Download and Short-Link Counting and Campaign Identifiers in Links apply there.
Legal basis: our legitimate interest in informing people about our products and in getting in touch with prospective and existing customers where they spend their time (Art. 6 para. 1 lit. f GDPR). Where a provider asks you for consent, for example for cookies, processing is based on that consent (Art. 6 para. 1 lit. a GDPR), which you can withdraw vis-à-vis the provider.
Joint controllership for statistics: We are joint controllers with the respective provider for the creation of the statistics on our profiles (Art. 26 GDPR). Where available, the providers have set out the allocation of obligations in their own agreements (links below). Under these agreements, the providers are the first point of contact for your rights as a data subject, because only they have access to the data. You can, however, also exercise your rights against us; we will then forward your request to the provider.
Transfers to third countries: The providers also process data outside the EU, in particular in the USA; details are given for each provider below.
YouTube. Provider: Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Ireland. Google also transfers data to Google LLC in the USA; according to its own statement, Google LLC is certified under the EU-U.S. Data Privacy Framework (adequacy decision under Art. 45 GDPR). Google does not offer an agreement on joint controllership for channel statistics. Google Privacy Policy · Ad settings
Instagram. Provider: Meta Platforms Ireland Limited, Serpentine Avenue, Block J, Dublin 4, Ireland. Meta also transfers data to Meta Platforms, Inc. in the USA; according to its own statement, it is certified under the EU-U.S. Data Privacy Framework, and Meta additionally relies on EU Standard Contractual Clauses. On statistics: Information about Insights data · Joint controller agreement (Insights) · Instagram Privacy Policy
Facebook. Provider: Meta Platforms Ireland Limited, Serpentine Avenue, Block J, Dublin 4, Ireland. The videos we publish on Instagram also appear on our Facebook page. We are joint controllers with Meta for the statistics of the page (“Page Insights”). Meta has set out the allocation of obligations in the Page Insights Controller Addendum, an agreement under Art. 26 GDPR; under it, Meta takes primary responsibility for the processing of Insights data and for complying with your rights. We do not promote posts on Facebook and do not use the Meta Pixel or any other measurement or advertising tools from Meta on our websites or in our store. Transfers to the USA are handled as described for Instagram. On statistics: Information about Insights data · Page Insights Controller Addendum (joint controller agreement) · Meta Privacy Policy
TikTok. Provider: TikTok Technology Limited, 10 Earlsfort Terrace, Dublin, D02 T380, Ireland. According to its own statement, TikTok stores data in the USA, Malaysia and Singapore, among other places, and bases transfers on adequacy decisions and EU Standard Contractual Clauses. On statistics: TikTok Analytics Joint Controller Addendum · TikTok Privacy Policy
LinkedIn. Provider: LinkedIn Ireland Unlimited Company, Wilton Plaza, Wilton Place, Dublin 2, Ireland. LinkedIn also transfers data to LinkedIn Corporation in the USA; according to its own statement, it is certified under the EU-U.S. Data Privacy Framework, and LinkedIn additionally relies on EU Standard Contractual Clauses. On the statistics of our company page: Page Insights Joint Controller Addendum · LinkedIn Privacy Policy
Storage period: Comments and messages remain on the platform until you or we delete them or the profile is closed. The providers’ privacy notices apply to storage by the providers.
Last updated: 13 October 2026