You need to agree to share your contact information to access this model
This repository is publicly accessible, but you have to accept the conditions to access its files and content.
By requesting access you agree to the CC BY-NC 4.0 license terms. Commercial use requires a separate licence from IIT Delhi.
Log in or Sign Up to review the conditions and access this model content.
SMRITI — Software-based Cognitive Sensing
SMRITI (स्मृति — Remembered Knowledge / Tradition) estimates cognitive load and attention from student interaction patterns — no hardware required.
Part of the VIDYA IKS-integrated adaptive education platform.
Installation
pip install smriti-sensing
Or from source:
pip install -e .
Quick Start
from smriti import SmritiEngine
engine = SmritiEngine(baseline_response_ms=3000.0)
# Record student interactions
engine.record_interaction(response_time_ms=2500, message_length=45, was_correct=True)
engine.record_interaction(response_time_ms=4200, message_length=30, was_correct=False)
engine.record_interaction(response_time_ms=6100, message_length=15, was_correct=False)
# Get cognitive state
state = engine.get_cognitive_state()
print(f"Cognitive Load: {state.cognitive_load}")
print(f"Attention: {state.attention_level}")
print(f"Confidence: {state.confidence}")
print(f"Signals: {state.signals_used}")
How It Works
SMRITI estimates cognitive state from behavioral interaction patterns — response timing, engagement trends, and answer accuracy. No camera, no EEG, no biometrics — just interaction timing and behavior.
API
SmritiEngine(baseline_response_ms=3000.0)
Create an engine with a baseline response time (ms). Adjust based on your student population.
engine.record_interaction(response_time_ms, message_length, was_correct=None, timestamp=None)
Record a student interaction. was_correct is optional (not all interactions have a right/wrong answer).
engine.get_cognitive_state() -> CognitiveState
Returns the current estimate:
@dataclass
class CognitiveState:
cognitive_load: float # 0.0 (idle) to 1.0 (overloaded)
attention_level: float # 0.0 (distracted) to 1.0 (fully engaged)
confidence: float # Confidence in the estimate (0-1)
signals_used: list[str] # Which signals contributed
Privacy and Data Handling
SMRITI processes only behavioral interaction patterns (response timing, message lengths, answer correctness). It does not collect, store, or transmit:
- Personally identifiable information (PII)
- Student names, IDs, or demographic data
- Message content or conversation text
- Biometric data of any kind
All cognitive state estimation is performed locally in-memory. No data is persisted to disk or sent to external services unless the integrating application explicitly does so. Deployments involving minors must comply with applicable data protection regulations (e.g., India's Digital Personal Data Protection Act 2023, COPPA, GDPR-K).
Patent Notice
The methods implemented in this software are the subject of Indian Complete Patent Application No. 1536IN242 — "System and Method for Non-Invasive Cognitive State Estimation Using Behavioral Interaction Patterns in Educational Software", filed March 2026 in the name of Indian Institute of Technology Delhi. Inventor: Prof. Santhosh Sivasubramani.
The source code is released under CC BY-NC 4.0 for research and educational use. The patented method may not be used in commercial products or services without a separate licence from IIT Delhi.
License
CC BY-NC 4.0 — Free for research and educational use. Commercial use requires a license from IIT Delhi. See LICENSE for details.
Citation
@software{smriti_sensing,
title={SMRITI: Software-based Cognitive State Sensing for Adaptive Education},
author={Sivasubramani, Santhosh},
year={2026},
institution={INTRINSIC Lab, RSL Foundation, IIT Delhi},
url={https://github.com/RSL-INTRINSICLab-IIT/smriti}
}
Contact
Prof. Santhosh Sivasubramani
Director, INTRINSIC Laboratory
RSL Foundation, Centre for SeNSE, IIT Delhi
ssivasub@iitd.ac.in
https://intrinsic.iitd.ac.in
Evaluation results
- Signals Usedself-reportedresponse_time, interaction_timing, message_length, correctness
- Inputself-reportedBehavioral interaction patterns (timing, length, correctness)
- Outputself-reportedCognitiveState(cognitive_load, attention_level, confidence, signals_used)