My Mentor
{{ user.tt_scope.ttl_assignments[0].mentor_name }}
{{ user.tt_scope.ttl_assignments[0].mentor_email }}
Welcome, {{ user.name || user.email }}
{{ user.tt_scope.ttl_assignments[0].setting_name }}
Talking Time

Working in Early Years settings across the UK.

Coordinator Dashboard

🏫 Regions & Settings

Create and manage regions and Talking Time settings.

👩‍🏫 Mentors

Manage mentors, assign regions, track certification.

📚 TT Resources

Upload and manage programme resources.

✅ Quality Assurance

Audit mentor documentation and session quality.

📈 Pupil Tracking

Anonymised pre/post assessment aggregation.

📅 Meetings

Schedule and manage coordinator meetings.

📈 Pupil Tracking

Anonymised pre/post assessment data will appear here once settings have completed assessments.

📅 Coordinator Meetings

Meeting scheduling will be available here.

{{ task.description }} {{ formatBannerDate(task.deadline) }}
+{{ myTasks.length - 3 }} more — see Management Hub
Welcome, {{ user.name || user.email }} {{ (user.name || user.email || '').split(' ')[0] }}
TEST SYSTEM — NOT LIVE DATA

We help kids talk back

Working with schools across the UK in Early Years, Primary and Secondary.

👁️ Viewing as {{ viewAsDisplayName }}
Clinical Work Administration Resources & Support Drag cards to reorder

{{ card.title }}

{{ card.desc }}

📋 Feedback

✓ Both Questionnaires Submitted — Thank you!

Your Staff and SENDCo feedback for "{{ activeFeedbackCampaign.title }}" has been received.

✓ Staff Questionnaire Submitted

You can also complete the SENDCo questionnaire for "{{ activeFeedbackCampaign.title }}".

✓ SENDCo Questionnaire Submitted

You can also complete the Staff questionnaire for "{{ activeFeedbackCampaign.title }}".

{{ activeFeedbackCampaign.title }} — Please complete by {{ new Date(activeFeedbackCampaign.deadline + 'T00:00:00').toLocaleDateString('en-GB', { day: 'numeric', month: 'short', year: 'numeric' }) }}

Showing {{ filteredChildren.length }} of {{ children.length }} pupils

No pupil records found. Click "Add New Pupil" to get started.
No pupils match the selected filters. Try clearing filters or changing the search.
Name School DOB Status Review Date Last Contact Referred Record
{{ child.display_name || child.initials }} {{ child.school_name }} {{ formatDate(child.date_of_birth) }} {{ formatStatus(child.therapy_status) }} ℹ️ ⚠️ Potential duplicate — awaiting admin review Previously at {{ child.previous_school_name }} 🔄 Reopened Case ⚠️ {{ child.duplicate_same_school ? 'Duplicate detected — admin approval required' : 'Admin approval required' }} {{ formatReviewDate(getNextReviewDate(child)) }} {{ child.last_contact_date ? formatDate(child.last_contact_date) : 'No contact' }} {{ child.created_at ? formatDate(child.created_at) : '—' }}
Showing {{ getFilteredContacts().length }} of {{ contacts.length }} contact records Showing {{ getFilteredVisitNotes().length }} of {{ visitNotes.length }} visit notes
No contact records found. Click "Add Contact Record" to get started.
No contact records match the selected filters. Try clearing filters.
Date Child Type Duration Outcome Signed Actions
{{ formatDate(contact.session_date) }} {{ contact.child_initials || 'Unknown' }} {{ contact.session_type }} {{ contact.duration_minutes }} min {{ contact.session_outcome ? contact.session_outcome.replace('_', ' ').replace(/\b\w/g, l => l.toUpperCase()) : 'Not Set' }} {{ contact.digital_signature ? '✓ Signed' : '✗ Unsigned' }}
No visit notes found. Click "Add Visit Note" to get started.
No visit notes match the selected filters. Try clearing filters.
Date Child Visit Type Purpose Status Follow-up Actions
{{ formatDate(note.visit_date) }} {{ note.child_initials || 'Unknown' }} {{ note.visit_type }} {{ note.visit_purpose ? note.visit_purpose.substring(0, 50) + '...' : '-' }} {{ note.visit_status }} {{ note.follow_up_required ? '⚠ Required' : '✓ None' }} Read Only
{{ filteredSortedUsers.length }} of {{ users.length }} users
No users found. Click "Add New User" to get started.
Name Email Role School/Cluster Status Actions
{{ user.name }} {{ user.email }} {{ getRoleName(user.role) }} {{ user.job_title }} {{ user.school_name || user.mat_name || '-' }} {{ user.is_active ? 'Active' : 'Inactive' }}

{{ showClustersMgmtSection ? '▼' : '▶' }} Clusters / MATs

