Files
secondbrain/QUICK_REFERENCE.md
T
Ravi ReddyandClaude Opus 5.5 3b371cdb28 Add VoiceNotes firmware and CDM customer service SQL project
VoiceNotes is an Arduino sketch for the Waveshare ESP32-C6-LCD-0.85 that
records meetings and voice memos to microSD and turns them into notes:

- Records 16 kHz mono WAV (up to 4 h) from the ES7210 dual mics, with a
  boosted preamp and soft-limited digital gain
- Transcribes via an OpenAI-compatible speech-to-text API in ~10 min parts
  cut at quiet points, with retries and resume after failures
- Summarizes the transcript with Claude into meeting notes (decisions,
  action items, topics with timestamps), streamed to and from the card
- Copies the notes to Nextcloud over WebDAV
- Shows recording/processing state on the 0.85" LCD and the LED ring
- Works around the board's SD card failing multi-sector reads

Credentials live in VoiceNotes/secrets.h, which is git-ignored; see
secrets.example.h.

Also adds the Microsoft CDM customer service SQL implementation (DDL,
sample data, reporting queries and docs). Its README is renamed to
CDM_README.md so the repository README stays at the top level.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 22:22:10 +05:30

8.9 KiB

CDM Customer Service - Quick Reference Guide

🎯 Your Complete Database is Ready!

Server: localhost:1433
Database: CDM_CustomerService
Auth: SA / Welcome1
Tables: 26
Views: 4
Procedures: 19


📊 Viewing Dashboards

Executive Dashboard (All Key Metrics)

SELECT 
    activeCases, 
    closedCases, 
    totalCustomers, 
    activeContracts,
    activeContractValue
FROM cdm.v_ExecutiveDashboard;

Case Health Dashboard

SELECT caseNumber, title, priority, status, statusHealth, daysOpen
FROM cdm.v_CasePerformanceMetrics
ORDER BY daysOpen DESC;

Agent Performance

SELECT agentName, totalCasesOwned, closedCases, avgHoursToResolution
FROM cdm.v_AgentPerformance
ORDER BY closedCases DESC;

Contract Status

SELECT contractNumber, accountName, utilizationPercent, daysRemaining, utilizationStatus
FROM cdm.v_ContractUtilizationDashboard
WHERE utilizationStatus != 'NORMAL';

🔍 Running Reports

Case Analysis

-- Cases by priority (last 90 days)
EXEC sp_CaseVolumeByPriority @Days = 90;

-- Customer satisfaction (last 6 months)
EXEC sp_CustomerSatisfactionAnalysis @Months = 6;

-- SLA Compliance (real-time)
EXEC sp_SLAComplianceReport;

Schedule & Workload

-- This week's activities
EXEC sp_ServiceActivitySchedule @Days = 7;

-- Resource utilization (last 30 days)
EXEC sp_ResourceUtilizationReport @Days = 30;

-- Agent workload
SELECT agentName, activeCases, criticalCases, highPriorityCases
FROM cdm.v_AgentPerformance;

Business Metrics

-- Monthly summary
EXEC sp_MonthlyActivityReport @Year = 2026, @Month = 9;

-- Customer revenue
EXEC sp_CustomerRevenueAnalysis;

-- KB article usage
EXEC sp_KnowledgeArticleEffectiveness;

🛠️ Common Tasks

Find Cases by Status

-- Active cases
SELECT caseNumber, title, priority FROM cdm.[Case]
WHERE status = 'Active' AND isActive = 1
ORDER BY priority DESC, createdDate;

-- Overdue cases (> 30 days)
EXEC sp_UpdateCaseOverdueStatus @ThresholdDays = 30;

-- Cases needing attention
SELECT * FROM cdm.v_CasePerformanceMetrics
WHERE statusHealth IN ('Overdue', 'Awaiting Close')
ORDER BY daysOpen DESC;

Find Contracts

-- Active contracts
SELECT contractNumber, contractName, accountName, status
FROM cdm.v_ContractSummary
WHERE status = 'Active'
ORDER BY contractValue DESC;

-- Expiring soon
EXEC sp_ContractRenewalAlerts @DaysUntilExpiry = 90;

