Customer Intelligence-Saifs AI (Preview)

Score customers into A/B/C/D tiers with explained CLV, risk.

This connector is available in the following products and regions:

Service Class Regions
Copilot Studio Premium All Power Automate regions except the following:
     -   US Government (GCC)
     -   US Government (GCC High)
     -   China Cloud operated by 21Vianet
     -   US Department of Defense (DoD)
Logic Apps Standard All Logic Apps regions except the following:
     -   Azure Government regions
     -   Azure China regions
     -   US Department of Defense (DoD)
Power Apps Premium All Power Apps regions except the following:
     -   US Government (GCC)
     -   US Government (GCC High)
     -   China Cloud operated by 21Vianet
     -   US Department of Defense (DoD)
Power Automate Premium All Power Automate regions except the following:
     -   US Government (GCC)
     -   US Government (GCC High)
     -   China Cloud operated by 21Vianet
     -   US Department of Defense (DoD)
Contact
Name Saifs AI
URL https://saifs.ai/
Email taher@saifytech.com
Connector Metadata
Publisher Saifs AI
Website https://saifs.ai/
Privacy Policy https://saifs.ai/privacy_policy/customer-intelligence
Categories AI;Data

Customer Intelligence - Saifs AI

Customer Intelligence - Saifs AI is a Model Context Protocol (MCP) server that scores a customer purchase book into A/B/C/D tiers with explained customer lifetime value (CLV), value-at-risk, contact uplift, and a ranked SAVE / GROW / VERIFY rep queue. It takes purchase history (customer_id, date, amount) from CSV, Excel, Tally, or CRM exports and returns a per-customer ledger with explanation traces so sales teams prioritize by money at stake, not just labels.

Publisher: Saifs AI

Prerequisites

  • Access to Microsoft Copilot Studio (or another supported Microsoft agent surface)
  • Permission to create agents and add MCP tools
  • A Saifs AI account to complete connection sign-in
  • A purchase export with one row per transaction containing at least:
    • customer_id (or equivalent: AccountId, Party Name, and similar aliases)
    • date (or equivalent: invoice_date, Invoice Date)
    • amount greater than 0 (or equivalent: revenue, Invoice Amount)
  • Optional but recommended for contact-uplift learning: a rep-contact log with customer_id and date only (calls, visits, or WhatsApp touches)
  • For books larger than 500 transaction rows: a code sandbox with numpy to run the scoring script returned by customer_tiering_get_engine

Obtaining Credentials

This MCP uses OAuth 2.0 with Saifs AI.

For makers connecting the MCP in Copilot Studio

Administrators and makers do not create API keys manually. When you create a new connection in Copilot Studio, you are redirected to Saifs AI to authenticate. After successful login, the connection is created and the agent can call MCP tools under that account.

For publishers / Microsoft validation (Azure Key Vault)

Certification submissions configure OAuth via Azure Key Vault (authorization.type = AzureKeyVault). Store secrets with exact names (case-sensitive):

Secret name Required for OAuth 2.0 Purpose
ClientId Yes OAuth client / application ID
ClientSecret Yes OAuth client secret
AuthorizationUrl Yes (OAuth2) Authorization endpoint
TokenUrl Yes Token endpoint
RefreshUrl If refresh tokens are used Refresh endpoint
Scopes If scopes are required Space-separated scopes

Grant the Microsoft certification service principal 8e91e74f-afe9-41cd-8c3f-17a9562a74ea Key Vault Secrets User (or equivalent read access). Set authorization.referenceId in the MCP manifest to the Key Vault URI, not a secret URI.

For Key Vault setup details, see Microsoft MCP server certification — FAQ.

Support, privacy, and terms:

Getting Started

Flow for administrators

  1. Click New Agent.
  2. In the right-hand side menu, click Tools.
  3. Click Model Context Protocol (MCP).
  4. Select Customer Intelligence - Saifs AI.
  5. Click not Connected, then click Create New Connection.
  6. Complete Saifs AI sign-in when prompted.
  7. After login, the connection is created successfully.

Example: create a Customer Prioritization agent

  1. Name your agent, for example Customer Prioritization.
  2. Add instructions such as:
You help sales managers prioritize which customers to call today.
When the user provides a purchase export (customer_id, date, amount):
- If there are 500 transaction rows or fewer, call customer_tiering with the rows.
- If there are more than 500 rows, call customer_tiering_get_engine and run the returned script verbatim against the file (numpy required).
Always lead with ranked SAVE / GROW / VERIFY actions and money impact in the user's currency.
Explain tiers in plain language. Do not invent winners or rupee figures the tools did not return.
If identity_cleaning.review_candidates appear, ask the user which accounts to merge and re-send with identity_overrides.
  1. Click Preview to test with a small purchase CSV.
  2. Click Publish.

