EdHelfy Back to App

User Manual

A living guide that grows as EdHelfy grows. Bookmark this page — new sections are added with every release.

Signing in

EdHelfy has four ways in, and a person only ever sees the ones that apply to them. A founder setting up an institution, a teacher joining with an invite code, and a parent holding a printed slip each get a different door — nobody is asked for a credential they don’t have.

Way inWho it’s forWhat you need
Email & passwordAdmins and staffYour email and the password you set
Email sign-in codeAnyone who forgot their passwordJust your email — a 6-digit code arrives in your inbox
Invite codeStaff, parents and students being added by the institutionThe 8-character code from your invite message
Login PINParents and students at institutions that issue slipsYour mobile number and the 6-digit PIN on your slip

The sign-in page

Each way in is its own page with its own web address, so you can bookmark or share the exact one you need — and the browser’s Back button works normally between them.

  • edhelfy.com/?loginWelcome back. Email and password, with a Forgot password? link and an eye icon to reveal what you typed.
  • edhelfy.com/?signupSet up your institution. The founder form; you become the Admin.
  • edhelfy.com/?codeJoin your institution. The invite-code form.

The sign-in page carries a Email me a sign-in code button underneath the password box, and below that two quiet cards for people who are new: I have an invite code and Set up a new institution. The founder fields never appear on the join page, so an invitee is never promised they’ll be the Admin.

Signing in with an emailed code

Press Email me a sign-in code, enter your email, and a 6-digit code arrives that expires in a few minutes. Type it in and you’re signed in — no password involved.

A code can only sign you in, never create an account. The confirmation message reads the same whether or not that address has an account, so nobody can use this page to discover who is registered with your institution.

Your institution’s sign-in link

SettingsTeam ManagementManage Team🔗 Sign-in page gives you one link for your whole institution, plus a QR code you can print on a notice board. Send it in a WhatsApp broadcast, put it on the school gate, print it on the diary — whoever opens it sees your institution’s name and logo above the sign-in box.

The link grants nothing by itself. It is a front door, not a key: it can be forwarded and posted publicly without risk, because people still need their own invite code, PIN, or password to actually get in. That is why it is safe to print.

↻ New link issues a fresh one and stops the old one working immediately — useful if a link ends up somewhere you didn’t intend, but remember that any poster or slip already printed with the old link goes stale.

The same card carries a toggle: Let students get access themselves with the email on their student record. It is off by default, because it is only as trustworthy as the email addresses on your roster — turn it on knowingly.

Login PINs — the printed-slip route

This is the route for families who don’t reliably have email. You create the accounts for them from the phone numbers already on your student records, and hand each family a slip with a 6-digit PIN.

SettingsTeam ManagementManage Team👬 Family logins:

  • Choose Parents (by class) or Staff (one-time PINs), pick a class or leave it on All classes, and press Preview.
  • The preview splits into Will get a login and Not included, so you can see exactly who is covered before anything is created. Nothing is sent to anyone at this stage.
  • Press Generate Login PINs, then print the slips.
  • Issued logins lists every family login that already exists.
PINs are shown once, and only once. Print the slips while they are on screen. Afterwards you can issue a family a new PIN, but you can never see the old one again — not even as the Admin. This is deliberate: a PIN you could look up later is a PIN anyone with your screen could look up later.

Each slip names the children it covers and gives three steps: open the link, enter the mobile number you gave the institution, enter the PIN.

The two kinds of PIN behave differently, on purpose:

  • Parents and students — the PIN is permanent and reusable. The slip lives in a school diary for months, and a PIN that expired would turn every re-login into a trip to the office.
  • Staff — the PIN is a one-time bootstrap that expires in 30 days. The first successful sign-in asks the staff member to set a real password before anything else loads, and the PIN is dead from that moment. Staff can change records, so they don’t keep a short secret as their permanent credential.

On the Students tab, an Admin sees a chip reading “N students have no family login” whenever some are missing. Clicking it opens Family logins directly.

What a parent sees

Open your institution’s link and the page belongs to your institution, not to EdHelfy: your logo and name sit at the top, with a badge reading Parent & Student Sign-in (or Student Sign-in at a college or institute). EdHelfy shrinks to a small powered by mark at the bottom.

  • The PIN card takes six separate digit boxes — typing moves you forward automatically, Backspace moves you back, and pasting a copied PIN fills all six at once.
  • Remember my number on this phone is ticked by default, so a parent only types their number the first time. It is saved only after a successful sign-in, so a stranger’s failed guesses can never overwrite the family’s saved number.
  • Underneath: Email me a sign-in code, I have an invite code, and — when you’ve enabled it — New here? Get access with your school email.
  • Staff? Sign in with your email and password at the bottom switches to the ordinary sign-in page, so staff are never stuck on the family view.

Repeated wrong PINs lock that contact out for a short, growing cooldown, and the page says how long. Every other refusal gives the same neutral message — the page never reveals whether a number is registered.

Lost a PIN? The family asks the office and you issue a new slip from Family logins. There is no self-service PIN recovery by design — the institution vouches for who is standing in front of it.

App Lock (this device only)

Profile menu → 🔒 App Lock sets a short PIN that this browser asks for when the app opens. It is a convenience lock for a shared phone or a front-desk computer — nothing more.

App Lock is not your account password. It protects this device only and doesn’t affect anyone else or any other browser you use. Setting it to empty turns it off. It was previously called “Device PIN”; it is not related to the Login PIN on a family slip, or to the WhatsApp confirmation PIN in Settings.

Dashboard

The Dashboard is your home screen — a one-glance view of everything that needs attention today. It greets you with a time-aware icon (☀️ morning, 🌤️ afternoon, 🌙 evening) and shows your institution’s name, then surfaces the day’s state through three modules.

Live Monitor tiles

The three coloured tiles at the top of the dashboard — Students, Teachers, Fees — show a live count, a sub-metric, and a status dot (green = healthy, amber = needs attention, red = action required).

  • Students — total enrolled, with “X present today” sub-metric and a dot reflecting today’s attendance rate.
  • Teachers — teacher count, “X present today” sub-metric, badge if there are pending leave or clock-edit requests.
  • Fees — collected this month, “₹X pending this month” sub-metric, dot scales with pending percentage.

