Privacy Policy
Last updated: 2026-04-18
AGNT ("we," "us," or "our") is operated by ICM Motion GmbH. This policy explains, in plain language, what personal data the AGNT platform collects, how it is stored, who can read it, and what rights you have. We aim to describe the real behaviour of the system, not a sanitised version.
AGNT is a personal AI agent you reach through Telegram, WhatsApp, and our web app. By using the Service you consent to the processing described below. If you do not agree, do not use the Service.
1. Data We Collect
We collect only what is required to run the agent and the features you use. Each category below lists the concrete database column or storage location.
Account identifiers
Your name and email address are stored encrypted at rest on the users table. An additional deterministic hash of your email is stored to enforce uniqueness and support login. Payment identifiers (Stripe customer ID, subscription ID) are stored as plain references — they point at Stripe and contain no card data.
Messaging channel identifiers
When you connect Telegram, WhatsApp, or Instagram, we store the channel identifier (your phone number or chat ID) twice: once as an HMAC-SHA256 hash for lookup, and once encrypted with Fernet for outbound delivery. The HMAC key is separate from our JWT signing key and from the Fernet key; compromise of any single key does not reveal the underlying phone number alone.
Message content
Messages you send through Telegram, WhatsApp, or Instagram, and the agent's replies, are stored in the interactions table in plaintext today. A rolling conversation snapshot used for short-term agent context is stored encrypted with Fernet in the conversation_snapshots table. Redis session context expires after 24 hours of inactivity; the database record of the interaction does not. We are developing an explicit purge policy for historical interactions; until it ships, retention of message bodies is indefinite. See section 5.
Photos you submit
Photos sent to the Dupe Search and Calorie Scan tools are forwarded to our vision model and are not persisted to the database or a file store. We cache the parsed JSON result for 30 days in Redis, keyed by a SHA-256 hash of the image bytes, so a repeat submission returns instantly. The raw pixels are not retained.
Food diary entries
If you use Calorie Scan and save an entry to your diary, the description and parsed nutrition items are stored in plaintext in the food_diary table so we can generate your daily summary.
Booking & transport history
Venue bookings, reminders, and transport addresses (pickup and dropoff for courier or ride bookings) are stored in plaintext so we can deliver reminders and support ratings.
User memory & preferences
Facts the agent learns about you (favourite cuisines, allergies you disclose, budget preferences) are stored as key/value text plus a vector embedding in the user_memory table to personalise recommendations.
Payment metadata
Payments are processed by Stripe. Card numbers, CVC, and billing addresses never touch AGNT servers — Stripe holds that data under its own PCI-DSS compliant infrastructure. We store only the Stripe customer and subscription IDs so we can reconcile your plan.
Usage & security logs
Standard technical signals — truncated IP hashes, user agent, rate-limit counters — are recorded for abuse prevention. We do not log full message bodies in application logs.
2. Encryption & At-Rest Posture
We describe here exactly what is encrypted at rest today and what is not. We prefer transparency over marketing claims.
- Encrypted (Fernet, symmetric):
users.name,users.email, andconversation_snapshots.messages_json. - HMAC + Fernet (separate key): messaging channel identifiers on
user_channels. The HMAC key is distinct from the main Fernet key and from the JWT secret. - Hashed (one-way):
email_hash, venue owner phone hashes, and IP hashes on response cards. - Plaintext at rest today: message bodies on
interactions, food diary entries, transport addresses, user memory facts, CRM contacts stored by venue administrators, and B2B onboarding session contact fields. These are on our roadmap for encryption-at-rest; we do not want to claim a protection we have not shipped. - In transit: all traffic between your device, AGNT, and our providers uses TLS 1.2 or higher.
Encryption keys are held in environment secrets, separated per purpose (Fernet data key, HMAC phone key, JWT signing key). A rotation slot is built in so keys can be rolled without downtime.
3. How We Use Your Data
- Operate the agent: answer your messages, deliver replies through your chosen channel, and personalise venue, transport, and nutrition recommendations.
- Run the features you invoke: venue booking, food diary, dupe search, courier booking.
- Process payments and manage subscriptions through Stripe.
- Send transactional messages such as booking reminders and receipts.
- Monitor for abuse, fraud, and service health — this is a separate legitimate-interest basis from the contract basis above.
- Meet legal obligations such as tax record-keeping and responding to lawful requests from authorities.
4. Lawful Basis for Processing
- Consent (Art. 6(1)(a) GDPR): messaging you, processing photos you submit, storing location you share, push notifications.
- Contract performance (Art. 6(1)(b)): operating your account, running bookings you requested, handling your subscription.
- Legitimate interest (Art. 6(1)(f)): security logging, rate limiting, fraud detection.
- Legal obligation (Art. 6(1)(c)): tax and commercial record retention as required by German and Indonesian law.
5. Data Retention
- Account data: kept while your account is active. On deletion we anonymise immediately and hard-purge within 30 days (see section 6).
- Redis session context: 24-hour TTL; expires automatically.
- Message history in the database: retention is indefinite today. A scheduled purge is in development. If you want your message history removed before that ships, you can request deletion at any time (see section 6).
- Vision cache (dupe / calorie results): 30-day Redis TTL; raw images are not stored.
- Booking history: retained while your account is active so you can see past reservations and rate them.
- Transaction records: retained for at least seven years as required by German commercial and tax law.
6. Your Rights, Including Deletion
You can trigger account deletion yourself by calling DELETE /api/users/me through the app, or by emailing us (see section 11). When you do:
- Your name and email are immediately anonymised to placeholder values.
- Your subscription is marked inactive and your Redis soul state is cleared.
- Your record is flagged for hard deletion. A daily background job permanently removes flagged accounts once they are at least 30 days past their deletion request.
- Certain records may be retained longer where we are required by law (tax, accounting) or where they are strictly necessary to defend against a legal claim. These are kept minimised and segregated.
Under GDPR and comparable SEA data protection regimes (Indonesia UU PDP, Singapore PDPA, Thailand PDPA, the Philippines DPA), you also have the right to request access, rectification, restriction, objection, data portability, and to withdraw consent. Email privacy@agntdot.com and we will respond within 30 days. You have the right to complain to your local supervisory authority.
7. Who Can Read Your Data
- You: via
/api/meand related endpoints, authenticated with your JWT. - AGNT operators: a small internal group using an internal admin token. All admin reads are audited server-side. The token is not shared with third parties.
- Subprocessors (see section 8): only the minimum data they need to perform their function.
8. Subprocessors & Data Sharing
We share data with the following processors strictly to operate the Service. We do not sell your personal data.
| Provider | Purpose | Data shared |
|---|---|---|
| Stripe | Payments | Email, billing country, card details (entered directly into Stripe) |
| Telegram | Messaging transport | Messages, chat ID, photos sent in chat |
| Meta / WhatsApp | Messaging transport | Messages, phone number, photos sent in chat |
| Instagram (Meta) | Messaging transport | Messages, IG user ID |
| Anthropic, Moonshot | LLM inference | Current conversation context and system prompt; providers are under no-training data-processing terms |
| Nutritionix, USDA | Nutrition lookup | Food descriptions extracted from photos |
| Shopee, Tokopedia, Lazada | Product price search | Product search queries and affiliate identifiers |
| Lalamove | Courier booking | Pickup and dropoff address, contact phone |
| Sentry | Error tracking | Stack traces, device metadata, scrubbed user/tenant IDs — no raw message bodies or phone numbers |
| Umami | Self-hosted, cookie-less website analytics | Page URL, referrer, country, screen size |
| Railway | Application hosting | All application data (stored on our managed Postgres and Redis instances) |
4. Data Storage & Security
We take the security of your data seriously and employ industry-standard technical and organizational measures:
- Encryption at rest: Personal identifiers (name, email) are encrypted using Fernet symmetric encryption before storage.
- Phone number hashing: Phone numbers are stored as HMAC-SHA256 hashes. We cannot recover your phone number from the stored value.
- Chat encryption: Chat sessions are stored in encrypted Redis instances with automatic expiration.
- Photo processing: Food and product photos are processed in memory and not retained after analysis is complete.
- Payment isolation: All payment data is handled by Stripe in PCI-DSS compliant infrastructure. Card details never touch our servers.
- Access controls: Internal access to personal data is restricted to authorized personnel on a need-to-know basis.
- Infrastructure: Our backend services run on encrypted cloud infrastructure with TLS 1.2+ for all data in transit.
While we implement robust safeguards, no method of electronic storage or transmission is 100% secure. We cannot guarantee absolute security but commit to promptly notifying affected users and relevant authorities in the event of a data breach, in accordance with applicable law.
5. Data Retention
- Account data: Retained for as long as your account is active. Upon account deletion, personal data is purged within 30 days, except where retention is required by law.
- Chat sessions: Automatically expire from Redis. Typical session lifetime is 24 hours of inactivity.
- Photos: Deleted immediately after processing. Not stored in any database or file system.
- Booking history: Retained for the lifetime of your account to provide history, ratings, and recommendations.
- Transaction records: Retained for a minimum of 7 years as required by German tax and commercial law.
6. Your Rights
Depending on your jurisdiction, you may have the following rights regarding your personal data:
Under the EU General Data Protection Regulation (GDPR)
- Access: Request a copy of the personal data we hold about you.
- Rectification: Request correction of inaccurate or incomplete data.
- Erasure: Request deletion of your personal data ("right to be forgotten").
- Restriction: Request restriction of processing in certain circumstances.
- Data portability: Receive your data in a structured, machine-readable format.
- Objection: Object to processing based on legitimate interests or direct marketing.
- Withdraw consent: Where processing is based on consent, withdraw at any time without affecting the lawfulness of prior processing.
- Complaint: Lodge a complaint with a supervisory authority (e.g., the German Federal Commissioner for Data Protection).
Under Southeast Asian Data Protection Laws
If you are located in Indonesia (UU PDP), Thailand (PDPA), Singapore (PDPA), or the Philippines (DPA), you have comparable rights including access, correction, deletion, and the right to withdraw consent. We process your data in compliance with applicable local data protection regulations.
To exercise any of these rights, email us at privacy@agntdot.com. We will respond within 30 days (or sooner where required by law). We may ask you to verify your identity before processing your request.
9. Hosting Location & International Transfers
Our application servers and primary database run on Railway in an EU region (eu-west). Users in Bali and across Southeast Asia therefore have their data transferred to the EU for processing. Transfers outside the user's home jurisdiction are covered by the European Commission's Standard Contractual Clauses where applicable, or by equivalent contractual safeguards with our subprocessors.
LLM inference calls (Anthropic, Moonshot) and marketplace-lookup calls (Shopee, Tokopedia, Lazada, Nutritionix) are routed to the provider's nearest region. Anthropic and Moonshot do not train on data sent through their paid API.
11. Contact
For privacy questions, deletion requests, or any GDPR / UU PDP right, contact us:
We do not currently have a designated Data Protection Officer. All DPO-level requests are handled by the privacy mailbox above and escalated internally. You may also lodge a complaint with the supervisory authority in your country of residence.
12. Children
The Service is not intended for and not offered to children under 16. We do not knowingly collect data from children under 16. If you believe a child has provided us with personal data, contact privacy@agntdot.com and we will delete it.
13. Changes to This Policy
We may update this policy. Material changes will be announced in the Service or by email before they take effect. The "Last updated" date above always reflects the most recent revision.