by Zybroz

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.

Cancel at any time!
Free Trial

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:

  1. Rep Profile: Fetched from users table.
  • id, full_name, title, reports_to_id, email_address
  1. Activity Logs: Queried from SuiteCRM's standard tables (last 30 days by default).
  • calls: date_start, duration_hours, status, assigned_user_id

  • tasks: date_due, status, name, assigned_user_id

  • meetings: date_start, duration_hours, status, assigned_user_id

  1. Deal State: Snapshot from opportunities table.
  • 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?

  1. Sync Delay: Initial fetch takes ~1-2 minutes.

  2. Permissions: Ensure the user has "Read" access to Deals/Tasks modules.

  3. 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.

Saving Comment Saving Comment...