Skip to content
PalmaPlan

Your data, and our proof

Two things on this page. First a summary of what we do with your data, with a link to the full policy. Then a list of every claim on this site's five presentation pages (home, features, MCP, data, FAQ), and what proves it — because a site that claims without showing is asking to be taken at its word. The Privacy and Legal Notice pages make plenty of claims too; those are legal documents that cite their own sources internally, not this table.

Three cookies, all necessary, no tracker: that's why there's no banner. Your password is never stored, your IP address is not written to the server log, and you export or delete your account with one button — and we then say exactly what leaves and what stays. A written procedure exists for a data breach. Your data is stored in the European Union — in France with OVH, our host, and in Paris with Scaleway, for mail and for backup copies, encrypted before they leave the server. Those are our two sub-processors, under contract, and nobody else processes your data for us. One reservation, stated in the policy: our host can access the server remotely from Canada and the United Kingdom, two countries the European Commission recognises as adequate.

The full detail is in the privacy policy: privacy policy →

What we don't claim. PalmaPlan isn't "GDPR certified": that label only exists at the end of a costly process we haven't started. What we've built is the file an auditing body would ask for — the record of processing activities, the retention periods, the breach procedure, the list of sub-processors. We call that certifiability, and we don't call it anything else. The database isn't encrypted at rest, and we say so here rather than leave it to guesswork.

Every claim, its proof

A claim on the site that isn't an opinion gets a row here, with its proof — an end-to-end recipe (marked R), a test, a document in the repository.

