NemlAI — Terms & Conditions

Last updated: November 2026

Quick summary: NemlAI is a free, invite-only hobby project that predicts your next Nemlig.com grocery basket using your order history. By using the platform, you agree that it's provided as-is with no guarantees, that your Nemlig.com order data is stored and processed for predictions, and that the service may change or disappear at any time. Your Nemlig.com password is used during signup and re-authentication to capture a browser session — it is never stored.
På dansk: En dansk gennemgang af, hvilke data NemlAI gemmer, hvorfor og hvor længe, står under Privatliv og data. Hjælp og ofte stillede spørgsmål står under Hjælp.

1. What NemlAI Does

NemlAI is an ML-powered grocery replenishment tool for Nemlig.com, a Danish online grocery delivery service. It is a personal hobby project, not a commercial product, and is not affiliated with or endorsed by Nemlig.com.

Here's what the platform does:


2. Data Handling

This section describes exactly what data NemlAI collects, where it's stored, how it's processed, and what third parties are involved. All claims here are based on what the code actually does.

2.1 Data We Collect

Data What exactly Why
Account info Your name, email address, display name Account creation and identification
NemlAI app password The password you choose when creating your NemlAI account Stored as a hashed credential in Supabase Auth (the authentication provider). This is separate from your Nemlig.com password.
Nemlig.com password Entered during signup and re-authentication Used to log into Nemlig.com via a headless browser to capture session cookies. The password is never stored — it is used for the browser login, then discarded from memory. This also happens when you re-authenticate (e.g., via the "Refresh Orders" page).
Nemlig.com session cookies Browser cookies from your Nemlig.com login Stored in our database and on the server filesystem so the platform can fetch your orders and prepare baskets on your behalf. These expire and need periodic renewal.
Order history Your complete Nemlig.com order history — order dates, items, quantities, prices, discounts, and the raw order payloads from Nemlig.com (stored as JSON) This is the core data the ML model uses to predict your next basket. Raw payloads may include your Nemlig account email and debtor ID.
Product catalog data Product names, prices, categories, stock status from Nemlig.com Used for product search, availability checking, and finding substitutes for out-of-stock items.
Prediction data Which items were predicted, quantities, and whether predicted items were actually purchased Used to improve future predictions: suggestions are compared against your actual orders.
Preferences Dietary preferences, product exclusions, brand preferences (if you set them) Used to filter and personalize predictions. Also includes calculated preferences derived from your purchase patterns (e.g., organic product ratio).
Household membership Which household you belong to, invite codes Used for the multi-user household feature.
Beta invite code usage Which email addresses used which invite codes Tracked for invite code management. Stored in the database.
Push notification subscription Browser push endpoint URL, encryption keys, user agent Only if you opt in to push notifications. Stored in the database and used to send you notifications.
Other shops (optional) Session tokens and receipts/orders from Bilka, føtex and BilkaToGo, if you link them. Passwords are used for the login only and never stored. Receipts improve predictions; the BilkaToGo session lets you send the basket to your BilkaToGo cart.
Security/activity log Events such as signup, login, password change and account deletion, with email, IP address and user agent Abuse detection and debugging. There is currently no automatic expiry.
Feedback What you write in "Giv feedback", the page path, and your display name (or the contact email you enter when not logged in) Bug fixing. Feedback is also copied to a private GitHub issue tracker (message, page path, display name, household ID).

2.2 Where Data Is Stored

2.3 Third-Party Services

NemlAI integrates with the following external services. Your data may be transmitted to or processed by them:

Service What it does Data involved
Nemlig.com The grocery platform. NemlAI logs into your account (via headless browser) to fetch order history and prepare baskets. Your Nemlig.com session cookies, order history, product data. NemlAI accesses Nemlig.com on your behalf using your captured session.
Supabase Cloud-hosted PostgreSQL database and authentication provider. All stored user data (accounts, orders, predictions, preferences). Supabase Auth handles email/password authentication for your NemlAI account.
Cloudflare DNS, TLS encryption, CDN caching, DDoS protection, and traffic tunneling. All traffic to NemlAI passes through Cloudflare. Your IP address and request metadata are visible to Cloudflare as part of normal traffic routing. Cloudflare caches static assets (CSS, JS, fonts).
Google Analytics 4 (via Google Tag Manager) Website usage analytics. Opt-in only — analytics scripts are completely blocked until you explicitly accept analytics cookies via the cookie consent banner. No tracking occurs without your consent. If you accept, GA4 receives page views and usage events. Your household ID is SHA-256 hashed before being sent — no raw identifiers reach Google. If you revoke consent, GA cookies are automatically deleted. Page views, usage events, hashed household ID (only with explicit consent).
Google Fonts The Outfit font is loaded from Google's font CDN (fonts.googleapis.com). Your browser makes requests to Google's servers to load fonts. Google's standard font privacy policy applies.
Dify AI workflow platform powering the Generer kurv item/recipe search feature. Your freetext search queries and household ID are sent to the Dify API for AI-powered product matching. The CLI interface may also send your user ID. Dify processes queries using OpenAI and Anthropic language models. Dify's own data retention policies apply to these queries.
GitHub Private issue tracker for feedback. Your feedback message, page path, display name and household ID.
Product Symplify API A separate API service for real-time product information (prices, campaigns, stock status). Product queries with product identifiers. No user-specific data is sent.

2.4 Data We Do NOT Collect

2.5 Data Retention

2.6 Cookies

Cookie Purpose Type Expiry
nemlai_session Your login session (httpOnly, secure) Necessary 7 days
cc_cookie Your cookie consent preferences Necessary 182 days
nemlai_csrf CSRF protection (httpOnly, secure) Necessary Session
_ga Google Analytics user identifier Analytics (opt-in) 2 years
_gid Google Analytics session identifier Analytics (opt-in) 24 hours

Analytics cookies are only set if you explicitly accept them. You can change your cookie preferences at any time via the "Cookie-indstillinger" button at the bottom of any page.

2.7 AI Assistants (MCP)

På dansk: Samme regler står på dansk under Privatliv og data → MCP-forbindelser.

You can use NemlAI from your own AI assistant (for example Claude or ChatGPT) through NemlAI's MCP server. How to connect is described on the AI agents page.


3. No Warranty / As-Is Disclaimer

NemlAI is provided "as is" and "as available", without any warranty of any kind, express or implied.

In plain language:


4. Limitation of Liability

The operator of NemlAI accepts no responsibility for:

NemlAI is a free hobby project. You use it at your own risk.


5. Beta Notice

NemlAI is in early development (beta). This means:

If you encounter issues, you're welcome to report them, but there is no guaranteed response time or fix timeline.


6. Account & Access


7. User Responsibilities

By using NemlAI, you agree to:


8. Changes to These Terms


9. Contact

If you have questions about these terms or the platform, reach out to:

Email: milops@milops.org


*NemlAI is a personal hobby project created by Simon Miller. It is not a commercial product, has no formal business entity behind it, and is maintained on a best-effort basis.*