Privacy
Last updated 15 October 2026
Panelworks is software for designing electrical distribution boards. This notice explains what we hold about you, why we are allowed to, who else sees it, how long it stays, and what you can do about all of it. It is written to be read rather than survived.
Who we are
Panelworks is the product. Nevid Grupp OÜ is the company behind it, and is the controller of the personal data described here - the one you have rights against and the one answerable for what follows.
- Nevid Grupp OÜ, registry code 14845652
- VAT EE102439100
- Sepa 17c, Tartu 50113, Estonia
- hello@panelworks.eu
We are small enough not to need a data protection officer, and we have not appointed one. Everything below reaches a person at hello@panelworks.eu.
What we collect
When you create an account: your email address, a password we only ever see as a hash, and a name if you give one. If you sign in with Google we receive your email address, name and profile picture URL from Google, and nothing else about your Google account.
When you answer the setup questions: your country, your role, the kind of work you do and any preferred manufacturers. These configure the product - the country decides which standards, conductor colours and earthing system a new board starts from.
When you design a board: your projects, including their names, the devices on them, circuits, wiring and anything else you type. If you record a customer name against a project, that is somebody else's personal data and you remain responsible for it; we process it on your behalf and on your instructions.
When you save a board: the day it was saved, and how many saves that day. Not what changed, not the time of day and not how long you were there - a count per day, so we can see how often Panelworks is actually used.
When something goes wrong: one line of JSON in a server log, and the ordinary request metadata any web host keeps - an IP address, a timestamp, a path.
When you come through a partner's link: a count. A partner link keeps one number per day - how many people opened it - with no identifier of any kind, and puts nothing on your device. If you then create an account, the account is linked to the partner whose link you came through, so that partner can be credited. A partner sees totals by month and by week and never your name, your email address or the day you signed up.
When a partner accepts or declines the Partner Terms: the decision, the version and a fingerprint of the exact text shown, the time, and the confirmed email address of the account at that moment, kept as evidence of what was agreed.
Why, and on what basis
Every purpose needs a lawful basis under Article 6, and they are not interchangeable. Ours are:
- Running your account and saving your work - performance of the contract you entered into by signing up (Art. 6(1)(b)). Without this data there is no service to provide.
- Configuring the product from your setup answers - the same contract. They are answers to questions the software needs in order to be correct for where you are.
- Keeping the service secure and working, including error logs and abuse prevention - our legitimate interests (Art. 6(1)(f)). You can object to this, and the balancing test is short: the logs are redacted at source and hold nothing about your boards.
- Understanding how the product is used - the daily save counts, what is on boards counted across everybody, and opening a board when you ask us for help with it - our legitimate interests (Art. 6(1)(f)). You can object to this at any time by writing to us.
- Crediting the partner whose link brought you, and counting visits to a partner link - our legitimate interests (Art. 6(1)(f)) in running a partner programme and paying partners what they are owed. You can object at any time by writing to us, and we will remove the link between your account and the partner.
- Keeping the record of a partner's decision on the Partner Terms - the contract with the partner (Art. 6(1)(b)) and our legitimate interest in being able to show what was agreed (Art. 6(1)(f)).
- Payments, on the day billing opens - the contract, plus a legal obligation to keep accounting records (Art. 6(1)(c)).
- Analytics, if analytics is ever switched on - your consent (Art. 6(1)(a)), asked for first and withdrawable at any time. Nothing of the kind runs today.
We do not rely on legitimate interests for anything you would be surprised by, and we send no marketing email.
What we do not do
Stated plainly, because most of a privacy notice otherwise describes things that are not happening.
- No session recording, no heatmaps, no tracking of clicks or of time spent. We do not know which buttons you press, and nothing measures what you do inside a board - the one usage fact we keep about your work is which days you saved one.
- No advertising and no tracking pixels. The one third-party script is Google Analytics, and it loads only if you accept it below; refuse, and it is never fetched.
- No profiling and no automated decisions about you.
- Nothing you design trains anything, ours or anybody else's.
- We have never sold your data, and there is no arrangement under which anyone pays for access to it.
What is stored on your device
This table is generated from the same list the application itself works off, so it cannot describe one thing while the code does another.
| Name | Kind | Set by | What it is for | Kept |
|---|---|---|---|---|
| sb-<project>-auth-token | Cookie | Supabase | Keeps you signed in. Without it every page would ask again. | Until you sign out, or the session expires |
| sb-<project>-auth-token-code-verifier | Cookie | Supabase | Finishes a Google sign-in or an emailed link, by holding the one secret that exchange needs. | Minutes - removed as soon as the exchange completes |
| dinstudio.underlays | IndexedDB | Panelworks | The floor plan you imported into an installation plan, when you are working without an account. It stays on this device and is never sent to us. | Until you clear your browser storage |
| panelworks.locale | Local storage | Panelworks | The interface language you chose. It is never sent to us. | Until you clear your browser storage |
| panelworks.consent.v1 | Local storage | Panelworks | This choice itself - which categories you allowed, when, and against which version of them. | Until you clear your browser storage, or the categories change |
| panelworks.pen-tone.v1 | Local storage | Panelworks | The pen colour you last chose, so the pen picks it up again. | Until you clear your browser storage |
| panelworks.schematicMode | Local storage | Panelworks | Which view the schematic opens in, so it opens the way you left it. | Until you clear your browser storage |
| panelworks.sidebars.v1 | Local storage | Panelworks | Whether you folded the component library or the properties panel away, so the builder opens the way you left it. | Until you clear your browser storage |
| panelworks.tips.v1 | Local storage | Panelworks | Which tips you have already read, so they stop appearing. | Until you clear your browser storage |
| panelworks.proUpgradePrompt.v2 | Session storage | Panelworks | That you closed the Pro offer card, so it stays closed while you work. | Until you close the browser |
| panelworks.demo.handover | Session storage | Panelworks | The board you built in the demo, kept in this tab from the moment you press Save this project until it is added to your new account. It is then deleted. | Until you close the tab, or until it has been added to your account |
| panelworks.catalogue.favourites.v1 | Local storage | Panelworks | The parts you starred. | Until you clear your browser storage |
| panelworks.catalogue.recent.v1 | Local storage | Panelworks | The parts you placed most recently, so the catalogue can offer them first. | Until you clear your browser storage |
| panelworks.projects.v1 | Local storage | Panelworks | Your boards, when the app runs without an account in local demo mode. They never leave the browser. | Until you clear your browser storage |
| panelworks.versions.v1 | Local storage | Panelworks | Saved versions of those same demo-mode boards. | Until you clear your browser storage |
| _ga | Cookie | Google Analytics | Tells one browser from another, so a person who visits twice is counted once. Only set if you accept analytics. | 2 years |
| _ga_<measurement id> | Cookie | Google Analytics | Holds the state of a visit - when it started, and whether it is still the same one. | 2 years |
| pw_pending_login | Cookie | Panelworks | Holds the session a sign-in link gave you for the few minutes it takes to answer "Continue as ...?" - so a link somebody else sent cannot sign you into their account unasked. | 5 minutes, or until you answer |
| pw_ref_oauth | Cookie | Panelworks | Only after you press "Continue with Google" on a page a partner's link opened: that partner's code, kept while Google hands you back. Cleared on return. | 10 minutes, or until you return |
| pwl_<project id> | Cookie | Panelworks | The link you opened to one shared board (a public link or an NFC card), so the board keeps opening read-only. It names the board, not you. | 30 days; worthless at once if the owner turns the link off |
| panelworks.drafts | IndexedDB | Panelworks | Changes to a board that have not reached the server yet, so nothing is lost when the connection drops. | Until the server has them; all of it when you sign out, or another account signs in on this device |
| panelworks.recent | IndexedDB | Panelworks | Copies of the last 10 boards you opened, so they open without a connection. | Until you sign out, or another account signs in on this device |
| panelworks.thumbnail-pixels | IndexedDB | Panelworks | Pictures of your boards for the project cards, kept so the dashboard does not redraw them each visit (at most 160). | Until you sign out, or another account signs in on this device |
| panelworks.thumbnails | IndexedDB | Panelworks | Demo mode only: the picture of each board on this device's project cards. | Until the board is deleted; all of it when you sign out |
| pw-pages-v2 | Cache storage | Panelworks | The pages you have visited (dashboard, boards), so the app opens without a connection (at most 40). | Until you sign out, or another account signs in on this device |
| pw-static-v2 | Cache storage | Panelworks | The app's own program files and flags (at most 300). Nothing of yours. | Until the next version of the app replaces them |
| panelworks.device-account | Local storage | Panelworks | A one-way hash of the last address signed in here - not the address - so this device can tell when a different account signs in and clear what the last one left. | Replaced at each sign-in |
| panelworks.lastView.v1 | Local storage | Panelworks | Which tab each board was last open on, so it reopens there (the last 50 boards). | Until you sign out, or another account signs in on this device |
| panelworks.openGroups.v1 | Local storage | Panelworks | Which circuit groups you left expanded on each board (the last 50 boards). | Until you sign out, or another account signs in on this device |
| panelworks.locale.chosen | Local storage | Panelworks | That you chose the language yourself, rather than it following your region. | Until you let the region decide again |
| panelworks.region | Local storage | Panelworks | The country you said you work in, which also suggests the language. | Until you change it |
| panelworks.sidebar.projects-folded | Local storage | Panelworks | Whether the projects list in the sidebar is folded. | Until you change it |
| panelworks.startWith.v1 | Local storage | Panelworks | Whether a new board starts on the panel or the floor plan, once you tick "Don't ask again". | Until you set it back to asking |
| panelworks.presence | Local storage | Panelworks | A random id this browser made for itself, so a signed-in person with several tabs counts once in "online now". No account, page or action is attached to it. | Until you clear your browser's storage |
| panelworks.issued-notice.<project id> | Session storage | Panelworks | That you closed the "Active project" notice on a board. | Until you close the tab, or sign out |
| panelworks.role | Session storage | Panelworks | Whether this account may see the admin pages, so the menu does not ask the server on every page. | Until you close the tab, or sign out |
| panelworks.wiring.openRow | Session storage | Panelworks | Which row of the wiring check you have open. | Until you close it, close the tab, or sign out |
| _clck | Cookie | Microsoft Clarity | Only on the public pages, and only with your consent: tells Clarity two visits came from the same browser. | 1 year |
| _clsk | Cookie | Microsoft Clarity | Only on the public pages, and only with your consent: joins the pages of one visit into one session. | 1 day |
Nearly all of it is strictly necessary: a session you asked for by signing in, and preferences you set yourself. Storage of that kind is exempt from consent under the ePrivacy Directive, which is why nothing here asks you to accept it - and why there is no banner on a product that would have nothing to put in one.
The one other thing is the short-lived cookie in the table that carries a partner's code through the Google sign-in. It is set only when you press "Continue with Google" on a page a partner's link opened, it lasts ten minutes at most, and it is cleared when you are back. A partner's link itself leaves nothing on your device.
The product has a consent layer regardless, with an analytics category that is denied until somebody grants it. It is the reason a tracking script could not be added quietly: the only route by which one can load is through a consent that was actually given, and the moment such a script is configured you will be asked before it runs.
Who else sees it
Only the providers who run the service for us, each processing your data on our instructions and for no purpose of their own.
- Supabase - the database, authentication, and the account email we send you: confirmations and password resets. Hosted in Ireland.
- Vercel - application hosting and server logs, with functions pinned to Dublin.
- Google - sign-in, only if you choose it. Using an email address and a password avoids it entirely.
- Google Analytics - how many people visit, on a phone or a computer, and which site they came from. Only for visitors who accept it: refuse, and the script is never loaded. Your IP address is shortened before it is stored, and nothing about your boards is sent.
- Stripe - payments. Integrated and switched off: no payment has ever been taken and Stripe holds nothing about you today. When billing opens it becomes a processor of your name, email and card details - which it holds and we do not - and this notice changes on the same day.
Inside the company, a small number of Panelworks staff can open a project read-only - to help when you ask us about it, and to understand how boards are really built so we can make the product better. Nothing can be changed from that view, and every opening is recorded with who opened it and when.
Your account and your boards stay inside the European Economic Area. Two things leave it, and both are yours to refuse: Google sign-in, which you only meet if you choose it, and Google Analytics, which is processed in the United States under the EU-US Data Privacy Framework and only if you accept it.
We also count visits ourselves, under the same consent: a number per day for each kind of device, referring site and page. Those counts hold no identifier of any kind, and they stay in the same European database as everything else.
We use no separate email delivery provider today; account email goes through Supabase. If that changes, the provider is named here before it sends anything.
Errors and logs
When something breaks, one line of JSON is written to our server logs: what failed, where, which build, and the account involved. It does not record your email address, any authentication token, any password-reset code, or any part of a board you were working on. That is enforced in code and covered by tests rather than left to whoever writes the next log line.
How long we keep it
Your account and projects are kept until you delete them. Deleting your account removes the account, the profile, the setup answers, every project you own and every saved version of them - immediately and permanently, because every table hangs off your user row and cascades with it. There is no soft delete and no grace period, so export anything you want to keep first.
The one record that outlives an account is a partner's decision on the Partner Terms: it cannot be changed or removed, and it is kept after the account is deleted for as long as the evidence of the agreement is needed.
Server logs are kept for as long as our hosting provider retains them, which is days rather than months, and are used for nothing else.
Once billing opens, invoices and the accounting records around them have to be kept for seven years under Estonian law. That obligation outlives a deleted account, and it covers the invoice rather than your designs.
Your rights
Under the GDPR you may ask for a copy of what we hold (Art. 15), correct it (Art. 16), delete it (Art. 17), take it elsewhere in a portable form (Art. 20), object to processing we base on legitimate interests (Art. 21), ask us to restrict processing while something is in dispute (Art. 18), and withdraw any consent you have given without that affecting what was done before.
Several of these are buttons rather than requests: most of your details are editable in Settings, every project exports from its own page, and deleting your account is immediate and self-service. For anything else, write to us and we will answer within a month.
If you think we have got it wrong, you can complain to Andmekaitse Inspektsioon - the Estonian Data Protection Inspectorate - at https://www.aki.ee/en. It is our lead supervisory authority because we are established in Estonia. You may also complain to the authority in the EU country where you live or work.
Security
Every table is protected by row level security enforced by the database rather than by application code, so a query for somebody else's project returns nothing even if the application asks for it. Identity comes from a server-validated session on every request rather than from anything the browser claims. Traffic is encrypted in transit, and passwords are hashed by our authentication provider and never visible to us.
Error reports are redacted where they are written: tokens, recovery codes and full email addresses are stripped before a line reaches a log, and a test pins that behaviour rather than trusting the next person to remember it.
No system is perfectly secure. If you find a vulnerability, please write to hello@panelworks.eu rather than disclosing it publicly, and we will work with you.
Changes
If we change this notice materially we will say so in the product before the change takes effect, rather than quietly updating the date at the top.