Claim Where Proof
The MCP server exposes 101 tools, 10 resources and 5 promptshero, MCP, FAQpackages/mcp/src/http.test.ts:268 (expect(tools.length).toBe(94)); R recette-s15.ts (all 94 descriptions and schemas read by a real MCP client)
Claude Code connects over HTTP, registers itself, gets your consent in the browserhero, MCP, FAQReal trial (CLI 2.1.81): 401 + WWW-Authenticate, two .well-known documents, POST /oauth/register 201, PKCE S256, consent, POST /oauth/token 200; R recette-s13.ts
The issued token is named, visible in preferences, revocable, valid thirty dayshero, MCP, FAQReal trial (token "MCP · Claude Code", read+write, 30 days); R recette-s13.ts, recette-s11.ts
The screen follows live while an agent writeshero, MCP, videoR recette-s12.ts (two browsers, one MCP client); the broadcast itself stays under a millisecond in both benchmarks — perceived latency depends on load: 24.6 ms for the 50th client on a single active schedule (S12, flux.perf.test.ts), 83.4–84.6 ms median (p95 up to 95.9 ms) under twenty active schedules in parallel — the normal situation for a multi-user instance —, because of better-sqlite3's single write queue (S17, banc-s17.md §4, shared development machine)
By invitation, and not self-hostable today: the code isn't published; the service lives at palmaplan.com, where you get in with a codehero, FAQlegal/mentions-legales.md §5 (code not published, no licence); deploy/compose.yaml (PALMAPLAN_SIGNUP_MODE=codes by default); R recette-beta.ts (/signup refuses without a code)
Free beta, ahead of version 1.0; 1.0 is the author's own switch-overhero, beta, FAQREADME.md "Positioning"; no billing code in packages/ or apps/ (verified)
You draw a block by click-and-drag; move it, resize it, move three at oncefeaturesR recette-s4.ts (double oracle: date columns and canvas pixels)
Durations are in working days; weekends, holidays, named closures; a block keeps its durationfeaturesR recette-s4.ts, recette-s6.ts, recette-s13.ts (closures and absences)
Dependencies push, never pull; a violated link stays redfeaturesR recette-s5.ts (twenty blocks over seven weekends, triple oracle)
The critical path lights up at the press of a key and printsfeaturesR recette-s9.ts (red outline read in pixels and SVG, after reload)
Everything undoes; 56 kinds of reversible commands; Ctrl+Z also undoes what an agent wrotefeatures, MCPR recette-s1.ts, recette-051.ts, recette-s10.ts
Filtering and search live in the page addressfeaturesR recette-s6.ts (the filter in the URL and its reload)
Per-block actions in kanban or list form; progress is derivedfeatures, MCPR recette-s10.ts ("0/3" then "33%" read in pixels and SVG)
Exports, through your MCP agent (export_schedule, render_schedule): v23 round-trip, CSV, workbook, SVG, PNG, PDFfeatures, FAQR recette-s7.ts, recette-s9.ts, recette-s8.ts — these recipes prove the product can produce these formats through its MCP tools, not that a human gets them from the screen (no download button anywhere in apps/web)
Imports, through your MCP agent (import_schedule): v23, CSV, a calendar file, the XML of a desktop scheduling toolfeaturesR recette-s7.ts; import tests in packages/core for calendar and XML
The printable preview, ready for the browser's PDF (Ctrl+P)features, FAQR recette-s8.ts (/s/:id/print, a one-page PDF produced by a real browser)
Finger and stylus; a List | Timeline view under 900 pxfeaturesR recette-s9.ts (touch phone context, 390 × 844)
The screen in French or EnglishfeaturesR recette-s9.ts; two tests guarantee both languages stay covered
The whole grid with the keyboard alonefeaturesR recette-s9.ts, recette-s10.ts
A complete light theme and a complete dark themefeatures, screenshotsR recette-s14.ts, written before the code; AA contrast measured ≥ 4.5
A queue of pending changes survives a closed tab through a network outagefeaturesR recette-s8.ts, recette-s6.ts
Three roles checked on every route; a stranger sees nothingfeaturesR recette-s11.ts; droits.test.ts enumerates every route (22 routes × 5 callers); acces.test.ts replays the owner-only operations under five URL spellings, encoded ones included, and a test fails if any server route is missing from the operations table (since 0.21.1)
Invitation by link or email, transfer, a removed access shows instantlyfeaturesR recette-s11.ts, recette-s12.ts
Realtime: the other person's screen follows, presence, conflicts are namedfeaturesR recette-s12.ts — latency detailed in the row above (banc-s17.md §4)
Paginated, filterable History, with Comparefeatures, MCPR recette-s13.ts (first page of 293 entries → 37 ms)
Comment threads: a viewer replies, an editor resolvesfeaturesR recette-s13.ts
The bell warns you; an evening summary can go out by emailfeaturesR recette-s13.ts (seven kinds of notifications, a fake SMTP — a real SMTP server isn't proven yet)
Exclusive editing: the lock is taken, and released in ten secondsfeaturesR recette-s13.ts (423 LOCKED)
Read-only publishing, optional password, embeddable or notfeaturesR recette-s11.ts
10 resources and 5 prompts (alongside the 101 tools)MCPR recette-s15.ts
A single install command, to https://palmaplan.com/mcp; nothing to install client-sideMCPREADME.md "MCP server" (the same command, to a local instance); deploy/jour-j.md §2, step 8 (to palmaplan.com, run on go-live day)
The agent speaks in labels, never in internal identifiersMCPR recette-s2.ts, recette-s6.ts (played entirely through labels)
It simulates before writingMCPR recette-s7.ts
It undoes and redoes its own workMCPR recette-s7.ts, recette-s10.ts
It breaks a task into actions, assigns them, checks them off; progress followsMCPR recette-s10.ts
It can ask to be notified when the schedule changesMCPabonnement.test.ts (resources/subscribe); R recette-s13.ts — no known client subscribes today
Everything an agent writes is signed under its name in HistoryMCP, FAQR recette-s10.ts, recette-s11.ts
A read-only token can't writeMCPR recette-s8.ts (403 SCOPE_INSUFFICIENT)
The MCP server only accepts the address it registered underMCPREADME.md (DNS-rebinding guard); http.test.ts
Three cookies, all necessary, no tracker — and why there's no bannersecurity, FAQlegal/confidentialite.md §7; legal/registre.md §4.1
Your password is never stored (scrypt, per-person salt); one backup a day, fourteen keptsecurity, betalegal/confidentialite.md §9; R recette-s8.ts
Your IP address is not written to the server logsecurityTested over a real TCP connection (embarquement.test.ts); R recette-s16.ts point 7
Every retention period is published with the piece of code that applies itsecurity, data, FAQlegal/retentions.md §2; compared by script against legal/confidentialite.md §3
Full export with one button, schedules re-importable as they aresecurity, FAQGET /api/v1/me/export (packages/api/src/http/rgpd.ts); R recette-s16.ts point 3
Account deletion with one button; what remains is stated, and it isn't called anonymizationsecurity, FAQDELETE /api/v1/me (packages/api/src/http/rgpd.ts); the tombstone, "Deleted user"; R recette-s16.ts points 4–6
Access, portability and erasure rights, exercisable in the product without a ticket or support requestsecurity, dataapps/web/src/composants/Profil.tsx: export in one click ("Export my data"); erasure behind typing your email and two confirmations ("Delete my account" → "Delete" → "Permanently delete my account", not "in two clicks"); R recette-s16.ts points 3 and 4
A written procedure for a data breach, with the legal deadlinessecuritylegal/violation.md
Certifiable, not certified; no label; the database isn't encrypted at restsecuritylegal/registre.md §7
Two sub-processors, named and under contract: OVH (hosting) and Scaleway (mail, encrypted backup copies); nobody else processes your data for usdata, FAQlegal/sous-traitants.md §2 and §5 (both contracts, item by item); legal/confidentialite.md §6
This site sets no cookie and contacts no third party on loadhero, dataMeasured by this sprint's recipe: no cookie set after visiting all seven pages, in both languages
No pricing page, no payment method requestedbeta, FAQNo billing code in the repository (verified)
Your data is stored in the European Union: in France with OVH, in Paris with Scaleway; one reservation, the host's remote access from Canada and the United Kingdom, two countries recognised as adequatedata, FAQlegal/sous-traitants.md §2 and §4 (the location written into the contracts, and what isn't); legal/confidentialite.md "Where your data is" and §2
4,804 tests, thirty-three end-to-end recipes, coverage measured per packagebetanote-0.27.0.md (tag v0.27.0)
No hosted continuous integration: the verification chain runs by hand before every releasebetaREADME.md "Commands"
The product works entirely without an agentFAQR recette-s3.ts, recette-s4.ts, recette-s6.ts (a real browser, no MCP client)
An exported v23 file comes back equal to its canonical form; a report names every lossFAQR recette-s7.ts
MCP is an open protocol for discovering and calling toolsMCP, FAQThe server is built on the official MCP SDK (packages/mcp); .well-known documents follow RFC 8414 and 9728
The video shows a real MCP client, not an animationhero, captionscripts/captures-identite.ts (replayable with one command)

58 claims, covering the site's five presentation pages (home, features, MCP, data, FAQ) — not the two legal pages (privacy, legal notice), which cite their own sources within the document. Most of the 58 are backed by an end-to-end recipe (marked R); the rest by a measured benchmark or figure, a documented real-world trial, or a legal document written against the code that implements it.

Certifiable, not yet certified

What we've built is the file an auditing body would ask for: the record of processing activities, retention periods proven by code that runs, a breach procedure, a list of sub-processors, a privacy policy, and access, portability and erasure rights, exercisable in the product without a ticket or support request — export in one click, erasure behind typing your email and two confirmations. We call that certifiability.

What we don't have, and don't claim to have: no certification, no label, no third-party attestation. A certification — Europrivacy, for instance — covers an organization as much as a product, costs anywhere from a few thousand to tens of thousands of euros, and only makes sense once there's a commercial activity to protect. That's a decision for Xavier Baril, after commercialization.