// Pricing  ( 01 )

Doxaed

Simple pricing for
every schedule.

From a single department to a school of 150 teachers, pick the plan that fits. Conflict-free timetables, generated in seconds. No hidden fees.

Free plan needs no card · No auto-charge you did not buy


// Choose your plan

Five tiers. One engine.

60% off for the first 50 paid accounts.

Free

Small departments or trials

₹0 / year
  • Up to 3 projects
  • Up to 250 activities per project
  • Up to 25 teachers
  • Multiple schedules
  • Classes, subjects, teachers & rooms
  • Multiple constraints
  • Auto generation & manual editing

30-day trial, then locks

  • Term calendar & term totals
  • Proxy scheduler
  • Timetable analytics
  • Break duties
  • Exam & test duty
  • Public sharing links
  • Role-based sharing (invite accounts)
  • Change history (undo after a reload)

Free for your first 30 days after you create your account, then each needs an upgrade. Nothing you made with them is deleted.

Basic

Smaller schools needing tools

List ₹5,000₹2,000 / year60% off

Everything in Free, plus:

  • Up to 30 teachers
  • Unlimited projects & activities
  • Break duties
  • Timetable analytics
  • Public sharing links

30-day trial, then locks

  • Term calendar & term totals
  • Proxy scheduler
  • Exam & test duty
  • Role-based sharing (invite accounts)
  • Change history (undo after a reload)

Free for your first 30 days after you create your account, then each needs an upgrade. Nothing you made with them is deleted.

Pro

High-performance schools

List ₹15,000₹6,000 / year60% off

Everything in Standard, plus:

  • Up to 100 teachers
  • AI builder
  • Exam & test duty

Premium

Large schools at full scale

List ₹20,000₹8,000 / year60% off

Everything in Pro, plus:

  • Up to 150 teachers

Need an invoice or a PO? Talk to us

Free covers 3 projects and 250 activities per project · every paid tier is unlimited on both · paid plans are activated once the gateway confirms your payment, run for one year and return to Free on their own when the year ends · to stop a paid plan sooner, email doxaedoffice@gmail.com.


// Full breakdown

Compare all features

FeatureFreeBasicStandardProPremium
Teacher limit253060100150
Project limit3UnlimitedUnlimitedUnlimitedUnlimited
Activity limit (per project)250UnlimitedUnlimitedUnlimitedUnlimited
Auto-generation & manual editing
Break duties 30-day trial
Proxy / substitute cover 30-day trial 30-day trial
Timetable analytics 30-day trial
Public sharing links (timetable & duty roster) 30-day trial
Role-based sharing (invite accounts as viewer/editor) 30-day trial 30-day trial
Change history (undo after a reload) 30-day trial 30-day trial
Term calendar (holidays, exams, events) & term totals 30-day trial 30-day trial
AI school builder
Exam & test duty (invigilation roster) 30-day trial 30-day trial 30-day trial

30-day trial = free for your first 30 days after you create your account, then it needs an upgrade · nothing you made during the trial is deleted


// Questions & answers

Frequently asked

Plans and billing, plus how Doxaed handles the scheduling situations real schools ask about, and where to find each feature.

Plans & billing

Yes — upgrading is self-service, stopping is not. An upgrade takes effect as soon as your payment is confirmed by the gateway — usually seconds, occasionally a minute if your bank or UPI app is slow; you can close the page while it settles, and your plan is granted either way. There is no button that moves a paid plan down to Free, because that would cancel it and throw away the rest of the year you have already paid for: to cancel, email doxaedoffice@gmail.com from the address on the account and we will stop the renewal, leave your plan running to its expiry date and tell you where you stand on a refund — the Cancellation & Refunds policy sets out the rules. Paid plans run for one year from purchase or renewal; when the year ends your account reverts to Free by itself until you renew — your teachers, projects and generated timetables all stay. Enforcement covers your teacher count, public sharing links, proxy cover, the term calendar and role-based sharing — public timetable and duty roster links need Basic or above, while proxy cover, calendar entries, Analytics term totals and inviting other accounts to a project need Standard or above. Downgrades never break what you already made: existing public links keep working (you just can’t create or rotate them), collaborators you added keep their access, and proxy cover you already arranged stays readable, printable and exportable — you just can’t record new absences or assign new cover until you upgrade again.

