Step 1: Enable EdTech for the tenant
The recommended onboarding UX is:Step 2: Store student conversations
Use the sameadd() method.
- generic memories for normal retrieval
- structured EdTech profile data in
edtech_memories
- grade level
- board or curriculum
- subjects
- weak topics
- strong topics
- concept gaps
- language preference
- explanation style
- exam name and date
- forgetting stages
Step 3: Retrieve tutoring context
Use the sameget() method before your model call.
system_prompt_addition can include domain-aware context such as:
Step 4: Build a student dashboard
If your app needs structured data for UI, call the optional domain helper.- teacher dashboards
- student progress screens
- exam readiness views
- weak topic review queues
- spaced repetition panels
get() is enough.
TypeScript
Conflict behavior
EdTech conflict routing is automatic after the domain is enabled. Examples:| Conflict | Resolution path |
|---|---|
| Student said exam date is March 10, later says March 15 | Ask the student in their next session |
| Student was Class 10, later says Class 11 | Ask the student |
| Two admins disagree on institution curriculum | Tenant review |
| Student changed preferred explanation language | Usually treated as user preference, not tenant review |
Cross-agent sharing
If a student uses multiple learning agents and grants consent, safe EdTech summaries can project into universal memory. Examples:Student prefers Hinglish explanationsStudent is preparing for JEE MainStudent is working on improving thermodynamics
Best practices
- Use stable
external_user_idvalues, such as your internal student ID. - Call
add()after meaningful tutoring conversations, not every tiny UI event. - Call
get()immediately before your LLM call. - Use
context_max_tokensto control prompt budget. - Use
get_edtech_profile()only when building domain UI. - Let MemoryOS handle conflict routing instead of exposing “keep A / keep B” choices to teachers for personal student facts.