TeamPulse for SuiteCRM is an AI-powered behavioral intelligence extension that transforms CRM activity into actionable coaching signals, discipline scoring, and momentum insights. TeamPulse helps you detect sales execution gaps before they impact revenue. It turns everyday CRM activity into clear coaching signals, discipline scores, and early performance insights — so managers can act before pipeline problems appear.
FAQ
Common questions about TeamPulse adoption, data handling, and best fit.
Use Cases & Audience
Q: Who is TeamPulse best for?
A: Mid-to-Large Sales Teams (10+ Reps) with high-velocity processes.
SDR Teams: Focus on "Follow-up Consistency" and "Activity Continuity".
AE Teams: Focus on "Deal Hygiene" and "Momentum".
Account Management: Focus on "Task Completion" and "CRM Update Frequency".
Q: Can Marketing or Support use this?
A: Yes, but with caveats.
Support: Adjust scoring to prioritize "Case Resolution" (requires mapping Cases module).
Marketing: Less relevant, as it tracks daily behavioral output (calls/meetings), not campaign performance.
Q: Why not just use SuiteCRM Reports?
A: SuiteCRM Reports show outcomes (revenue, closed deals). TeamPulse acts as an operational operating system for behavior — tracking Effort, Discipline, and Consistency week-over-week so you can intervene before the pipeline is affected.
Technical Architecture
Data Structure & Scoring Logic
TeamPulse calculates scores server-side in PHP (ScoringEngine.php) from live SuiteCRM data. Results are cached in MySQL and served to the React UI via the TeamPulse API endpoint.
Core Data Entities:
- Rep Profile: Fetched from
userstable.
id,full_name,title,reports_to_id,email_address
- Activity Logs: Queried from SuiteCRM's standard tables (last 30 days by default).
calls:date_start,duration_hours,status,assigned_user_idtasks:date_due,status,name,assigned_user_idmeetings:date_start,duration_hours,status,assigned_user_id
- Deal State: Snapshot from
opportunitiestable.
sales_stage,date_closed,amount,date_modified
Scoring Algorithm (The "Engine")
The scoringEngine.js processes raw data into a normalized 0-100 score:
Score = (FollowUp_Score * Weight_1) +
(Task_Score * Weight_2) +
(Hygiene_Score * Weight_3) +
...
Normalization: Each component is capped at 100 to prevent a "busy" rep from masking poor hygiene.
Decay: Scores decay daily if no new activity is logged.
Security Model
No External Database: All scoring data is computed server-side and stored in your SuiteCRM database (
teampulse_*tables). Nothing leaves your server.Query Caching: TeamPulse caches results in
teampulse_cache(TTL: 6 hours for AI summaries, 2 hours for signals) to minimise database load.AI Privacy: BYOK keys are stored AES-256 encrypted in
teampulse_config. API calls go from your SuiteCRM server directly to OpenAI/Anthropic — never routed through our infrastructure.
Troubleshooting
Q: "No Data" appearing on Dashboard?
Sync Delay: Initial fetch takes ~1-2 minutes.
Permissions: Ensure the user has "Read" access to Deals/Tasks modules.
Date Filter: Check if the global filter is set to a future date range.
Q: "Score > 100%"?
A: Check Settings → Scoring Rules. Ensure the total weight does not exceed 100%. The indicator should be Green.
Q: AI Summary says "No significant data"?
A: The AI requires at least 5-7 days of history to generate a meaningful narrative. Ensure reps have logged activity this week.