Content Templates Guide
Create reusable templates for assignments, quizzes, and assessments
Overview
Content templates in Kai allow you to create reusable structures for assignments, quizzes, and assessments. Build once, use many times, and maintain consistency across your courses while saving significant preparation time.
Benefits of Templates
- Time Savings: Create assignments in minutes instead of hours
- Consistency: Maintain uniform structure and quality
- Reusability: Use across multiple courses and semesters
- Collaboration: Share templates with colleagues
- Continuous Improvement: Refine templates based on student performance
Quick Start
Creating Your First Template
The fastest way to create a template:
- Start with existing content: Convert a successful assignment into a template
- Identify variables: Mark what changes between uses (dates, topics, etc.)
- Test the template: Generate one instance and review
- Refine and save: Adjust and save for future use
Start with 2-3 core templates for your most common assignment types. Expand your library as you identify patterns in your teaching.
Assignment Templates
Basic Structure
Every assignment template includes:
- Metadata: Title, description, type, duration
- Instructions: Static and variable content
- Deliverables: What students must submit
- Grading: Associated rubric and point value
- Resources: Supporting materials and links
- Variables: Customizable elements (topics, dates, readings)
Creating an Assignment Template
Via Dashboard:
- Navigate: Dashboard → Content → Templates → “Create Assignment Template”
- Configure:
- Template Name: “Weekly Reading Response”
- Category: “Discussion”, “Essay”, “Problem Set”, etc.
- Reusability: “High” (use weekly), “Medium” (use monthly), “Low” (occasional)
Example: Reading Response Template
template:
name: "Weekly Reading Response"
category: "discussion"
variables:
- name: "week_number"
type: "integer"
description: "Week of the semester"
- name: "reading_title"
type: "text"
description: "Title of assigned reading"
- name: "reading_author"
type: "text"
description: "Author of reading"
- name: "reading_pages"
type: "text"
description: "Page range"
- name: "focus_question"
type: "text"
description: "Main analytical question"
- name: "due_date"
type: "date"
description: "Submission deadline"
content:
title: "Week {week_number}: Reading Response - {reading_title}"
instructions: |
Read **{reading_title}** by {reading_author} (pages {reading_pages}).
Write a 500-word response addressing the following question:
{focus_question}
Your response should:
- Include at least two direct quotations with page numbers
- Connect the reading to concepts from previous weeks
- Raise one thoughtful question for class discussion
**Due**: {due_date} by 11:59 PM
deliverables:
- type: "text"
min_words: 450
max_words: 600
format: "PDF or Word document"
grading:
rubric_id: "reading_response_rubric"
points: 20
resources:
- title: "How to Write an Effective Response"
url: "https://course-resources.edu/response-guide"
- title: "Citation Guide"
url: "https://course-resources.edu/citations"Using the Template:
# Generate assignment from template
assignment = kai.assignments.create_from_template(
template_id="reading_response_template",
course_id="course_abc",
variables={
"week_number": 3,
"reading_title": "The Great Gatsby",
"reading_author": "F. Scott Fitzgerald",
"reading_pages": "1-50",
"focus_question": "How does Fitzgerald use symbolism in the opening chapters to establish themes?",
"due_date": "2024-09-20"
}
)
print(f"Created: {assignment.title}")Advanced Assignment Templates
Research Paper Template with Milestones:
research_paper_template = {
"name": "Research Paper - Multi-Stage",
"category": "major_assignment",
"stages": [
{
"name": "Topic Proposal",
"duration_days": 7,
"deliverable": "1-page proposal",
"points": 10,
"instructions": """
Submit a one-page proposal including:
1. Research question
2. Preliminary thesis
3. Three potential sources
4. Expected argument
""",
"auto_feedback": True
},
{
"name": "Annotated Bibliography",
"duration_days": 7,
"deliverable": "5-source bibliography",
"points": 15,
"instructions": """
Compile annotated bibliography with:
- 5 scholarly sources
- 150-word annotation per source
- Proper {citation_style} format
""",
"check_citations": True
},
{
"name": "Outline",
"duration_days": 7,
"deliverable": "detailed outline",
"points": 10,
"instructions": """
Create detailed outline with:
- Thesis statement
- Main sections with subsections
- Key evidence for each section
- Anticipated counterarguments
"""
},
{
"name": "Draft",
"duration_days": 14,
"deliverable": "full draft",
"points": 15,
"instructions": """
Submit complete draft (minimum {min_words} words)
including all sections.
""",
"peer_review": {
"enabled": True,
"reviewers_per_paper": 2
}
},
{
"name": "Final Paper",
"duration_days": 7,
"deliverable": "revised paper",
"points": 50,
"instructions": """
Submit final paper incorporating feedback from:
- Instructor comments on draft
- Peer review suggestions
Requirements:
- {min_words}-{max_words} words
- {min_sources}+ scholarly sources
- {citation_style} format
""",
"rubric_id": "research_paper_rubric"
}
],
"variables": {
"topic_area": "text",
"citation_style": "choice: MLA, APA, Chicago",
"min_words": "integer",
"max_words": "integer",
"min_sources": "integer",
"final_due_date": "date"
}
}
# Create multi-stage assignment
kai.assignments.create_from_template(
template_id="research_paper_multistage",
course_id="course_abc",
variables={
"topic_area": "American Literature 1920-1940",
"citation_style": "MLA",
"min_words": 2500,
"max_words": 3500,
"min_sources": 8,
"final_due_date": "2024-12-10"
},
auto_schedule=True # Automatically calculate intermediate deadlines
)Quiz Templates
Question Bank Templates
Create reusable question structures:
Multiple Choice Template:
mc_template = {
"type": "multiple_choice",
"structure": {
"stem": "{question_text}",
"options": [
"{correct_answer}",
"{distractor_1}",
"{distractor_2}",
"{distractor_3}"
],
"explanation": "{explanation_text}"
},
"settings": {
"randomize_options": True,
"points": 1,
"partial_credit": False
}
}
# Use template to generate questions
question = kai.questions.create_from_template(
template="mc_template",
variables={
"question_text": "Which statistical test is appropriate for comparing two independent groups?",
"correct_answer": "Independent samples t-test",
"distractor_1": "Paired samples t-test",
"distractor_2": "One-way ANOVA",
"distractor_3": "Chi-square test",
"explanation": "Independent samples t-test compares means of two unrelated groups. Paired t-test is for related groups, ANOVA for 3+ groups, and chi-square for categorical data."
}
)Application Problem Template:
application_template = {
"type": "application",
"structure": {
"scenario": "{scenario_description}",
"data": "{data_table}",
"question": "{question_text}",
"answer_format": "{format_specification}",
"solution": "{solution_with_steps}"
},
"variables": {
"scenario_type": "category", # research, business, medical, etc.
"difficulty": "range: 1-5",
"concepts_tested": "list"
}
}
# AI-generated variations
questions = kai.questions.generate_variations(
template="application_template",
count=5,
variables={
"scenario_type": "medical_research",
"difficulty": 3,
"concepts_tested": ["hypothesis_testing", "p_values", "effect_size"]
}
)Complete Quiz Templates
Weekly Concept Check Template:
concept_check_template = {
"name": "Weekly Concept Check",
"purpose": "formative_assessment",
"settings": {
"time_limit_minutes": 15,
"attempts_allowed": 2,
"show_correct_answers": "after_due_date",
"randomize_questions": True,
"question_pool_size": 15,
"questions_shown": 10
},
"structure": [
{
"section": "Definitions",
"question_type": "multiple_choice",
"count": 3,
"difficulty": "easy",
"topics": "{week_topics}"
},
{
"section": "Concepts",
"question_type": "true_false",
"count": 3,
"difficulty": "medium",
"topics": "{week_topics}"
},
{
"section": "Application",
"question_type": "short_answer",
"count": 2,
"difficulty": "medium",
"topics": "{week_topics}"
},
{
"section": "Analysis",
"question_type": "scenario_based",
"count": 2,
"difficulty": "hard",
"topics": "{week_topics}"
}
],
"grading": {
"total_points": 20,
"auto_grade": True,
"feedback_style": "detailed",
"show_explanations": True
},
"variables": {
"week_number": "integer",
"week_topics": "list",
"available_date": "datetime",
"due_date": "datetime"
}
}
# Generate quiz for specific week
quiz = kai.quizzes.create_from_template(
template_id="concept_check_template",
course_id="course_abc",
variables={
"week_number": 5,
"week_topics": ["Standard Error", "Confidence Intervals", "Margin of Error"],
"available_date": "2024-10-01 00:00",
"due_date": "2024-10-03 23:59"
}
)Adaptive Practice Quiz Template:
adaptive_template = {
"name": "Adaptive Practice Quiz",
"type": "adaptive",
"algorithm": {
"start_difficulty": "medium",
"adjust_based_on": "previous_answer",
"adjustment_rules": {
"correct_answer": "increase_difficulty",
"incorrect_answer": "decrease_difficulty",
"mastery_threshold": 0.8
}
},
"question_selection": {
"min_questions": 5,
"max_questions": 20,
"stop_when": [
"mastery_achieved",
"max_questions_reached",
"time_limit_reached"
]
},
"difficulty_levels": {
"easy": {
"description": "Basic recall and recognition",
"points": 1
},
"medium": {
"description": "Application and analysis",
"points": 2
},
"hard": {
"description": "Synthesis and evaluation",
"points": 3
}
},
"feedback": {
"immediate": True,
"show_explanation": True,
"suggest_resources": True,
"track_weak_areas": True
}
}Exam Templates
Midterm/Final Exam Template
exam_template = {
"name": "Comprehensive Exam Template",
"type": "high_stakes",
"sections": [
{
"name": "Multiple Choice",
"points": 40,
"questions": 40,
"time_suggestion_minutes": 40,
"instructions": """
Choose the best answer for each question.
Each question is worth 1 point.
"""
},
{
"name": "Short Answer",
"points": 30,
"questions": 6,
"time_suggestion_minutes": 30,
"instructions": """
Answer in 2-3 sentences. Be specific and concise.
Each question is worth 5 points.
"""
},
{
"name": "Essay",
"points": 30,
"questions": 2,
"time_suggestion_minutes": 50,
"instructions": """
Choose 2 of 3 essay prompts.
Write 500-750 words per essay.
Each essay is worth 15 points.
""",
"choice": {
"prompts_provided": 3,
"student_selects": 2
}
}
],
"settings": {
"time_limit_minutes": 120,
"attempts_allowed": 1,
"require_lockdown_browser": True,
"randomize_question_order": True,
"one_question_at_a_time": False,
"allow_backtracking": True
},
"content_coverage": {
"weeks_covered": "{weeks_covered}",
"emphasis_weeks": "{emphasis_weeks}",
"cumulative": True
},
"grading": {
"auto_grade": {
"multiple_choice": True,
"short_answer": False,
"essay": False
},
"rubric_ids": {
"short_answer": "short_answer_rubric",
"essay": "essay_rubric"
},
"review_required": True,
"post_delay_hours": 48
},
"accommodations": {
"extended_time": {
"multiplier": 1.5,
"eligible_students": "from_disability_services"
},
"separate_location": {
"enabled": True
}
}
}
# Create midterm
midterm = kai.exams.create_from_template(
template_id="comprehensive_exam",
course_id="course_abc",
exam_type="midterm",
variables={
"weeks_covered": "1-7",
"emphasis_weeks": "5-7",
"exam_date": "2024-10-15",
"available_start": "2024-10-15 09:00",
"available_end": "2024-10-15 11:30"
}
)Discussion Templates
Structured Discussion Template
discussion_template = {
"name": "Weekly Structured Discussion",
"type": "threaded_discussion",
"phases": [
{
"name": "Initial Post",
"duration_days": 3,
"requirements": {
"min_words": 250,
"required_elements": [
"answer_to_prompt",
"evidence_from_reading",
"personal_analysis",
"question_for_peers"
]
},
"points": 10
},
{
"name": "Peer Responses",
"duration_days": 3,
"requirements": {
"min_responses": 2,
"min_words_per_response": 100,
"substantive_engagement": True
},
"points": 10
},
{
"name": "Follow-up",
"duration_days": 1,
"requirements": {
"respond_to_replies": True,
"optional": False
},
"points": 5
}
],
"prompt_structure": {
"introduction": "{context_setting}",
"main_question": "{discussion_question}",
"sub_questions": [
"{sub_question_1}",
"{sub_question_2}"
],
"instructions": """
In your initial post:
1. Answer the main question with specific evidence
2. Address at least one sub-question
3. Pose a thoughtful question for your peers
In peer responses:
1. Engage substantively with peers' ideas
2. Provide additional perspectives or evidence
3. Answer questions posed by peers
"""
},
"grading": {
"rubric_id": "discussion_rubric",
"auto_grade_elements": [
"word_count",
"number_of_posts",
"timeliness"
],
"human_grade_elements": [
"quality_of_analysis",
"engagement_depth"
]
},
"safestream": {
"enabled": True,
"monitor_for": [
"respect_boundaries",
"academic_integrity",
"constructive_feedback"
]
}
}
# Create discussion for specific week
discussion = kai.discussions.create_from_template(
template_id="structured_discussion",
course_id="course_abc",
variables={
"week_number": 4,
"context_setting": "After reading Chapter 3 on social constructivism...",
"discussion_question": "How do social factors influence individual learning?",
"sub_question_1": "Provide an example from your own educational experience.",
"sub_question_2": "How might this theory apply to online learning environments?",
"initial_post_due": "2024-09-25 23:59",
"responses_due": "2024-09-28 23:59",
"followup_due": "2024-09-29 23:59"
}
)Lab/Practical Templates
Science Lab Report Template
lab_template = {
"name": "Lab Report Template",
"type": "lab_report",
"sections": [
{
"name": "Title & Abstract",
"required": True,
"word_limit": 250,
"elements": ["title", "objective", "methods_summary", "results_summary"]
},
{
"name": "Introduction",
"required": True,
"word_range": [300, 500],
"elements": ["background", "hypothesis", "predictions"]
},
{
"name": "Methods",
"required": True,
"word_range": [400, 600],
"elements": ["materials", "procedure", "data_collection"]
},
{
"name": "Results",
"required": True,
"required_components": [
"data_table",
"graph_or_figure",
"statistical_analysis"
],
"word_range": [300, 500]
},
{
"name": "Discussion",
"required": True,
"word_range": [500, 750],
"elements": [
"interpretation",
"comparison_to_hypothesis",
"sources_of_error",
"future_directions"
]
},
{
"name": "References",
"required": True,
"min_sources": 5,
"citation_style": "{citation_style}"
}
],
"data_files": {
"required": True,
"accepted_formats": [".xlsx", ".csv", ".txt"],
"data_validation": {
"check_completeness": True,
"check_units": True,
"flag_anomalies": True
}
},
"grading": {
"rubric_id": "lab_report_rubric",
"section_weights": {
"title_abstract": 0.10,
"introduction": 0.15,
"methods": 0.15,
"results": 0.25,
"discussion": 0.25,
"references": 0.10
}
},
"variables": {
"experiment_name": "text",
"lab_date": "date",
"citation_style": "choice: APA, CSE, AMA",
"due_date": "date"
}
}Template Management
Organizing Templates
Category System:
categories = {
"by_type": [
"assignments",
"quizzes",
"exams",
"discussions",
"labs"
],
"by_frequency": [
"daily",
"weekly",
"monthly",
"once_per_semester"
],
"by_discipline": [
"humanities",
"social_sciences",
"STEM",
"professional"
],
"by_purpose": [
"formative",
"summative",
"practice",
"engagement"
]
}
# Tag templates for easy retrieval
kai.templates.update(
template_id="reading_response",
tags=["weekly", "humanities", "formative", "discussion"]
)
# Search templates
templates = kai.templates.search(
tags=["weekly", "formative"],
course_level="undergraduate"
)Version Control
Track changes to templates over time:
# Create new version
kai.templates.create_version(
template_id="reading_response",
changes="Added requirement for peer question; increased word count to 500",
version_notes="Based on student feedback from Fall 2024"
)
# View version history
versions = kai.templates.get_versions(template_id="reading_response")
for version in versions:
print(f"Version {version.number}: {version.date}")
print(f" Changes: {version.changes}")
print(f" Used {version.usage_count} times")
# Revert to previous version if needed
kai.templates.revert(
template_id="reading_response",
to_version=3
)AI-Assisted Template Creation
Generate Templates from Examples
# Upload example assignment
kai.templates.generate_from_example(
example_file="my_successful_assignment.pdf",
template_name="Problem Set Template",
instructions="""
Create a reusable template that:
- Maintains the general structure
- Identifies variable elements (topics, due dates)
- Preserves the grading criteria
- Allows for different difficulty levels
"""
)
# Review generated template
generated = kai.templates.get_pending_review()
# Approve or edit
kai.templates.approve(template_id=generated.id, edits={...})AI Template Suggestions
# Get AI suggestions for improvement
suggestions = kai.templates.analyze(
template_id="reading_response",
analyze_for=[
"clarity",
"student_engagement",
"grading_efficiency",
"learning_outcomes_alignment"
]
)
print("Improvement Suggestions:")
for suggestion in suggestions:
print(f"- {suggestion.area}: {suggestion.recommendation}")
print(f" Impact: {suggestion.estimated_impact}")
print(f" Effort: {suggestion.implementation_effort}")Template Analytics
Usage Tracking
# View template performance
analytics = kai.templates.get_analytics(
template_id="concept_check",
timeframe="semester"
)
print(f"Used {analytics.usage_count} times")
print(f"Average student score: {analytics.avg_score}")
print(f"Average completion rate: {analytics.completion_rate}%")
print(f"Student feedback rating: {analytics.student_rating}/5")
print(f"Time saved: {analytics.estimated_time_saved} hours")
# Identify improvements
if analytics.avg_score < 0.70:
print("Suggestion: Questions may be too difficult")
if analytics.completion_rate < 0.85:
print("Suggestion: Consider reducing length or extending deadline")A/B Testing Templates
# Test two versions
kai.templates.ab_test(
template_a="reading_response_v1",
template_b="reading_response_v2",
course_id="course_abc",
assignments_count=4, # Test over 4 weeks
metrics=["student_engagement", "avg_score", "completion_rate"]
)
# Review results
results = kai.templates.get_ab_test_results(test_id="test_123")
print(f"Version A: {results.version_a.avg_engagement}")
print(f"Version B: {results.version_b.avg_engagement}")
print(f"Winner: {results.recommended_version}")Best Practices
Template Design Principles
Design templates to be flexible enough for different contexts while maintaining core structure and quality standards.
Checklist:
- ✅ Clear instructions that work across variations
- ✅ Appropriate number of variables (not too many)
- ✅ Realistic time expectations
- ✅ Aligned with learning objectives
- ✅ Built-in assessment criteria
- ✅ Student-friendly formatting
Maintenance Schedule
Regular Review:
maintenance_schedule = {
"after_each_use": [
"Check student feedback",
"Note any confusion points",
"Track completion rates"
],
"end_of_semester": [
"Review overall effectiveness",
"Update based on outcomes",
"Revise difficulty if needed",
"Update resources/links"
],
"annually": [
"Major content update",
"Alignment with curriculum changes",
"Rubric refinement",
"Archive outdated versions"
]
}Troubleshooting
Problem: Variables not substituting correctly
Solutions:
# Check variable syntax
# Correct: {variable_name}
# Incorrect: {{variable_name}}, $variable_name
# Verify all variables are defined
missing_vars = kai.templates.validate(template_id="template_123")
print(f"Missing variables: {missing_vars}")
# Provide defaults for optional variables
kai.templates.update(
template_id="template_123",
variable_defaults={
"optional_reading": "No additional reading this week"
}
)Problem: Template-generated instructions unclear
Solutions: - Review generated instance before publishing - Add context-specific clarification - Include examples in template - Test with colleague before using with students
Problem: Template doesn’t allow needed customization
Solutions: - Add more variables for flexibility - Create template variants - Use “optional sections” feature - Consider if template is too specific
Support Resources
- Template Library: Browse pre-built templates
- Workshops: Template creation workshop
- Email: templates@chi2labs.com
- Community: Share and discuss templates
Next Steps: - Set up grading rubrics to use with templates - Personalize learning experience using template data - Review best practices for template usage