ESCALATEOPS
Prepared for Unicity
Fin AI Implementation · Official Intercom Partner

MVP Implementation Plan

Three pillars to configure before go-live, organized from open notes, the August 26 and September 2 check-ins, and recent email threads with Nilesh. Check items off as they close.

Target Sep 15 — at risk Tue technical · Thu business Europe first, Voice last (US) ~7M contacts · 50+ countries
Platform change — September 2 check-in

Unicity could not secure the licensing needed for Freshdesk. Going forward, they will deploy RingCentral in Europe and continue using RingCentral in the Americas. This replaces the earlier Zendesk/Freshdesk plan — Fin now needs to integrate with RingCentral instead. RingCentral has no native connection to Intercom, so this requires custom API/webhook development (est. up to one week including testing).

Pillar 1 — Knowledge Base
0 / 0
Pillar 2 — Contacts Base
0 / 0
Pillar 3 — Workflows / Inbox
0 / 0

Fin Knowledge Base

Pillar 1
0 / 0 DONE
Confirmed Sept 2

Fin's knowledge source is not RingCentral or a legacy helpdesk — it's Unicity's own content library ("Unicity Brain"), hosted in Google Drive, owned by Lawrence. RingCentral only holds historical tickets/conversations, which is not what Phase 1 needs. Access to the Drive has been requested but not granted yet — Matias and Laura are still waiting.

Immediate actions

Architecture / data-flow diagram

Nilesh requested a visual flow diagram (data flow / architecture overview) to help Mark and the executive team understand how the integration works end-to-end. Delivered.

Content structure

Required article format (Fin standard)

  1. Use headers and bold text for key data points
  2. List steps using bullet points
  3. If an article covers more than one topic, clearly separate the start and end of each topic so Fin doesn't mix context

RingCentral integration (replaces Zendesk/Freshdesk plan)

RingCentral has no native connector to Intercom — this requires custom API/webhook development. Estimated up to one week including testing.

Open topic — centralized KB across 50+ countries

Nilesh's concern

Maintaining separate knowledge bases per country isn't sustainable at Unicity's scale (50+ countries). He proposed exploring a centralized RAG-based approach with country-aware retrieval.

Laura's answer: Fin already works this way — it's RAG by design, retrieving from indexed content rather than answering from memory. Intercom supports multiple Help Centers per workspace if content needs to be physically split by region, but the real control mechanism is Audiences: rules based on customer attributes (like country) that determine which content Fin actually pulls from for a given customer. Articles get tagged by region, and Fin only surfaces the ones that match.

Watch item

Untagged content is visible to everyone by default — tagging needs to be deliberate as the KB gets built out, or content meant for one country could leak into answers for another.

Fin Voice content

Email domain

This is fully independent of Freshdesk/RingCentral/Articles — it can proceed right now.

Contacts Base

Pillar 2
0 / 0 DONE
Confirmed Sept 2

Email is the primary identifier and must be unique per contact. Duplicate emails exist in the historical customer base from discontinued past practices — needs clean-up before sync. Intercom does not group/merge users on the fly: a contact who first emails and later messages on WhatsApp will be created as two separate profiles unless both channels are already loaded against the same record.

Phase 1 — essential attributes (agreed)

Phase 2 — deferred attributes

Not needed for the initial import. These come in once subscription/order lookups go live, pulled live via Unicity's customer search API rather than bulk-loaded.

Why a bulk initial load is required

To avoid duplicate profiles, all ~7 million contacts need to be loaded into Intercom upfront (email + phone minimum, name if available) via the Intercom API (POST /contacts), before go-live. Confirmed approach: initial load via CSV. After that, since Unicity's customer database changes daily, updates need to sync automatically — Nilesh asked whether their existing Kinesis event stream could be used instead of a webhook.

Clarified by Laura

Intercom doesn't consume Kinesis (or any event bus) directly — it only exposes a REST API. Kinesis can replace the webhook as the trigger for updates, but Unicity still needs a small consumer on their side (e.g. a Lambda) that reads the stream and calls Intercom's API per change.

New blocker — compliance review

Raised by Nilesh

Compliance concern about exporting a full data dump of ~7M customer records to Intercom. This needs sign-off before the bulk import can run.

Merge logic (for reference)

If a contact reaches out on a channel where they're not yet recognized, Intercom creates them as a lead. If the identifying info (e.g. phone number) matches an existing user, Intercom flags a possible duplicate and lets you merge them manually with one click. This is why loading contacts upfront matters — it minimizes leads floating around as unmerged duplicates.

Workflows / Inbox Settings

Pillar 3
0 / 0 DONE
Status

Workspace owners set (Matthew, Nilesh, Zach). WhatsApp still blocked on legal entity definition. Email channel connection pending, but DNS setup can proceed in parallel.

Open questions for Unicity (Lawrence / Nilesh / CS team)

Automations outside of Fin: e.g. if a message comes from a specific address, auto-tag, assign to a specific inbox, or set a specific SLA — logic that ran in Zendesk and needs to be replicated.

Ticket types and internal logic: not about the 100+ granular reasons customers write in, but the higher-level category split.

Note: the detailed use cases (order status, subscription updates, etc.) were already shared and mostly require API calls — that part is covered. This is specifically about the category/ticket-type structure.

Dependencies for full end-to-end testing