Placards (click any tile)

Clicking a tile opens a detail placard with a Record / View action and inline shortcuts:

  • Students placard — class-by-class enrolment grid, today’s Present/Absent/Not-Marked breakdown. Footer shortcuts: View Students profile → and View Students Attendance →.
  • Teachers placard — today’s Present/Not-Marked/Incomplete buckets, pending leave + clock-edit requests with Accept/Reject (5-second undo strip), duration alerts. Footer shortcut: View Teachers Attendance →.
  • Fees placard — this month’s Collected vs Pending with a progress bar and per-class pending chips, plus Report and Remind buttons. Footer shortcut: View this month fees →.

Today snapshots (Live Monitor only)

The placard’s Record button generates a one-row-per-person snapshot for today — distinct from the date-range reports inside Attendance/Teachers tabs:

  • Students Today — per-student status: Present, Absent, Sick Leave (with the leave streak’s start–end span), or Holiday (with the calendar event’s name and date range). Header reads “Today, {weekday, date}”.
  • Teachers Today — same shape: per-teacher Status + Details, where Present rows show clock-in/clock-out, Leave rows show the request span + reason, and Holiday rows show the event.

Content cards

Below the Live Monitor: Posts & Announcements (write inline), Upcoming Events (next 30 days, multi-day events stay visible until they end), New Admissions (last 30 days with a delta vs the prior 30), and Low Stock (with one-tap WhatsApp order to category suppliers).

AI bar

The “Ask AI” bar at the top is the entry point to the assistant — see AI Assistant for the full workflow. Proactive nudges (overdue fees, low stock, upcoming events) appear as chips next to the input.

AI Assistant

EdHelfy ships with an AI assistant that lives on the Dashboard. Click the “Ask AI” bar or press ⌘/ (Mac) / Ctrl+/ (Windows) to open the chat. It can answer questions about your data and propose changes — you always confirm before anything is saved.

Pro plan note: Answering questions works on every plan. “Action” features (add, update, mark, generate) require the Pro plan. The chat surfaces a friendly upgrade hint when you try an action on the Basic tier.

How confirmation works

When you ask the AI to do something (“add a student”, “mark 5B present”, “print a receipt”), it proposes an action. A card appears with the extracted details and three possible buttons:

  • ✓ Confirm — runs the action and writes to your data.
  • ✗ Cancel — discards the proposal.
  • ✎️ Edit all fields (on some actions) — opens the full entity modal pre-filled with the AI’s values so you can tweak anything.

Each field also has a small pencil icon for inline edits. You can fix a wrong class or amount before confirming without leaving the chat.

Smart follow-ups (“post-flows”)

When an action is likely to need a next step, the AI offers one inline. Examples:

  • After a fee is marked Paid → “Download receipt” · “Archive” · Skip.
  • After marks are recorded → “Print report card” · “View class rank” · “WhatsApp to parent” (shown only when parent contact is on file).
  • After a new admission → “Print admission form” · “Print ID card”.
  • After class attendance is marked → “Print attendance sheet”.
  • After inventory restock/issue/return → “Print inventory report”.

What you can ask

Anything about your institution — counts, rates, who’s pending, what’s overdue. And a growing set of actions:

Every number comes from your data. The AI does not add figures up itself — when a question needs an exact count, rate or total, it fetches the rows and the app computes the answer. So a figure it quotes matches the same figure on the screen it came from. If a student has no attendance marked at all, it says so rather than reporting 0%.

What it will not do: it never deletes anything, never writes without you confirming the card first, and never shows you something your role cannot already see in the app. Payroll is a good example — if you are not permitted to view staff pay, the AI is not merely refused when it asks; it is never told those questions are answerable.

CategoryExamples
Fees add April tuition ₹1000 for Mirza
update Mirza's tuition status to Paid
send fee reminders to class 5B
print receipt for Mirza April tuition
consolidated receipt for Mirza
print all receipts for class 5B
Students add student Priya in class 6A
new admission Aisha in class 7B (sets isAdmission automatically)
update student Mirza to class 7A
Attendance mark Mirza present
mark class 5B present today (bulk)
mark Ms. Sharma absent (teacher attendance)
mark Ravi half day today (staff only — HA/HL)
how was staff attendance this week?
what is Mirza's attendance this month?
Staff leave who has leave pending?
how much casual leave does Ravi have left?
approve Ravi's leave (admin only)
decline Meena's leave — exams that week (a reason is required)
Staff pay what are Ravi's payable days this month?
how many loss-of-pay days does Meena have?
Read-only, and only for people allowed to see payroll. The AI never changes a salary.
Assessments what are Mirza's assessment remarks?
who in class 5B has no assessment yet?
set Mirza's Discipline to Very Good
add a Hygiene comment for Mirza: consistently neat
Academics set Math 85 for Mirza mid-term
print report card for Mirza mid-term
print all report cards for class 5B mid-term
Inventory add inventory item Chalk, Stationery, stock 50
restock Chalk by 20
issue 5 markers
Schedule add Math with Mr. Verma on Monday 10:00 AM for class 5B
add holiday Diwali on 12 Nov
Admin config add class 7A
add section D
add fee type Library
remove exam type Pre-Board (blocked if in use)
Institution profile update institution name to Green Valley Public School
change institution address to 42 Ring Road, Pune

Per-tab AI bar

Every module tab has its own Ask AI bar. It defaults to that tab’s subject but can answer about anything — ask a fees question from the Attendance tab and it will fetch what it needs.

  • It respects the tab’s filter. Looking at Class 5 Section A? The answer is about Class 5 Section A, and it says so. Name a different class explicitly and it answers about that one instead.
  • The Students tab bar can also narrow the list itself — show students with overdue fees and attendance below 80% filters the rows rather than replying in prose.
  • Charts work from any tab.

Document intake (📎 upload)

