mindtickle-cost-tuning
Cost Tuning for MindTickle. Trigger: "mindtickle cost tuning".
What this skill does
# MindTickle Cost Tuning
## Overview
MindTickle pricing is per-seat with costs driven by course content volume, quiz assessment frequency, and coaching session recordings. Each training module creation, quiz grading event, and call recording analysis consumes platform resources proportional to content complexity and learner count. For sales organizations onboarding hundreds of reps with dozens of active courses, unchecked content duplication and excessive assessment polling accumulate unnecessary spend. Consolidating content, optimizing assessment cadence, and right-sizing seat allocation are the highest-impact cost levers.
## Cost Breakdown
| Component | Cost Driver | Optimization |
|-----------|------------|--------------|
| Seat licenses | Per-learner/month pricing | Deprovision churned reps within 7 days; audit quarterly |
| Course content | Storage and delivery per training module | Deduplicate content across programs; archive outdated courses |
| Quiz assessments | Grading compute per quiz submission | Reduce retake frequency; batch grade submissions |
| Call recordings | Storage and AI analysis per coaching session | Set retention policies; analyze only flagged calls |
| API integrations | Sync events with CRM/HRIS systems | Batch sync; use webhooks instead of polling |
## API Call Reduction
```typescript
class MindTickleContentOptimizer {
private contentCache = new Map<string, { data: any; expiry: number }>();
private syncTimestamps = new Map<string, number>();
async getCourseContent(courseId: string, fetchFn: () => Promise<any>): Promise<any> {
const cached = this.contentCache.get(courseId);
if (cached && Date.now() < cached.expiry) return cached.data;
const data = await fetchFn();
// Course content changes rarely — cache for 24 hours
this.contentCache.set(courseId, { data, expiry: Date.now() + 86_400_000 });
return data;
}
async incrementalUserSync(users: any[]): Promise<any[]> {
const lastSync = this.syncTimestamps.get('users') || 0;
const changed = users.filter(u => u.updatedAt > lastSync);
this.syncTimestamps.set('users', Date.now());
// Typically reduces sync volume by 70-90% for stable orgs
return this.batchSync(changed);
}
private async batchSync(records: any[]): Promise<any[]> {
const batches = Array.from({ length: Math.ceil(records.length / 50) },
(_, i) => records.slice(i * 50, i * 50 + 50));
return Promise.all(batches.map(b => fetch('/api/users/bulk', {
method: 'POST', body: JSON.stringify(b)
})));
}
}
```
## Usage Monitoring
```typescript
class MindTickleCostTracker {
private daily = { assessments: 0, syncs: 0, recordings: 0 };
private budgets = { assessments: 2000, syncs: 500, recordings: 100 };
record(type: 'assessments' | 'syncs' | 'recordings'): void {
this.daily[type]++;
const pct = (this.daily[type] / this.budgets[type]) * 100;
if (pct > 80) {
console.warn(`MindTickle ${type} at ${pct.toFixed(0)}%: ${this.daily[type]}/${this.budgets[type]}`);
}
}
getReport(): Record<string, { used: number; budget: number }> {
return Object.fromEntries(
Object.keys(this.daily).map(k => [k, {
used: this.daily[k as keyof typeof this.daily],
budget: this.budgets[k as keyof typeof this.budgets]
}])
);
}
}
```
## Cost Optimization Checklist
- [ ] Deprovision churned or inactive sales reps within 7 days
- [ ] Archive outdated training courses instead of keeping them active
- [ ] Deduplicate content shared across multiple programs
- [ ] Limit quiz retakes to 3 attempts per assessment period
- [ ] Set call recording retention to 90 days; archive older recordings
- [ ] Analyze only manager-flagged coaching calls, not all recordings
- [ ] Use incremental sync for CRM/HRIS integration
- [ ] Set daily assessment and recording budget alerts at 80%
## Error Handling
| Issue | Cause | Fix |
|-------|-------|-----|
| Seat costs exceeding budget | Churned reps not deprovisioned | Automate deprovisioning via HRIS webhook on termination |
| Content storage bloat | Duplicate modules across programs | Deduplicate with shared content library; link instead of copy |
| Assessment grading delays | Burst of quiz submissions after training event | Queue submissions; batch grade in groups of 50 |
| Recording analysis costs spiking | Analyzing every coaching call | Filter to flagged calls only; set weekly analysis cap |
| CRM sync failures | Full sync overwhelming API rate limits | Switch to incremental sync with change timestamps |
## Resources
- [MindTickle Platform](https://www.mindtickle.com/platform/)
- [MindTickle Integrations](https://www.mindtickle.com/platform/integrations/)
## Next Steps
See `mindtickle-performance-tuning`.
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.