Page 1 of 12
System Requirements Document for noris
1. Introduction
Noris Study AI is a production-ready mobile application for Android and iPhone: an AI-powered education assistant for students around the world. It helps students study, prepare for exams, understand difficult topics, practice questions, and work through assignments. The product carries its own original branding, logo, colors, interface, and user experience and must not copy ChatGPT, OpenAI, or another company's branding.
Tagline: "Learn. Practice. Succeed."
The audience is students worldwide, from secondary school through university entrance preparation, working across many countries, curricula, and education systems. A second audience is the authorized administrator who operates the platform: monitoring usage and health, and configuring the commercial and AI parameters that shape every student's experience.
The product intent is a global education platform — not a basic chatbot. Every AI interaction is oriented toward explanation, practice, revision, tutoring, feedback, and learning. For active tests, examinations, or assessments where assistance is prohibited, the product is not presented as a cheating tool.
Page 2 of 12
2. System Overview
Noris Study AI is delivered as a native mobile application (Android and iPhone) backed by a secure server-side platform. Students ask questions about any school subject, receive step-by-step explanations, scan or photograph questions, upload study documents, generate practice questions, quizzes, flashcards, and mock examinations, build personalized revision schedules, and track their progress. All AI processing happens through the secure backend; AI API keys are never exposed inside the mobile application.
Access to the student experience is metered. Every new user receives 10 free AI messages every day, displayed clearly in the app, decremented as messages are sent, and reset every 24 hours according to the account's configured reset period. Usage is tracked server-side against authenticated accounts so the limit cannot be bypassed by logging out and creating another account. When the free allowance reaches zero, the student sees a friendly upgrade screen offering Premium.
Premium is a paid subscription with significantly higher usage limits or unlimited AI messages subject to reasonable fair-use limits. Subscription options (for example Monthly and Yearly) and their prices are configurable from the backend and are never hard-coded. The free plan still provides useful functionality.
An authorized administrator operates a restricted Admin Dashboard to monitor total users, active users, free users, premium users, daily AI requests, subscription statistics, usage statistics, and error logs, and to configure the free daily message limit (default 10 messages per day), subscription plans, pricing, AI models, maximum upload size, and feature availability.
Page 3 of 12
2a. Product Interpretation and Delivery Boundary
Current delivery. The current product is the complete student mobile application plus its secure backend and the restricted administrator dashboard. The student experience is organized around a bottom navigation of Home, Study, Chat, Progress, and Profile. Study contains Exam Prep, Assignments, Quizzes, Flashcards, and Study Planner. The Home dashboard is the anonymous first impression of Noris Study AI and also the signed-in student's daily starting point. Protected study work — conversations, saved answers, quiz results, study plans, flashcards, uploads, subscription state, and daily usage — is bound to an authenticated account so it can be resumed and metered correctly. Identity is application-owned: students register with email, log in with email, may use Google sign-in where supported, and can reset a forgotten password. Administrators are provisioned and authorized rather than self-enrolling, and the Admin Dashboard is reachable only by authorized administrators.
Access boundary. Home, Privacy Policy, Terms of Service, and Support are openly reachable. Login, Sign Up, and Account Recovery are the anonymous entry surfaces that establish or restore identity. Study, Chat, Progress, Exam Prep, Assignments, Quizzes, Flashcards, Study Planner, Assignment Helper, Question Scanner, Quiz Generator, and Premium require an authenticated student session. Profile requires login. Admin Dashboard requires an authorized administrator session.
Provider and external ownership. Subscription purchase, billing, renewal, and purchase restoration are handled by the platform subscription/payment system; Noris validates purchases securely server-side and reflects entitlement in the app. Google sign-in is offered only where supported by the platform. AI model inference is executed by the backend; the mobile client never holds provider credentials.
Future horizon. Nothing in this document is deferred: every requirement below is current. Any later expansion of subjects, curricula, languages, or platform scale is governed by the scalability requirement rather than by a separate future release.
Page 4 of 12
2b. Source Content Inventory
Not applicable — no reference directive with content_source authority was supplied.
2c. Page Content and Component Coverage
Home
- Information and state: Noris Study AI logo, profile picture, settings icon; the prompt "What do you want to learn today?"; the large AI input box with placeholder "Ask Noris anything…"; the daily free-message counter (for example "10 / 10 messages remaining", or "8 of 10 free messages remaining today."); study shortcuts Exam Prep, Homework Help, Practice Quiz, Flashcards, Study Plan; recent activity.
- Primary actions: Ask Question, Scan Question, Upload File, Voice Question; open a study shortcut; open the profile picture or settings icon.
- Supporting actions: Type into the Ask Noris input box; view the daily counter; open recent activity.
- Domain entities: User profile, daily usage counter, conversation, study shortcut.
- Component responsibilities: Header band (logo mark, profile picture, settings icon); numbered prompt section; Ask Noris input card with the four action buttons; daily counter strip; study shortcut list; recent activity list.
- States: Loading — counter and recent activity resolve with placeholder rules. Empty — no recent activity yet, with a first-step prompt toward Ask Question. Success — counter shows remaining allowance and shortcuts are tappable. Error — counter unavailable shows a retry affordance rather than a false zero. Recovery — retry reloads counter and activity.
Login
- Information and state: Email and password fields; Google sign-in option where supported; link to Account Recovery; link to Sign Up.
- Primary actions: Log in with email; log in with Google where supported.
- Supporting actions: Navigate to Account Recovery; navigate to Sign Up.
- Domain entities: User account, session.
- Component responsibilities: Credential form; provider sign-in control; navigation links.
- States: Loading — submit disabled with progress indication. Empty — blank fields. Success — session established and the student continues to the intended destination. Error — invalid credentials or provider failure shown inline with the form preserved. Recovery — route to Account Recovery.
Page 5 of 12
Sign Up
- Information and state: Email registration fields; Google sign-in option where supported; link to Login.
- Primary actions: Register with email; register with Google where supported.
- Supporting actions: Navigate to Login.
- Domain entities: User account, profile, daily usage record.
- Component responsibilities: Registration form; provider sign-up control; navigation link.
- States: Loading — submit disabled with progress indication. Empty — blank fields. Success — account created, daily allowance initialized to 10 free messages, student continues into the app. Error — duplicate email or invalid input shown inline. Recovery — correct and resubmit, or switch to Login.
Account Recovery
- Information and state: Password reset request and completion fields; link back to Login.
- Primary actions: Request password reset; set a new password.
- Supporting actions: Return to Login.
- Domain entities: User account, recovery request.
- Component responsibilities: Recovery request form; new-password form; navigation link.
- States: Loading — submit disabled with progress indication. Empty — blank fields. Success — reset requested or password updated, with confirmation. Error — unknown email or invalid input shown without disclosing account existence beyond what the flow requires. Recovery — retry or return to Login.
Study
- Information and state: The study hub listing Exam Prep, Assignments, Quizzes, Flashcards, and Study Planner.
- Primary actions: Open any of the five study destinations.
- Supporting actions: Return to Home, Chat, Progress, or Profile via bottom navigation.
- Domain entities: Study tool entries, subject context.
- Component responsibilities: Ruled list of study destinations with subject-color rules; bottom navigation.
- States: Loading — list resolves with placeholder rules. Empty — not applicable; the five destinations are always present. Success — each destination opens. Error — unavailable destination shown as disabled with explanation. Recovery — retry.
Page 6 of 12
Chat
- Information and state: Conversation list and conversation thread; student messages and AI responses; typing indicator; daily counter context; subject association for each conversation.
- Primary actions: Send a message; ask a follow-up question; use voice input; attach a file; open the camera; upload an image; copy an answer; save an answer; regenerate an explanation; listen to an explanation with text-to-speech; search previous conversations; create a separate conversation for a subject.
- Supporting actions: Switch between conversations; open a saved answer.
- Domain entities: Conversation, message, saved answer, file, daily usage counter.
- Component responsibilities: Conversation list with search; message thread; composer with voice, attach, and camera controls; per-answer action row (copy, save, regenerate, listen); typing indicator.
- States: Loading — thread history and typing indicator. Empty — no conversations yet, with a prompt to ask the first question. Success — response rendered with explanation-first structure; for mathematics and science, calculations and steps shown clearly. Error — failed request preserves the student's message and offers retry. Recovery — retry the request; if the daily allowance is exhausted, route to the upgrade screen.
Progress
- Information and state: Quiz scores, study time, completed study tasks, strong subjects, topics needing improvement, exam countdowns, recent activity; simple visual charts.
- Primary actions: Review scores and activity; open a related study destination.
- Supporting actions: Filter or scroll through activity.
- Domain entities: Quiz result, study plan task, study time record, subject performance, exam countdown.
- Component responsibilities: Score charts; study-time summary; completed-task summary; strengths and improvement lists; countdown display; recent activity list.
- States: Loading — charts and lists resolve with placeholders. Empty — no activity yet, with a prompt to start a quiz or study plan. Success — charts and lists populated. Error — unavailable section shown with retry. Recovery — retry.
Profile
- Information and state: User profile details; subscription status; daily AI usage; entry points to saved answers, quiz results, study plans, flashcards, and uploaded learning materials; links to Privacy Policy, Terms of Service, Support, subscription management, and account deletion.
- Primary actions: Manage profile; manage subscription; delete account; open policy and support pages.
- Supporting actions: Review stored learning records.
- Domain entities: User profile, subscription, usage, saved answer, quiz result, study plan, flashcard, uploaded learning material.
- Component responsibilities: Profile summary; subscription status block; usage block; learning-record lists; policy and support links; account deletion control.
- States: Loading — profile and status resolve with placeholders. Empty — no saved items yet. Success — profile and status shown. Error — status unavailable shown with retry. Recovery — retry; account deletion requires explicit confirmation.
Page 7 of 12
Exam Prep
- Information and state: Selection rows for Country, Education level, Subject, Topic, Difficulty, and Number of questions; generated practice examination; Start Exam control; exam timer; results view with score, correct answers, incorrect answers, explanation for each question, weak topics, and recommended revision topics.
- Primary actions: Select each configuration value; generate a practice examination; start the exam; answer questions; submit; review results.
- Supporting actions: Change configuration and regenerate; review recommended revision topics.
- Domain entities: Practice examination, question (multiple choice, short answer, true/false, calculation, essay where appropriate), attempt, timer, result, weak topic, recommended revision topic.
- Component responsibilities: Configuration form rows; examination renderer covering all question types; timer; results panel with per-question explanations; weak-topic and revision-recommendation lists.
- States: Loading — generation and scoring progress. Empty — no examination generated yet. Success — examination runs under timer and results display fully. Error — generation or submission failure preserves answers and offers retry. Recovery — retry generation or submission; if the daily allowance is exhausted, route to the upgrade screen.
Assignments
- Information and state: Assignment-related learning entry point within Study; list of assignment work and its status.
- Primary actions: Open Assignment Helper; resume an assignment.
- Supporting actions: Return to Study.
- Domain entities: Assignment work item.
- Component responsibilities: Assignment list; navigation into Assignment Helper.
- States: Loading — list resolves with placeholders. Empty — no assignment work yet, with a prompt to start one. Success — items open. Error — unavailable list shown with retry. Recovery — retry.
Quizzes
- Information and state: Quiz study entry point within Study; list of quizzes and results.
- Primary actions: Open Quiz Generator; resume a quiz; review a saved quiz result.
- Supporting actions: Return to Study.
- Domain entities: Quiz, quiz result.
- Component responsibilities: Quiz list; navigation into Quiz Generator.
- States: Loading — list resolves with placeholders. Empty — no quizzes yet, with a prompt to create one. Success — items open. Error — unavailable list shown with retry. Recovery — retry.
Page 8 of 12
Flashcards
- Information and state: Flashcard decks generated from notes, PDFs, topics, or text entered by the student; card front and back; difficult-card marking; progress tracking.
- Primary actions: Generate flashcards; swipe through cards; mark difficult cards; review difficult cards; track progress.
- Supporting actions: Choose the generation source; return to Study.
- Domain entities: Flashcard, deck, difficult-card mark, progress record.
- Component responsibilities: Generation source selector; card swipe surface; difficult-card control; difficult-card review mode; progress indicator.
- States: Loading — generation progress. Empty — no decks yet, with a prompt to generate from a source. Success — cards swipe, marks persist, progress updates. Error — generation failure preserves the source and offers retry. Recovery — retry; if the daily allowance is exhausted, route to the upgrade screen.
Study Planner
- Information and state: Inputs for exam date, subjects, available study hours, current level, and topics the student finds difficult; generated personalized revision schedule displayed as Today, Tomorrow, This Week, and Exam Countdown; task completion state.
- Primary actions: Enter planner inputs; generate the revision schedule; mark tasks as completed.
- Supporting actions: Review the countdown; revisit the schedule.
- Domain entities: Study plan, revision task, exam date, exam countdown, subject, difficulty topic.
- Component responsibilities: Planner input form; schedule sections for Today, Tomorrow, This Week; exam countdown display; task completion controls.
- States: Loading — generation progress. Empty — no plan yet, with a prompt to enter exam details. Success — schedule displayed with completable tasks and countdown. Error — generation failure preserves inputs and offers retry. Recovery — retry; if the daily allowance is exhausted, route to the upgrade screen.
Assignment Helper
- Information and state: Assignment input area supporting a typed question, an uploaded picture, an uploaded document, and pasted assignment instructions; the educational-use message encouraging students to understand and complete their own work; AI output covering what the student is being asked to do, a step breakdown, guidance and examples, help developing their own answer, and a check of completed work.
- Primary actions: Type a question; upload a picture; upload a document; paste assignment instructions; request understanding, step breakdown, guidance, and examples; submit completed work for checking.
- Supporting actions: Revise the student's own answer and resubmit for checking.
- Domain entities: Assignment, uploaded file, guidance output, student draft, check result.
- Component responsibilities: Input area with typed, picture, document, and paste modes; educational-use message; structured guidance output; draft submission and feedback panel.
- States: Loading — analysis progress. Empty — no assignment entered yet, with the educational-use message visible. Success — guidance and checking returned. Error — analysis failure preserves the input and offers retry. Recovery — retry; if the daily allowance is exhausted, route to the upgrade screen.
Page 9 of 12
Question Scanner
- Information and state: Camera capture and image upload surface; detected question; explanation and answer/working; for mathematics, step-by-step calculation display; follow-up prompts "Explain this more simply.", "Show me another example.", "Give me a similar question to practice."
- Primary actions: Take a photo; scan; review the detected question; read the explanation and working; ask a follow-up prompt.
- Supporting actions: Retake or re-upload the image.
- Domain entities: Scanned image, detected question, explanation, working steps, practice question.
- Component responsibilities: Camera and upload control; detection result; explanation and step-by-step working panel; follow-up prompt controls.
- States: Loading — capture, detection, and explanation progress. Empty — no image captured yet. Success — question detected and explained with working. Error — undetected or unreadable question offers retake. Recovery — retake or re-upload; if the daily allowance is exhausted, route to the upgrade screen.
Quiz Generator
- Information and state: Options for Subject, Topic, Difficulty, and Number of questions; generated quiz; score and explanations after completion; saved quiz results on the user's profile.
- Primary actions: Select options; generate a quiz; answer questions; submit; review score and explanations.
- Supporting actions: Regenerate with different options; revisit saved results.
- Domain entities: Quiz, question, attempt, score, explanation, quiz result.
- Component responsibilities: Option form; quiz renderer; scoring and explanation panel; result persistence.
- States: Loading — generation and scoring progress. Empty — no quiz generated yet. Success — quiz completes and score with explanations displays and saves. Error — generation or submission failure preserves answers and offers retry. Recovery — retry; if the daily allowance is exhausted, route to the upgrade screen.
Premium
- Information and state: Headline "Unlock your full learning potential."; benefits list — More AI messages, Advanced AI tutoring, More document uploads, More question scans, Unlimited practice tools, Personalized study plans, Advanced exam preparation; available plans with backend-configured prices; Restore Purchases control.
- Primary actions: Start Premium; View Plans; Restore Purchases.
- Supporting actions: Review benefits and plan options.
- Domain entities: Subscription plan, price, purchase, entitlement.
- Component responsibilities: Headline and benefits block; plan selector; purchase controls; restore control.
- States: Loading — plans and prices resolve from the backend. Empty — plans temporarily unavailable shown with retry. Success — purchase completes and entitlement updates. Error — purchase or restore failure shown with retry and no false entitlement. Recovery — retry purchase or restore.
Page 10 of 12
Admin Dashboard
- Information and state: Total users, active users, free users, premium users, daily AI requests, subscription statistics, usage statistics, error logs; configuration controls for free daily message limit (default 10 messages per day), subscription plans, pricing, AI models, maximum upload size, and feature availability.
- Primary actions: Review metrics and error logs; configure the free daily message limit; configure subscription plans and pricing; configure AI models; configure maximum upload size; configure feature availability.
- Supporting actions: Refresh statistics.
- Domain entities: User statistics, subscription statistics, usage statistics, error log entry, configuration setting.
- Component responsibilities: Metrics panels; statistics views; error log viewer; configuration forms with save and validation.
- States: Loading — metrics and logs resolve with placeholders. Empty — no error log entries in the period. Success — metrics display and configuration changes persist. Error — failed load or save shown with retry and no silent partial save. Recovery — retry load or save.
Privacy Policy
- Information and state: The privacy policy content for the application.
- Primary actions: Read the policy.
- Supporting actions: Return to the previous destination.
- Domain entities: Policy document.
- Component responsibilities: Policy reader.
- States: Loading — content resolves. Empty — not applicable. Success — policy readable. Error — unavailable content shown with retry. Recovery — retry.
Terms of Service
- Information and state: The terms of service content for the application.
- Primary actions: Read the terms.
- Supporting actions: Return to the previous destination.
- Domain entities: Terms document.
- Component responsibilities: Terms reader.
- States: Loading — content resolves. Empty — not applicable. Success — terms readable. Error — unavailable content shown with retry. Recovery — retry.
Page 11 of 12
Support
- Information and state: Support information and contact route for users needing assistance.
- Primary actions: Read support information; contact support.
- Supporting actions: Return to the previous destination.
- Domain entities: Support content.
- Component responsibilities: Support content block; contact control.
- States: Loading — content resolves. Empty — not applicable. Success — support content readable and contact available. Error — unavailable content shown with retry. Recovery — retry.
Page 12 of 12
3. Functional Requirements
FR-1 — Ask questions about any school subject (explicit)
As a Student, I should ask Noris a question about any school subject so that I can get help with what I am studying.
- Trigger/input: a typed question in the Ask Noris input box or the Chat composer.
- Observable result: an AI response appears in the conversation.
- Access: authenticated student session.
- Failure/recovery: a failed request preserves my message and offers retry.
- Continuation: I can ask a follow-up question in the same conversation.
FR-2 — Step-by-step explanations (explicit)
As a Student, I should receive step-by-step explanations so that I understand how an answer is reached rather than only what it is.
- Trigger/input: a question or an uploaded/scanned question.
- Observable result: the response presents the reasoning as ordered steps.
- Access: authenticated student session.
- Failure/recovery: if the explanation fails to generate, I can retry the request.
- Continuation: I can ask for the explanation more simply or request another example.
FR-3 — Upload photos of questions (explicit)
As a Student, I should upload a photo of a question so that Noris can work from the question as it appears on paper.
- Trigger/input: an image selected from my device.
- Observable result: the question in the image is detected and explained.
- Access: authenticated student session.
- Failure/recovery: an unreadable image offers re-upload.
- Continuation: I can ask follow-up prompts about the detected question.
FR-4 — Scan questions using the camera (explicit)
As a Student, I should scan a question with the camera so that I can get help without typing it out.
- Trigger/input: a camera capture.
- Observable result: the captured question is detected and explained, with step-by-step working for mathematics.
- Access: authenticated student session, with camera permission.
- Failure/recovery: a failed capture or detection offers retake.
- Continuation: I can ask "Explain this more simply.", "Show me another example.", or "Give me a similar question to practice."
FR-5 — Upload PDFs and study documents (explicit)
As a Student, I should upload PDFs and study documents so that Noris can work from my own materials.
- Trigger/input: a file in PDF, DOC/DOCX, TXT, or image format.
- Observable result: the document is available for Summarize, Explain, Create Quiz, Create Flashcards, and Ask Questions.
- Access: authenticated student session; uploads are protected server-side.
- Failure/recovery: an unsupported or oversized file is rejected with a clear explanation.
- Continuation: I can choose any of the five document actions.
FR-6 — Summarize notes (explicit)
As a Student, I should summarize my notes so that I can review them quickly.
- Trigger/input: uploaded notes or entered text, with the Summarize action.
- Observable result: a summary of the material is returned.
- Access: authenticated student session.
- Failure/recovery: a failed summary preserves the source and offers retry.
- Continuation: I can turn the summary into flashcards or a quiz.
FR-7 — Generate practice questions (explicit)
As a Student, I should generate practice questions so that I can rehearse a topic.
- Trigger/input: a subject, topic, and difficulty context.
- Observable result: practice questions are returned for me to work through.
- Access: authenticated student session.
- Failure/recovery: a failed generation offers retry.
- Continuation: I can request a similar question to practice.
FR-8 — Generate quizzes (explicit)
As a Student, I should generate quizzes so that I can test myself on a topic.
- Trigger/input: Subject, Topic, Difficulty, and Number of questions.
- Observable result: a quiz is generated and can be completed.
- Access: authenticated student session.
- Failure/recovery: a failed generation preserves my options and offers retry.
- Continuation: after the quiz I see my score and explanations, and the result is saved to my profile.
FR-9 — Generate flashcards (explicit)
As a Student, I should generate flashcards so that I can memorize material efficiently.
- Trigger/input: notes, PDFs, topics, or text I enter.
- Observable result: a flashcard deck is generated from the chosen source.
- Access: authenticated student session.
- Failure/recovery: a failed generation preserves the source and offers retry.
- Continuation: I can swipe through cards, mark difficult cards, and review them.
FR-10 — Create mock examinations (explicit)
As a Student, I should create mock examinations so that I can rehearse under exam conditions.
- Trigger/input: Country, Education level, Subject, Topic, Difficulty, and Number of questions.
- Observable result: a practice examination is generated including multiple choice, short answer, true/false, calculation questions, and essay questions where appropriate.
- Access: authenticated student session.
- Failure/recovery: a failed generation preserves my selections and offers retry.
- Continuation: I can start the exam with its timer.
FR-11 — Get help understanding assignments (explicit)
As a Student, I should get help understanding my assignments so that I can work out what is being asked and how to approach it.
No comments yet. Be the first!