Snap a photo or upload a PDF — the AI reads it and pre-fills confirmation cards, one per record found. Each tab’s paperclip expects that tab’s kind of document:

  • Students → class roster, student list, or a single admission form (which sets isAdmission)
  • Fees → a fee receipt (student, fee type, amount, month)
  • Academics → a marksheet or report card, one card per subject
  • Attendance → a register page, as a single-day class roll-call
  • Teachers → a staff attendance sheet, one card per teacher. Half days on the sheet (“½”, “half day”, “0.5”) extract as HA, or HL where the leave was approved.
  • Schedule → a timetable, one card per period
  • Calendar → an academic calendar or notice, one card per event
  • Inventory → a stock sheet, supplier invoice, or delivery note

A long document may not fit in one pass. When that happens the records it did read are still offered, with a note saying how many — confirm those, then upload the remaining pages.

How to use it:

  1. Open the AI chat (dashboard → Ask AI bar, or ⌘/ / Ctrl+/).
  2. Tap the 📎 paperclip in the chat footer.
  3. On mobile, the rear camera opens — take a clear photo. On desktop, pick a file.
  4. Wait for “Analyzing document…” — usually 3–6 seconds.
  5. The extracted action appears as a confirmation card. Tweak fields inline, tap ✎️ Edit all fields for the full modal, or ✓ Confirm to save.
Tips for a good scan: bright, even light; flat on a surface; fill the frame with the document; avoid shadows and glare. Blurry or cropped photos confuse the classifier.
Max size: 10 MB per file. Privacy: uploads go through the AI provider you’ve configured in Settings; they are not stored on EdHelfy servers.

AI-generated charts (📈 visual answers)

Ask a trend, distribution, or comparison question and the AI renders an inline chart from your live data. The chart lives inside the chat message and always reflects the latest records — the AI never invents numbers, it only picks the query.

Supported queries today:

  • Attendance trendshow attendance trend for class 5B last 30 days (line)
  • Fee collectionfee collection by month this year (bar)
  • Students per classstudents per class (bar)
  • Marks by subjectaverage marks per subject for class 5B mid-term (bar)

Charts are pure-SVG, render offline, print cleanly, and scale to any screen. No external libraries, no CSP hassle, no extra load on the app. Tap the 📈 Attendance trend chip in the Ask-AI bar for a one-tap start.

Proactive nudges

The Ask-AI bar surfaces contextual suggestions based on your current data. You’ll see chips like:

  • “💡 12 overdue fees — send reminders?”
  • “💡 Attendance pending for 3 classes”
  • “💡 No exam marks recorded yet”

Tapping a chip pre-fills a useful prompt so you don’t have to type.

Example sessions

You: “Mark class 5B present today”

AI: proposes Mark Class Attendance — 5B, today, Present (card with confirm/cancel).

You: click ✓ Confirm.

AI: “22 students marked Present for 5B (2026-04-17)” — then a follow-up offers “Print attendance sheet”.

You: “Update Mirza’s tuition to Paid”

AI: proposes Update Fee — Mirza, Tuition, Paid.

You: confirm.

AI: “Fee updated: Mirza — Tuition” + Smart Paid card: 📄 Download receipt · 📦 Archive · Skip.

Tips

Be specific. “Mark Mirza present” works because Mirza is unambiguous. If two students share a first name, add the class or use the full name.
Use “Edit all fields” for rich data. The confirmation card shows the essentials. For DOB, address, photo, parent contact — tap the button to open the full form with the AI’s values pre-filled.
Deletes are blocked. For safety, the AI won’t delete students, fees, or records. Use the relevant tab’s archive flow instead — archived records are recoverable.

Troubleshooting

  • “Student not found” — check spelling; inactive students are excluded. Re-activate from Students → Archive if needed.
  • AI didn’t propose the action I wanted — rephrase with the canonical verb: “add”, “update”, “mark”, “generate”.
  • Card says “Action expired” — the proposal was cancelled. Ask again.
  • Every response looks like upgrade prompt — you’re on the Basic plan and trying action features. Questions still work; upgrade to Pro to unlock actions.

Students

The Students tab is the roster for every learner in your institution. Each student has a full profile (name, class, section, roll, DOB, parents, contact, photo) and a history (admission date, promotions, status changes).

Add a student

  • Quick add — Students tab → + Student. Fill class/section/name and save. You can also use the FAB or ask the AI: add student Priya in class 6A.
  • New admission — toggle Admission on the form (or say new admission… to the AI). Admissions show a badge and can be printed as an admission form from the student profile.
  • Photo — tap the photo slot in the profile modal. Stored locally, synced across devices.

Promote / demote / deactivate

  • Open a student card → Promote & Deactivate dropdown. Bulk-promote by class from Students → Promote All.
  • Deactivated students move out of the roster but stay searchable in Students → Archive. Re-activate any time.
  • Promotions are logged per-student and shown on the profile (Promotion history).

Student Assessment

A one-page picture of a student for a parent: how they attended, what they owe, and how the school rates them. Open it from the student’s profile.

  • Period — pick Last month (the default, since an assessment is issued for a month that has finished), This month, Academic session, Last 30 days, or a custom range. The period is shown in the header, so the numbers are never unlabelled.
  • Attendance — present, informed leave, and uninformed absence shown separately, with the rate. A student with no marks in the period shows “—”.
  • Fees — the pending rows and the balance, using the same figures a fee reminder would quote.
  • Remarks — a rating (Excellent / Very Good / Good / Satisfactory / Needs Improvement) and an optional comment for each assessment category (Hygiene, CW/HW, Communication, Discipline, Co-curricular Activities by default). Filled in the app and saved on the student record; closing with unsaved edits warns first.
  • Send to parent — WhatsApp the assessment, or print it. The app records how many times an assessment has been sent and when the last one went out, so a monthly round across a whole class shows who is already done.

Settings → Assessment configures the categories, which of the three blocks (Attendance / Fees / Remarks) appear, the default period, and the report header. Every surface — the modal, the single print, the bulk print, and the parent WhatsApp — obeys the same settings.

Reports & printing

  • ID cards — single or bulk; layout + fields configured in Settings → ID Card.
  • Admission form — printable letterhead with parent declaration.
  • Transfer certificate (TC) — auto-numbered; fields configurable in Settings.
  • Student list report — A4 landscape class-grouped roster from Dashboard.
  • Assessment — per-student, or a bulk run for a whole class.
