Turn Every iMessage
Into a Conversion

Cynopic connects AI to Apple iMessage so your business can have personalized, high-converting conversations at scale. 98% open rates. Real replies. Real revenue.

9:41
M
Matrix Sales

9:41 AM

Hi Sarah! This is Thomas from Matrix Solutions. I noticed you downloaded our ROI calculator — did you get a chance to look it over?
Hey Thomas! Yes I did, the numbers look really promising. We're currently evaluating a few options.
That's great to hear! A lot of teams in your space have seen 3x ROI within the first quarter. Would a quick 15-min call this week help you compare?
Actually, that would be perfect. How's Thursday at 2pm?
Thursday at 2pm works! I'll send a calendar invite with a Zoom link. Looking forward to it 🙌
iMessage
Features

One Platform, Every Industry

From sales to healthcare, Cynopic adapts to your industry with AI-powered iMessage conversations.

Restaurant Reservations

Fill More Tables
Without Phone Tag

Let hosts answer reservation requests while they keep serving guests. Cynopic checks availability, offers bar seating when tables are full, and confirms day-of — all through iMessage.

See Reservations Features
9:41
B
Bella's Trattoria

5:47 PM

Hi! Any chance of a table for 2 tonight?
Hi Sam! Tables are fully booked tonight — but we usually have space at the bar. Want me to hold a couple of bar seats for you?
Yes please! What time?
Come by anytime after 6:30. The bar is open seating but it's been wide open early in the evening. See you tonight! 🍝
iMessage

30%

more covers booked at the bar

AI · Knowledge base

Your AI knows what you know

Upload your product brief, pricing sheet, FAQ, or policy doc — Cynopic chunks it, embeds it, and pulls the most relevant passages into every reply. The AI answers questions specific to your business, not generic web knowledge.

Step 1

Upload

.txt, .md, .pdf, .docx

Max 1 MB per document, 10 documents per campaign

Step 2

Chunk

~700 tokens per chunk, 100-token overlap

Preserves sentence boundaries; overlap prevents lost context at chunk seams

Step 3

Embed + Index

OpenAI text-embedding-3-small · 1536 dims

Stored in Postgres pgvector with an HNSW index (m=16, ef_construction=64)

Step 4

Retrieve

Top-K=4 by cosine similarity

Inbound message → embedding → vector search → highest-relevance chunks only

Step 5

Answer

Only retrieved chunks enter the LLM prompt

Full documents never sent — keeps tokens, latency, and your data exposure low

A real exchange — KB on

Quick question — does your venue have wheelchair access?

Yes! Wheelchair access is at the main entrance via a 1:12 ramp, and we have a dedicated lift on the east side for floors 2–4. Service animals are always welcome — no documentation needed.

Perfect, thanks. What about the parking situation?

Free underground parking with 4 ADA-designated spots near the elevator. Validate at the front desk.

Both replies cite specifics that don't live in any generic LLM — they come from the venue's accessibility FAQ + parking guide uploaded to the campaign's knowledge base.

What the LLM saw — one of 4 retrieved chunks

{
  "chunk_id": "c2a4e1...",
  "content": "Wheelchair access is available at the main entrance via a 1:12 ramp. A dedicated lift on the east side serves floors 2–4. Service animals are always welcome, no documentation required.",
  "similarity": 0.847,
  "document": "FAQ — Accessibility.md"
}
Retrieval latency (p95)~62ms
Chunks per query4 (tunable 1–10)
Tokens to LLM~3,200 (vs. 50K+ for whole docs)
Skip-retrieval threshold< 8 chars inbound

Only the highest-similarity passages enter the prompt. Your full documents stay in your vector store — they're never shipped to the LLM in their entirety.

Formats accepted

.txt, .md, .pdf, .docx, and pasted text up to 1 MB. PDFs are text-extracted server-side before chunking.

Per-campaign isolation

Each contact group has its own document set. The vector search is filtered by group_id — a campaign for your sales line never retrieves chunks from your support line.

Update once, applies instantly

Edit a document, re-upload, and the next inbound message already uses the new version. No re-training, no deploy. Stale chunks are dropped, new chunks indexed in seconds.

Analytics · Goal evaluation

Charts that read your conversations

Every conversation is evaluated against the goal you set, with structured fields extracted into JSON. Cynopic auto-detects the shape of each extraction field and picks the right chart — pies for categorical, bars for numeric, lists for free text. No dashboard config required.

Goal-met rate

Share of evaluated conversations where the AI marked the goal as accomplished.

81%

387/478

Conversations over time

Weekly volume of evaluated conversations. Hover any point for the exact count.

poll_response — categorical field

Pie chart auto-selected because the field has ≤8 distinct values across responses.

A · Faster sync· 142
B · Team sharing· 118
C · Custom alerts· 87
D · Reporting· 31
plus_ones — numeric field

Bar chart auto-selected because every captured value parses as an integer.

Aggregate: 464 total guests across 314 RSVPs (1.48 avg).

One row from conversation_goal_evaluations

Every reply produces a row like this — the chart layer reads extracted_data across all rows in a campaign and auto-picks a chart per field.

{
  "goal_met": true,
  "confidence": 0.91,
  "evidence": "Contact selected option B (\"Team sharing\") and asked a clarifying question about pricing tiers.",
  "extracted_data": {
    "poll_response": "B",
    "poll_label": "Team sharing",
    "name": "Jordan Reyes",
    "company": "Northwind Logistics"
  },
  "messages_evaluated": 5
}

Field-type detection

  • All values parse as numeric
    → bar chart, X-axis sorted ascending. E.g. plus_ones, satisfaction_score
  • ≤ 8 unique values, ≥ 2× repeat rate
    → pie chart with sorted slices. E.g. rsvp_status, poll_response
  • Everything else
    → top-5 list with counts. E.g. dietary_restrictions, freeform names

Detection is deterministic and re-runs on every page load — add a new extraction field in your campaign and its chart appears automatically the next time the page renders.

100%

of conversations evaluated

0

dashboards to build

< 1s

from message to chart update

CSV

export for any campaign report

iMessage + AI98% Open RateBook a DemoReal ConversationsEnd-to-End EncryptedInstant ResponsesScale Your OutreachBlue Bubble AdvantageiMessage + AI98% Open RateBook a DemoReal ConversationsEnd-to-End EncryptedInstant ResponsesScale Your OutreachBlue Bubble Advantage

Ready to Transform Your
Customer Conversations?

Join thousands of businesses using Cynopic to reach customers where they actually respond. Set up in minutes, see results in days.