No clusters or MATs found. Click "Add Cluster" to get started.
Cluster / MAT Name {{ clusterMgmtSort.column === 'cluster_name' ? (clusterMgmtSort.direction === 'asc' ? '▲' : '▼') : '⇅' }} Code {{ clusterMgmtSort.column === 'cluster_code' ? (clusterMgmtSort.direction === 'asc' ? '▲' : '▼') : '⇅' }} Schools {{ clusterMgmtSort.column === 'schools_count' ? (clusterMgmtSort.direction === 'asc' ? '▲' : '▼') : '⇅' }} Created {{ clusterMgmtSort.column === 'created' ? (clusterMgmtSort.direction === 'asc' ? '▲' : '▼') : '⇅' }} Actions
{{ cluster.cluster_name }} {{ cluster.cluster_code || '-' }} {{ schools.filter(s => s.cluster_id === cluster.cluster_id).length }} {{ formatDate(cluster.created_at) }}
No matching clusters / MATs found.

{{ showSchoolsMgmtSection ? '▼' : '▶' }} Schools & Settings

No schools found. Click "Add School" to get started.
{{ filteredSortedSchoolsMgmt.length }} of {{ schools.length }} schools
School Name {{ schoolMgmtSort.column === 'school_name' ? (schoolMgmtSort.direction === 'asc' ? '▲' : '▼') : '⇅' }} Type {{ schoolMgmtSort.column === 'school_type' ? (schoolMgmtSort.direction === 'asc' ? '▲' : '▼') : '⇅' }} Cluster {{ schoolMgmtSort.column === 'cluster' ? (schoolMgmtSort.direction === 'asc' ? '▲' : '▼') : '⇅' }} Session Allocation {{ schoolMgmtSort.column === 'session' ? (schoolMgmtSort.direction === 'asc' ? '▲' : '▼') : '⇅' }} Created {{ schoolMgmtSort.column === 'created' ? (schoolMgmtSort.direction === 'asc' ? '▲' : '▼') : '⇅' }} Actions
{{ school.school_name }} {{ formatSchoolType(school.school_type) }} {{ school.cluster_name || 'Independent' }} {{ school.session_count }} session(s) {{ school.session_frequency || '' }} Not set {{ formatDate(school.created_at) }}
No matching schools found.

Loading students...

No students are currently assigned to you.

Students are created by administrators and assigned supervising therapists.

{{ student.name }}

{{ student.email }}
Student
Assigned Schools: {{ student.schools.map(s => s.school_name).join(', ') }} None assigned
Assigned Pupils:
No pupils available from assigned schools
📁 Folders:

No resources have been shared with your school yet.

Your therapist can share resources from the Resource Library.

{{ getSharedResourceIcon(resource.file_type) }}

{{ resource.title }}

{{ getSharedResourceExtLabel(resource.file_type) }} · {{ formatFileSize(resource.file_size) }}

{{ resource.description }}

Loading school data...

🎥 How-To Videos

No training videos available yet.

{{ video.title }}

{{ video.description }}

{{ video.visibility === 'schools' ? '🏫 Schools' : video.visibility === 'lingo' ? '👩‍⚕️ LINGO Staff' : '👥 Both' }}

📋 Frequently Asked Questions

No FAQs available yet.
{{ faq.question }} {{ expandedFaqs.includes(faq.faq_id) ? '−' : '+' }}

{{ faq.answer }}

{{ faq.category }}
{{ faq.visibility === 'schools' ? '🏫 Schools' : faq.visibility === 'lingo' ? '👩‍⚕️ LINGO Staff' : '👥 Both' }}

Reports functionality coming soon!

This section will include full reports management capabilities.

Schools and Assigned Therapists

Therapists assigned to a school have access to all pupil records within that school.

No schools found.
No schools match your filter.
School {{ schoolAssignmentSort === 'name_asc' ? '▲' : schoolAssignmentSort === 'name_desc' ? '▼' : '' }} Assigned Therapists {{ schoolAssignmentSort === 'therapist_asc' ? '▲' : schoolAssignmentSort === 'therapist_desc' ? '▼' : '' }} Actions
{{ school.school_name }} {{ clusters.find(c => c.cluster_id == school.cluster_id).cluster_name }}
{{ therapist.therapist_name }} {{ therapist.session_count }}x {{ therapist.session_frequency || 'weekly' }}
No therapists assigned
Loading your schools...
No schools assigned to you.
{{ cluster.name }}
{{ school.school_name }}
Loading...

📚 Pending Resources ({{ pendingResources.length }})

{{ r.title }} ({{ r.file_type }})
Submitted by {{ r.uploader_name }} on {{ r.upload_date ? new Date(r.upload_date).toLocaleDateString('en-GB') : '' }}
Notes: {{ r.submission_notes }}