Tip: every student list has a search box; use AI filters like students with pending fees for quick multi-filter queries.

Attendance

Student attendance is two-state: Present or Absent. There is no “Late” and no student Leave button. Why a student was away is derived, not marked: an absence covered by a confirmed absence notice counts as informed leave, and an uncovered one as uninformed. Staff attendance is different — it has leave and half days. See below.

Mark attendance

  • Attendance tab → pick class + section → tap each cell, or use bulk buttons for a whole class.
  • Tap the active P or A again to clear the cell. An empty cell means “not marked”, which is not the same as absent — unmarked days are excluded from the rate rather than counted as zero.
  • Change a date with the date picker; today is the default.
  • Ask the AI: mark class 5B present today or mark Mirza absent.

Absence notices

A parent or student can submit an absence notice for a date range with a reason. Staff review it under Attendance:

  • Confirm writes A across the range, skipping holidays and non-working days, and never overwriting a mark that is already there. Those absences then read as informed.
  • Decline leaves the register untouched.
  • Revert removes only the cells the confirmation itself wrote.

The free-text reason is shown only on the staff review card and in the family’s own list — it is never printed on a report or pushed to the notification bell.

Teacher attendance and half days

Teachers tab → Attendance sub-view. Staff have five states, not two:

  • P present · A absent · L approved leave
  • HAhalf day, absent. Half the day worked, the missing half unapproved. Counts as 0.5 present and 0.5 loss of pay.
  • HLhalf day, leave. Half the day worked, the missing half approved. Counts as 0.5 present and 0.5 paid leave, so nothing is deducted.

To set a half day, mark the cell A or L first — a ½ chip appears on it; tapping the chip switches between the full and half version. Approving a half-day leave request writes HL automatically.

Short clock-out. If a teacher clocks in and then clocks out having worked less than the required hours for the day, the day is marked HA rather than Present, and a toast says so.

Closed days

Three kinds of closed day, all resolved the same way everywhere in the app:

  • Holiday — a Holiday-typed calendar event. The cell shows red and the day is named.
  • Classes off — a Classes-Off-typed event. Grey, like a weekly off, and named.
  • Weekly off — the timetable says that weekday is not a working day. Grey; the weekday itself is the label.

On a closed day the grid blocks marking behind a “We are open” override, so an unplanned working day is still recordable. A closed date that already has marks counts as a day that ran, per class, and is never blocked. Multi-day holidays (e.g. Diwali 17–21) cover the whole range.

Reports

  • Print attendance sheet — from Dashboard or after bulk-marking via AI.
  • Attendance rate — shown on every student profile and as a dashboard tile. A student with no marks at all shows “—”, never 0%.
  • Register report — lists informed leave and uninformed absence separately, with the closed days that were excluded.

Fees

Fees are per-student line items (Tuition, Transport, Exam, Admission, etc.) with states Pending · Paid · Partial · Waived.

Fee types & amounts

  • Settings → Fee Types — declare the types you use (add/remove).
  • Default amounts — per fee type, optionally per class (Tuition ₹1000 for class 5, ₹1200 for 10, etc.).
  • Recurring schedule — a type can be flagged monthly/quarterly; auto-gen uses this.

Auto-generate monthly fees

Fees tab → Auto-generate. Picks every active student, applies the default amount by class, creates Pending rows for the month. Idempotent — re-running won’t duplicate.

Smart Paid flow

Mark a fee Paid and three follow-ups appear: Download receipt · Archive · Skip. Bulk-mark a whole class’s tuition Paid in one step from the toolbar.

Archive, undo, reminders

  • Archive box — paid fees after a clean-up move here. Restore or permanently delete from one place.
  • Undo — any bulk flip can be reverted for 8 s.
  • WhatsApp reminders — from Dashboard (bulk across all outstanding) or per-student.

Receipts

  • Single receipt — from the fee row or AI: print receipt for Mirza April tuition.
  • Consolidated receipt — all fees for a student in one PDF.
  • Class-wide — one PDF per student, all classes in a single batch.

Academics

Exams, marks, report cards, and class rankings.

Exam setup

  • Settings → Exam Types — define every exam (Mid-term, Final, Unit 1, etc.).
  • Per-exam subjects — different exams can cover different subjects.
  • Pass percentage + grade ranges — configurable per institution.

Subjects & marks (roles)

Open Academics → Subjects & Marks. Every subject a class is taught gets a role:

  • 📝 Exam — graded with marks and counts toward the %/grade. Set its Max and Pass marks.
  • ✎ Remarks-only (co-scholastic) — appears on the report card with a grade (and an optional note) instead of marks, and never affects the %/grade. Ideal for activities you assess but don’t score, like Drawing or Conversation.
  • — Taught-only — kept on the timetable but left off report cards entirely (e.g. Games).

The grade scale used for remarks-only subjects (e.g. A–E) is editable on the same screen under Co-Scholastic Grades.

Exam papers & exam-only subjects

  • Split into papers — examine one subject as several papers (e.g. English → Oral + Written), each with its own Max. The report card shows a combined English line with the papers listed beneath it.
  • Exam-only subject — add a subject that is examined but not in the taught list (e.g. General Knowledge).

Add a subject to classes

In Taught Subjects, adding a subject to the pool asks which classes should get it (all classes by default). Use the “↪ Apply to classes” control on any pool subject to push it to more classes later.

Enter marks

  • Academics tab → pick class + exam → type marks into the grid. Autosaves per cell.
  • AI: set Math 85 for Mirza mid-term.
  • Skip a subject — leave blank; it won’t count toward the total.
  • Remarks-only subjects appear in their own Co-Scholastic block on the record — pick a grade and add an optional note instead of marks.

Marksheet vs Report Card

Two related but distinct documents, each with a customizable label (Settings → Exam Settings → Report Card):

  • Marksheet (default name) — covers one exam. e.g. “Mid Term Marksheet”. Use after each individual exam closes.
  • Report Card (default name) — covers every exam in the academic session, consolidated into one transcript. Use at the end of the term/year for summary distribution.

Schools can rename these (e.g. to “Progress Report” or “Result Card”), customize signature labels (Class Teacher / Principal), toggle the signature block on or off, and choose whether to include the per-subject matrix.

