Privacy & security

What data we collect, why, how we process it — and how the underlying system is built, so you can judge for yourself whom to trust and whom not to. Tone: written for a lawyer who wants to understand before using.

⚠️ Courtesy English translation — Italian version prevails. The authoritative text is the Italian one at skillagram.ai/privacy.html; in case of any discrepancy, the Italian version governs.

Skillagram is a social network for lawyers: you sign up, you share agents, prompts, skills and plugins for legal AI, you follow colleagues, you join communities, you message each other privately. Lawyers review the contributions and report cases where an AI got Italian law wrong. It is not a commercial service, and the AI is not sold. It is part of the RegIA / BeccarIA family, but it is a prototype run by the author as a natural person.

Part 1 — Privacy

Data controller

Michele Loi — author and maintainer of the prototype, acting as a natural person (this is not a commercial service; there is no company behind it).

What personal data we collect

When you browse the public pages

The public pages (the home page, the catalog of contributions, the Try it sandbox) are readable without an account. While you are only browsing:

When you create an account and sign in

To publish, chat, follow colleagues, save skills or join a community you need an account. Skillagram is login-first: reading the catalog is open, but participation goes through signing in. Sign-in is without a password to remember, in two ways:

What we keep about the account: your email (it is your sign-in identity) and an internal user identifier. The sign-in session is stored in the browser's localStorage so you stay logged in between visits.

Your public profile

On first signup you create a profile. These are public and visible to anyone:

When you publish a contribution, it links back to your profile: your name and avatar always accompany what you share.

When you message a colleague privately (chat)

Chat (1:1) is the point on which you must be informed precisely, because here confidentiality has an honest technical boundary:

⚠️ For your professional secrecy, do not paste into chat (nor to the bots) identifying or confidential client data. Chat is meant for exchange between colleagues about skills, prompts and method — it is not a channel for case material. If you need to discuss a real case, pseudonymize it first with Recode IT (remove identifying data): the legal question stays discussable, the names don't. Professional secrecy is your duty (art. 28 of the Italian Forensic Code of Conduct; art. 622 of the Italian Criminal Code), and on a channel readable by the operator it is you who protects it, not encryption.

When you publish a contribution (agent / prompt / skill / plugin)

We save what you put in the form. All of this is public on the site: title, description, full content, legal area, type, chosen licence (which governs reuse by others), any GitHub link, any legal references. The contribution is linked to your profile (public name + avatar).

Publishing requires being signed in.

When you write a review or report an AI error

When you try a prompt or skill in the sandbox ("Try it")

This is the most privacy-preserving point, and the reason the sandbox can say "nothing leaves your browser". The Try it page runs a prompt/skill using your API key, on your text. When you press Run:

When you send the case text to the AI provider, the relationship is between you and that provider. Some have datacenters outside the EU (e.g. DeepSeek, China). That's why: always pseudonymize the case first with Recode (remove identifying data). In the BYO-key sandbox that responsibility is yours.

When you follow, block, save, join a community

When you vote "Helpful"

The vote increments the counter. To prevent double votes from the same browser, we store a locally generated anonymous string. It is not your IP, not your name, not directly linked to you.

Maintainer notifications

For every new profile and every newly published skill, the system sends an email to the maintainer (via Resend) with a few summary fields plus a link. Fields sent — new profile: display name (+ handle), firm if any, profile link; new skill: type, title, author, area if any, skill link. No email and no IP address are included. It serves to know what enters the platform and to be able to moderate. It does not fire on new messages, reviews or reports.

When you use the "Removal request" form

The form opens your email client pre-filled and you send the email yourself to micheleloi@skillagram.ai. You reveal your email to us voluntarily with that action; it is not stored in the site's database.

Why we process this data (legal basis)

How long we keep it

Where the data lives (recipients)

