Valentyn Stadnytskyi

Privacy Policy

Effective date: September 5, 2026 · Stadnytskyi Consulting LLC, doing business as Embedzilla · This policy lives at https://calendar.stadnytskyi.com/privacy — the same domain as the application it describes.

This is the privacy policy for Embedzilla Booking. The companion Terms of Service is a separate page.

  1. Who we are and what this covers
  2. Visitors to this site
  3. Booking a meeting
  4. Google Calendar data
  5. How information is shared
  6. Storage, security and retention
  7. Your choices and rights
  8. Children
  9. Changes to this policy
  10. Contact

1. Who we are and what this policy covers

Embedzilla is a trade name of Stadnytskyi Consulting LLC, a Maryland limited liability company located at 909 Rose Avenue, Suite 400, North Bethesda, MD 20852, United States (“Embedzilla”, “we”, “us”). This policy explains what information we collect, how we use it, how long we keep it, and the choices you have when you use Embedzilla Booking, our meeting-scheduling service at calendar.stadnytskyi.com (the “Booking Service”), including the Google Calendar integration that makes it work. The booking page is presented under the name of the Embedzilla consultant who hosts the meeting.

Our marketing website at embedzilla.com is a separate property with its own analytics, embedded map and third-party scheduling page; it is covered by the policy published at embedzilla.com/privacy/. Nothing in that description applies to the Booking Service, which loads no third-party content at all.

We are a small engineering consultancy. We do not sell personal information, we do not run advertising, and we collect only what is needed to schedule meetings. Use of the Booking Service is also governed by our Terms of Service.

2. Visitors to this site

You can browse the booking page without creating an account or telling us who you are.

Server logs

Like almost every website, our web server records standard technical details of each request: your IP address, the page requested, the date and time, the referring page, and your browser type. We use these logs only to keep the service secure and available and to diagnose problems.

The Booking Service additionally writes an application log on the same server. It records the path of each request (including the private link used to manage a booking) and, when a confirmation email is sent, the address it was sent to. The application writes that log to its standard output, where the operating system’s own logging service captures it; those logs are rotated automatically and older entries are discarded as they age out, so neither the web-server log nor the application log is kept indefinitely. We do not build profiles from them and we do not combine them with your booking record.

Cookies, analytics and third-party content

The Booking Service uses no analytics, no advertising and no tracking pixels, and the public pages set no cookies. The only cookie the application can set is the administrator’s own session cookie, and it is set only after an Embedzilla administrator logs in to the private admin page. Every stylesheet, script and image on these pages is served from this domain: the pages load nothing from a content-delivery network, no third-party fonts and no embedded third-party frames, and that is enforced in your browser by the Content-Security-Policy header described in Section 6.

3. Booking a meeting

When you book a meeting through the Booking Service, we ask for the information needed to put the meeting on the calendar and to reach you about it:

InformationRequired?Why we collect it
Your nameYesIdentifies you in the calendar invitation.
Your email addressYesSends you the calendar invitation with the meeting link and lets us contact you about the meeting.
Your phone numberNoAn alternative way to reach you if the video call fails.
Notes you choose to addNoLets you tell us what the meeting is about.
An address or location you choose to provide (for an in-person meeting)NoUsed as the meeting location in the calendar event, so both parties know where to meet.
A meeting link you choose to provide (for example Teams, Zoom or Google Meet)NoUsed as the meeting location instead of creating a Google Meet room, and placed in the calendar event.
Meeting date, time, duration and your time zoneYesSchedules the meeting and shows it to you in your local time.
Your IP addressAutomaticLimits how many availability lookups and bookings a single address can make in a short time, to prevent abuse, and is recorded with the booking so that we can investigate abuse or fraud.

We use this information to create the calendar event, to send you the invitation (which includes a Google Meet video-call link) and to hold the meeting with you. The name, email address, phone number, time zone and notes you provide are placed in the calendar event, which is stored in the Google Calendar of the Embedzilla account that hosts the meeting and is sent by Google to you as an invitation. The invitation is also sent to the host’s notification email address, so that we are told about the booking; you will see that address in the invitation’s attendee list, and if we send you a confirmation email ourselves (Section 5) a copy goes to that address too. The booking confirmation page gives you a private link with which you can cancel the meeting yourself. Cancelling normally deletes the event from the host’s calendar, and Google then sends a cancellation notice to both parties; if the event cannot be removed automatically (for example because the hosting account’s calendar connection has changed), the page tells you so and asks you to email us instead. Our record of the booking is kept, marked as cancelled, until you ask us to delete it — see Sections 6 and 7 for the timelines.

If you contact us by email or through the meeting itself, we keep that correspondence as part of our normal business records.

Address suggestions

The optional address field on the booking page offers suggestions once you have typed three characters. What you type is sent to our server, which asks a geocoding service — Photon, operated by komoot GmbH using OpenStreetMap data — for matching addresses and returns them to your browser. Your browser never contacts that service directly, so it does not receive your IP address, your cookies or any other detail of your booking; it receives only the partial address text and our server’s request. Those lookups are held in a small in-memory cache on our server for five minutes (300 seconds) and are never written to our database or attached to your booking unless you actually submit the address as part of a booking. You can ignore the suggestions entirely: type any address by hand, or leave the field empty and no address lookup happens at all.

