1. Who is responsible
The controller for the processing described here, in the sense of the Swiss Federal Act on Data Protection (FADP) and Article 4(7) of the EU General Data Protection Regulation (GDPR), is:
Fabian AckeretFluhmattstrasse 6
5222 Umiken, Switzerland
Email: info@opportunora.com
We have not appointed a data protection officer, and we are not required to appoint one. Write to the address above with any question about this policy.
2. What this policy covers
This policy covers two things, and they are not the same:
- The website at opportunora.com. Sections 3, 4, 6 and 7 describe it.
- The Opportunora app at app.opportunora.com, the hosted service the website advertises. Section 5 describes it.
The websites the app generates for a business are not covered here. Each of those is published by the operator who commissioned it, under that operator's own privacy policy.
3. What the website collects
Server logs
This website runs on shared hosting at Hostinger. Like any web server, it records each request: the IP address, the date and time, the page or file requested, the HTTP status, the referring page, and the browser's user agent string. We read these to keep the site up and to spot abuse. We don't try to match them to a person, and we don't merge them with anything else on this page.
The app runs on different infrastructure, and nothing in this section applies to it. Section 5 says where it runs and what it logs.
The early access list
Until October 2026, a form on this site collected email addresses for early access. It asked for an address and nothing else. The addresses it collected are stored as contacts in Resend, so we can send one message saying the app is open. The form is gone, and the website no longer asks for an address.
While the form ran, it counted recent posts per IP address to slow down bots. It stored a SHA-1 hash of the IP address, never the plain address. If Resend refused a request, the server's PHP error log recorded the response, which could contain the address submitted. Section 9 says how long each of these is kept.
Google Analytics
We use Google Analytics 4 to count visits and see which sections people read. It doesn't load until you press "Allow analytics." Until then Google Consent Mode sits at denied for every storage type, the measurement script isn't in the page, and your browser makes no request to Google at all. That holds on every page of this site, this one included.
When you do allow it, Google Analytics processes:
- a truncated IP address, because we switch on IP anonymisation;
- the pages you open and roughly when;
- your approximate location, derived from the truncated address, no finer than city level;
- your browser, operating system, language and screen size;
- the referring site, if any;
- a randomly generated identifier stored in the cookies listed in section 4.
We keep advertising features off. ad_storage, ad_user_data and ad_personalization stay denied whatever you choose, so this site builds no advertising profile and sends Google no signal it could use for one. We don't use Google Signals, and we don't link the property to Google Ads.
You can change your mind at any time with the Cookie settings button in the footer of any page. Choosing Only essentials turns the measurement off and deletes the _ga cookies this site can reach.
Fonts, images and scripts
Every file the page needs comes from opportunora.com. The three typefaces are served from our own server rather than from Google Fonts, so no request reaches a third party before you've made a choice. The only file that ever comes from elsewhere is the Google tag described above, and it arrives only after you allow analytics.
What the website doesn't do
- No advertising, retargeting, or conversion pixels. There is no Meta, LinkedIn, or TikTok tag on this site.
- No session recording, heatmaps, or scroll tracking beyond what Google Analytics counts.
- No sale or rental of personal data, and no sharing for cross-context behavioural advertising.
- No embedded video, map, chat widget, or social button that would call a third party on load.
- Until you allow analytics, the only server your browser talks to is ours.
5. What the app collects
This section describes the hosted Opportunora service at app.opportunora.com. It applies to you once you sign up for a workspace.
Where the app runs
The app and the workers that run its jobs are hosted on Railway, in a United States region (us-east4, Virginia). The database is Neon, also in the United States. Hostinger hosts this website only and holds nothing from your workspace.
Railway keeps the logs the app writes as it runs: the time, the route or job, the response status, how long the work took, and any error the code reports. Those entries can carry identifiers from your workspace, such as the job that ran. We read them to keep the service up and to fix faults.
The files your workspace keeps sit in a private Cloudflare R2 bucket in our own Cloudflare account: uploaded logos and photos, profile pictures, and the pictures a build copies from a business's existing website.
Your account
Anyone can sign up for the app. To sign up or sign in, you use an email address and password, a Google account, or a Microsoft account. We store your name, your email address, a hash of your password if you set one, and the identifier your Google or Microsoft account gives us. A session is an opaque token in an httpOnly cookie; the database holds only a SHA-256 hash of it. Sessions go idle after 30 days and expire outright after 90.
The sign-up form and the password reset form run Cloudflare Turnstile, which checks that a person rather than a script is filling them in. It reads your IP address and technical details about your browser.
Email the app sends
The app sends email through Resend, and only to the people who use it:
- If you sign up with a password, a link that verifies your address. It works for 48 hours, and your trial credits unlock when you open it.
- If you ask for a password reset, a link that works for an hour. You also get a notice whenever your password changes.
- A support request or feature request you send from the app goes to our mailbox, info@opportunora.com, with your name, email address and workspace attached, so we can answer you.
Paying for a plan
Plans and top-ups are paid through Stripe Checkout, on our Stripe account. You enter your card at Stripe, and the full card number never reaches us. We receive your name, email address, billing address, any tax ID you enter, and the status of each payment. Stripe calculates the tax due from your billing address.
What you put in your workspace
Your workspace holds the work you do: the businesses you discover or add, the websites the app generates, your editor conversations, your invoices, time entries, packages, uploaded logos and photos, and an audit log of who changed what. We store this to run the service for you. We don't mine it, sell it, or use it to train models.
Data about businesses you discover
A discovery run reads publicly reachable web pages and saves what it finds about a business: the business name, a contact name, an email address, a phone number, a postal address, its website, its trade, and the URL of the page each of those facts came from. When the business is a sole trader or the contact is a named person, that is personal data about someone who never dealt with us.
What the app sends to model vendors
Discovery, website generation and the editor all call a large language model. The text those calls carry — search results, page contents, the business's details, your editor instructions — goes to the model vendor we use for that step: Anthropic, OpenAI or OpenRouter. Web searches go to our search backend. Section 6 lists them.
What the app never does
- It sends no email on your behalf. It never emails your leads or your clients, and it has no outreach feature. The only email it sends is the kind listed above.
- It publishes nothing by itself. A generated site waits as a preview until you click Publish.
- It never handles a card number. Your plan is paid at Stripe, and invoices to your clients are settled through your own payment account or your own bank details.
Logs and diagnostics
Each finished discovery run writes a log with what it found, which pages it read, how many tokens it burned, and what that cost. We read these to price the product and to debug failed runs. Every model call also lands in your workspace's credit ledger with its source, size and cost.
6. Who we share it with
We don't sell personal data and we don't disclose it for anyone else's marketing. We use the service providers below, each under a contract that binds it to process data only on our instructions. The first group serves this website and our mailbox. The second group serves the app.
The website
| Provider | What it does | What it receives | Where |
|---|---|---|---|
| Hostinger | Hosts this website and its CDN | Every request, so IP address, page, time, user agent | European Union |
| Resend | Holds the early access list the website collected until October 2026 | The email addresses on that list | United States |
| Microsoft (Microsoft 365) | Hosts our mailbox, info@opportunora.com | Email you send us, including support and feature requests from the app | Europe |
| Google Ireland / Google LLC | Google Analytics 4, after you allow it | Truncated IP address, page views, device and browser data | EU and United States |
The app
| Provider | What it does | What it receives | Where |
|---|---|---|---|
| Railway | Runs the app and the workers behind its jobs | Everything your workspace sends through the app, and the logs it writes | United States (us-east4, Virginia) |
| Neon | Runs the PostgreSQL database | Everything in your workspace | United States (us-east-2) |
| Anthropic, OpenAI, OpenRouter | The models behind discovery, generation and the editor | The prompts and page text each call carries | United States |
| Brave Search, Serper, or a SearXNG instance | Web search for discovery and research | The search queries the agent writes | United States, or wherever you host SearXNG |
| Komoot (Photon) | Suggests places in the "Default region" field | What you type into that field, and your IP address | Germany |
| Google, Microsoft | Sign-in, if you use it | The sign-in request; they return your name, email and account id | EU and United States |
| Resend | Sends the app's email: address checks, password links and notices, and your support requests to us | Your name and email address, the message, and what you write in a support request | United States; mail for opportunora.com leaves from Ireland |
| Cloudflare R2, in our account | Stores the files your workspace keeps | Uploaded logos and photos, profile pictures, and pictures copied from a business's website | Cloudflare's network |
| Cloudflare Turnstile | Checks that the sign-up and password reset forms are filled in by a person | Your IP address and technical details about your browser | Global edge network |
| Stripe, in our account | Takes payment for plans and top-ups through Stripe Checkout, and calculates tax | Your name, email address, billing address, any tax ID you enter, and your card details | United States and EU |
| Cloudflare, in your account | Hosts the sites you publish, using the account you connect | The site files you approve, and your API token | Global edge network |
| Stripe, PayPal, in your account | Collects invoice payments, using the account you connect | Invoice amounts and payment status | United States and EU |
We choose every provider in these tables except two: the Cloudflare account that hosts your published sites, and the Stripe or PayPal account your invoices use. You connect those, and for them the provider's contract is with you, not with us.
Beyond that, we disclose personal data only where the law requires it, to a court or an authority acting within its powers, or where we have to in order to establish or defend a legal claim. If our business is ever sold or merged, data may pass to the buyer under the same commitments, and we'll say so here first.
7. Transfers abroad
Several of the providers above are in the United States, so your data is processed outside Switzerland and the EEA. The United States is not on the Swiss Federal Council's list of countries with adequate protection except for recipients certified under the Swiss–US Data Privacy Framework.
Where a transfer needs a safeguard, we rely on:
- the recipient's certification under the EU–US or Swiss–US Data Privacy Framework, where it holds one; or
- the European Commission's Standard Contractual Clauses, with the amendments the Swiss Federal Data Protection and Information Commissioner (FDPIC) requires for transfers out of Switzerland, together with a transfer impact assessment.
We checked each provider against the official Data Privacy Framework list on 19 October 2026. This is the safeguard each one relies on:
| Provider | Safeguard |
|---|---|
| Google, Railway, Microsoft, Cloudflare, Stripe | Certified under the Swiss–US and EU–US Data Privacy Framework |
| Neon | Certified under the Swiss–US and EU–US Data Privacy Framework through its parent company, Databricks |
| Resend | Certified under the EU–US Data Privacy Framework only. For data from Switzerland, the Standard Contractual Clauses with the Swiss amendments in Resend's data processing agreement |
| Anthropic, OpenRouter | The Standard Contractual Clauses with the Swiss amendments, in each one's data processing agreement |
| OpenAI, Brave Search, Serper | Not used by the hosted service today. Before we use one, we'll name its safeguard here |
| Accounts you connect: Cloudflare, Stripe, PayPal | Your own contract with that provider. Cloudflare and Stripe are certified under the Data Privacy Framework; PayPal's user agreement uses the Standard Contractual Clauses |
Hostinger and Komoot process data in the European Union, which Switzerland recognises as providing adequate protection, so those transfers need no further safeguard.
To ask which safeguard applies to a given provider, or for a copy of the clauses, write to us at the address in section 15.
8. Why we're allowed to
Swiss law lets a private controller process personal data as long as it does so lawfully, in good faith and proportionately. It needs a justification only where processing goes against a person's wishes or where it involves sensitive data. We handle no sensitive data. Where the GDPR also applies, because you're in the EEA, these are the legal bases:
| Processing | Legal basis under the GDPR |
|---|---|
| Serving the site and keeping server logs | Legitimate interests, Article 6(1)(f): running a site that works and isn't abused |
| Keeping the early access list, and sending it one message that the app is open | Consent, Article 6(1)(a), given by submitting the form; withdrawable at any time |
| Google Analytics | Consent, Article 6(1)(a), given at the banner; withdrawable at any time |
| Running your workspace, emailing you its account links, and taking payment for your plan | Performance of a contract, Article 6(1)(b) |
| Answering your email and support requests | Legitimate interests, Article 6(1)(f): answering the people who write to us, or the contract where the request is about your workspace |
| Keeping invoices and accounting records | Legal obligation, Article 6(1)(c), and Article 958f of the Swiss Code of Obligations |
| Security, abuse prevention and rate limiting | Legitimate interests, Article 6(1)(f): protecting the service |
Withdrawing consent stops the processing from that point. It doesn't make what happened before it unlawful.
9. How long we keep it
| What | How long |
|---|---|
| Early access email address | Until you unsubscribe or ask us to delete it, and in any case no more than 24 months after the hosted service opened if you never take a workspace |
| Server logs, for the website and for the app | For as long as Hostinger and Railway keep them on their own rotation. We take no copy, keep no archive, and read them only to keep things running |
| PHP error log entries from the early access form | Deleted when we've fixed the fault, and no later than 90 days |
| Rate-limit files from the early access form | Timestamps stop counting after one hour; the file goes with the server's temporary-file cleanup |
| Google Analytics event data | Between 2 and 14 months, the two windows Google offers, as set on the property. Google then deletes the event-level data and keeps only aggregate counts |
| Your cookie choice | Until you clear your browser's site data |
| Workspace contents | For as long as your workspace is open, then 30 days after it closes, then deleted |
| Email you send us, including support and feature requests | For as long as we need it to answer you and follow up, then deleted, unless it belongs with accounting records |
| Backups | Until the backup holding it rotates out. We never restore a backup to bring back data you asked us to delete |
| Invoices and accounting records | 10 years, as Swiss law requires |
When a retention period ends, we delete the data or anonymise it so that it can no longer be traced to a person. A record we must keep for accounting is blocked from other use rather than deleted early.
10. Your rights
Under the FADP, and under the GDPR where it applies to you, you can:
- Ask what we hold. We'll send you a copy of your personal data and tell you where it came from.
- Correct it. If something is wrong or out of date, tell us and we'll fix it.
- Have it deleted. We'll delete it unless the law requires us to keep it, and we'll say which law if so.
- Take it with you. We'll hand over the data you gave us in a common machine-readable format.
- Object. You can object to processing we base on legitimate interests, and we'll stop unless we have compelling grounds that override yours.
- Restrict it. Under the GDPR you can ask us to hold the data but stop using it while a dispute is resolved.
- Withdraw consent. Use the unsubscribe link in any email we send, press Cookie settings in the footer, or write to us.
Write to info@opportunora.com. We answer within 30 days. Exercising a right is free; we may charge only where a request is manifestly excessive or repetitive, and we'll tell you before we do. We may ask for something that confirms it's really you, and we'll ask for no more than we need.
If you're not satisfied with our answer, you can complain to a supervisory authority. In Switzerland that's the Federal Data Protection and Information Commissioner (edoeb.admin.ch). In the EEA it's the authority where you live, work, or where the problem happened. You can also go to court.
11. Security
These are the measures actually in place, not a wish list:
- Every page travels over HTTPS, and HSTS tells your browser never to try plain HTTP.
- The site sends X-Content-Type-Options, X-Frame-Options and a Referrer-Policy that stops the full URL leaking to other sites.
- In the app, passwords are hashed, session tokens are stored as SHA-256 hashes, and third-party credentials such as your Cloudflare token are encrypted with a key held outside the database.
- Access to production data is limited to the people who need it to run the service.
No system is perfectly secure. If we ever have a breach that puts you at high risk, we'll notify the FDPIC and, where the GDPR applies, the relevant authority, and we'll tell you directly.
Found a vulnerability? Write to info@opportunora.com before you publish it, and we'll work with you.
12. Children
This site and this service are for people running a business. They aren't aimed at children, and we don't knowingly collect data from anyone under 16. If you think a child has given us data, write to us and we'll delete it.
13. Automated decisions
We make no automated decision that produces a legal effect for you or similarly significantly affects you, and we do no profiling on this website.
The app scores discovered businesses for how weak their web presence looks, and the scores come out of a model. Those scores rank a list for the operator to read. They decide nothing on their own, no one is refused anything because of one, and an operator reviews every lead before acting.
14. Changes to this policy
We update this page when what we do changes: a new provider, a new feature, a different retention period. The date at the top always says when it last changed. If a change materially affects you, and we have your address, we'll tell you before it takes effect. Keep using the site after that and you accept the current version.
15. Contact
For anything on this page, including a request to see, correct, or delete your data:
Fabian AckeretFluhmattstrasse 6
5222 Umiken, Switzerland
Email: info@opportunora.com
Our terms of service cover the rest of the relationship.