-- Overutilized contracts
SELECT contractNumber, accountName, utilizationPercent
FROM cdm.v_ContractUtilizationDashboard
WHERE utilizationPercent > 80;

Find Data Quality Issues

-- Missing data
EXEC sp_CasesWithMissingData;

-- Orphaned records
EXEC sp_FindOrphanedRecords;

-- Incomplete cases
SELECT caseNumber, title
FROM cdm.[Case]
WHERE accountId IS NULL OR ownerUserId IS NULL;

📅 Maintenance Commands

Daily

-- Check SLA status
EXEC sp_SLAComplianceReport;

-- Today's schedule
EXEC sp_ServiceActivitySchedule @Days = 1;

Weekly

-- Overdue cases
EXEC sp_UpdateCaseOverdueStatus @ThresholdDays = 30;

-- Team performance
SELECT * FROM cdm.v_AgentPerformance
ORDER BY activeCases DESC;

-- Data quality
EXEC sp_CasesWithMissingData;

Monthly

-- Month summary
EXEC sp_MonthlyActivityReport @Year = 2026, @Month = 9;

-- Customer satisfaction
EXEC sp_CustomerSatisfactionAnalysis @Months = 1;

-- Revenue analysis
EXEC sp_CustomerRevenueAnalysis;

-- Auto-close old resolved cases
EXEC sp_CloseResolvedCases @DaysOld = 7;

Quarterly

-- Contract renewals
EXEC sp_ContractRenewalAlerts @DaysUntilExpiry = 90;

-- Resource utilization
EXEC sp_ResourceUtilizationReport @Days = 90;

-- KB effectiveness
EXEC sp_KnowledgeArticleEffectiveness;

Annually

-- Archive old cases (2+ years)
EXEC sp_ArchiveOldCases @YearsOld = 2;

-- Update contract status
EXEC sp_DeactivateExpiredContracts;
EXEC sp_UpdateEntitlementStatus;

🔗 Table Reference

Create Case

INSERT INTO cdm.[Case] 
(caseNumber, title, accountId, contactId, priority, status, createdDate)
VALUES ('CSE-2026-0005', 'New Issue Title', @accountId, @contactId, 'High', 'Active', GETUTCDATE());

Create Contract

INSERT INTO cdm.Contract 
(contractNumber, contractName, accountId, startDate, endDate, status, contractValue)
VALUES ('CNT-2026-001', 'Contract Name', @accountId, '2026-01-01', '2026-12-31', 'Active', 50000.00);

Create Service Activity

INSERT INTO cdm.ServiceActivity 
(subject, serviceId, caseId, ownerUserId, startTime, endTime, duration, status)
VALUES ('Activity Name', @serviceId, @caseId, @userId, '2026-09-24 10:00:00', '2026-09-24 12:00:00', 120, 'Scheduled');

Update Case

UPDATE cdm.[Case]
SET status = 'Resolved', resolvedDate = GETUTCDATE()
WHERE caseId = @caseId;

📈 Sample Queries for Analysis

Cases by Account

SELECT 
    a.accountName,
    COUNT(c.caseId) AS caseCount,
    SUM(CASE WHEN c.status = 'Active' THEN 1 ELSE 0 END) AS activeCases,
    SUM(CASE WHEN c.status = 'Closed' THEN 1 ELSE 0 END) AS closedCases
FROM cdm.Account a
LEFT JOIN cdm.[Case] c ON a.accountId = c.accountId
WHERE a.isActive = 1
GROUP BY a.accountId, a.accountName
ORDER BY activeCases DESC;

Average Case Duration

SELECT 
    a.accountName,
    AVG(DATEDIFF(DAY, c.createdDate, c.resolvedDate)) AS avgDaysToResolve,
    COUNT(*) AS totalCasesClosed
FROM cdm.[Case] c
JOIN cdm.Account a ON c.accountId = a.accountId
WHERE c.status = 'Closed' AND c.resolvedDate IS NOT NULL AND c.isActive = 1
GROUP BY a.accountId, a.accountName
ORDER BY avgDaysToResolve DESC;

