@shiftboolean/ai-lead-scoring
v1.0.11
Published
An UI library to show ai lead score with factors and history details
Maintainers
Readme
Ai Lead Scoring

A lightweight React component library to display AI-based Lead Scores and their details in a flexible and customizable way.
This package helps you easily show lead scores, lead score facts, visualize score history, and even inject lead scores into existing HTML tables without rewriting your UI.
📦 Package Overview
@shiftboolean/ai-lead-scoring is a React-based npm package designed to show lead score data and details insights for leads.
It works out-of-the-box with minimal setup and also gives you full freedom to customize UI components according to your design system (MUI, custom CSS, etc.).
🚀 What Can This Package Do?
- Show single lead score
- Inject lead score column into any existing table
- Display lead score details insights in dialog/sidebar
- Support fully custom UI components/styles
📥 Installation
npm install @shiftboolean/ai-lead-scoring
yarn add @shiftboolean/ai-lead-scoring
pnpm add @shiftboolean/ai-lead-scoring🧩 Components & Usage Details
Below are all available components with clear explanations and prop details.
AiLeadScoreProvider
AiLeadScoreProvider is a React context provider that handles API key validation, authentication state, and global configuration for the AI Lead Scoring system. It validates the provided API key on mount, manages loading and error states, and exposes authentication status, theme, messages, and configuration values to all child components via context.
Wrap your application (or required part of it) with this provider to securely access AI Lead Score features throughout your app.
Props Reference
| Prop Name | Type | Required | Description |
| -------------- | ------------------- | -------- | -------------------------------------------------------------------------- |
| apiKey | string | ✅ | API key used to authenticate and validate access to the AI Lead Score API. |
| children | React.ReactNode | ✅ | React components that will consume the provider's context. |
| theme | "light" \| "dark" | ❌ | UI theme for the provider. Defaults to "light" if not provided. |
| primaryColor | string | ❌ | Primary theme color of the theme |
Example
<StrictMode>
<AiLeadScoreProvider
apiKey="123"
>
<App />
</AiLeadScoreProvider>
</ThemeProvider>
</StrictMode>
ShowSingleLeadScore
Displays the lead score for a single student.
Props Reference
| Prop Name | Type | Required | Description |
| ----------------- | ------------------------------------------------------ | -------- | -------------------------------------- |
| studentId | string | ✅ | Unique student ID |
| CustomComponent | ComponentType<{ isLoading: boolean; score: number }> | ❌ | Custom UI for rendering score |
| width | string \| number | ❌ | Width of the component |
| height | string \| number | ❌ | Height of the component |
| styles | CSSProperties | ❌ | Custom inline styles for the component |
Example
import { ShowSingleLeadScore } from "@shiftboolean/ai-lead-scoring";
export default function SingleScoreExample() {
return <ShowSingleLeadScore studentId="STUDENT_123" />;
}InjectLeadScoreTableColumn
Injects a Lead Score column into any existing HTML table using its ID.
Props Reference
| Prop Name | Type | Required | Description |
| ---------------------- | ------------------------------------------------------ | -------- | -------------------------------------- |
| tableId | string | ✅ | Target table ID |
| studentIds | string[] | ✅ | Student IDs (row-wise) |
| headerName | string | ✅ | Column header text |
| columnInjectionIndex | number | ❌ | Injection Column position (>0) |
| CustomComponent | ComponentType<{ isLoading: boolean; score: number }> | ❌ | Custom cell UI |
| width | string \| number | ❌ | Width of the component |
| height | string \| number | ❌ | Height of the component |
| styles | CSSProperties | ❌ | Custom inline styles for the component |
Example
import { InjectLeadScoreTableColumn } from "@shiftboolean/ai-lead-scoring";
export default function InjectColumnExample() {
return (
<table id="student-table">
<thead>
<tr>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td>John</td>
<td>[email protected]</td>
</tr>
<tr>
<td>Jane</td>
<td>[email protected]</td>
</tr>
</tbody>
<InjectLeadScoreTableColumn
tableId="student-table"
headerName="Lead Score"
studentIds={["STUDENT_1", "STUDENT_2"]}
/>
</table>
);
}LeadScoreDetailsDialog
Shows the lead score insights with history, recommendation, factors, risks, and overview in a dialog
Props Reference
| Prop Name | Type | Required | Description |
| ----------------- | ---------------------------------------- | -------- | ----------------------------------------------------- |
| DialogInitiator | ComponentType<{ onClick: () => void }> | ✅ | Component that triggers opening the dialog. |
| studentId | string | ✅ | Unique student/lead ID. |
| open | boolean | ✅ | Dialog opening state |
| onClose | ()=> void | ✅ | Dialog closing function |
| dialogTitle | string | ❌ | Optional title displayed on the dialog. |
| leadStage | string | ❌ | Lead stage of the student |
| studentName | string | ❌ | Name of the student |
| dialogWidth | 'sm' \| 'md' \| 'lg' \| 'full' | ❌ | Width of the dialog. |
| styles | React.CSSProperties | ❌ | Custom inline styles applied to the dialog container. |
Example
<LeadScoreDetailsDialog
DialogInitiator={({ onClick }) => (
<Button onClick={onClick}>Score Details</Button>
)}
studentId="2333443"
/>LeadScoreDetailsSidebar
Shows the lead score insights with history, recommendation, factors, risks, and overview in a sidebar
Props
| Prop Name | Type | Required | Description |
| ----------------- | ---------------------------------------- | -------- | ------------------------------------------------------ |
| DialogInitiator | ComponentType<{ onClick: () => void }> | ✅ | Component that triggers opening the sidebar. |
| studentId | string | ✅ | Unique student/lead ID. |
| open | boolean | ✅ | Sidebar opening state |
| onClose | ()=> void | ✅ | Sidebar closing function |
| sidebarTitle | string | ❌ | Optional title displayed on the sidebar. |
| sidebarWidth | 'sm' \| 'md' \| 'lg' \| 'full' | ❌ | Width of the sidebar. |
| sidebarPosition | 'left' \| 'right' | ❌ | Position of the sidebar on the screen. |
| styles | React.CSSProperties | ❌ | Custom inline styles applied to the sidebar container. |
| leadStage | string | ❌ | Lead stage of the student |
| studentName | string | ❌ | Name of the student |
Example
<LeadScoreDetailsSidebar
DialogInitiator={({ onClick }) => (
<Button onClick={onClick}>Score Details</Button>
)}
studentId="2333443"
/>🧠 Summary
@shiftboolean/ai-lead-scoringhelps you display lead scores and insights quickly- Works well with existing UI and tables
- Fully customizable components and UI
- Easy to integrate into any React app
- Currently uses a static API key, which will be improved later