Every new account gets its first 30 days with the paid features its plan does not include switched on at no cost — the term calendar and term totals, proxy / substitute cover, timetable analytics, break duties, exam & test duty, public sharing links and role-based sharing. The one exception is the AI school builder, which is never part of the trial and needs Pro or Premium from the start. There is one trial per account and it is not tied to a plan: the clock starts the day you create the account and runs 30 days, so changing plan neither restarts it nor starts a second one, and a tier that already owns a feature simply keeps it. Pro and Premium include everything the trial lends, so there is nothing to lend them. No card, nothing to start — the app tells you what is included and the date it runs out. When the 30 days are up those features lock: you cannot create anything new with them, the calendar stops being shareable or viewable, analytics stops being shown at all, and break duties, proxy cover and the exam duty roster switch to read-only — you keep the history you built and can still print and export it, but no new assignment or change. Sharing follows the same rule as a downgrade: links you already handed out keep working and people you already invited keep their access, you just cannot create or rotate a link or invite anyone new. Nothing is deleted: upgrade at any time and it is all there again, including the analytics that went quiet.

No setup or hidden fees on any plan. You only pay the listed annual subscription.

Each teacher you add to a project counts once. The teacher cap (25 / 30 / 60 / 100 / 150) scales with your plan. Free also caps you at 3 projects and 250 activities per project — every paid tier is unlimited on both. Caps apply when you ADD something: if you already hold more than a cap allows (say your paid year ended), nothing is deleted and everything stays listed and editable — you just cannot create more until you upgrade. Break duties, analytics and public sharing links are included from Basic up, and proxy cover, the term calendar with its term totals and role-based sharing from Standard up.

Doxaed is local-first: your data lives in your own PostgreSQL database, isolated per school.

No. The Free plan needs no card at all, and the 30-day trial starts on its own the day you create your account — there is nothing to enter and nothing to cancel. Payment details are only needed when you buy a paid plan, and they are entered on the gateway's own secure checkout: we never see or store your card, and we never charge a plan you did not buy.

Combined & shared lessons

Create the lesson in each class in Build by class: same teacher, same subject, or even different display labels per class. Then link the lessons with a hard Same start rule so the engine places them as one block, and the teacher is counted for one period rather than several. For bulk setup, the activities CSV import has a weld_group column: rows sharing a token weld automatically. You can also pin the welded block to a fixed day and period from the Same-start rules list.

Where: Build → Build by class; Rules → Same start

Add the second teacher as a co-teacher on the activity in Build by class. Both teachers appear on the lesson, both must be free in that slot, and the period shows on each teacher’s personal sheet.

Where: Build → Build by class → the lesson’s teachers field

Give the option subjects the same elective group in Build → Subjects. Members of an elective group are allowed to share the class’s period and band together automatically.

Where: Build → Subjects → elective group

Rules & conditions

In the Workload limits rule, set class max gaps to 0 for compact class days; there is a teacher max gaps cap as well. Both can run as hard rules or as weighted soft rules.

Where: Rules → Workload limits

“Different days” is a hard rule by default, so a subject’s sessions land on different days without any setup. For finer control, use the Spacing rule (minimum days between sessions) and per-day period caps. Block lessons that must be split get a min gap within the day.

Where: Rules → Spacing; Build by class per-lesson options

Set the lesson’s duration in Build by class. A duration of 2 or 3 makes it a block, and the engine finds conflict-free consecutive slots for it. Alternating-week blocks and welded blocks are supported too.

Where: Build → Build by class → periods/duration

Use Subject periods to keep a whole subject in the periods you choose (e.g. mornings only), as a hard or soft rule. For one-off conditions on specific lessons, use Pinned times and Forbidden times.

Where: Rules → Subject periods, Pinned times / Forbidden times

Add rooms with capacity and building in Build → Rooms & places. Mark which subjects prefer a room via its Subjects column, or set preferred rooms on individual lessons. The engine books rooms clash-free. Leave a lesson on “Any” and space is simply ignored for it.

Where: Build → Rooms & places; Rules → Rooms

People & availability

