Turn Every iMessage
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 AM
One Platform, Every Industry
From sales to healthcare, Cynopic adapts to your industry with AI-powered iMessage conversations.
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 Features5:47 PM
more covers booked at the bar
Your AI knows what 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.
Upload
.txt, .md, .pdf, .docx
Max 1 MB per document, 10 documents per campaign
Chunk
~700 tokens per chunk, 100-token overlap
Preserves sentence boundaries; overlap prevents lost context at chunk seams
Embed + Index
OpenAI text-embedding-3-small · 1536 dims
Stored in Postgres pgvector with an HNSW index (m=16, ef_construction=64)
Retrieve
Top-K=4 by cosine similarity
Inbound message → embedding → vector search → highest-relevance chunks only
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?
Perfect, thanks. What about the parking situation?
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"
}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.
Charts that 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.
Share of evaluated conversations where the AI marked the goal as accomplished.
81%
387/478
Weekly volume of evaluated conversations. Hover any point for the exact count.
Pie chart auto-selected because the field has ≤8 distinct values across responses.
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.
of conversations evaluated
dashboards to build
from message to chart update
export for any campaign report
Ready to Transform Your
Join thousands of businesses using Cynopic to reach customers where they actually respond. Set up in minutes, see results in days.