Report cards & rankings

  • Per-student Marksheet (single exam) or Report Card (all exams) — from the profile or AI.
  • Bulk Marksheets / Report Cards — whole class, one PDF per student.
  • Class rank — auto-computed from totals; remark auto-selected via configurable ranges.
  • Assessment categories (Hygiene, Discipline, etc.) — configurable in Settings, scored per student per exam.
  • Exam papers group under their parent subject with a combined subtotal (e.g. English with Oral + Written beneath it).
  • Co-Scholastic section — remarks-only subjects print in a separate block below the marks, showing each subject’s grade and note, with no effect on the %/grade.
  • Inline mark editing — click any mark in the grid to edit in place. If a sync arrives mid-edit, the table waits for you to blur before refreshing — your typed value never gets wiped.

Archive

Deactivated students’ marks auto-archive into the Academics → Archive tab so report cards can still be regenerated from history.

Schedule

Timetables, calendar events, and routines live under the Schedule tab.

Timetable

  • Schedule → Routines sub-tab. Grid: rows = timing slots, columns = weekdays.
  • Per-class timetable — pick class/section from the picker.
  • Click a cell → assign subject + teacher. Reuses the teacher roster.
  • Timing slots live in Settings → edit once, every class inherits.
  • Mentor / Class Teacher — set per class in Timetable Settings; it shows in the timetable heading. This stays in sync two-way with the teacher’s profile (see Teachers → Profiles): set it in either place and the other updates, and a teacher mentors only one class at a time.
  • Generate — the timetable generator auto-fills a conflict-free routine from your classes, subjects, teachers and constraints (per-teacher daily/weekly caps, homeroom-first for mentors). Lock any cell to keep it, then re-generate the rest; an optional plain-English preferences box steers the result when AI is enabled.

Calendar

  • Schedule → Calendar. Add holiday · exam · event · meeting for single day or a range.
  • Holidays automatically excluded from attendance math (see Attendance).
  • Upcoming events chip appears on the dashboard; multi-day events stay visible until they end.

Teachers

Staff roster with profiles, attendance, leave, and reports.

Profiles

Teachers tab → Timetable sub-view lists every teacher. Click + Add Teacher (or click an existing row) to open the profile form. As of 2026-05-02 the form is laid out as six sectioned cards mirroring the Add Student modal:

  • Teacher / Staff Info — Full Name, Date of Birth, Sex.
  • Employment — Designation, Department, Employee ID, Joining Date.
  • Family — Father, Mother, Spouse / Partner.
  • Contact — Phone, WhatsApp (both with country-code picker), Email.
  • Address & Photo — Address textarea + profile photo upload.
  • Qualifications & Assignment — Education, Experience, Expert Subjects (multi-select), Mentor Class & Section, CV / Resume upload.

Phone fields go through the same E.164 validation used for student parent contacts, so WhatsApp links work the same way for teachers.

Mentor of Class — setting a teacher’s Mentor Class & Section here automatically makes them the mentor / class teacher on that class’s timetable, and clearing it removes them. It’s two-way: assigning a mentor from Timetable Settings writes back to the profile too. Each class has one mentor and each teacher mentors at most one class — reassigning moves it cleanly.

Manage Teachers (settings)

Settings → Manage Teachers opens the per-teacher attendance settings (default duration, bypass duration, bypass GPS) and the archived staff list. The modal opens fullscreen with a search bar at the top — typing filters the list live without losing focus, useful when staff numbers grow past a screen.

Manage Team (roles & invites)

Settings → Manage Team shows every user (admin + invited staff) in a single list. A search bar at the top filters by name, email, or role — the same DOM-only pattern as Manage Teachers.

Attendance

Attendance sub-view — the daily staff grid. Unlike students, staff have P / A / L plus the two half-day states HA and HL. See Attendance → Teacher attendance and half days for the full semantics, the ½ chip, and the short-clock-out rule.

Leave

A teacher or accountant applies from Teachers → 📝 Apply Leave; an admin can also apply on behalf of someone. The request goes to an admin, who approves or declines it from the dashboard placard or the Teachers tab.

  • Half-day leave — the Duration control offers Full day or Half day. A half-day request must be a single date, and approving one writes HL rather than L.
  • Approving writes leave marks across the working days of the range, skipping closed days, and records exactly which dates it wrote. An optional note goes to the applicant.
  • Declining requires a reason — the applicant is shown it in My Leave.
  • Cancelling an approval clears only the dates that approval wrote, and asks for a reason that replaces the original note.
  • My Leave — each staff member sees their own requests, decisions, and the notes attached to them. A pending request can still be edited by the applicant.

Leave policy

Teachers → Policy → Leave Policy (admin only). Policies are versioned: editing one creates a new version with an effective-from date, and a request is judged by the version in force on its dates, so changing the policy never rewrites history.

  • Categories — e.g. Casual, Sick — each with an allowance and a period (monthly or yearly).
  • Audiences — a category can apply to everyone or to a named subset of staff.
  • Counting mode — whether a range counts calendar days or working days.
  • Carry-forward — unused days can roll into the next period, up to a cap, and expire on a stated date.
  • Pro-rating — a member who joined mid-session accrues a proportional allowance.

Balances (allowed / taken / remaining) are shown on the apply form, on the approval card, and in Leave Settings — all from one resolver, so the three never disagree.

Salary & pay

Set a monthly salary and joining date on the teacher’s profile. Teachers → ₹ Staff Pay (admin) shows the monthly statement for every staff member:

  • Payable days — working days, present, paid leave, loss of pay, and unmarked. An unmarked working day is payable (benefit of the doubt) but is counted separately so you can see it. Half days count 0.5.
  • Loss-of-pay modelDeduct cuts the amount (per-day rate × LOP days), or Extend pushes the next salary date instead. Set school-wide, overridable per person.
  • Divisor — per-day rate is salary ÷ 30, or salary ÷ that month’s working days.
  • Payslips — printable, and sendable to the staff member over WhatsApp.