Without these, structure (inboxes, roles, permissions) can still be configured, but the real customer → Fin → resolution/escalation flow can't be validated.

Confirmed channel rollout order (Europe first)

Phases 1–3 focus on Europe only. Voice is the last phase, scoped to the U.S.

  1. Email — Fin responds using the knowledge base (Google Drive content)
  2. API integration — subscription/order status queries via Unicity's internal APIs
  3. WhatsApp
  4. Voice (U.S. only, last phase)

Parallel Work Plan

Nothing here needs to wait on anything else
# Action Pillar Owner
1Get Google Drive KB access granted to Matias & LauraKnowledge BaseUnicity (Grace/Fenton)
2Authenticate unicity.com domain in Intercom, then set up support@ forwardingKnowledge BaseUnicity IT (John/Logan)
3Share RingCentral API docs/endpointsKnowledge BaseNilesh
4Build RingCentral–Intercom integration (API/webhooks)Knowledge BaseEscalateOps (depends on 3)
5Consult Zach/Compliance on the initial customer data importContactsNilesh
6Create Intercom attributes and run the initial bulk importContactsEscalateOps + Unicity (depends on 5)
7Review Zendesk automations/ticket types and send to MatiasWorkflowsNilesh
8Build and share architecture/data-flow diagram for execsKnowledge BaseEscalateOps
9Finalize and share this MVP plan in Slack for team feedbackEscalateOps

Technical Reference

Endpoints, payloads & steps

Every API step referenced across the three pillars, in one place, so nobody has to remember where to click or what to send.

1 · Domain authentication (Pillar 1 — Email channel)

Intercom → Settings → Channels → Email → Add email address
  1. Add the address (e.g. support@unicity.com) — Intercom will show it as unauthenticated
  2. Intercom generates DNS records (SPF/DKIM-type records) to paste into wherever unicity.com is hosted (Namecheap, etc.)
  3. Once records propagate, Intercom flips the status to authenticated
  4. Turn on automatic forwarding so mail sent to support@unicity.com routes into Intercom

2 · Contacts — create custom attributes first

Create a custom attributePOST
/data_attributes

Run this once per attribute (e.g. whatsapp_number, later unicity_customer_id, region, subscription_status) before importing any contacts, so the import matches without errors.

curl -i -X POST \
  https://api.intercom.io/data_attributes \
  -H 'Authorization: Bearer <INTERCOM_TOKEN>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: 2.16' \
  -d '{
    "name": "whatsapp_number",
    "model": "contact",
    "data_type": "string"
  }'

3 · Contacts — bulk initial import (Pillar 2)

Create contactPOST
/contacts

Only email is strictly required. Send phone and name whenever available — phone is what lets an email conversation and a WhatsApp conversation resolve to the same profile. This call runs once per contact for the ~7M-record initial load (batched, respecting rate limits), and again for any new/changed contact on the nightly sync.

curl -i -X POST \
  https://api.intercom.io/contacts \
  -H 'Authorization: Bearer <INTERCOM_TOKEN>' \
  -H 'Content-Type: application/json' \
  -H 'Intercom-Version: 2.16' \
  -d '{
    "email": "member@example.com",
    "phone": "+34600000000",
    "name": "Jane Doe"
  }'

A repeat call with an email already in Intercom returns 409 Conflict — use GET /contacts or the search endpoint to fetch the existing contact and PUT /contacts/{id} to update it instead of re-creating it.

4 · Ongoing sync — Kinesis (or webhook) → Lambda consumer → Intercom

Not an Intercom endpoint — Intercom only exposes a REST API, it doesn't consume Kinesis or any event bus directly. Kinesis can be the trigger, but Unicity still needs a consumer on their side (e.g. a Lambda) that reads the stream and calls the same POST /contacts / PUT /contacts/{id} endpoints above whenever a record changes.

5 · RingCentral integration Blocked — awaiting docs

Endpoints TBDPENDING

Nilesh confirmed Unicity doesn't currently have RingCentral/Fin-related API docs on hand. Once shared, this block gets filled in with the actual endpoints (likely call/voice event webhooks + a way to post Fin's response back into the call/message flow) and the Intercom-side webhook that receives them.

Reference links

Timeline & cadence

September 15th target reaffirmed but flagged as at-risk given the current pace of blockers — tighter, more frequent communication was agreed as the mitigation. New recurring cadence: Tuesdays = technical session, Thursdays = business session. A short agenda/action brief will go out before each meeting so time isn't spent re-explaining context.

Active Blockers

Executive summary — needs a response to keep momentum
  1. Google Drive KB access — requested, status not yet confirmed as granted.
  2. RingCentral API docs — none shared yet; Nilesh confirmed they don't currently have any RingCentral/Fin-related APIs on hand.
  3. Compliance sign-off on ~7M-record data dump — Nilesh needs to consult Zach/Compliance before the initial bulk import can proceed.
  4. Legal entity for WhatsApp Business — pending Unicity legal team (carried over from Aug 26).
  5. DNS/domain authentication — needs the right person on Unicity IT confirmed (John coordinating with Logan).
  6. Zendesk automations/ticket type detail — Nilesh to gather and send.
  7. Ongoing contacts sync mechanism — Kinesis+Lambda vs. webhook vs. nightly batch, not yet decided.
  8. Centralized KB tagging strategy — Audiences/region structure for 50+ countries not yet defined.