Quick verification after connecting

  1. Score a small book (at least enough customers and repeat buyers for the model to fit) with customer_tiering.
  2. Confirm the response includes a per-customer ledger, tier labels, money-layer figures, and a SAVE / GROW / VERIFY queue.
  3. For a larger file, call customer_tiering_get_engine, save and run the returned script as given, and confirm customer_tiering_result.json is written.

Supported Operations

customer_tiering

Scores a customer book of 500 transaction rows or fewer into A/B/C/D tiers. Send the rows directly; the server runs survival modelling (BG/NBD), spend modelling (Gamma-Gamma), tier migration, the money layer, and decision cards, then returns the full result including a per-customer ledger with explanation traces.

Use when the user asks to segment, tier, or rank customers; build a call queue (SAVE / GROW / VERIFY); find at-risk or growth accounts; estimate book exposure; or score a CSV / Excel / Tally / CRM purchase export of 500 rows or fewer.

For books larger than 500 rows, use customer_tiering_get_engine instead.

Required parameters

Parameter Type Description
transactions array Purchase rows. Each item needs customer_id, date, and amount (> 0, finite).

Optional parameters

Parameter Type Description
customer_name string On each transaction: optional readable name when customer_id is a code. Used for labels; grouping still uses customer_id.
as_of string Analysis date YYYY-MM-DD. Defaults to latest transaction date.
horizon_months integer CLV projection horizon in months (default 12).
annual_discount_rate number Annual discount rate for CLV (default 0.10).
currency string ISO currency code for display only (INR, USD, EUR). No FX conversion.
currency_symbol string Override display symbol (for example ₹ or $).
risk_period_months integer Window over which neglect churn risk is assessed (default 3).
contact_effectiveness number Fallback fraction of at-risk churn recovered by one contact when learned data is missing (default 0.30).
assumed_upgrade_prob number Fallback P(upgrade | contacted) when learned data is insufficient (default 0.15).
rep_contacts array Optional [{customer_id, date}, ...]. Builds touched vs untouched migration matrices and learns contact uplift per tier (≥ 10 touched transitions). Observational, not causal.
min_customers_for_model integer Below this count, BG/NBD refuses to fit (default 10).
min_repeat_buyers_for_model integer Below this repeat-buyer count, BG/NBD refuses to fit (default 5).
include_diagnostics boolean If true, include MLE params and multi-start fit diagnostics (default false).
rep_queue_max_items integer Max length of the daily SAVE / GROW / VERIFY queue (default 8).
rep_queue_min_save_revenue number Ignore SAVE candidates with lifetime revenue below this (default 0).
identity_overrides object Judgement merges for review_candidates from a previous call: {raw value -> account}.

Identity cleaning

Customer identifiers are cleaned server-side before scoring. Capitalisation, spacing, punctuation, legal-suffix, and word-order variants (for example ACME PVT LTD / Acme Pvt. Ltd. / Acme Private Limited) are merged by rule. Send values exactly as they appear in the source; do not pre-normalise. Ambiguous groups that need human judgement are returned in identity_cleaning.review_candidates unmerged for you to resolve via identity_overrides.

What you get back (conceptually)

  • A/B/C/D tiers based on predicted CLV (not only past revenue)
  • Explanation traces for why an account landed in a tier
  • Value at risk, contact uplift, and upgrade upside framed as currency ranges with confidence
  • Book-level exposure figures
  • A ranked SAVE / GROW / VERIFY rep queue

customer_tiering_get_engine

For books larger than 500 transaction rows. Returns a complete, runnable Python script that scores the book into A/B/C/D tiers with the same modelling stack and money layer. Run it in your code sandbox against the user's transaction file. Rows never pass through the model as tokens, so a 10,000-row book costs the same to orchestrate as a 600-row one.

Required parameters

Parameter Type Description
file_path string Path to the transaction file (CSV / TSV / JSON) inside the sandbox. One row per purchase with customer identifier, date, and amount > 0. Column names are matched flexibly.

Optional parameters

Parameter Type Description
contacts_path string Optional path to a rep-contact log (customer identifier + date only). With enough touched transitions, contact value is measured per tier instead of assumed.
currency string ISO currency code for display (default USD).
as_of string Analysis date YYYY-MM-DD. Defaults to latest in file.

How to run the returned script

  1. Save the returned script exactly as given (do not retype, shorten, reformat, or reimplement the maths).
  2. Edit only the PATH / AS_OF / CURRENCY / OUT / OVERRIDES / CONTACTS lines at the bottom if needed.
  3. Run it in a sandbox with numpy.
  4. Read the printed ranked decisions and headline figures; open the full per-customer ledger written beside the input (default customer_tiering_result.json).