₹ My Pay (teacher / accountant) is the staff member’s own copy of that statement — their own figures only, never anyone else’s. Payroll visibility for other people is admin-only by default; an admin can delegate it to an accountant at Settings → Role Permissions → accountant → staff_pay. That grant is view-only: it can never be used to edit a salary.

Absence review

Unexplained staff absences are gathered into a review queue, grouped by teacher. From there an absence can be regularized into a leave request in one tap, or acknowledged as genuine loss of pay.

Reports

Per-teacher report with classes taught, attendance rate (half days shown as ½), and leave taken. Printable from the profile.

Inventory

Track stock, categories, issues, and suppliers.

Add & manage items

  • Categories (Uniform, Books, Stationery, …) live in Settings.
  • Per-item: name, category, stock, price, low-stock threshold.
  • Variants / sizes — items like uniforms or shoes that ship in multiple sizes are stored as sibling rows under one parent name (e.g. School Shoes with rows for S, M, L). Each variant has its own stock + history.
  • AI: add inventory item Chalk, Stationery, stock 50. For variants: add School Shoes size M, Footwear, stock 10 — the AI passes the variant tag through so it lands on the correct sibling row.

Issue / restock

  • Issue — deducts stock; logs history. AI: issue 5 markers.
  • Restock — adds to stock. AI: restock Chalk by 20. For variant items: restock School Shoes size L by 10 — the AI narrows the match by item + size so the other sizes stay untouched.
  • Every change is logged in the item’s history; clear old history in bulk from the toolbar if needed.

Supplier WhatsApp

Per-category supplier contact → one-tap “Order” button opens WhatsApp prefilled with the low-stock list.

Low-stock alert

Dashboard card surfaces every item below its threshold; bulk-order via the supplier chip.

Settings

Institution-wide configuration. Visible only to admins. Grouped into tabs:

Institution profile

  • Name, address, logo, motto, academic year.
  • Letterhead + dashboard header fields — which of {Logo, Name, Motto, Registration, Phone, Email, Website, Address} appear on printouts.

Lists

  • Classes, sections, subjects (global + per-class), exam types, fee types, inventory categories, event types.
  • Timing slots for the timetable.

Editing classes, sections & subjects (safe rename)

Open Manage Classes or Manage Sections (the ⚙ beside any class/section picker, or Settings → Institution → Classes & Sections), then click the ✎ Edit button on a chip to rename it. Renaming is migration-safe — EdHelfy moves every dependent record to the new name:

  • Class rename migrates students, attendance, marks, timetable entries & settings, and per-class fee amounts.
  • Section rename migrates students’ section, the per-section timetables, and mentor assignments.
  • Subject rename migrates marks, exam records, timetable periods, and room assignments.
  • Renaming onto a name that already exists merges the two (no records are lost). Changes sync to every device.
Rename vs Remove: use Edit (✎) to change a name and carry its records along. Remove (×) only drops the label — it does not migrate records, so students/marks under the old name are left orphaned. To change a name, always Edit; don’t Remove-and-re-Add.

Team & roles

Open SettingsTeam Management to invite, edit, or remove team members. Detailed walkthrough in the Team & roles section below.

Role Permissions (customise per institution)

Settings → Team Management🔑 Role Permissions opens a matrix where admin can tune what each role can do in this institution.

  • Admin row is locked — always full access, not editable.
  • Teacher / Accountant rows: five levels per resource — Full access, Edit own only, View own only, View all, — (no access).
  • Parent / Student rows: clamped to View own only or so cross-child and cross-student data exposure is impossible by design.
  • Changes save automatically and propagate to all signed-in users within ~1 second via realtime sync.
  • Revert a cell with the ↺ button, or reset the whole matrix to defaults from the footer.
Example uses: Restrict teacher access to Academics if exam weights should stay admin-only; grant accountant extra access to Posts; turn off bulletin visibility for students during exam week.

AI & subscription

  • Activate the EdHelfy AI proxy (usage included in your plan) or plug your own provider key.
  • Daily + monthly usage limits shown in the Ask-AI bar.

Backups & data

  • Export my data — full JSON snapshot of students/fees/academics/attendance/config.
  • Import — CSV/JSON. Preview + dedupe rules before commit.
  • Auto-backup reminder — nudges every N days from the dashboard.

Danger zone

  • Reset all data — wipes local + cloud. Requires typing a confirm phrase.
  • Delete account — GDPR; irreversible. Auto-exports a backup first.

Team & roles

EdHelfy is multi-user from day one. The first signup becomes the institution's Admin; from there the Admin invites teachers, accountants, parents, and students. Each member signs in with their own credentials — email and password, an emailed code, or a Login PIN (see Signing in) — and only sees what their role allows.

The five roles

  • Admin — full access. Manages classes, fees, settings, team, billing, AI configuration, and Danger Zone actions.
  • Teacher — marks attendance, enters exam marks, plans the timetable, writes routines and posts. Sees students at the read level by default; can be widened or narrowed in Role Permissions.
  • Accountant — full access to Students, Fees, Inventory. Generates receipts, runs reminders, and manages the admission pipeline. No Teachers tab, no Settings.
  • Parent — read-only view of their own child(ren)'s attendance, marks, fees, routine, and posts. Cannot see other students.
  • Student — for coaching centres, colleges, institutes and higher-ed where learners use the app themselves. Same scope as Parent (read-own attendance / marks / fees / routine / posts) plus access to the AI learning assistant.
A user can hold multiple roles at once. A typical small school has one person who is both Teacher and Accountant — both checkboxes ticked on the invite, and the app merges permissions to the most permissive level.

Inviting a team member

  1. Open SettingsTeam ManagementManage Team+ Invite Member.
  2. Enter the invitee's email (or leave blank to share the code manually via WhatsApp / verbal).
  3. Tick one or more roles. Picking Teacher reveals a Link Teacher Profile dropdown — see below.
  4. Click Send Invite. The modal shows a green ✓ when the email actually delivered, or an amber ⚠ with a reason if it failed (in which case you can copy the code and share it manually).

How the invitee signs up

