Skip to content

Security at every step of every conversation.

Ricky holds your customers' conversations, the keys to your channels and your business data. Here is every safeguard: the exact mechanism and why it protects you.

MetaCertified Tech Provider

The path of a WhatsApp message through Ricky

Customer

Hi, are my test results ready?

Ricky
  1. 01Meta's signature is verified

    HMAC-SHA256 over the exact body. Without a valid signature it is rejected and never stored.

  2. 02It is stored exactly as it arrived

    It lands in the inbound record first; processing comes after.

  3. 03Only your company sees it

    Postgres row-level security and server-side authorization.

  4. 04The agent uses only what you enabled

    Tools limited to its capabilities; it can hand the chat to your team.

  5. 05The reply goes out exactly once

    An outbox with a unique key: a retry never duplicates the message.

  6. 06Evidence is kept, credentials are not

    The exchange with Meta is stored with its tokens redacted.

Infrastructure

Every piece runs on a specialized provider.

Ricky runs no servers of its own in production. It connects directly to each provider, with no reseller in between.

  • Supabase

    Postgres database. Encrypts data at rest with AES-256 and in transit with TLS; Supabase states SOC 2 Type 2 compliance.

  • Meta

    Direct connection to the official WhatsApp Cloud API and Graph API. Ricky is a Meta Tech Provider.

  • Vercel

    Serves the website and the web app, over HTTPS only.

  • Cloudflare

    Runs live conversations and background jobs on Workers.

  • LiveKit

    Runs the voice agents' calls.

  • Doppler

    Holds the platform's keys, separated by environment.

  • GitHub

    Holds the private code; there Dependabot reviews dependencies and gitleaks looks for leaked secrets.

  • Sentry

    Records every error and watches every scheduled job.

Isolation

Each company sees only its own data.

Your conversations, contacts and reports are separated from every other company on Ricky, in the database and on the server.

  • Postgres row-level security (RLS) is on for every table: each row carries the company it belongs to.
  • Your company's data is read and written on the server, after checking that you belong to it. The browser does not query that data directly.
  • Each person signs in with their own account and role: owner, admin or member.
  • Live updates travel on private channels that only your company's members can open. Watching a conversation live takes a signed pass that expires in 60 seconds and works for that conversation only.

Credentials

Your channel keys, in a vault.

To talk to WhatsApp, Instagram or your ERP, Ricky needs your tokens. They are never stored as plain text in the database.

  • WhatsApp, Instagram and Messenger tokens and Odoo and n8n keys are encrypted in Supabase Vault. The table keeps only a reference.
  • Vault uses authenticated encryption (libsodium) and keeps the key outside the database: a database backup does not reveal your tokens.
  • Only Ricky's server can decrypt them. The decryption functions are closed to users and to the browser.
  • Developer API keys are checked by their SHA-256 fingerprint and carry scoped permissions, for example read conversations only.

Audit trail

Nothing gets in unsigned. Everything is recorded.

Every notice from Meta, Stripe or LiveKit is verified before it is processed, and every step is written down so you can reconstruct what happened and when.

  • Meta webhooks are verified with HMAC-SHA256 over the exact body before they are read. Stripe, LiveKit, Composio and fal, each with its own signature.
  • What arrives is stored as-is in an inbound record before it is processed. What Ricky sends to each provider is kept with credentials redacted.
  • Changes to your account are stored as versioned, timestamped events, in a record designed to be appended to, not edited.
  • Every send to a customer starts in an outbox with a unique key, in the same transaction that causes it: a retry never sends the message twice.

AI agents

AI works with permissions, not free access.

Agents serve your customers and the internal assistant helps your team, within limits you control.

  • Each agent uses only the tools you enabled for it.
  • The internal assistant asks for your approval before any action that changes data.
  • File and document contents are treated as information, never as instructions: a PDF with hidden orders does not control the agent.
  • The agent can hand the conversation to a person on your team.
  • The Odoo, n8n and webhook addresses you configure must be public HTTPS: Ricky rejects internal addresses, so no one can use it to reach a private network.

Website and app

The browser receives only what it needs to show.

Keys and internal logic stay on the server. What travels to your browser is limited and protected.

  • Server keys are marked server-only: if one reached browser code, the build would fail.
  • The browser receives only public identifiers, such as Supabase's publishable key, never secret keys.
  • HTTPS enforced for two years (HSTS), a content security policy (CSP) and a ban on loading Ricky inside another site, against clickjacking.

How we work

Security is a daily process, not a badge.

  • OpenAI Daybreak

    We have access to advanced cybersecurity models (OpenAI Daybreak) to find and fix vulnerabilities in our code.

  • Dependabot and GitHub alerts

    GitHub alerts us when a dependency has a known vulnerability, and Dependabot proposes the security update.

  • gitleaks

    Scans every push and every pull request so no key reaches the repository.

  • Doppler

    The platform's keys live in Doppler, never in the code.

  • Sentry

    Records every error, and every scheduled job has a monitor that alerts us if it does not run on time.

  • Incident reports

    Every failure that affects a customer gets a written, blameless report: what happened, why and what we changed.

Your data is yours.

You can take your contacts, conversations and messages out whenever you want with Ricky's REST API.

See the API

Found a vulnerability?

Write to ricardo@getricky.ai with the steps to reproduce it. We review it and reply. Please do not publish it until it is fixed.