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/ |
| 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)amountgreater than 0 (or equivalent: revenue, Invoice Amount)
- Optional but recommended for contact-uplift learning: a rep-contact log with
customer_idanddateonly (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:
- Website: https://saifs.ai/
- Support: https://saifs.ai/contact-us
- Privacy: https://saifs.ai/privacy_policy/customer-intelligence
- Terms: https://saifs.ai/eula
Getting Started
Flow for administrators
- Click New Agent.
- In the right-hand side menu, click Tools.
- Click Model Context Protocol (MCP).
- Select Customer Intelligence - Saifs AI.
- Click not Connected, then click Create New Connection.
- Complete Saifs AI sign-in when prompted.
- After login, the connection is created successfully.
Example: create a Customer Prioritization agent
- Name your agent, for example Customer Prioritization.
- 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.
- Click Preview to test with a small purchase CSV.
- Click Publish.
Quick verification after connecting
- Score a small book (at least enough customers and repeat buyers for the model to fit) with
customer_tiering. - Confirm the response includes a per-customer ledger, tier labels, money-layer figures, and a SAVE / GROW / VERIFY queue.
- For a larger file, call
customer_tiering_get_engine, save and run the returned script as given, and confirmcustomer_tiering_result.jsonis 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
- Save the returned script exactly as given (do not retype, shorten, reformat, or reimplement the maths).
- Edit only the PATH / AS_OF / CURRENCY / OUT / OVERRIDES / CONTACTS lines at the bottom if needed.
- Run it in a sandbox with numpy.
- 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:
- Baseline ranking — Pareto / ABC concentration as a sanity check.
- Behavioral early warning — RFM-style recency, frequency, and monetary signals for the explanation trace.
- Alive probability — BG/NBD survival modelling estimates whether an account is still active.
- Spend and CLV — Gamma-Gamma spend modelling projects expected future value; tiers follow predicted CLV.
- Migration and uplift — Markov-style tier transitions; optional rep-contact history learns touched vs untouched uplift.
- 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_tieringaccepts 500 transaction rows or fewer. Larger books must usecustomer_tiering_get_engineplus a numpy sandbox. - Identity merges are rule-based. Automatic cleaning merges clear spelling/case/suffix variants. Ambiguous pairs (for example
Acme & CovsAcme Pvt Ltd) stay separate until you applyidentity_overridesafter review. - Contact uplift is observational.
rep_contactsimproves money-layer estimates when dense enough (≥ 10 touched transitions per tier). It is not a randomized causal proof. Sparse tiers fall back tocontact_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
- In Copilot Studio, create a new agent and add Customer Intelligence - Saifs AI as an MCP tool.
- Create a new connection and complete Saifs AI sign-in.
- Add agent instructions for your sales prioritization use case (see Getting Started), Preview with a sample purchase file, then Publish.
- 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
- Product: Customer Intelligence - Saifs AI
- Publisher: Saifs AI
- Website: https://saifs.ai/
- Sign up / Get started: https://saifs.ai/
- Contact us / Help: https://saifs.ai/contact-us
- Privacy: https://saifs.ai/privacy_policy/customer-intelligence
- Terms: https://saifs.ai/eula
- MCP endpoint (reference):
https://customer-tiering-mcp-latest.saifs.ai/mcp
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.