Two paths, both work:

  • Email link — invitee clicks the 🚀 Join Now button in the invite email. Lands on the signup form with the code, school name, and email auto-filled.
  • Manual code entry — invitee opens the website, chooses I have an invite code (or goes straight to edhelfy.com/?code), and types the 8-character code into the Invite Code field at the top of the form. After ~600 ms the institution name and the assigned role(s) auto-populate (e.g. "✓ You will join ABC Public School as Teacher.").

Invite codes are single-use, expire after 30 days, and can be revoked or regenerated by the inviting Admin from the Pending Invites list. If an invite is lost, the Admin can also Resend email from the same list (⚙ menu next to the code).

Linking

Linking ties an invited user account to an existing record in the institution so the user sees their own data on first login.

  • Teachers (admin pre-link) — when inviting a Teacher, pick the corresponding teacher profile from the Link Teacher Profile dropdown. After the invitee signs up, the server binds that teacher row to their auth account, and on first login the system canonicalises their display name to the linked teacher's name. If the invitee enters a different "Your Name" during signup it gets replaced — to avoid confusion, the new code-entry signup form previews the linked teacher's name before submission.
  • Parents (admin pre-link) — when inviting a Parent, pick the corresponding student from the Link to Student dropdown (revealed when the Parent checkbox is ticked). A search box above the dropdown filters by name or class. On signup, the server binds students.parent_user_id = auth.uid() for that specific student. Multi-child families: send one invite per the picker, then siblings sharing the same parent_phone or parent_whatsapp on their student records auto-link too via contact-match.
  • Students (admin pre-link or auto-link) — when inviting a Student, the same student picker (with search) is revealed. On signup, the server binds students.student_user_id = auth.uid(). If the picker is left blank, the system falls back to auto-linking by matching the student's signup email or phone to students.email or students.phone. Multi-match is refused for security — if 2+ student rows share the same contact, the system shows an "unlinked" screen and asks for admin help.
If linking fails the user lands on a friendly fallback screen ("Your account is ready, but we couldn't match it to a student record yet"). To fix it, the Admin opens the matching student record in Students and adds the user's email or phone to the appropriate field. Realtime sync then re-runs the linker automatically — no need for the user to click "Try again", though that button is there as a fallback.

Customising what each role can do

SettingsTeam Management🔑 Role Permissions opens a matrix where the Admin tunes what each role can do in this institution:

  • Admin row is locked at full access — not editable.
  • Teacher / Accountant rows: five levels per resource — Full access, Edit own only, View own only, View all, or (no access).
  • Parent / Student rows: clamped to View own only or so cross-child / cross-student data exposure is impossible by design.
  • Changes save automatically and propagate to every signed-in device within ~1 second via realtime sync.
  • Revert a single cell with the ↺ button, or reset the whole matrix to defaults from the footer.

Editing roles after invite

From Manage Team, click Edit next to any member to add or remove roles. The system enforces a "last admin" guard — you can't remove the only remaining Admin from a school.

Top-right user dropdown

The avatar in the top-right corner shows the signed-in user's name and role(s). Multi-role users see them dot-separated (e.g. Teacher · Accountant); the Admin role is highlighted in accent colour.

WhatsApp assistant

An optional assistant your institution can switch on, so staff and families can ask questions from WhatsApp without opening the app. It only ever replies — it never messages anyone first, sends no reminders or announcements of its own, and ignores any number an admin has not registered.

Turning it on

Settings → WhatsApp. An admin registers each number and links it to an EdHelfy account. Unregistering a number cuts off access immediately.

What staff can ask

  • Students, fees, attendance, marks, timetable, calendar, and stock — the same questions the in-app AI answers.
  • Staff attendance and leave — an admin sees the whole staff; everyone else sees only their own.
  • Your own pay (teacher / accountant) — your salary, your loss-of-pay days for a month, and your own attendance breakdown. It is strictly your own: there is no way to ask it about a colleague’s pay, whoever you are. For the exact net figure it points you at the My Pay screen.

Answers are scoped to what you can already see in the app — a class teacher gets their own classes, not the school. Contact numbers, addresses and emails are never included in a reply.

What staff can change

Staff can also type an instruction (“mark class 3 present today”). The assistant never acts on it by itself:

  • It becomes a proposal in the in-app review queue. Fee and calendar proposals need an admin to confirm them.
  • Attendance only can be confirmed by replying YES with your confirmation PIN. Your role and class scope are re-checked at that moment, so confirming by WhatsApp never lets you do more than you already could in the app.
  • Your confirmation PIN is set in Settings and is separate from both App Lock and a family Login PIN. Remember that anything you type stays in your own WhatsApp history — don’t reuse a PIN from elsewhere.
  • The assistant never deletes anything.

Forwarding a document

A staff member can forward a photo of a register, admission list or fee sheet. It is read into structured records that land in the review queue — nothing is imported until an admin confirms it. Photos from parent or student numbers are not processed at all.

Parents and students

Where the institution chooses to enable it, a linked parent can ask about their own child only, and a linked student about themselves:

  • Attendance, fees, exam marks, and the class timetable.
  • The child’s assessment — the ratings and comments the school has saved, and when an assessment was last sent. If the school has not filled it in yet, the reply says so rather than implying a poor result.

Families cannot change anything, cannot send photos, and cannot see another family’s child. Each number has a daily question limit. A parent of several children who does not say which one gets an answer for each of them by name — the assistant never asks a follow-up question, because the conversation keeps no memory.

Which questions a family can ask follows the permissions you have already granted them in Settings → Role Permissions. Revoke a resource there and it disappears from WhatsApp too.

Sync & cloud

EdHelfy keeps a copy of your data on every device that signs in, with the cloud as the source of truth. Most syncing is automatic — this section explains what runs in the background, how to tell what’s happening, and which control to reach for when something looks stale.