To run the service we rely on the recipients below. Where data leaves the European Economic Area (EEA), the transfer is covered by the safeguards indicated (the EU Commission's Standard Contractual Clauses — "SCCs" — and/or the EU-US Data Privacy Framework — "DPF").

A separate case — "bring your own key" (BYO-key) AI sandbox. In the Try it sandbox you may select third-party AI providers (Anthropic, OpenAI, DeepSeek, Google Gemini, Mistral or a custom endpoint), some outside the EU. In that case those providers are not our recipients: your browser sends the data directly to the provider using your own key, under your responsibility and subject to the terms of the provider you choose. One more reason to pseudonymize first (e.g. DeepSeek, China).

Your rights

To exercise a right, write to micheleloi@skillagram.ai. Typical response time: 2-5 business days (it's a prototype run in spare time).

The site sets no HTTP cookies and uses no third-party tracking cookies. It uses the browser's local memory (localStorage/sessionStorage) to function:

All first-party memory, no analytics. It clears by wiping the site's data.

Minors

The prototype is intended for legal professionals. In Italy the age for independent digital consent to information-society services is 14 (art. 8 GDPR, lowered by Italian Legislative Decree 101/2018); consistently, we do not knowingly collect data of minors under 14. If you notice that a piece of content concerns a minor or was published by a minor, report it to us at micheleloi@skillagram.ai.

Changes to this page

If the providers or the purposes of processing change, this page is updated. The site's code is public (AGPL-3.0) and the history of changes is inspectable in the repository.

Part 2 — Security (the architecture underneath)

The idea: explained so that, even without being a developer, you can understand whom you depend on when you use the site, where the risk sits, and why certain things were done a certain way.

1. The site you see (frontend)

Static HTML pages + JavaScript and CSS, served from an easyname VPS (deploy via rsync; skillagram.ai domain).

2. The database + storage + authentication

A PostgreSQL managed by Supabase, region Ireland (eu-west-1, EU). It holds accounts, profiles, contributions, reviews, reports, chat messages (in clear text), follows/blocks/bookmarks/communities, votes, error-report confirmations. Storage holds avatars (public-read space); plugin zips are neither uploaded nor stored (the upload is not active).

3. The AI guide bots

The profiles Avv. Demo Rossi and Avv.ssa Demo Bianchi are bots: when you write to them, an Edge Function (demo-reply) sends your message + the latest exchanges to Anthropic (Claude). The Anthropic key is a backend secret, never exposed to the browser. There is a limit (10 replies per conversation) and a rate limit. It is server-side processing: it is not the zero-server sandbox.

4. Email sending

Resend sends the maintainer notifications about new profiles/skills. No newsletter, no marketing. The Resend API key is a project secret.

5. Chat notifications

An unread-message badge, toast alerts, browser notifications (opt-in) and real-time updates via Supabase Realtime. They serve to know when a message arrives; they are not a newsletter nor tracking.

What is not there (by choice)

What you should know if you want to discuss a real case

This applies to error reports, to chat and to the guide bots:

⚠️ Do not paste names of clients, opposing parties, case-file numbers or identifying personal data. Pseudonymize the case first (remove identifying data).

To reduce risk we recommend Recode IT (recode.micheleloi.pro). Recode runs entirely in your browser — it sends nothing to external servers. It replaces real names with consistent pseudonyms (e.g. Mario Rossi → Tizio) and lets you reverse-substitute. Note the concept: this is pseudonymization, not anonymization — the text remains personal data under the GDPR. It serves to reduce risk (especially in a breach) and to document your diligence, not to remove your obligations. The protection is of the case, not your name: contributions are now always signed.

Trust model: whom you trust when you use this site

In order of criticality:

Skillagram's trust model is not "we are a closed, private circle": it is "the code is open, the architecture is inspectable, and we tell you precisely what is readable and by whom". You trust the verifiability and the honesty of the boundary, not our word.

Honest limits

How to report a security problem

If you find a security bug (e.g. reading/modifying others' messages without consent, extracting private emails, a SQL injection or XSS, or a way for the sandbox to send data to a destination other than the chosen one):

Courtesy English translation of the Italian privacy notice; the Italian version prevails.