Mechanico Privacy Policy
This Privacy Policy explains how Mechanico handles your personal data when you use the Mechanico Android app and the Mechanico website.
It follows Moroccan Law No. 09-08 on the protection of individuals with regard to the processing of personal data.
1. Who is responsible for your data
The data controller is:
- [to confirm: company name]
- [to confirm: address]
- Contact for your data: [to confirm: contact e-mail]
- Declaration to the CNDP: [to confirm: CNDP number]
Your data is used to run the service (see part 6). You can use your rights as explained in part 11.
2. In short
- To create an account, we need your mobile number. There is no password.
- We use your data to run the service: to connect you with a garage and to follow the work.
- We do not sell your data. The app has no advertising, no audience-measurement tool and no crash-reporting tool.
- We do not send any marketing message without your prior consent.
- A position sent in a chat is stored with a precision of about 1 meter. The other person can see it.
- If you edit a message, the original text stays on our server.
- When you delete your account, your messages, requests and reviews are not erased. They are detached from your name and your number. Details: Delete your Mechanico account.
- The website sets no cookies.
3. The data we collect
The table says for each item if it is mandatory. Without mandatory data, the related feature does not work. For example, without a mobile number there is no account. Without a car there is no request. If you refuse optional data, the rest of the service still works.
For all accounts
| Data | Mandatory? | What it is for | Who sees it |
|---|---|---|---|
| Moroccan mobile number | Yes | Sign in by code, identify the account | You. The garage, after it accepts your request |
| First name | No | Tell the garage who you are | The garages of your requests and the other person in a chat. Everyone, with your reviews |
| Profile photo | No | Show your profile | You, and the team of the garage you talk to (chat, notifications, message-forward list). The file is public: anyone with the link can open it |
| App language | Automatic | Show the app and the notifications in your language | Us |
| Notification settings (types, sound, quiet hours) | Automatic | Send only the notifications you want | Us |
| Installation ID (random) and date of last sign-in | Automatic | Recognize a phone that is already signed in | Us. The app also sends the ID to Expo when it asks for your notification token |
| Notification token and phone type | If you turn notifications on | Send you notifications | Us, Expo and Google |
| Saved garages and blocked garages | No | Find or block a garage | You |
| Presence: online, last seen, delivered and read ticks, "is typing" | Automatic | Show if the other person is there and if your message was read | The other person in an open chat |
| Report about a garage, a review, a user or a message | No | Handle your report | Us |
| Help message, with an optional screenshot | No | Answer your question | Us. The screenshot is a public file |
| List of notifications received | Automatic | Show them in the app | You. Each line keeps the sender name and a preview of the message (100 characters at most) |
When you report a message, we keep a full copy: text, text before editing, photos, PDF, voice message, position with address, sender and time. This copy stays even if the message is later deleted for everyone.
If you are a driver
| Data | Mandatory? | What it is for | Who sees it |
|---|---|---|---|
| Car: plate, brand, model, year | Yes, to send a request | Link the request and the history to the car | You. The garage, after it accepts your request |
| Car: mileage, photo | No | Complete the history | Same |
| Number of the new owner, if you transfer a car | Yes, for a transfer | Offer the car to that person. The offer expires after 7 days, but the number stays saved on the car | The person who receives the offer |
| Claim on a plate | No | Another person can claim the plate of your car. You (or the garage that entered the car) receive the claim. With no answer, it is refused after 7 days | The owner, or the garage that entered the car |
| Request: text, photos, voice messages, service, time slot | At least one message, and a time slot | Explain the need to the garage | All active members of the garage team |
| Arrival time ("I have arrived") | No | Tell the garage | The garage |
| Messages: text, replies, forwarded messages, reactions, albums of up to 10 photos, voice message (60 seconds, 3 MB), PDF (10 MB), position | No | Talk with the garage | Both sides of the chat |
| Work: photos of the car on arrival, mileage, diagnosis (text, voice, total), lines and prices, invoice photo | Entered by the garage | Follow the work, accept the price, keep the history | You and the garage |
| Work done elsewhere (manual entry): date, mileage, garage, lines, photos, invoice | No | Complete the car history | You. The garages that accept a request for your car later. They see the car history, including the history of previous owners |
| Review: rating, text, up to 3 photos | No | Inform other drivers | Everyone, with your first name. Review photos are public |
| Phone position | No | See the table below | See the table below |
Your position
It is used only if you allow it. The app never asks for the position in the background.
| Where | Precision | Stored? | Who sees it |
|---|---|---|---|
| Garage search | Rounded to about 110 meters. You can type a city instead | No. The server uses it to find nearby garages | Us, during the search |
| Position sent in a chat ("Position" button) | Not rounded: 5 decimals, about 1 meter, with the street address | Yes, with the message | The other person. The position is copied into a report of the message |
| Garage position, when the profile is created | Chosen by the garage | Yes | Everyone (public garage profile) |
To write the address, the phone turns the position into an address with the Android geocoding service. On a phone with Google services, this service uses Google. It also turns a typed city into a position.
Your messages
- You can edit a message for 15 minutes. The original text stays on the server. Only we can see it. It is copied into a report of the message.
- You can delete a message for everyone for 2 days. The text and the files are erased. The words "Message supprimé" stay in the chat. After 2 days, the message cannot be deleted.
- We also keep a copy of the text for searching in the chat. Nobody sees it. It is erased when the message is deleted.
Microphone, camera and files
- The microphone is used only while you hold the button to record a voice message (60 seconds at most). Drivers and garages use it in chats, requests and diagnoses.
- The app does not have the "camera" permission. For a photo, it opens the phone's camera app. For an image or a PDF, it opens the phone's photo picker or document picker. It reads only the file you choose.
If you are a garage or a team member
| Data | Mandatory? | What it is for | Who sees it |
|---|---|---|---|
| Garage name, address, position, specialities, opening hours | Yes | Public garage profile, search, time slots | Everyone |
| Garage phone, WhatsApp, description, photos, video | Phone yes, the rest no | Public garage profile | Everyone. The gallery and the video are public files |
| Services and prices | No | Public profile and booking | Everyone |
| Number and role of invited members | Yes, to invite | Give access to the team | The members of the garage |
| Replies to reviews | No | Reply in public | Everyone |
| Activity: requests, work, diagnoses (text and voice), invoices | Created by use | Follow clients, compute the garage statistics | All active members of the team |
All active members of a garage team see the requests and the chats of the garage. The garage profile is public: name, address, position, phone, WhatsApp, opening hours, services, photos, video, rating and reviews.
Clients "without the app"
A garage can record a client who does not have the app: phone number, plate, brand, model and year of the car. The garage then sends an invitation by WhatsApp or SMS, from its own phone.
The invitation link holds a token that is valid for 30 days. It opens a public page that shows the garage name, the car and the last 2 digits of the number.
The number stays on the car until the person signs up. Our system has no time limit for this. [To confirm: retention of the number of a client without the app and of team numbers]
If this person later creates an account with this number, the car and the work are added to their account.
Technical data
- Sign-in code: kept as a fingerprint (hash), 5 minutes at most. It is not kept in clear text. [To confirm: real codes sent, end of the test phase]
- Session: sign-in tokens, valid for 30 days without use.
- Presence: the last-seen time is kept for 30 days. The "online" state is kept in memory only. "Is typing" is passed live and is not kept.
- Server logs: in production, the server writes only server errors (address called without IDs, result, duration, start of the account ID). A search address can contain the rounded position that was sent.
- IP address: the API counts the calls of each IP address, in memory, over 60 seconds, to limit abuse. The website keeps the IP address in the access log of the web server (see part 13).
- Notification queue: the title, the text, the names and the message preview are kept for 24 hours after sending, or 7 days if sending failed.
- Error reports: the server sends its errors (technical trace, request) to Sentry, and 10% of requests as performance measures, only if Sentry is turned on. [To confirm: Sentry activation and account region] The app has no error-reporting tool and no audience-measurement tool.
4. App permissions
| Permission | When it is asked | What it is for |
|---|---|---|
| Location (precise and approximate) | When you use the garage search, the "Position" button in a chat, or "use my location" to place a garage. An explanation screen shows before the phone's request | Sort garages by distance. Send your position in a chat. Place the garage on the map. Never in the background |
| Microphone | The first time you press the microphone button | Record a voice message |
| Notifications (Android 13 and later) | After your first request or booking, or in garage mode, once. Also from "Preferences" | Send you notifications. The token is sent only after you agree |
| Internet | Never asked | Talk to the server |
| Camera, files, contacts | Not asked | The app uses the phone's camera app, photo picker and document picker. It does not access your contacts |
You can remove a permission at any time in the phone settings.
5. Data kept on your phone
| Data | Where | When it is erased |
|---|---|---|
| Sign-in session | App storage, encrypted with a protected key of the phone | At sign-out |
| Settings (language, theme, font, typed city and chosen point, flags for screens already seen, notification token sent) | App storage | Kept as long as the app is installed |
| Copy of server answers | App cache, 24 hours | At sign-out |
| Messages and files waiting to be sent | App folder | At sign-out |
| Message drafts | App folder | At sign-out |
| Request drafts (photos, voice), per garage | App folder | 7 days at most. They are not erased at sign-out |
| Cache of images (100 MB at most), PDFs and notification images | App cache | Images and notifications: at sign-out |
App data is not included in the phone's Android backups.
6. Why we use your data, and on what basis
| Purpose | Legal basis |
|---|---|
| Create your account and sign you in by code | Performing the service you ask for |
| Send your requests, manage appointments, diagnoses, chat and history | Performing the service |
| Show presence, read ticks and "is typing" | Performing the service |
| Send you notifications (appointments, diagnosis, messages, reminders) | Performing the service. You can adjust or turn them off |
| Sort garages by distance | Your consent (location permission), which you can withdraw |
| Send your position in a chat | Your consent: you tap the "Position" button |
| Publish reviews and garage profiles | Performing the service, and the legitimate interest of informing drivers |
| Show a car history to garages, including the history of previous owners | Performing the service, and the legitimate interest of keeping a reliable car history |
| Link the work of a client "without the app" to their future account | Legitimate interest of the garage and the client in keeping the car history |
| Keep the original text of an edited message and the copy of a reported message | Legitimate interest: safety, moderation, disputes |
| Security, abuse prevention, handling of reports | Legitimate interest |
| Answer requests from authorities | Legal obligation |
We do not use your data for advertising. We make no automated decision that affects you in an important way.
We do not send any commercial message by electronic means without your prior consent. Service notifications (appointments, diagnosis, messages) are not commercial messages.
7. Who receives your data
Other users
- The garage you contact sees your first name, your photo, your car, the content of your request and your messages. All active members of its team see them. It also sees if you are online, your last seen time, if you are typing and if you have read its messages.
- It sees your number and your car history only after it accepts your request. This history includes the history of the previous owners of the car. Your own entries become visible to the garages that the next owner contacts.
- Everyone can see garage profiles, reviews (with the first name of the author) and the replies of garages.
- A history share link that you create gives access to a PDF for 30 days. The PDF shows the plate, the car, the garages, the work, the prices and the mileage. It shows neither your name nor your number. The link stops after 30 days, but the PDF file stays on our servers. [To confirm: retention of history PDFs]
Our providers
We use providers to run the service. They process the data only for us. Each provider is bound by a written contract. [To confirm: contracts with providers]
| Provider | Role | Data concerned | Country |
|---|---|---|---|
| DigitalOcean | Hosting of the server, the database, the files, the backups and the website | All service data | Germany (Frankfurt) |
| Expo (650 Industries) | Sending notifications. The server sends to Expo. The app also calls Expo (exp.host) to get the token | The server sends: Expo token, title (the name of the other person), text (message preview, 100 characters at most), sender name, chat title (client first name and car), link to the profile or garage photo, signed link to a photo, length of a voice message, name of a PDF, emoji of a reaction. The app sends: Google notification token, installation ID, app ID | United States |
| Google (Firebase Cloud Messaging) | Delivery of notifications on Android | Notification token, notification content (passed through Expo) | [To confirm: Google processing country] |
| Google (Google Maps) | Showing the map (search and garage creation) | Map requests, app key, displayed area | [To confirm: Google processing country] |
| Google (Google Play services: location, geocoding, fonts) | Computing the position on the phone, address from a position or a city, downloading fonts | Position or typed city, font request | [To confirm: Google processing country] |
| Meta (WhatsApp Business) | Planned for sending the sign-in code by WhatsApp. Not used today: during tests, the code is not sent | Number (without the +), code, language | [To confirm: Meta processing country] |
| [To confirm: SMS provider and country] | Sending the sign-in code by SMS. The provider is not chosen yet | Number, text of the code | [To confirm: SMS provider country] |
| [To confirm: voice-call provider and country] | Sign-in code by voice call. Optional, not chosen yet | Number, language, digits of the code | [To confirm: voice-call provider country] |
| Sentry | Tracking server errors only. Not in the app | Server errors (trace, request) and 10% of requests as performance measures | [To confirm: Sentry account region] |
Authorities
We may give data to a Moroccan authority if the law requires it.
8. Transfers outside Morocco
Your data is hosted in Germany, in the European Union. Germany is on the list of countries that the CNDP considers adequate.
Other providers process data in other countries. The United States is not on this list. The American provider is Expo. For Google, Meta, Sentry and the SMS and voice-call providers, the country is not confirmed yet.
For each transfer to a country outside the list, we rely on authorization from the CNDP or on your express consent. [To confirm: CNDP transfer authorization]
9. How long we keep your data
| Data | Duration |
|---|---|
| Account data | As long as the account exists, then 30 days to change your mind. Details: Delete your Mechanico account |
| Sign-in code | 5 minutes |
| Sign-in session | 30 days without use |
| Last seen (presence) | 30 days |
| Notification queue | 24 hours after sending, 7 days if it failed |
| History share link | 30 days |
| PDF file of a shared history | No limit in our system. [To confirm: retention of history PDFs] |
| Invitation of a client "without the app" | Link valid for 30 days |
| Number of a client "without the app" on the car | Until the person signs up, with no limit. [To confirm: retention of the number of a client without the app and of team numbers] |
| Car transfer offer | Expires after 7 days. The number stays on the car |
| Plate claim | Refused automatically after 7 days |
| Messages (text, photos, voice, PDF, position) | You can delete them for everyone for 2 days. After that, no limit in our system. [To confirm: retention of messages] |
| Original text of an edited message | Erased when the message is deleted for everyone. Otherwise, no limit. [To confirm: retention of messages] |
| Requests, work, cars and history | No limit in our system. [To confirm: retention of requests, work and cars] |
| List of notifications | No limit. The message preview is erased if the message is deleted for everyone. [To confirm: retention of notifications] |
| Reviews | No limit. [To confirm: retention of reviews] |
| Reports and copies of reported messages | Never erased today. [To confirm: retention of reports] |
| Files uploaded but never used | The planned rule is to delete them after 48 hours (upload not finished) or 7 days (file not used). Today this deletion is not active. [To confirm: cleanup of unused files turned on in production] |
| Database backups | [To confirm: automatic backups and duration] |
| API server logs | [To confirm: retention of logs] |
| Website access log | [To confirm: retention of logs] |
10. Security
- Exchanges between the app and the server will be encrypted (HTTPS) at the public launch. [To confirm: HTTPS on the API server] Today, the test server does not have this encryption yet.
- Sign-in codes and session tokens are kept as fingerprints, never in clear text.
- Sign-in codes are limited: 3 tries per code, 3 codes per 10 minutes, 30 seconds between two codes, 6 wrong codes per number per 10 minutes.
- Each account reaches only its own data. A garage team reaches only the requests of its garage.
- Uploaded files are checked (type and size).
- Photos, videos and documents of chats, requests, cars and work, voice messages and PDFs are private. They are served by signed links, valid for 2 hours, given after an access check. These are public: the garage gallery and video, profile photos, review photos and screenshots of help messages. A few old files still have a public link.
- On the phone, the session is encrypted. App data is not included in Android backups.
- Database backups: [To confirm: automatic backups and duration]
No system is perfect. If there is a data breach, we take the necessary steps and we tell you if it is a risk for you.
11. Your rights
Under Law No. 09-08, you have the right to:
- access: know what data we have about you and get a copy. This is free;
- rectification: correct wrong or incomplete data;
- erasure: ask us to erase your data;
- objection: object, for a legitimate reason, to the processing of your data. You can always refuse, free of charge, to be contacted for marketing.
We correct or erase your data within 10 clear days after your request. If the law requires us to keep some data, we tell you.
You can already do these things in the app:
- change your first name and your photo in "Profile";
- change the mileage and the photo of your cars, mark a car as sold or transfer it;
- edit a message for 15 minutes, or delete it for everyone for 2 days (the original text of an edited message stays on the server);
- remove a saved garage, unblock a garage;
- adjust or turn off notifications;
- remove the location or microphone permission in the phone settings;
- delete your account.
For any other right, write to [to confirm: contact e-mail] from an address you use, and give your account number. We may ask you to confirm that the number is yours. We answer within [To confirm: response time for rights requests].
You can also file a complaint with the National Commission for the Control of Personal Data Protection (CNDP), at www.cndp.ma.
12. Minors
Mechanico is for adults. [To confirm: minimum age, 18 proposed] We do not knowingly collect data about minors. If you think a minor gave us data, write to us.
13. The Mechanico website
- The website sets no cookies.
- It uses no tracking tool and no audience-measurement tool. The fonts are hosted by the site itself: no third-party service is called when you visit.
- It keeps only one setting in your browser's local storage: your theme choice (light or dark). This setting stays on your device and is not sent to us. You can erase it in your browser settings.
- Hosting: the website is hosted by DigitalOcean, in Frankfurt (Germany), with the Coolify tool. The web server writes each visit in an access log: IP address, page address, browser type. [To confirm: retention of logs]
14. Changes
We may change this policy, for example when the service changes. The update date is shown on this page. For an important change, we tell you in advance, for example in the app.
15. Contact
- Data controller: [to confirm: company name]
- Address: [to confirm: address]
- Email: [to confirm: contact e-mail]
- CNDP declaration: [to confirm: CNDP number]