Mark everything outside their windows as unavailable in the Availability rule, then cap their max periods per day and max days. The engine schedules them only inside those windows. If their lessons must sit at exact fixed slots, pin them with Pinned times or Same-start pins. If they join mid-term after the timetable is chosen, use Handover on the Timetable page to hand selected lessons over, taking over fully or sharing as co-teaching, without regenerating.

Where: Rules → Availability; Rules → Pinned times; Timetable → Handover

Use Handover. Pick the lessons they should take from the current timetable and choose take over (they become each lesson’s main teacher; any existing co-teachers stay) or co-teach (they’re added alongside the current teacher). Nothing is regenerated — every lesson keeps its slot, class and room. The check is all-or-nothing: if any chosen lesson would clash with the new teacher’s availability, existing lessons or workload caps, nothing is applied and each refused lesson comes back with its reason. One thing to know: the handover is written into the underlying plan — so it survives a future regeneration — only for activities whose every lesson you included; a partly-handed-over activity keeps its original teacher on regeneration, and the result flags these.

Where: Timetable → the ⋯ actions menu → Handover…

Same tools: mark their admin slots as unavailable in Availability and set daily caps in Workload limits. The engine never books them there, so their admin periods stay free, guaranteed.

Where: Rules → Availability + Rules → Workload limits

Assign each class its class teacher in Build → Class, then add a Class teacher periods rule choosing the reserved period or periods. In those periods the class can only be taught by its own class teacher, and one rule can apply to every class at once.

Where: Rules → Class teacher periods

Each teacher gets a per-teacher unavailable grid in the Availability rule, plus max days per week, max and min periods per day, max consecutive periods, and min rest between days in Workload limits. Break-duty supervision is a separate roster overlay that never collides with lessons, and fixed commitments like assembly go under Class teacher duties.

Where: Rules → Availability & Workload limits; Build → Duties

Generation, conflicts & day-to-day

Doxaed doesn’t detect clashes after the fact: the engine cannot produce them. Teacher, class and room double-bookings are impossible by construction. Before generating, capacity checks explain anything infeasible in plain language; after generating, a conflicts panel lists anything that couldn’t be placed and why. Every manual edit (move, swap or teacher change) is validated live and rejected with a reason if it would clash.

Where: Timetable → generate & conflicts panel

That’s the Proxy module, included on Standard, Pro and Premium. Mark the absence with a configurable leave type and it suggests substitutes ranked by a fairness ledger (proxies owed vs taken), who is actually free, workload caps, and a preference for teachers who already teach that class, and you can edit anything before saving. It includes history, per-teacher ledgers with opening balances, CSV/PDF export, and a free-teachers-by-period view.

Where: Proxy

You mark who is out — a leave type per teacher, for the whole day or specific periods — and every lesson left uncovered gets ranked substitute suggestions, driven by the fairness ledger (proxies owed vs taken), who is actually free, workload caps and a preference for teachers who already teach that class. Edit any pick, then save the cover for that date. A leave type can be marked as not counted as leave — the teacher is present but can’t take the lesson (exam duty, a meeting): cover is arranged and nothing is added to their leave. Because the roster is published to staff, a save that fails validation is blocked outright unless you force it; soft cap overruns only warn. Around the day itself: Free teachers shows who is free each period, History lists saved cover and absences with a date range and per-teacher absence detail, and the Ledger tracks each teacher’s owed vs taken, including opening balances carried over from before you started recording in the app. One limit: the CSV/PDF exports narrow only to an exact single date — a wider range exports the full history. Arranging cover needs Standard or above; if you drop to a lower plan, everything you already arranged stays readable, printable and exportable — you just can’t record new absences or assign new cover.

Where: Proxy → Assign, Free teachers, History, Ledger

Move and swap lessons on the grid with live validation, or duplicate a timetable version and edit the copy safely, keeping the original active until you’re ready.

Where: Timetable → edit, Duplicate

The Schedule page’s calendar entries handle holidays, exams with subject and time schedules, tests, activities, staff-only days and events, per class if needed. Analytics shows term totals, and there’s a public shareable calendar link. The term calendar is included on Standard, Pro and Premium.

Where: Schedule → Calendar entries; Analytics → Term totals

Ready to transform your scheduling?

Generate conflict-free timetables in seconds. Start on the Free plan, upgrade whenever you grow.