🎯 Pending Target Templates ({{ pendingTemplates.length }})

{{ t.name }}
Submitted by {{ t.submitted_by_name }} on {{ t.created_at ? new Date(t.created_at).toLocaleDateString('en-GB') : '' }}
{{ t.description }}
Notes: {{ t.submission_notes }}
No pending submissions found for the selected period.
📤

Send Questionnaire

Send a feedback questionnaire to school staff with a deadline for completion.

📊

View Responses

Review feedback responses from schools and view aggregated results by campaign.

🌟

Showcase

View and add success stories, photos, and resources from your work in schools.

📣

Marketing

View success stories shared by therapists and school staff for newsletters and social media.

Active Campaign: {{ adminActiveCampaign.title }} (deadline: {{ new Date(adminActiveCampaign.deadline + 'T00:00:00').toLocaleDateString('en-GB') }})
Close this campaign?
{{ filteredFeedbackResponses.length }} responses ({{ feedbackResponseCounts.staff }} Staff, {{ feedbackResponseCounts.senco }} SENDCo)
{{ filteredFeedbackResponses.length }}
Responses
{{ feedbackLikertOverallAvg }}
Agreement Avg (1-5)
{{ feedbackSupportRatingDist.excellent + feedbackSupportRatingDist.good }}
Good/Excellent

Statement Averages

{{ item.label }}
{{ item.avg }}

Support Rating Distribution

{{ feedbackSupportRatingDist.excellent }}
Excellent
{{ feedbackSupportRatingDist.good }}
Good
{{ feedbackSupportRatingDist.poor }}
Poor
{{ feedbackSupportRatingDist.inadequate }}
Inadequate

Written Feedback

{{ r.school_name }} {{ r.questionnaire_type === 'staff' ? 'Staff' : 'SENDCo' }} {{ r.cluster_name ? ' (' + r.cluster_name + ')' : '' }}
Describe support: {{ r.free_text_describe }}
What worked well: {{ r.free_text_worked_well }}
Even better if: {{ r.free_text_even_better }}
📋 APDR process: {{ r.free_text_assess_plan }}
👥 Staff impact: {{ r.free_text_staff_impact }}
{{ filteredFeedbackResponses.length }}
Responses
{{ filteredFeedbackOverallAvg }}
Overall Avg
{{ filteredFeedbackPct5 }}%
Rated 5 (Top)
{{ filteredFeedbackPctLow }}%
Rated 1-2 (Low)
{{ q.label }}
{{ q.low }} → {{ q.high }}
{{ getFilteredAvg(q.key) }}
avg
{{ getFilteredPct(q.key, n) }}%
{{ n }}

Written Feedback

{{ r.school_name }} {{ r.cluster_name ? '(' + r.cluster_name + ')' : '' }}
What worked well: {{ r.q10_worked_well }}
Improvements: {{ r.q11_improvements }}
📚 Training/Resources: {{ r.q12_training_resources }}
{{ r.school_name }} {{ r.questionnaire_type === 'staff' ? 'Staff' : 'SENDCo' }} ({{ r.cluster_name }}) — {{ r.therapist_name }}
{{ r.respondent_name || 'Anonymous' }} ({{ r.respondent_role || 'N/A' }})
{{ new Date(r.submitted_at).toLocaleDateString('en-GB') }}
Work done by SLT:
✓ {{ item }}
Other: {{ r.work_done_other }}
Interventions:
{{ item }}
Support rating: {{ r.support_rating.charAt(0).toUpperCase() + r.support_rating.slice(1) }}
{{ item.label }} {{ r[item.key] || '-' }}
APDR process: {{ r.free_text_assess_plan }}
Staff impact: {{ r.free_text_staff_impact }}
Describe support: {{ r.free_text_describe }}
What worked well: {{ r.free_text_worked_well }}
Even better if: {{ r.free_text_even_better }}
{{ q.label }} {{ r[q.key] || '-' }}
What worked well: {{ r.q10_worked_well }}
Improvements: {{ r.q11_improvements }}
Training/Resources: {{ r.q12_training_resources }}
No responses found{{ feedbackFilterCluster || feedbackFilterTherapist || (feedbackFilterType && feedbackFilterType !== 'all') ? ' for the selected filters' : '' }}.
Select a questionnaire above to view responses.
Loading pupil voice data...
No pupil voice records found for the selected filters.
{{ pvSummaryData.total }}
Total Responses
{{ pvSummaryData.emoji_avg || 'N/A' }}
Avg. Overall Rating (1-5)
{{ pvRatingValueLabel(pvSummaryData.emoji_avg) }}
{{ Object.keys(pvSummaryData.school_breakdown || {}).length }}
Schools Represented

Overall Feeling Distribution

