Privacy policy
Last updated:
This policy explains what personal data [Oimo legal entity name] ("Oimo", "we", "us") collects when you use Oimo (the website at oimo.com, the web app, the API, webhooks, the CLI and usage connectors), why, who processes it for us, how long we keep it and what you can ask of us. Questions: support@oimo.com.
For account and website data, Oimo decides how it is used (it is the "controller"). For data a workspace brings in through webhooks and usage connectors, Oimo processes it to provide the Service to that workspace. Decision needed
What we collect
Your account
- Sign-in details: your email address, whether it is verified, and your first and last name if you give them. Our authentication provider stores these and your password; we never see your password.
- Workspaces: workspace names, who belongs to which workspace and with what role, and invitations (the invitee's email address, the role and who invited them).
- Sign-in security: our authentication provider may use your IP address and browser details when you sign in, to protect accounts from fraud and abuse.
What you put into the Service
- Webhooks: names, endpoint URLs, chosen events, providers, filters and alias groups, and each webhook's signing secret. We record which user created or last changed a webhook.
- API keys: their names, when they were created and last used. Our authentication provider stores and checks the keys themselves.
- Provider requests: the provider's name, website and the coverage you describe, with your workspace and your name (or email address if you gave no name).
- Alias proposals: the change you propose, with your user id and email address, and the reviewer's comment.
- Preferences: your provider watchlist and saved price views.
- Support emails you send to support@oimo.com.
Webhook deliveries
For each event we send, we keep a delivery log: the event, and for every attempt its time, how long it took, the HTTP status, any error message (up to 500 characters) and the first 1,024 characters of your endpoint's response body. We do not keep the response headers. Each delivery is deleted 30 days after its last attempt (see How long we keep it).
Usage connectors (Beta)
If a workspace admin connects an account at an AI or cloud provider (OpenAI, Anthropic, xAI, Baseten, Modal, Fireworks, AWS, Azure, Google Cloud, Snowflake or Nebius AI Cloud):
- Credentials and identifiers: the API key, token or service-account key the admin gives us, and the account, organization, project or billing identifiers the provider needs. We record which user created or changed a connector.
- Usage and cost reports: the reports the provider makes available to that account, for the backfill period chosen (up to 90 days back) and then on an ongoing basis. Depending on the provider they can include identifiers from your provider account, such as project, workspace, user and API key ids or names, and resource names, along with models, quantities and costs.
- Connector changes: for each request to create or change a connector we keep a SHA-256 hash of the request body, credentials included, to recognise a retried request. The hash cannot be turned back into the credentials.
We use these credentials only to check access and to collect those reports. For Google Cloud (your Cloud Billing export in BigQuery) and Snowflake, both run queries inside your own project or warehouse: they use your compute or credits and leave job and query history in your account. Collected usage is not shown in the app yet. Oimo staff may inspect it to build and check the collectors; it is not used for anything else.
Logs and technical data
- Request logs: our hosting provider logs every request to the Service with its time, URL, status, IP address, user agent and referrer.
- Application logs: our own logs record the method, route, status and timing of each request, without your IP address or user agent. Some lines name the workspace, user, webhook or API key involved (for example when an API key is created or a webhook delivery is attempted), and error lines can include up to 1,000 characters of a failed call's response, which may contain what was submitted (such as an invitee's email address).
- Your email address in internal requests: your requests to our internal price service carry your email address. That service records it only for actions Oimo staff take, such as approving a price. Staff actions in the app are also logged with the staff member's email address.
- Performance timings: after you sign in, the app reports how long screens and requests took, with the screen name and the HTTP status. These samples carry no URL, user id or IP address and go only to our logs.
- Product analytics: which pages and screens you open, where your visit came from (the referring site's address and any
utm_campaign tags in the link), your browser details, and your IP address, from which our analytics provider estimates your approximate location (country and city) and keeps the address with the event. When you are signed in, we also record account actions (signing up and in, and how you signed in, creating a workspace, webhook or API key, inviting a member, adding a usage connector, requesting a provider) with your user id, your workspace id and the domain of your email address, never the address itself or your name. A signed-out visitor gets a random id that lasts one page load. Oimo staff are not counted. - Rate limiting: we use your IP address in memory to apply rate limits. It is not stored.
The CLI
oimo login saves your session on your own computer, in ~/.config/oimo/sessions.json, readable only by your user. oimo logout deletes it there. The CLI reads API keys from the OIMO_API_KEY environment variable and never saves them. Nothing about the CLI login is stored on our side beyond the session itself at our authentication provider.
How we use it
- to provide the Service: sign you in, run your workspaces, deliver webhooks, answer API requests and collect connected usage;
- to keep it secure and reliable: apply limits, detect abuse, investigate errors and measure performance;
- to understand how the Service is used, which pages bring people to it and where they stop, so we can improve it (product analytics);
- to support you when you write to us; Oimo staff can open any workspace for this. In the app, staff view a workspace read-only and cannot see its signing secrets or connector credentials;
- to tell you about important changes to the Service, such as pricing or the end of the beta;
- to comply with the law and enforce our Terms of service.
We do not sell personal data, share it for advertising, or use it to profile you. We do not send marketing email today. Our legal bases where data-protection law requires one: performing our contract with you, our legitimate interest in securing and improving the Service, and legal obligations. Decision needed
AI models
Oimo uses AI models (from Anthropic and, optionally, xAI) to read vendors' public pricing and terms pages and to suggest which vendors' resources are the same model. These models receive public vendor content and our public catalog of resources. They do not receive your account details, workspace data, webhooks, delivery logs, usage data or connector credentials.
One exception: when Oimo staff accept a provider request and start adding that provider, the website address in the request is given to a model as the page to start reading from, and is fetched by our page-fetching services (see Who processes it for us). Your name and the rest of the request are not.
Who processes it for us
| Provider | What it does for Oimo | Data it handles |
|---|---|---|
| Google Cloud | Hosting: Cloud Run, Firestore, BigQuery, Cloud Storage, Secret Manager, Cloud Scheduler, Cloud Logging and Cloud Monitoring. Service data is stored in the United States (us-central1 and the US multi-region); logs are kept in Google Cloud Logging's default storage location. | Everything the Service stores or logs, including connector credentials and collected usage. |
| Anthropic and xAI | AI models that read vendors' public pricing and terms pages and suggest alias groups. | Public vendor pages, published alias group names, and a provider request's website address after staff approve it. Never account, webhook, usage or credential data. |
| Zyte and Cloudflare Browser Run | Fetch and render vendors' public web pages for us. | The addresses of public vendor pages, including a provider request's website address after staff approve it. |
| WorkOS | Sign-in, users, workspaces, memberships, invitations, sessions and API keys. Sends sign-in, verification, password-reset and invitation emails from our domain through its email delivery provider. | Account details, workspace names and memberships, invitee email addresses, sessions, API keys; IP address and browser details at sign-in. |
| Cloudflare | DNS for oimo.com, the redirects to it from www.oimo.com and the former infrarates.ai addresses, and forwarding of email sent to the former support@infrarates.ai address. Traffic to the app itself does not pass through Cloudflare. | Emails to the former support address in transit; requests to www.oimo.com and the former infrarates.ai addresses. |
| PostHog | Product analytics (PostHog Cloud, United States). Our server sends it the events; no PostHog script runs in your browser. | Page views and account actions as described in What we collect: user and workspace ids, email domain, IP address, browser details, the referring site and campaign tags. |
| Google (Google Workspace) | Hosts our email, including the support@oimo.com mailbox. | Support emails. |
When you use a usage connector, we call your provider's own API with your credentials; that provider already holds the data and is your vendor, not ours. The AI model and page-fetching services above receive no data from your account (see AI models).
Where it is stored
Service data is stored with Google Cloud in the United States (us-central1 and the US multi-region); logs are kept in Google Cloud Logging's default storage location. Our authentication provider and Cloudflare may process data in other countries under their own terms. PostHog stores product analytics in the United States. If you are in the EU, the UK or another country with transfer rules, we rely on [transfer mechanism, e.g. Standard Contractual Clauses] for these transfers. Decision needed
How long we keep it
| Data | How long |
|---|---|
| Your account and workspace memberships | While your account exists. Deleted within [number] days of a deletion request to support@oimo.com Decision needed; there is no self-service account deletion yet. |
| Sessions | The browser cookie lasts until you close the browser or sign out; a session ends after 48 hours without use and after 1 year at most. |
| Webhooks and signing secrets | Until you delete the webhook. After a rotation the previous secret is kept for 24 hours. |
| Webhook delivery log | 30 days after the delivery's last attempt, then deleted automatically, usually within a day Decision needed; earlier if you delete the webhook. Resending a delivery starts the period over. Pending deliveries are removed from the send queue once delivered or finally failed. |
| Provider requests, alias proposals and preferences | Kept while your account or workspace exists; there is no automatic deletion today. Deleted on request. Decision needed |
| Usage connector credentials | Until the connector is disconnected. Disconnecting schedules deletion of the stored credentials; if the deletion fails it is retried with the workspace's next connector change. |
| Collected usage and cost reports | Kept until your workspace is deleted. Deletion is not automated yet; we delete on request within [number] days, including all stored versions. Decision needed |
| Backups | The database that holds webhooks, requests and preferences keeps point-in-time recovery for 7 days and daily backups for 14 days, so data deleted there can remain in backups for up to 14 days. Usage connector settings are kept in a separate database that has no backups. |
| Request, application and audit logs | Request and application logs: about 30 days (Google Cloud's default; our configuration sets no other period). Records of administrative actions on our cloud resources are kept for up to 400 days. Audit logs, including BigQuery data-access logs (who ran which query), are also copied to Oimo's audit archive and kept there for 365 days. Decision needed |
| Support emails | [period] in our support mailbox. Decision needed |
| Product analytics | [period] at PostHog, then deleted. Deleted earlier on request. Decision needed |
Security
The Service is served only over HTTPS. Data is encrypted at rest by our hosting provider. Usage connector credentials are kept in Google Cloud Secret Manager, one secret per connector. Only the collection job is given read access to them; a few Oimo administrators and deployment systems have project-wide rights that include them. The app never shows them again, even to admins. API keys are stored and checked by our authentication provider. Access to production systems is limited to Oimo staff who need it. No system is perfectly secure; if you believe your data or account is at risk, write to support@oimo.com.
Your choices and rights
In the app you can change your workspaces' members, webhooks, API keys, connectors and preferences, and delete most of them. Email support@oimo.com to:
- get a copy of your personal data, or of a workspace's data, in a portable format;
- correct it;
- delete your account, a workspace or collected usage;
- object to or ask us to restrict a use of your data.
We may need to confirm your identity first. We answer within [number] days Decision needed. Depending on where you live you may have further rights, including to complain to your data-protection authority. [Region-specific notices, e.g. GDPR and California]. Decision needed
Children
The Service is for professional use and is not directed to anyone under [minimum age]. We do not knowingly collect their data; if you believe we have, write to support@oimo.com and we will delete it.
Changes to this policy
We will post any change here and update the "Last updated" date. If a change materially affects how we use your personal data, we will tell you in the app or by email before it applies.
Contact
[Oimo legal entity name], [registered address]. Email support@oimo.com. [Data-protection representative or contact, if required]. Decision needed
Open questions for review
Not part of the text: what the draft could not settle from the code. Placeholders look like [this]; sentences waiting for a decision are marked Decision needed.
- Who is the controller: the legal entity name and address (see the Terms' first open question).
- Controller or processor for webhook data and for usage connector data; whether to offer a data processing agreement (DPA), and on what terms.
- Which privacy laws we commit to (GDPR / UK GDPR, CCPA and others), the legal bases, the transfer mechanism for data leaving the EU/UK, and whether an EU/UK representative is needed.
- Deletion deadline after a request (account, workspace, collected usage). There is no self-service account or workspace deletion, and the automated deletion of a workspace's collected usage is a later milestone of
services/infrarates-usage. - Old versions of raw usage files. The raw usage bucket has object versioning on and no lifecycle rule for older versions (
infra/services/services.yaml,infrarates-usage: "No expiration of either current objects or older generations"), so deleting a file keeps its previous version until someone deletes that generation too. The future deletion process must remove every generation, as the retention table promises ("including all stored versions"). - Connector credential deletion. When a disconnect's secret deletion fails, it is retried only on the workspace's next connector change; there is no background retry yet. Decide whether to build one.
- No backups of connector settings. The
infrarates-usageFirestore database has no point-in-time recovery or backups (infra/services/services.yaml). Confirm that is intended. - Delivery-log retention. Each delivery (with up to 1,024 characters of the receiver's response) is deleted 30 days after its last attempt by a Firestore TTL policy (
DELIVERY_LOG_RETENTION_MSinsrc/delivery/ports.ts); the app shows only the newest 50. Confirm 30 days or choose another period. - Retention of provider requests, alias proposals (which keep the proposer's email) and preferences.
- Log retention. No log bucket, retention or exclusion is configured in
infra/, so Cloud Logging's defaults apply (30 days for request and application logs, 400 days for admin-activity audit logs), plus the org-wide audit sink togs://oimo-audit-logskept 365 days (infra/foundation/__main__.py:184-215). Confirm, or set an explicit period. - Support mailbox. support@oimo.com is a Google Workspace group (
supportininfra/people/people.yaml) with one member; the former support@infrarates.ai forwards to that person through Cloudflare Email Routing. Decide retention, and whether more people should receive it. - Product analytics (PostHog). Decide how long PostHog keeps events (a project setting), whether to sign PostHog's DPA, and whether to turn on PostHog's "Discard client IP data" so IP addresses are not stored with events (the location lookup still happens); the policy then says so.
- Cloudflare dashboard settings. The oimo.com zone's settings are managed in the Cloudflare dashboard, not in code. Confirm that no Web Analytics, Zaraz or similar is switched on, or the cookie and analytics statements above are wrong.
- Product email. We send none today besides the authentication provider's sign-in and invitation emails. Decide whether to email users about pricing or the end of the beta (section "How we use it" says we will tell you).
- Staff use of AI tools on internal data. Staff tooling in the repository documents the dataset that holds collected usage (
.claude/skills/bigquery/), so staff may query it through an AI coding assistant. Decide a rule and whether to disclose it. - Future uses of collected usage (for example repricing or reconciliation against Oimo prices) will need this policy updated before they ship.