🧩 ClientVerse Modules — Whitespace Requires the ClientVerse Modules package. Clients on Core only won't see this.
Whitespace¶
Available since: ClientVerse Modules 0.1 (shipped). Roadmap code BD1.4 (Whitespace Analysis).
What it is¶
Whitespace finds untapped revenue opportunities by scoring each account against practice areas the firm could serve but doesn't yet — the "white space" on the coverage map. A scheduled batch scores every relevant account/practice-area combination on configurable factors, classifies the current coverage, recommends a next step, and surfaces the strongest opportunities in a digest so BD can act on them.
Who it's for¶
- BD — works the prioritized list of coverage gaps.
- Attorneys / relationship managers — own follow-up on opportunities for their accounts.
- Executives — read the opportunity landscape as a cross-sell signal.
How scoring works¶
A scoring batch produces one Whitespace Opportunity (WhiteSpace_Opportunity__c) per
account/practice-area gap, carrying an overall Opportunity_Score__c built from four component
scores. Each component's contribution is capped by a weight, and the configuration is all custom
metadata — cited from objects/whitespace.yaml.
The four components¶
Component score (WhiteSpace_Opportunity__c) |
What it measures |
|---|---|
Score_Client_Tier__c |
How strategic the client is |
Score_Peer_Coverage__c |
How well peer firms / the market serve this area |
Score_Relationship_Strength__c |
Strength of the firm's relationship |
Score_Revenue_Potential__c |
Estimated revenue upside |
Weights¶
Each factor's maximum points come from Whitespace_Score_Weight__mdt
(Factor_Name__c → Max_Points__c, with Active__c to include/exclude a factor). Tuning these
records reweights how opportunities rank — for example, raise Max_Points__c on revenue potential
to push high-value gaps to the top. Because the weights are metadata, no code change is needed to
re-tune the model.
Thresholds & coverage status¶
Coverage_Status__c (e.g. none / partial / active) is derived from worked-time against
per-practice thresholds in Whitespace_Threshold__mdt:
Active_Hours_Threshold__c— hours above which coverage counts as active.Partial_Hours_Threshold__c— hours above which coverage counts as partial.
Coverage hours draw on Core time data (Time_Entry__c). Coverage_Lapse__c flags an opportunity
where previously-active coverage has since lapsed — a re-engagement signal.
Run configuration¶
The batch itself is governed by Whitespace_Scoring_Config__mdt: Active__c (enable scoring),
Batch_Size__c, and the digest schedule (Send_Digest__c, Digest_Day_Of_Week__c,
Digest_Hour__c, Top_Opportunity_Count__c).
The opportunity record¶
Each WhiteSpace_Opportunity__c is what the dashboard and digest present. Beyond the score and
components it holds:
Account__candPractice_Area__c— the gap being scored.Recommended_Action__c— the suggested next step.RM_Owner__c— the relationship manager who owns follow-up.Last_Scored_Date__c— when the batch last refreshed the record.
The digest¶
When Send_Digest__c is on, Whitespace emails the top opportunities (count set by
Top_Opportunity_Count__c) on the configured day/hour. Recipients see the highest-scoring coverage
gaps with their recommended actions, so the strongest cross-sell signals reach the right people
without anyone opening a report.
Acting on opportunities¶
- Review the digest or the Whitespace list of
WhiteSpace_Opportunity__crecords, ranked byOpportunity_Score__c. - Read
Coverage_Status__candCoverage_Lapse__cto understand the current state, and the component scores to understand why the opportunity ranks where it does. - Follow the
Recommended_Action__c; theRM_Owner__cdrives next steps with the account team. - Re-scored automatically on the next batch (
Last_Scored_Date__cupdates) as relationships and worked time change.
Configuration¶
- All tuning is custom metadata — no code changes:
Whitespace_Scoring_Config__mdt— enable scoring, batch size, digest schedule.Whitespace_Score_Weight__mdt— per-factor maximum points (the weights).Whitespace_Threshold__mdt— per-practice active/partial coverage thresholds.- See the Admin Guide for enabling the batch and digest, and the Configuration Reference for the metadata field detail.
Key objects¶
Cited from objects/whitespace.yaml (Whitespace
ships 4 objects):
| Object | Role |
|---|---|
WhiteSpace_Opportunity__c |
A scored account/practice-area coverage gap (the output) |
Whitespace_Scoring_Config__mdt |
Batch + digest run settings |
Whitespace_Score_Weight__mdt |
Per-factor weights (max points) |
Whitespace_Threshold__mdt |
Per-practice active/partial coverage thresholds |
Limits & known issues¶
- Core dependency. Modules 0.4.0 requires Core 1.1.7 (declared dependency
ClientVerse Core Unlocked@1.1.7-6). The floor moved up from 1.1.4 in this release, so an org running Modules 0.3.0 without trouble can still be below it — upgrade Core before Modules. See../../_package-facts/sync-report.md. - Coverage accuracy depends on time data. Coverage status and the relationship/revenue
components are only as good as the
Time_Entry__cand relationship data flowing in from the PMS and ERM. - Scores refresh on the batch cadence, not in real time; a record reflects the data as of its
Last_Scored_Date__c.