Table of Contents
Setup Guide for Import Administrators
This page summarizes the preparation steps, in order, for an import administrator (such as an administrative staff member) who will introduce Exercode to their organization. Import administrators receive organization administrator permissions in step 1 and perform the subsequent tasks. For who can perform each step, see Steps and Required Permissions.
For detailed explanations and exceptional cases, refer to the linked pages at the end of each step.
Glossary
Permission Types
Exercode has four types of permissions. In addition, there is a service administrator (WillBooster Inc.) who manages the entire service. Service administrator permissions cannot be configured on the user side.
| Name | Permission | Intended user |
|---|---|---|
| Import administrator | Organization administrator | Overall head of a school or faculty, administrative staff. Readers of this guide |
| Teacher | Group administrator | Class or course instructors, TAs. Readers of the Teacher User Guide |
| Material author | Member of a material repository | People who create and maintain materials in a GitHub material repository |
| Student | General member | Students taking the course |
This guide refers to learners as "students." They may appear as "learners" or "attendees" on screen, but they all mean the same thing. For a list of what each permission can do, see Permission Types and Capabilities.
Organizations and Groups
| Term | Meaning | Example |
|---|---|---|
| Organization | An educational institution such as a university or college | 〇〇 University, 〇〇 Vocational School |
| Group | A class or department within an organization. Created by the import administrator; instructors are assigned to it as the unit of teaching | Department of 〇〇, Year 1 (AY 2026) |
| Member | A user belonging to an organization or group (both teachers and students) |
An organization contains multiple groups. The relationship looks like this:
- Organization (〇〇 University)
- Group (Department of 〇〇, Year 1 Class A)
- Member (Teacher)
- Member (Student A)
- Member (Student B)
- Group (Department of 〇〇, Year 1 Class B)
- Member (Teacher)
- Member (Student C)
- Member (Student D)
- Group (Department of 〇〇, Year 1 Class A)
Material Structure
| Term | Meaning | Example |
|---|---|---|
| Course | The overall unit of material. Corresponds to one course subject in class | Fundamentals of Python, Java Practicum |
| Lesson | A unit that makes up a course. Corresponds to one class session | Lesson 1: Variables and Types |
| Material | The smallest unit of material. Includes explanatory text, problems, and submission settings | Exercise 1-1 |
For example, a course "Fundamentals of Python" with 15 lessons is registered in Exercode as follows. Each lesson contains the materials to be solved in that session.
- Course: Fundamentals of Python
- Lesson: Lesson 1 Variables and Types
- Material: Exercise 1-1 Variable Declaration
- Material: Exercise 1-2 Type Conversion
- Lesson: Lesson 2 Conditional Branching
- Material: Exercise 2-1 if Statements
- Material: Exercise 2-2 Comparison Operators
- … (continues through Lesson 15)
- Lesson: Lesson 1 Variables and Types
To make this course available to students, add the course to a group. For example, adding "Fundamentals of Python" to the group "Department of Computer Science, Year 1 Class A" causes this course to appear in the Course List of students in Class A.
For detailed explanations of terms, see Glossary.
Steps and Required Permissions
| Step | Required permission | Necessity |
|---|---|---|
| 1. Prepare an organization administrator account | None (permission is granted by WillBooster Inc.) | Required |
| 2. Create groups and register teachers | Organization administrator | Required |
| 3. Add materials | Organization administrator or group administrator (organization administrator and material author if importing from GitHub) | Required |
| 4. Add courses to groups | Organization administrator or group administrator | Not required if you selected the target group in step 3-1 |
| 5. Register students | Organization administrator (group administrators can also add to groups) | Required |
| 6. Register Gemini API key | Organization administrator | Optional |
| 7. Set class schedule | Organization administrator, group administrator, or material author | Optional |
1. Prepare an Organization Administrator Account
What you need: The email address of the person who will become the organization administrator
This is a one-time task required for the organization. If you already have an organization administrator account, start from step 2.
1-1. Create an Account
The person who will become the organization administrator performs this task.
-
Click
Create Account / Sign Inat the top right of the screen. -
Enter the email address to use for the organization.
-
Click
Send Verification Code. -
Enter the 8-digit verification code in the email you receive, and click
Verify and Sign In.
1-2. Request Organization Administrator Permissions
Permissions are granted by WillBooster Inc., the service administrator. They cannot be configured on the user side.
- Send the email address of the created account via Contact.
- Once permissions are granted, the organization name appears in the
Affiliationmenu at the top right, and you can open the organization settings from there.
2. Create Groups and Register Teachers
What you need: A list of teacher email addresses
Create a group for each class, invite teachers to the organization, and then make them group administrators. For the relationship between organizations, groups, and members, see "Organizations and Groups" in Glossary.
2-1. Create a Group
Create a group for each class. Only organization administrators can perform this operation.
-
Open
Affiliationat the top right of the screen. If the screen is narrow, it is in the person icon menu at the top right. -
Open the target organization name.
-
Open
Groups. -
Click
New Group. -
Enter a group name and click
Create.
For each group, you can check students' progress and AI chat usage. For how to check, see the Teacher User Guide.
2-2. Invite Teachers to the Organization
Invite teachers to the organization. Only organization administrators can perform this operation.
-
Open
Affiliation. -
Open the target organization name.
-
Open
Members. -
Enter teachers' email addresses. You can enter multiple addresses at once separated by line breaks or spaces.
-
Set
Automatically create account if it does not existaccording to who you are inviting.- When inviting people who have never used Exercode (such as when first using it in class): Check the box. Accounts are created for people without one, and invitation emails are sent to newly invited people. Emails are not sent to existing organization members or people already invited but not yet accepted.
- When inviting only people who already have Exercode accounts: Uncheck the box. Invitations are sent only to people with existing accounts. Email addresses for which no account is found are listed on the screen after you click
Invite to Organization.
-
Check the following two settings.
- Teachers will be added as group administrators in step 2-3, so leave
Also invite to groupasNot selectedat this point. Grant organization administrator permissionsgives organization administrator permissions. Check it only if you want to entrust teachers with overall organization management. If you enter existing members and check this, they are promoted to organization administrators. Unchecking it does not remove existing administrator permissions.
- Teachers will be added as group administrators in step 2-3, so leave
-
Click the
Invite to Organizationbutton.
Immediately after inviting, they appear in the Pending Invitations list. When the invited person logs in via the invitation email link and clicks Join on the displayed screen, they move to the Members list. After the invited teacher joins, perform step 2-3 below.
2-3. Add Teachers to a Group
Make the assigned teachers group administrators. Once they are group administrators, teachers can add members, assign courses, review learning analytics, and set class schedules themselves without going through an organization administrator.
Only people belonging to the organization can be added to a group. Perform this after the teacher you invited in step 2-2 has joined. If the group has no administrators yet, only an organization administrator can add the first group administrator.
-
Open
Affiliation. -
Open the organization name.
-
Open
Groups. -
Open the target group.
-
Open
Members. -
Enter the email address of the teacher you want to add.
-
Check
Administrator Permissions. -
Click
Add / Update Permissions.
For details, see Create a Group, Invite Members to an Organization, and Add Teachers to a Group.
3. Add Materials
Courses, lessons, and materials can be created on the Exercode screen or imported from a GitHub material repository. Choose step 3-1 or 3-2 according to how you create and manage them. For the relationship between courses, lessons, and materials, see "Material Structure" in Glossary.
3-1. Create on the Exercode Screen
Performed by an organization administrator, or by the group administrator of the target group.
- Open
Coursesfor the target group and clickCreate Course. - Enter a course name and description, choose the group to publish to under
Group, and create it. Organization administrators can also selectNone. SelectingNoneadds the course to the organization, making it available to all organization members. For courses where teachers (group administrators) use learning analytics or manual grading, always select a group. A course that is only added to the organization will not showGroup Administrator MenuorLearning Analyticson the teacher's screen. - On the course edit screen that appears after creation, add lessons and materials.
- Open the material settings screen from
Edit Markdownfor each material, and configure the body, questions, submission period, and so on. If you want teachers to handle submission period settings, let them know (teachers configure it as described in "5-3. Set Material Publication Timing and Deadlines" in the Teacher User Guide).
Courses created for a group are added to that group. If you create a course in the group where you register students, step 4 is not required.
For details, see Create a Course for an Organization or Group and Edit Materials.
3-2. Import from a GitHub Material Repository
What you need: A material repository on GitHub, and permission to install the GitHub App on the GitHub account or organization that hosts that repository
For the folder structure of material repositories and how to write files, see Sample Material Repository Description.
Proceed in two stages:
- Before importing, check the AI chat and hint settings in the material repository (only if needed; see 3-2-1).
- Add the material repository to Exercode and import (3-2-2).
AI chat and hint settings are written inside the material repository, so check them before importing.
3-2-1. Check AI Chat and Hint Settings Before Import (only if needed)
Exercode has two AI features that support student learning:
- AI chat: A feature where students can ask the AI questions about materials and problems. The AI searches and reads materials from the same course to answer.
- Hints: For coding problems, a feature where the AI indicates errors in partially written code and how to fix them.
AI chat and hints are available for all materials without any configuration. If you use them as-is, skip this step. Only in the following cases does a material author (member of the material repository) change settings in the material repository before import:
| When | Setting |
|---|---|
| You want students to solve a quiz or exam without AI help | Enable exam mode per material (isExamination: true). Students cannot use AI chat for that material and problem, and the content cannot be referenced from AI chat on other screens. Hints are not displayed during the submission period (until the hard submission deadline). |
| You want students to research and think on their own without AI chat | Disable student AI chat with isMaterialChatDisabled: true. The content of that material also cannot be referenced from AI chat on other screens. |
| You do not want students to use hints | Set both isDebugHintDisabled: true and isFixHintDisabled: true to hide the Hints tab. To disable only "additional hints," set isFixHintDisabled: true. isDebugHintDisabled: true hides only the "error location." "Additional hints" remain available, and the first step "reason for error" still shows what the error is. To hide all error-related hints, also set isFixHintDisabled: true. |
| You do not want hints to reveal answers too closely | Set isDiffHintDisabled: true so that additional hints do not show "corrected code" and "explanation of corrected code." |
| You want students to spend time thinking before relying on hints | Extend the time before hints become available with debugHintWaitingSeconds (default 180 seconds) and fixHintWaitingSeconds (default 300 seconds). |
| You do not want AI chat to answer about content not yet covered | Align the submission open date/time (submissionOpenedAt) with the class schedule. Content from materials whose submission open date/time has not passed is not referenced in students' AI chat. |
Settings other than isExamination are written in course.yaml (for the entire course) or in the leading parameters of each material (per material). If written in both, the material setting takes precedence. isExamination can only be written in the leading parameters of a material; writing it in course.yaml causes an error on import. For how to write these and other settings such as displaying model answers after the deadline (isModelAnswerShownAfterDeadline), see the lists under "Course and Material Common Configuration Parameters" and "Material Parameters" in Sample Material Repository Description. For how each setting works on Exercode, see "AI Chat and Hint Settings" in Import Materials.
Check as follows:
- In the material repository, open
course.yamlin the course folder and confirm that none of the parameters in the table above are written there. If not, AI chat and hints are available across the course. - Open the files for materials used for exams or materials where you do not want AI used, and confirm that the leading parameters match the "When" column in the table above.
- If you changed settings, merge the changes into the default branch of the material repository (usually
main). The changes are reflected in Exercode when you import in 3-2-2. - After import, open the target material or problem and confirm that the
AI Chatbutton andHintstab display as intended (not displayed for materials where you do not want them).
3-2-2. Add the Material Repository and Import
Performed by an organization administrator. In advance, the material author should have reflected the materials to the default branch of the material repository (usually main).
Organization administrators should add the material repository to Exercode first. If a material repository was added by someone who is not an organization administrator, an organization administrator adding it later cannot register it to the organization, and the course cannot be added to a group.
-
Open
Material Repositoriesfrom the email address at the top right of the screen (or the person icon if the screen is narrow), and clickAdd from My GitHub. -
On the GitHub screen, select the material repository and install the GitHub App.
-
Return to Exercode, click
Register to Organizationfor the added material repository, and select the organization. -
Click
Importfor the target repository, review the diff and validation results, and confirm the import.
After operation begins, re-importing materials after corrections may overwrite submission periods and other settings that teachers configured on the material Edit screen. Inform the responsible teacher before re-importing.
After operation begins (after students have started submitting), changing the IDs of courses, lessons, materials, or problems will permanently delete submission records, and this cannot be undone. Do not change IDs. Deleting lessons or materials on the course edit screen also deletes submission records in the same way. For how IDs are determined and how to change the display order without changing IDs, see "Notes on Changing IDs" in Sample Material Repository Description.
For details, see Import Materials and Sync and Import Material Repositories.
4. Add Courses to Groups
Add imported courses, or courses created in another group in the same organization, to the group where students are registered. You can add courses created in the same organization and courses imported from material repositories registered to that organization. Courses from other organizations cannot be added. If you created a course for the target group in step 3-1, it is already added, so this step is not required.
If you have made the teacher a group administrator, the teacher can do this themselves. If you entrust it to the teacher, tell them the course ID and that it is their task. Courses not yet added to a group do not appear in the teacher's Course List.
- Open
Affiliation. - Open the organization name.
- Open
Groups. - Open the target group.
- Open
Courses. - Enter the ID of the course you want to add. You can check course IDs in the
Courseslist on the organization screen or in the course page URL (the part after/courses/). - Click
Add.
Once added to a group, only the group's members among students can use the course (organization administrators and material authors can view it for management; courses set to public can be viewed by anyone). Adding to the organization makes it available to all organization members, but teachers (group administrators) cannot use learning analytics or manual grading for that course. Add courses that teachers are responsible for to a group, not the organization.
For details, see Add Courses to an Organization or Group.
5. Register Students
What you need: A list of student email addresses
Once the courses are ready, invite students to the organization and add them to groups.
Students can use courses only after joining via the invitation email. Invite them a few days before the first class, and confirm that everyone has joined. Students who have not joined appear under Pending Invitations on the organization's Members screen.
5-1. Invite Students to the Organization
On the same screen as 2-2, enter students' email addresses and invite them. If you select the students' group under Also invite to group, they are added to the group at the moment they join the organization, so 5-2 is not required.
Grant organization administrator permissions gives organization administrator permissions. Do not select it for students.
5-2. Add Students to Groups
Add students who were invited without selecting a group in 5-1, or who already belong to the organization, to groups. Students not belonging to the organization cannot be added, so invite them first in 5-1. Group administrators (teachers) can also do this. If you entrust it to a teacher, confirm that the students have joined the organization, then inform the teacher.
-
Open the target group's
Membersas in step 2-3. -
Enter the email address of the student you want to add.
-
Do not check
Administrator Permissionsfor students. -
Click
Add / Update Permissions.
For details, see Invite Members to an Organization and Add Students to a Group.
5-3. Register Student Profiles (Optional)
Registering students' names and student IDs via CSV helps teachers identify students in learning analytics. For students without registered profiles, the name column in learning analytics shows -. Perform this after students have joined the organization.
Profile registration can be done by either the import administrator or teachers. Teachers can register only students in their own groups. However, a later CSV upload overwrites the content, and empty fields erase registered values, so if both register using separate CSVs, previously registered content may be lost. Agree with the teachers on who will do this.
- Open
Course List→ the target course, and clickUser Profilesin the administrator menu. - Click
Download Templateand enter each student's information in the CSV template. OnlyEmail Addressis required. - Upload the CSV, check the content loaded in the table on screen, and then click
Save.
Rows for people who are not members of the organization are not applied, and no notification is shown on screen. For details, see Set Up Profile Information.
6. Register Gemini API Key (Optional)
Perform this if you want to bear and manage the usage costs of AI chat and similar features through the organization's Google account.
What you need: A Gemini API key
AI chat and hints work without an API key. Once registered, the organization's key is used for AI chat and for classifying the intent of its questions. Only organization administrators can perform this operation.
- Open the target organization from
Affiliationin the header. - Open
Organization Settings. - Under
Gemini API key for AI chat, check whether the key isSavedorNot setinCurrent Status. - Enter the new key in the
Gemini API Keyfield and clickSave.
The setting applies per organization and is used by courses added to that organization or to groups within it. The organization's key is used for AI chat only when members of that organization use it. To delete, use Delete Gemini API Key, which appears when a key is saved.
For details, see Configure Organization AI Settings.
7. Set Class Schedule (Optional)
Setting the class schedule lets you distinguish between submissions during class and outside class on the learning analytics screen. It is also useful for understanding self-study. Teachers (group administrators) can also set it, so if you entrust it to teachers, inform them.
-
Open
Course Listat the top of the screen. -
Open the target course.
-
Click
Class Schedule Settings. -
Enter the day of the week, start time, and end time.
-
Click
Add Time. -
Confirm that it is reflected under
Current Class Schedule. -
Click
Save Changes.
For classes with different days or time slots, you can add multiple entries and save them all at once.
Each course has one class schedule. If the same course is added to multiple groups, changes are reflected in the learning analytics of all groups using that course. Group administrators can only set schedules for courses already added to their own groups.
Checks Before the First Class
Before classes begin, confirm the following. If any item does not apply, see When Things Don't Work.
- All students have joined the organization (none remain under
Pending Invitationson the organization'sMembersscreen) - When logged in as a student, the course appears in
Course List - An
AI Chatbutton appears at the bottom right of material and problem screens (not displayed for materials set to disable AI) - Teachers can open
Course List→ the target course →Learning Analytics
When Things Don't Work
| Symptom | What to check |
|---|---|
| Students do not receive invitation emails | Whether the email address is correct. Whether it went to the spam folder (sender is no-reply@willbooster.dev). If not received, delete the invitation from Pending Invitations on the organization's Members screen and invite again to resend |
The course does not appear in a student's Course List | Whether the student has been added to the group, and whether the course has been added to that group |
| Cannot add a course to a group | Whether the course ID is correct (non-existent IDs are ignored without error). Whether you have group administrator or higher permissions. Whether the course was created in that organization. For courses imported from GitHub, whether the material repository is registered to that organization |
The AI Chat button does not appear at the bottom right of the course, material, or problem screen | For students: whether isMaterialChatDisabled is true in the material, whether the material is in exam mode (isExamination), or whether the submission open date/time (submissionOpenedAt) has passed. For the course screen: whether there is at least one material where students can use AI chat. Teachers and others responsible for the course can use it even for restricted materials (Conditions for Using AI Chat) |
The Hints tab does not appear on the problem screen | Whether both isDebugHintDisabled and isFixHintDisabled are true, whether the problem is manually graded, or whether the material is in exam mode during the submission period |
The AI Chat tab does not appear in teachers' learning analytics | Whether the teacher is a member of the organization and a group administrator of the group linked to the course |