4. Google Calendar data (the Booking Service’s Google integration)

The Booking Service connects to Google Calendar through Google’s official APIs. Only Embedzilla’s own Google accounts are connected in this way — the people who book meetings never sign in with Google and no access to their Google accounts is requested. This section describes exactly what the connection does, because Google requires us to say so and because we think you should know.

Permissions we request and what each one is used for

Google permission (scope)What we do with it
userinfo.email and openid Learn which Google account was connected, so the administrator can tell connected accounts apart.
calendar.readonly List the calendars of the connected account (name, ID, time zone and access level) and read free/busy information — the time blocks that are already taken. Combined across all connected accounts, this is what lets the booking page show only times that are actually free. We do not read the titles, descriptions, locations or attendees of existing events.
calendar.events (requested only for an account connected in “booking” mode — the account whose calendar receives the bookings) Create the calendar event for a booking on that account’s designated calendar, including the Google Meet link and the invitation to the guest, and delete that same event if the booking is cancelled. We never modify or delete events the Booking Service did not create. If a connected Google account previously granted this application broader calendar access, Google may carry that earlier permission over into the new token; we still use the account only for the purposes in this table.

What we do and do not do with Google user data

  • Google data is used solely to show availability and to create, and if necessary cancel, the booking event.
  • It is never used for advertising, never sold, never shared with data brokers, and never used to develop, improve or train machine-learning or artificial-intelligence models. There is no exception to this, and no such use is planned.
  • We read only free/busy time blocks and calendar names. We never read the titles, descriptions, locations or attendees of existing events, and the application contains no code that lists or reads an existing event: the only calls it makes against events are creating the booking event and deleting that same event on cancellation.
  • Google user data is not transferred to any other application, and it is not used for any purpose the connecting account holder was not shown on Google’s consent screen.