Technician Workload

SELECT 
    u.firstName + ' ' + u.lastName AS technician,
    COUNT(c.caseId) AS casesAssigned,
    COUNT(CASE WHEN c.status = 'Active' THEN 1 END) AS activeCases,
    COUNT(CASE WHEN c.status = 'Closed' THEN 1 END) AS closedCases,
    ROUND(AVG(DATEDIFF(HOUR, c.createdDate, ISNULL(c.resolvedDate, GETUTCDATE()))), 2) AS avgHours
FROM cdm.[User] u
LEFT JOIN cdm.[Case] c ON u.userId = c.ownerUserId
WHERE u.isActive = 1 AND c.isActive = 1
GROUP BY u.userId, u.firstName, u.lastName
ORDER BY activeCases DESC;

Contract Value by Account

SELECT 
    a.accountName,
    COUNT(c.contractId) AS contractCount,
    SUM(c.contractValue) AS totalValue,
    AVG(c.contractValue) AS avgValue,
    SUM(CASE WHEN c.status = 'Active' THEN c.contractValue ELSE 0 END) AS activeValue
FROM cdm.Account a
LEFT JOIN cdm.Contract c ON a.accountId = c.accountId
WHERE a.accountType = 'Customer' AND a.isActive = 1
GROUP BY a.accountId, a.accountName
ORDER BY totalValue DESC;

Service Activity by Technician

SELECT 
    u.firstName + ' ' + u.lastName AS technician,
    s.serviceName,
    COUNT(sa.activityId) AS activityCount,
    SUM(sa.duration) AS totalMinutes,
    ROUND(SUM(sa.duration) / 60.0, 1) AS totalHours,
    COUNT(CASE WHEN sa.status = 'Completed' THEN 1 END) AS completed
FROM cdm.ServiceActivity sa
JOIN cdm.[User] u ON sa.ownerUserId = u.userId
JOIN cdm.Service s ON sa.serviceId = s.serviceId
WHERE sa.isActive = 1 AND sa.startTime >= DATEADD(MONTH, -1, GETUTCDATE())
GROUP BY u.userId, u.firstName, u.lastName, s.serviceId, s.serviceName
ORDER BY totalMinutes DESC;

🎓 Learning Path

  1. Start: Review current state with v_ExecutiveDashboard
  2. Explore: Check v_CasePerformanceMetrics for details
  3. Analyze: Run sp_CaseVolumeByPriority and sp_SLAComplianceReport
  4. Plan: Use sp_ServiceActivitySchedule for scheduling
  5. Monitor: Run reports from the procedures list regularly

💡 Pro Tips

Create a Dashboard in Excel

  1. Connect to CDM_CustomerService database
  2. Create queries pulling from views
  3. Set up auto-refresh
  4. Use Excel charts for visualization

Create Power BI Reports

  1. Import data from all 4 views
  2. Import result sets from procedures
  3. Create visual dashboards
  4. Set up data refresh schedule

Set Up Alerts

-- Create a job to auto-close resolved cases (weekly)
EXEC sp_CloseResolvedCases @DaysOld = 7;

-- Monitor overdue cases (daily)
EXEC sp_UpdateCaseOverdueStatus @ThresholdDays = 30;

-- Check contract renewals (weekly)
EXEC sp_ContractRenewalAlerts @DaysUntilExpiry = 30;

  • Full Documentation: CDM_Implementation_Guide.md
  • Reporting Details: REPORTING_PROCEDURES_SUMMARY.md
  • Database Setup: CDM_QUICKSTART.md
  • Sample Data: Already loaded in tables
  • View Definitions: Use sp_helptext 'viewName'
  • Procedure Help: Use sp_helptext 'sp_ProcedureName'

🚀 Next Steps

  1. ✅ Database Created - CDM_CustomerService ready
  2. ✅ Tables Created - 26 tables with sample data
  3. ✅ Views Added - 4 analytical views
  4. ✅ Procedures Added - 19 reporting/admin procedures
  5. 📋 Now: Start running queries and building reports!

Your database is production-ready. Start analyzing your data!

Last Updated: 2026-09-23