{{ pvSummaryData.emoji_counts[n] || 0 }}
{{ ['', '😢', '😟', '😐', '🙂', '😊'][n] }}

Therapy Delivery

{{ pvDeliveryLabel(key) }} {{ count }}
No delivery data

Group Interventions

{{ pvInterventionLabel(key) }} {{ count }}
No group intervention data

Rating Averages (1-5 scale)

{{ pvRatingLabel(key) }} {{ avg }} / 5
No rating data

By School

School Responses Avg. Rating
{{ school }} {{ data.count }} {{ data.emoji_avg || 'N/A' }}

Did you like your therapy / interventions?

{{ resp.school_name }} — {{ resp.child_initials }} {{ new Date(resp.date + 'T00:00:00').toLocaleDateString('en-GB') }}
{{ resp.text }}
No responses.

What did you like about your therapy / interventions?

{{ resp.school_name }} — {{ resp.child_initials }} {{ new Date(resp.date + 'T00:00:00').toLocaleDateString('en-GB') }}
{{ resp.text }}
No responses.

What would make it better?

{{ resp.school_name }} — {{ resp.child_initials }} {{ new Date(resp.date + 'T00:00:00').toLocaleDateString('en-GB') }}
{{ resp.text }}
No responses.

Has it helped with your talking?

{{ resp.school_name }} — {{ resp.child_initials }} {{ new Date(resp.date + 'T00:00:00').toLocaleDateString('en-GB') }}
{{ resp.text }}
No responses.
{{ rec.child_initials || '??' }} {{ rec.school_name || 'Unknown' }}
{{ new Date(rec.questionnaire_date + 'T00:00:00').toLocaleDateString('en-GB') }} {{ rec.emoji_rating ? ['', '😢', '😟', '😐', '🙂', '😊'][rec.emoji_rating] : '—' }}
Therapist: {{ rec.therapist_name || 'Unknown' }}
Individual therapy: {{ rec.individual_therapy_text }}
1
Select Filters
2
Choose Sections

Step 1: Select Filters

{{ reportFilters.schoolIds.length }} school(s) selected
{{ reportFilters.therapistIds.length }} therapist(s) selected
to

Step 2: Choose Report Sections

Select which sections to include in your report.

Select at least one section

Report Results

Pupil Numbers

{{ item.v }}
{{ item.l }}
Ongoing: {{ reportData.ongoing }}
Assessing: {{ reportData.assessing }}
On Hold: {{ reportData.on_hold }}

Written Reports ({{ reportData.total_written_reports }})

{{ type }}{{ count }}
No reports in period

Activity

Contact Records: {{ reportData.total_contact_records }}
Target Progress ({{ reportData.target_progress.total }} targets)
{{ reportData.target_progress.achieved }}
Achieved (80-100%)
{{ reportData.target_progress.achieved_pct }}%
{{ reportData.target_progress.on_track }}
On Track (26-79%)
{{ reportData.target_progress.on_track_pct }}%
{{ reportData.target_progress.limited_progress }}
Limited Progress (0-25%)
{{ reportData.target_progress.limited_progress_pct }}%

Interventions

InterventionSchoolsGroupsPupils
{{ inv.intervention_name }}{{ inv.school_count }}{{ inv.total_groups }}{{ inv.total_pupils }}

Intervention Outcomes

{{ io.intervention_name }} ({{ io.subtype }})
{{ io.pupils_with_both }} pupils with pre & post data
{{ io.overall_improvement_pct }}%
Overall Improvement
Most improved: {{ io.most_improved.replace(/_/g, ' ').replace(/ q$| o$/g, '') }}
Least improved: {{ io.least_improved.replace(/_/g, ' ').replace(/ q$| o$/g, '') }}
View area breakdown
AreaAvg PreAvg Post% Improvement
{{ a.area.replace(/_/g, ' ') }}{{ a.avg_pre }}{{ a.avg_post }}{{ a.pct_improvement }}%

Progress Summaries ({{ reportData.progress_summaries.length }})

{{ ps.school_name }}{{ ps.term_label }} {{ ps.academic_year }}
Case studies: {{ ps.ideas_for_case_studies }}
Collaboration: {{ ps.examples_of_collaboration }}

Session Delivery

SchoolAllocated (Annual)DeliveredRemaining% Complete
{{ sd.school_name }} {{ sd.allocated || '—' }} {{ sd.delivered }} {{ sd.allocated ? sd.remaining : '—' }} {{ sd.pct_complete }}%
Total {{ reportData.session_delivery.reduce((s, d) => s + (d.allocated || 0), 0) || '—' }} {{ reportData.session_delivery.reduce((s, d) => s + d.delivered, 0) }} {{ reportData.session_delivery.reduce((s, d) => s + (d.remaining || 0), 0) }}
{{ error }}
{{ success }}