What runs automatically

  • Save — every change is uploaded to the cloud right away (no manual save button anywhere). A brief “Saving…” appears in the status bar; submit buttons disable for the second or two it takes so you can’t accidentally double-submit.
  • Realtime push — changes from another device typically arrive within 1–2 seconds; nothing to do on the receiving device.
  • Multi-tab — changes made in one tab show up in other tabs of the same browser instantly.
  • Form-draft autosave — if you start filling a form (Add Student, Add Fee, Add Item, Add Mark, Add Teacher, Institution Profile) and accidentally close the modal without saving, EdHelfy keeps your unfinished input in the tab’s memory. Reopen the same form and it offers to Restore what you typed. Drafts clear once you successfully save, when you click Restore, or when you dismiss the prompt with the × — so you never see the same stale prompt twice. Drafts older than 4 hours are silently dropped; sessionStorage means they don’t survive a browser restart (privacy: drafts on a school computer can’t leak to the next user).
  • Edit-safe auto-refresh — if you’re mid-edit (e.g. typing marks inline on the Academics page) when a sync arrives, EdHelfy holds the screen refresh until you blur the input. Your typed value never gets wiped by an incoming change.
  • Sticky filter rows on mobile — Filter and Action panels you’ve expanded stay open across auto-refresh. No more re-tapping the same filter button every time data syncs.
  • Stale-data hint — if you leave a tab open in the background for more than five minutes and come back to it, EdHelfy may show a quick “Data may be stale — Refresh?” toast so you can pull fresh data before editing.
  • Silent-death watchdog — if the realtime channel goes idle on a phone’s sleep or a flaky network, a background check (every minute) automatically reconnects and shows a quick “Reconnecting sync…” in the status bar.

For most users, the answer to “do I need to sync?” is no — just keep an eye on the dot and the status bar.

How to tell what’s happening

Two passive indicators surface the current state. You don’t click them to make sync happen — they just tell you whether anything needs your attention.

The sync dot (on your profile avatar — both devices)

A small coloured dot at the corner of your profile picture:

  • • Green — synced and live. Nothing to do.
  • • Orange — saving right now, or realtime is reconnecting.
  • • Red — offline, or a sync error. The Offline banner at the top of the app explains what to do.
  • • Grey — not yet synced this session (briefly seen right after login).

The status bar (slim strip below the top bar)

Appears only when there’s something useful to say:

  • “Saving…” (orange) while a write is uploading.
  • “Saved” (green) briefly after a successful save, then auto-hides.
  • “Reconnecting sync…” (orange) when the realtime channel briefly drops and is being re-established.
  • “Sync error — tap for details” (red, persistent) when something goes wrong. Tap it to open the Sync Log for details.

When you’re fully offline, the status bar steps aside and a separate red Offline banner takes over — see “Working offline” below.

Manual sync controls

Four ways to trigger a sync — they all do exactly the same thing (push pending writes, then pull the latest from cloud). Pick whichever is most ergonomic in the moment.

1. Tap the sync dot

The small coloured dot on your profile avatar is itself a button on every device. Tap it to force a sync.

2. The “Sync” pill (desktop only)

On screens 1024px and wider, a labelled pill button (“Synced” / “Syncing…” / “Retry”) sits in the top-right of the top bar. Click to force a sync.

3. The sync icon (mobile only)

On phones, a round refresh icon sits between the search and the notification bell in the top bar. Tap to force a sync.

4. Pull-to-refresh (mobile gesture)

  • Scroll to the top of any list and pull down. A small puck appears and follows your thumb.
  • When the puck arrow flips upward (and your phone vibrates briefly), release to refresh.
  • The puck spins while syncing, then snaps away.
Mobile gesture note (2026-05-02): horizontal swipes between tabs are disabled. Earlier builds switched tabs when you swiped left/right anywhere on the page; users were hitting it accidentally during back-gesture and table-scroll motions. Tab navigation now goes through the sidebar (☰ icon) or the bottom nav only. Pull-to-refresh and the sidebar edge-swipe still work.
Power-user tip: hold Shift (desktop) or long-press (mobile) any sync surface to open the Sync Log directly instead of triggering a sync.

The Sync Log (diagnostics)

Open via Settings → Sync → 📋 Sync Log, or by tapping a red status bar. It shows the last 50 sync events with timestamps and a health strip at the top (last sync time, realtime channel state). Buttons:

  • Retry sync now — same as tapping the sync dot, but in context. Use this when something didn’t arrive cross-device and you want to force a fresh download.
  • Full resync — re-downloads every record from cloud. Safe (no data loss). Use when changes from another device aren’t appearing even after a couple of regular syncs.
  • Clear log — empties the displayed event history. Cosmetic only; no effect on actual sync state.
Quick rule of thumb: Green dot, no bar → do nothing. Want fresher data right now → tap any sync surface (dot, pill, mobile icon, or pull-to-refresh). Red banner at top → you’re offline; reconnect or hit Retry. Persistent red status bar → tap it to open the Sync Log.

Working offline

EdHelfy needs the internet to save your changes. When your device goes offline (flight mode, dropped Wi-Fi, dead spot in the building), a red banner pulls down from the top of the screen:

“📡 Offline — changes won’t save until you reconnect” [ Retry ]

While the banner is showing:

  • You can still read everything you’ve already loaded — navigate tabs, look up student records, view fees, check attendance — the app works as a read-only view.
  • If you try to save something (add a student, mark attendance, edit a fee), the change won’t stick — you’ll get a small toast: “Offline — your change was not saved. Try again when reconnected.” The form keeps your input so you can save once you’re back online.
  • Any forms you started but didn’t finish stay safe via the form-draft autosave (see above) — reopen the form to restore.
  • The Retry button on the banner re-checks the network and triggers a sync the moment you’re back online (browsers can be slow to notice a Wi-Fi return).

When connectivity is restored, the banner auto-hides, the realtime channel reconnects, and any tabs your colleagues edited meanwhile arrive within a couple of seconds.

Why no offline queue? EdHelfy used to silently queue offline edits and replay them later. We removed that in May 2026 because silently-queued data sometimes vanished or duplicated when the queue collided with cross-device edits. The new behaviour is louder but more honest: if a save isn’t going to land, you find out immediately and can decide what to do.

Send Feedback

Bug, idea, or just a note — all welcome. Feedback shapes the roadmap, and bug reports usually get a fix within days.

Email us at support@edhelfy.com. Or from the app: Profile menu → Help & FAQ → Send Feedback.

Include when reporting a bug: what you were doing, what happened, what you expected. Screenshots help. Device + browser is useful for rare issues. We don’t need any data from your account — a paragraph is enough.