A pre-aggregated per-customer summary will not work — the models need purchase timing.

How the scoring works (plain language)

The MCP combines classical customer analytics into one explained ledger:

  1. Baseline ranking — Pareto / ABC concentration as a sanity check.
  2. Behavioral early warning — RFM-style recency, frequency, and monetary signals for the explanation trace.
  3. Alive probability — BG/NBD survival modelling estimates whether an account is still active.
  4. Spend and CLV — Gamma-Gamma spend modelling projects expected future value; tiers follow predicted CLV.
  5. Migration and uplift — Markov-style tier transitions; optional rep-contact history learns touched vs untouched uplift.
  6. Money layer — Turns probabilities into value at risk, value of contact, upgrade upside, and book exposure, reported as ranges with confidence — never bare point estimates alone.

Channel and money figures are a directional guide from purchase history, not a lab experiment proving causation.

Known Issues and Limitations

  • Active account required. An active Saifs AI account with access to Customer Intelligence is required. Tools cannot be called until OAuth sign-in completes successfully on the connection.
  • Minimum data for fitting. Below the configured customer and repeat-buyer thresholds (defaults: 10 customers, 5 repeat buyers), BG/NBD refuses to fit. Add more history or reduce thresholds only when the book is genuinely small and the user accepts a weaker fit.
  • Purchase timing required. Aggregated one-row-per-customer summaries cannot be scored. Export line-level or invoice-level purchases.
  • Row-path size limit. customer_tiering accepts 500 transaction rows or fewer. Larger books must use customer_tiering_get_engine plus a numpy sandbox.
  • Identity merges are rule-based. Automatic cleaning merges clear spelling/case/suffix variants. Ambiguous pairs (for example Acme & Co vs Acme Pvt Ltd) stay separate until you apply identity_overrides after review.
  • Contact uplift is observational. rep_contacts improves money-layer estimates when dense enough (≥ 10 touched transitions per tier). It is not a randomized causal proof. Sparse tiers fall back to contact_effectiveness / assumed_upgrade_prob.
  • Currency is a display label. Passing INR or USD does not convert amounts. Send amounts already in the currency you want reported.
  • Non-contractual purchase model. The default stack targets non-contractual / repeat-purchase books (distributors, agencies, D2C, trade). Pure subscription renewal books may need a different framing; thin or unsuitable books should be refused with a clear reason rather than overfitted.
  • Personal data. Purchase history can be personal data under applicable privacy law (including India's DPDP). Use only data you are authorized to process; keep retention and delete-on-request policies in place.
  • No FX, no CRM write-back in v1. The MCP scores and explains; it does not push updates into Salesforce, HubSpot, or Dataverse by itself.

Frequently Asked Questions

How do I connect the MCP?

Follow Flow for administrators under Getting Started: New Agent → Tools → Model Context Protocol (MCP) → select Customer Intelligence - Saifs AI → Create New Connection → complete Saifs AI sign-in.

What columns do I need in my file?

At minimum: a customer identifier, a purchase date, and a positive amount. Most CRM and Excel column names are accepted without renaming. Optionally include a customer name column when the id is a code, and a separate contact log (customer_id, date) to improve uplift estimates.

Which tool should I use?

  • 500 rows or fewer: customer_tiering (send rows in the tool call).
  • More than 500 rows: customer_tiering_get_engine (run the returned script locally).

What is the SAVE / GROW / VERIFY queue?

A short, money-ranked daily list for reps:

  • SAVE — accounts with material value at risk if neglected
  • GROW — accounts with upgrade upside if contacted
  • VERIFY — accounts that need identity or data confirmation before acting

Why do money figures show ranges?

Every currency figure ships with the model's confidence (for example a range), not only a single point estimate. That honesty is intentional so managers can trust the numbers when reality lands inside the range.

Can I score Tally or Excel exports?

Yes. Any export with purchase rows (customer_id / party, date, amount) works. Pre-clean only if you must; identity variants are merged by the tools.

Deployment Instructions

  1. In Copilot Studio, create a new agent and add Customer Intelligence - Saifs AI as an MCP tool.
  2. Create a new connection and complete Saifs AI sign-in.
  3. Add agent instructions for your sales prioritization use case (see Getting Started), Preview with a sample purchase file, then Publish.
  4. Keep the live MCP tool surface aligned with this documentation when submitting or updating Microsoft certification packages under the Apps and Agents for M365 and Copilot offer type. Package expectations (manifest, tool definitions, intro.md, authentication configuration) are described in Microsoft MCP server certification.

Support

Actions

Customer Intelligence-Saifs AI

Score customers into A/B/C/D tiers with explained CLV, risk.

Customer Intelligence-Saifs AI

Score customers into A/B/C/D tiers with explained CLV, risk.