How Google data is stored, protected and deleted

  • The Booking Service stores the OAuth tokens Google issues for each connected account, the account’s email address, the list of its calendars, and the free/busy data it retrieves. Tokens are encrypted at rest (Fernet symmetric encryption — AES-128 in CBC mode with an HMAC-SHA256 authentication tag — under a key derived from the server’s secret key) and are used only on our server, only to call the Google Calendar API on behalf of that account. They are never written to a log.
  • Free/busy information is cached in memory only, for about 60 seconds, is discarded whenever a booking is created or cancelled, is never written to disk, and is never stored permanently.
  • Google credentials are kept only until the account is disconnected in the admin page. Disconnecting sends the account’s refresh token to Google’s token revocation endpoint (https://oauth2.googleapis.com/revoke) and then deletes the stored credentials and the stored calendar list from our database in the same operation. If Google does not confirm the revocation, the page says so and the administrator removes the application’s access from the account’s Third-party apps & services page instead. Encrypted database backups taken before a disconnection may still contain the earlier token; a revoked token cannot be used, and we delete backups when they are no longer needed.
  • Only the Embedzilla administrator can connect or disconnect accounts, and that page is protected as described in Section 6.
  • Access can also be withdrawn at any time from the Google account’s Third-party apps & services page.

Limited Use disclosure. Embedzilla Booking’s use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements.

5. How information is shared

We share personal information only with the service providers needed to operate the Booking Service, and only for that purpose. Each one is named here; there is no other category of recipient.

  • Google LLC — Google Calendar and Google Meet hold the meeting event and deliver the invitation to you, under the Google Calendar connection described in Section 4.
  • Amazon Web Services, Inc. — hosts the Booking Service in the United States. AWS provides the server; it does not use the data for its own purposes.
  • komoot GmbH (Photon) — receives the partial address text from our server, never from your browser, to return address suggestions (Section 3). It receives no other part of your booking.
  • Email delivery — if the administrator has configured an SMTP server and we send you a confirmation email directly (in addition to Google’s invitation), that message passes through our email provider.

We do not sell personal information, we do not share it for cross-context behavioural advertising, and we do not disclose it to data brokers, advertising networks, or any party seeking to train machine-learning models. We may disclose information when the law requires it, to protect our rights or safety, or as part of a sale or reorganization of the business, in which case this policy will continue to apply to the information transferred.

The “Book a free 30-minute call” buttons on embedzilla.com open a scheduling page hosted by a third party, Calendly, LLC, rather than this Booking Service. That flow is not part of the Booking Service and is described in the policy at embedzilla.com/privacy/.

6. Storage, security and retention

Technical and organizational safeguards

These are the protections actually implemented in the Booking Service:

  • Encryption in transit. Every connection to the Booking Service uses HTTPS, and the server sends an HTTP Strict Transport Security header (max-age=31536000; includeSubDomains) so that browsers refuse to speak to it in the clear.
  • Encryption of Google credentials at rest. Stored OAuth tokens are encrypted with Fernet (AES-128-CBC with an HMAC-SHA256 authentication tag) under a key derived from the server’s secret key; rotating that secret invalidates every stored credential. The application refuses to start on a public domain with a default or short secret.
  • Administrator access control. There is a single administrator, authenticated by a long random admin token compared in constant time and rate-limited to 10 attempts per minute per IP address. The resulting session is a cryptographically signed cookie marked HttpOnly, SameSite=Lax and Secure, and every state-changing admin form carries a per-session CSRF token that is checked on submission.
  • Strict Content-Security-Policy. Every page is served with default-src 'self', script-src 'self', style-src 'self', connect-src 'self', frame-ancestors 'none' and base-uri 'self', alongside X-Content-Type-Options: nosniff, X-Frame-Options: DENY and Referrer-Policy: strict-origin-when-cross-origin. There are no inline scripts and no third-party scripts anywhere in the application, so an injected script has nothing to run in.
  • Rate limiting. Per-IP sliding-window limits apply to bookings (5 per minute), availability lookups (60 per minute), address suggestions (30 per minute) and admin logins (10 per minute), so no single visitor can flood the service or mine it for availability.
  • Bounded and validated input. The booking request body is capped at 16 KB (64 KB at the web server), and every field is length-bounded and validated before it is stored or placed in a calendar event: name at most 100 characters, email at most 200 and syntactically checked, phone at most 40, notes at most 2,000, a supplied meeting link at most 500 characters and https:// only, an address at most 300 characters on a single line with control and invisible characters refused. Guest text is HTML-escaped before it enters the calendar event or an email, and a hidden honeypot field rejects automated submissions.
  • Least privilege on the server. The application process runs as a dedicated non-root system user with no login shell, is confined to its own data directory, and can gain no new privileges. Read-only Google accounts are connected with read-only scopes, so only the one designated booking account can write to a calendar at all.
  • Booking records and Google credentials are stored on an access-controlled server in the United States, and access is limited to the Embedzilla administrator. No method of storage or transmission is completely secure, but these measures are appropriate to the small amount of information we hold.

How long we keep each kind of data

DataRetention
Booking records (name, email, phone, notes, meeting time and time zone, any address or meeting link you supplied, the IP address the booking was made from, and the identifier and links of the calendar event) Kept as our business record of the meeting, including after a cancellation. They are not deleted automatically. We delete them on request within 30 days — see Section 7.
Google OAuth tokens and the stored calendar list for a connected account Until that account is disconnected. Disconnecting revokes the refresh token at Google’s revocation endpoint and deletes the stored credentials and calendar list immediately, in the same operation.
Google free/busy data In memory only, for about 60 seconds, and dropped whenever a booking is created or cancelled. Never written to disk.
Address-suggestion lookups In an in-memory cache for five minutes (at most a few hundred entries, the oldest evicted first). Never written to the database unless you submit the address with a booking.
Web-server and application logs Rotated automatically by the operating system and discarded as they age out; not retained indefinitely and not used to build a profile of you.
Information in your own Google Calendar or email Subject to Google’s retention, not ours. Deleting our copy does not delete Google’s.

7. Your choices and rights

  • You can book a meeting without providing a phone number, notes, an address or a meeting link, and you can ignore the address suggestions entirely.
  • You can cancel a booking yourself with the private link on your confirmation page or in the invitation. Cancelling removes the event from the host’s calendar and Google notifies both parties; if the automatic cancellation fails, the page says so and you can email us and we will remove the event.
  • You can ask us to show you, correct, or delete the personal information we hold about you by emailing contact@embedzilla.com. We will respond and complete the deletion within 30 days, and will verify the request using the email address the booking was made with. Deleting the booking record does not by itself remove the event from your own Google Calendar; ask us and we will cancel that too, or cancel it yourself with the link above.
  • You can withdraw Google Calendar access for a connected Google account at any time at myaccount.google.com/permissions, and the administrator can disconnect it in the admin page, which revokes the token at Google and deletes the stored credentials.
  • Depending on where you live, you may have additional rights under laws such as the GDPR, the UK GDPR or US state privacy laws, including the right to complain to a supervisory authority. We will honour those rights as they apply.

The Booking Service is operated from the United States. If you use it from elsewhere, your information will be transferred to and processed in the United States.

8. Children

The Booking Service is intended for business use by adults. We do not knowingly collect personal information from anyone under 16. If you believe a child has provided us with information, contact us and we will delete it.

9. Changes to this policy

We may update this policy from time to time. The effective date at the top shows when it was last changed, and the current version is always available at https://calendar.stadnytskyi.com/privacy, which is the canonical address of this policy and the address given to Google for OAuth verification. Material changes to how we use Google Calendar data will be reflected here before they take effect.

10. Contact

Stadnytskyi Consulting LLC (Embedzilla)
909 Rose Avenue, Suite 400
North Bethesda, MD 20852, United States
contact@embedzilla.com

See also the Terms of Service · Book a meeting

Times are shown in your local timezone unless noted. Embedzilla Booking · operated by Stadnytskyi Consulting LLC · Privacy Policy · Terms of Service