Our approach
This page describes Gitogi Srl's documented measures as at 16 September 2026 for gitogi.com and, where expressly stated, for tools used in its business activities. The list distinguishes controls verified in the code, measures provided by suppliers and documented procedures.
Articles 25 and 32 of the GDPR require data protection by design and technical and organisational measures appropriate to the risk. The measures listed here contribute to that protection; their suitability must be assessed for the particular processing involved.
The website has cryptographic safeguards, administrative access controls, input validation, request limits, logs with integrity protections and daily deletion procedures. In the logs and request limiters identified below, certain identifiers are replaced with fingerprints calculated using a secret key. This is pseudonymisation, and the data remains subject to the GDPR.
Automated deletion procedures cover the website records described in the Privacy policy. These procedures do not automatically delete copies held in email or business tools.
Website measures do not automatically extend to client systems. Project software may run on the client's accounts or Gitogi's accounts. The scope of the measures and operational responsibilities must be established in the contract and, where applicable, the Data processing agreement.
This page describes the configuration at the stated date. Legal obligations and commitments in applicable contracts remain in effect.
This English version is provided for convenience. If there is any discrepancy, the Italian text prevails, subject to mandatory law.
Cryptographic safeguards
- Website served over HTTPS with the Strict-Transport-Security (HSTS) header; database connection through the Supabase pooler using TLS
- Application-level AES-256-GCM encryption of confidential settings stored in the database
- Keys and credentials stored in Vercel environment variables, rather than in the code
- Database encryption at rest guaranteed by Supabase as a supplier measure, not verified in the application code
- Chat consent cookie protected by an HMAC authentication code and inaccessible to page scripts through the HttpOnly attribute
- Identifiers in request limiters replaced with HMAC-SHA-256 fingerprints calculated using a secret key
Access control
- The website's restricted area is available only to administrators authorised through their role or an approved email address, with server-side authorisation checks; no public sign-up
- Mandatory two-factor authentication using time-based one-time passwords (TOTP) for administrators, checked on restricted pages and in server-side actions, with access blocked if the check fails or returns no response; an emergency switch allows temporary suspension while the second factor is set up again, with every sign-in reported to the error monitoring system while the switch is active; automatic sign-out handled by the browser after 30 minutes of inactivity
- Row Level Security (RLS), the mechanism for controlling access at row level, enabled on database tables; the application accesses the database only from the server
- Google reCAPTCHA v3 with server-side verification: loaded on interaction with contact and newsletter forms and when administrative sign-in pages open
- Filters against attempts to manipulate chat instructions; limits of 10 messages per minute and 50 per day per pseudonymised IP address, and 3 contact requests per hour
Minimisation and pseudonymisation
- IP fingerprints in the consent log calculated using HMAC-SHA-256 and a secret key, shortened to 16 hexadecimal characters; conversations stored without IP address or user agent fields
- Gitogi AI technical log contains no message text: it records character and token counts, model, processing stage, latency, tools called and a SHA-256 fingerprint of the system instructions
- The record created by a chat contact request has no telephone field; the number is sent in the plain-text request email, which also includes up to 12 conversation messages of no more than 700 characters each. If the number is written in a message, it also remains in the stored conversation
- Sentry configured without sending personal data by default; errors, transactions and breadcrumbs pass through a filter in the browser and on the server that removes user data, email and IP addresses and values of the email, token and code parameters, including email addresses encoded in URLs
- Session recording requires analytics consent, with text, fields and media masked in Sentry and inputs masked in PostHog; refusing or withdrawing analytics consent deletes _ga* and ph_* cookies and ph_* and sentryReplaySession storage keys from the browser
- Automated daily deletion process for website records when their stated retention periods expire, including the specific rules for conversations linked to contact requests
Integrity and traceability
- HTTP security headers and a Content Security Policy (CSP) using nonces on all pages
- Input validation using Zod schemas for forms, chat and APIs
- Contact form declarations are recorded with the displayed text, date, HMAC fingerprint of the IP address, user agent, document version and language; chat and cookie choices are also recorded separately
- Consent log, AI technical log and administrative activity log with append-only protection through database triggers and a hash chain
Availability and continuity
- Website server functions restricted to Vercel's fra1 region (Frankfurt); Supabase database and authentication in eu-central-1
- Automatic backups provided by the database supplier, with the plan unverified; no additional external backup is active
- Retry mechanisms and circuit breakers, which temporarily stop calls following repeated failures, for the Resend email service and the AI model chain
- Gitogi AI uses Claude Sonnet as its first model and Mistral Large as its fallback, both through Amazon Bedrock with EU inference profiles; if neither model responds, the chat cannot provide an answer
- Website errors and performance traces collected through Sentry, using its EU data region
Testing and review
- Every change goes through a pull request with mandatory automated checks through GitHub Actions: linting, unit tests, build, type checking and basic end-to-end tests
- Automated Lighthouse checks with informational results that do not block changes
- Daily verification of protected logs' hash chains through a scheduled job
Organisational measures
- Documented incident response and disaster recovery procedures, and a breach register, held in the repository; whether they reflect the current situation has not been verified
- Perplexity use is limited to research using public sources, without entering personal data
- Website chat processing exclusively through Amazon Bedrock, whose terms exclude AWS retention of the content and its use for training
- ChatGPT Business and Codex used under business terms that exclude the use of data for training
Data subject rights
- Your data and Your consents pages use verification through a six-digit email code valid for 10 minutes
- JSON export and deletion of website data linked to the email address: contacts, prospective client records, newsletter subscription and conversations linked to a contact request
- Chat consent can be withdrawn through the chat or the Your consents page, with the withdrawal recorded and the cookie deleted; previously stored conversations remain until automatic deletion after 90 days or, if linked to a contact request, for as long as the corresponding record remains
- Automated features do not identify anonymous conversations without a contact request or delete copies in email or business tools; the consent log, AI technical log and completed deletion requests have a separate five-year retention period
Reporting a security issue
If you find a vulnerability or suspect a personal data breach, email info@gitogi.com immediately. Identify the page or service affected, when you noticed the issue and any details needed to understand it.
Avoid sending passwords, credentials or copies of other people's personal data. Do not access or alter other people's data or disrupt the service to demonstrate the issue. This reporting channel does not authorise intrusive testing or unauthorised access.