Cookie Policy
Everything we store on your device, why, for how long, and how to refuse it.
1The short version
Worth knowing
What we store, in one paragraph
We store a small number of items on your device. Some are required to sign you in, keep the service secure and let the app work offline. The rest simply remember choices you have made, such as the mood you picked and how you set your location.
We do not use advertising cookies, tracking pixels, cross-site trackers, advertising identifiers or third-party analytics. There are none in this service. Nothing we store is used to follow you around the internet or to build an advertising profile.
Changing your mind
You can change your choices at any time using Cookie settings in the footer of any page. Withdrawing permission is as easy as giving it.
When you refuse a category we do not simply stop writing new items: we remove what is already on your device for that category. A record that you refused something is not the same as acting on it.
2What the law calls a cookie
It is broader than cookies
The rules in this area, principally the Privacy and Electronic Communications Regulations in the United Kingdom and Article 5(3) of the ePrivacy Directive in the European Economic Area, apply to any storing of information on your device or access to information already stored there.
That is wider than cookies, and it is the part most websites overlook. It covers local storage, session storage, offline caches used by the application, and similar technologies. Our table below lists all of them, not only the cookies, because all of them are within scope.
Strictly necessary means necessary
Storage that is strictly necessary to provide the service you have asked for does not require consent. Everything else does, in the United Kingdom and the EEA.
We treat that exemption narrowly. "The site would be nicer with it" is not necessity. Keeping you signed in, remembering that you refused, and protecting the service from automated abuse are. Each strictly necessary item in the table below carries the reason it qualifies, so you can judge whether you agree with us.
3Your choices, by where you are
United Kingdom and the EEA
We ask for your consent before storing anything that is not strictly necessary, and nothing optional is stored while we are waiting for your answer.
Accepting and refusing take the same single click and are presented identically. A choice is only free if refusing is no harder than agreeing.
We ask again after six months, or sooner if what we store meaningfully changes, because consent to one set of purposes is not consent to a different one.
Applies to United Kingdom, EU and EEA
United States
Storage of preferences operates on an opt-out basis, which is what United States privacy laws provide for. You can switch it off at any time from Cookie settings in the footer.
We honour the Global Privacy Control signal. If your browser or an extension sends it, we treat it as a refusal of optional storage without asking you again, and the preference centre will tell you it is being applied.
We do not sell or share personal information, and nothing we store supports advertising, so there is no advertising opt-out to make. The control is provided regardless.
Applies to United States
Controlling storage in your browser
Every major browser lets you block or delete stored data through its settings. Doing so affects all websites, not only this one.
If you block strictly necessary storage, signing in will not work, because there is nowhere to hold the fact that you are signed in.
4Changes
Keeping this accurate
The table on this page is generated from the same declaration the service itself uses to decide what it may store. Adding anything to the service without listing it here is not possible, because the list is what grants permission.
When the list changes in a way that affects what you agreed to, we ask you again rather than relying on your earlier answer.
Everything we store, item by item
Generated from the declaration the service itself reads before storing anything. If it is not on this list, the service is not permitted to store it.
Strictly necessary
| Name | Type | Set by | Purpose | Lasts |
|---|---|---|---|---|
moodbite.device.id | device keychain | Us | A random identifier stored on your phone by the MoodBite app, so we can count the two free searches and two Front of House conversations you get before creating an account. It is not linked to your name, email or any other detail, and it is not used for advertising or analytics.Why this needs no consent: Without it the free trial cannot be counted at all: the allowance would otherwise be tied to an account, and an anonymous account can be replaced in a single request, so the limit would enforce nothing and the cost of the trial would be unbounded. Creating an account ends this processing. The balancing test is recorded at docs/legal/device-identifier-lia.md. | The searches and conversations it counts are deleted a year after each one. |
mb_device_id | local storage | Us | A random identifier stored by your browser, so we can count the two free searches and two Front of House conversations you get before creating an account. It is not linked to your name, email or any other detail, and it is not used for advertising or analytics.Why this needs no consent: Without it the free allowance is counted against your IP address instead, which is shared by everyone on the same office, campus or mobile network, so one visitor would exhaust it for all of them. Creating an account ends this processing. The balancing test is recorded at docs/legal/device-identifier-lia.md. | Until you clear site data. The searches and conversations it counts are deleted a year after each one. |
sb-*-auth-token | cookie | Us | Keeps you signed in and authenticates each request you make to your account. Without it you would be signed out on every page.Why this needs no consent: Strictly necessary to deliver the signed-in service you explicitly request. Authentication state cannot be held anywhere else. | Up to 1 year, refreshed while you stay signed in |
mb_consent | cookie | Us | Records the cookie choices you made, so we can honour them and so we are not asking you again on every page.Why this needs no consent: Strictly necessary: storing a refusal is required to give effect to it. Regulators treat the consent record itself as exempt. | 6 months |
mb_region | cookie | Us | Records which country your request arrived from, so we apply the correct privacy rules for where you are. It holds a two-letter country code and nothing else.Why this needs no consent: Strictly necessary to comply with a legal obligation: without it we cannot tell whether prior consent is required for your region, and would have to assume the stricter rule for everyone. | 6 months |
__cf_bm | cookie | Content delivery and security network | Distinguishes people from automated traffic so the service stays available and abuse is blocked.Why this needs no consent: Strictly necessary for security and availability of the service requested. ICO treats fraud-prevention and load-management storage as exempt. | 30 minutes |
moodbite-v2, moodbite-runtime-v2 | service worker cache | Us | Stores the pages and images that make up the app so it loads quickly and keeps working on a poor connection.Why this needs no consent: Strictly necessary to deliver the offline-capable application explicitly requested. Contains no identifiers and no behavioural data. | Until you clear site data or a new version replaces it |
moodbite.firstRun.v1 | app storage | Us | Whether this phone has been shown the app’s opening, so you are not asked to consent again on every launch.Why this needs no consent: It exists so the consent question is asked once. Without it the app would re-ask on every launch, which trains people to tap past it and is the opposite of a freely given choice. | Until you delete your account, or ask to replay the first run. |
moodbite.justSignedUp.v1 | app storage | Us | A single marker that an account was just created, so the app asks about food preferences once rather than at every launch.Why this needs no consent: Required to complete the sign-up the user asked for. It holds no information about the person and is removed the first time it is read. | Read once and deleted immediately. |
moodbite.consent.v1 | app storage | Us | The two choices you made in the app, so we do not ask again and so a refusal is actually kept: whether this phone may remember things between launches, and whether what you write may be sent to be read.Why this needs no consent: A record of a refusal must survive the refusal, or the refusal cannot be honoured. Recital 42 requires us to demonstrate consent was given; this is that demonstration, and it stores nothing beyond the two decisions, their date and the version of the inventory they were given against. | Until you delete your account. A sign-out keeps the storage choice, because that is a choice about the phone, and clears the choice about what may be sent, because that is a choice about you. |
currentMood | session storage | Us | Holds the mood you asked for so the results page can answer it, and so a refresh or the back button does not lose it. | Until you close the tab |
moodAnalysis | session storage | Us | Keeps the reading of your current search so returning to it within the same visit does not repeat the request. | Until you close the tab |
parsedFoodQuery | session storage | Us | Keeps your interpreted food search so navigating back to results within the same visit does not repeat the request. | Until you close the tab |
searchResults | session storage | Us | Holds the restaurants your current search returned, so going back to them does not run the search again.Why this needs no consent: Without it, returning to your results re-runs the search you already paid for with part of your free allowance, so pressing back would cost you a search you had already made. | Until you close the tab |
Preferences
| Name | Type | Set by | Purpose | Lasts |
|---|---|---|---|---|
moodbite_assistant_history | local storage | Us | Keeps your Front of House conversations on this device, so a conversation with a restaurant is still there when you come back to it. Only the last 30 messages with each of your 10 most recent restaurants are kept. | Until you clear the conversation, clear site data, or turn off functional storage. |
user_discovery | server record | Us | If you turn on Find people nearby, we keep a coarse area for you, about 2km across, so we can show you other diners in your area. We keep the area, never your position: it is rounded to a grid before it is stored, and it does not change while you move around inside that area. Other people are only ever shown how far away you are in wide bands, never a distance and never a point on a map.Why this needs no consent: Consent. Off by default, never enabled as a side effect of anything else, and withdrawing it deletes the record rather than marking it inactive. | 30 days from your last visit, then deleted automatically. Turning the setting off deletes it immediately. |
moodbite.searchContext.v1 | app storage | Us | Remembers the mood you last searched, so switching to search-by-name does not lose what you were looking for. | Six hours, then ignored and overwritten. |
moodbite.location.manual | app storage | Us | The area you chose to search from, so you are not asked again every time you open the app. | Until you change it, sign out, or turn this off. |
moodbite.calledBookings.v1 | app storage | Us | Tables you booked yourself by telephone. These exist only on your phone: we never spoke to the restaurant, so there is no record of them on our side. | Until you sign out, delete your account, or turn this off. |
moodbite.restaurantNames.v1 | app storage | Us | Restaurant names against their map ids, so your bookings list can show a name rather than a code. | Until you sign out, delete your account, or turn this off. |
moodbite.taste.on.v1, moodbite.taste.since.v1, moodbite.taste.forgotten.v1, moodbite.taste.uses.v1, moodbite.taste.shows.v1, moodbite.taste.declined.v1 | app storage | Us | Whether you turned taste learning on or said not now, when, which facts you asked it to forget, and how often each fact has been used and shown so the same one is not repeated at you. The facts themselves are not stored: they are counted from your own bookings each time you look. | Until you turn taste learning off, sign out, or delete your account. |
moodbite.restaurantAlerts.v1 | app storage | Us | For restaurant accounts only: how loudly this device should alert on a table request, and the hours it should stay quiet. | Until you change it, sign out, or turn this off. |
moodbite-user-storage | local storage | Us | Remembers your in-app preferences between visits so you do not set them up again each time. | Until you clear site data |
locationMode | local storage | Us | Remembers whether you chose to use your device location or to enter a place yourself. | Until you clear site data |
manualLocation | local storage | Us | Remembers the place you typed in, so you are not re-entering it on every search. | Until you clear site data |
There is no analytics or marketing section because there is no analytics or marketing storage in this service. Those categories exist in the system so that adding one would require it to be declared here first.
