4 ready-to-build workflows

AI agent workflows for Teachers, tutors & coaching centres

Give back the evenings lost to marking sixty identical worksheets, retyping question papers and returning parent calls — with every mark, every parent message and every fee receipt approved by you before it goes out.

Each recipe below is expressed only in VegaDūta's real workflow building blocks — Trigger, Agent, Knowledge, Condition, Approval, Output, Tool (MCP), Voice, Device, Loop, Code and Parallel — so it maps 1:1 to something you can assemble in the Workflow designer. Consequential actions always pass a human Approval step.

1. Sixty identical worksheets, marked in one pass — you approve every mark

You set the same worksheet to a batch of sixty. Now sixty photographed or scanned sheets sit in a WhatsApp thread, and you're marking the same five questions sixty times over, by hand, at 10pm — while the actually useful information (which question the whole batch got wrong) never gets extracted because you're too deep in the marking to see the pattern.

Trigger: WhatsApp / Email / Webhook (submissions come in)

How the workflow runs

  1. Trigger

    Submissions arrive. A WhatsApp, Email or Webhook trigger collects the scans/photos. An LMS submission feed has no first-party connector — it comes in as a Webhook or is pulled via a Tool (MCP) node.

  2. Knowledge

    Load YOUR marking scheme. A Knowledge node holds the answer key and mark breakdown you wrote. Every mark traces back to your scheme — the agent has no independent opinion about what the right answer is.

  3. Loop

    One pass per student. A Loop node runs a cheap marking agent once per submission — transcribe the working, compare against your scheme, award provisional marks per question with the reason.

  4. Condition

    Unclear or borderline?. A Condition node pulls out the ones that need your eye: unreadable handwriting, an unconventional-but-possibly-valid method, an answer that's right by a route your scheme doesn't cover. These go to the top of your review queue rather than being force-fitted to the key.

  5. Approval

    You approve the marks. An Approval node holds the entire mark sheet. Nothing is published, recorded or shown to a student or parent until you've reviewed and signed off — you own the assessment, always.

  6. Agent

    The pattern you couldn't see. After approval, a second agent summarises the batch: which question the batch failed, the common wrong method, and the three students who need a different explanation rather than more practice.

Channels & connectors

  • WhatsApp
  • Email
  • Webhook
  • Knowledge base
  • Approval / HITL
  • Tool (MCP → LMS / school ERP)

Outcome

A batch of sixty comes back as a provisional mark sheet with per-question reasons, a short queue of genuinely ambiguous scripts flagged for you, and a batch-level diagnosis of what to re-teach — all held behind your approval.

Why it helps

The mechanism is a per-student loop against your own marking scheme plus a reduce step. Marking the same five questions sixty times is mechanical comparison, which is what a loop is for; spotting that forty of them failed question 3 the same way is aggregation, which nobody can do while marking sequentially by hand. Your judgement stays in the loop exactly where it matters — the ambiguous scripts and the final sign-off.

Build spec

2 agents1 marking agent (runs once per submission via the Loop node) + 1 batch-analysis agent (runs once, after approval). The ambiguity gate and the mark approval are workflow nodes. · Pattern: Loop (mark per student) → Condition (ambiguity gate) → teacher Approval → reduce (batch diagnosis)

System prompt (paste-ready)

You are a marking assistant for ONE teacher. Mark ONE submission strictly against the marking scheme in Knowledge — that scheme is the only authority on what is correct. Return {student_ref, per_question:[{q, awarded, max, reason, evidence_quote}], total, flags[]}. Award marks only where the scheme supports it. If the handwriting is unreadable, if the method is valid but not covered by the scheme, or if the answer is right by an unlisted route, do NOT force a mark — set flags and route it to the teacher. Every mark you produce is PROVISIONAL until the teacher approves. Never message a student or parent.

Agent roles & model tiers

  • Marker (per submission) Economy tier — it runs once per student in the batch, so with sixty submissions this single choice is the whole cost of the recipe

    Compare one script against the teacher's scheme. Per-question marks with a reason and a quoted piece of the student's own working as evidence. Flag rather than guess on unreadable or unconventional work.
  • Batch analyst (once) Standard tier — needs to spot the pattern across the whole batch

    From the approved mark sheet, report: the questions the batch failed, the specific common wrong method, and the students whose errors differ from the batch pattern and need individual attention. Use only the marked data — no speculation about ability or effort.

MCP connectors

  • School LMS / ERP / gradebook — via a Tool (MCP) node for the mark write-back, or inbound via Webhook for submissions; no first-party connector exists for these
  • WhatsApp / Email — submission collection

Built-in tools

  • knowledge_search (YOUR answer key and mark breakdown)
  • document extraction / OCR (photographed and scanned scripts)
  • user-defined tool `mark_flag` (SpEL): input.ocrConfidence < 0.7 || input.methodMatched == false ? 'TEACHER_REVIEW' : 'AUTO_PROVISIONAL' — you set the exact bar at which a script must reach your eyes, and change it mid-term without a developer or a redeploy

Guardrails

  • The teacher owns the assessment: every mark is PROVISIONAL until the Approval node. Nothing is published to a student, a parent or a gradebook without the teacher's sign-off
  • Marks are awarded only from the teacher's own marking scheme in Knowledge — the agent has no independent view of the correct answer
  • Ambiguity is escalated, never resolved by guessing: unreadable handwriting, valid-but-unlisted methods and right-by-another-route answers all route to the teacher
  • Every awarded mark carries a reason and a quote from the student's own working, so a challenged mark can be audited
  • The agent never messages a student or a parent directly — all outbound communication is a separate, approved step

Cost strategy

The marker runs N times — once per student — so for a batch of sixty it must be on the economy tier; that is the difference between a workflow a tutor can run on every worksheet and one they run twice and abandon. The single batch-analysis call is the one place the standard tier earns its keep. Run the marking Loop in Parallel batches for wall-clock speed: same per-script cost, whole batch back in minutes. No premium tier is needed anywhere in this recipe.

Output & delivery

A Loop node marks every submission with an economy-tier agent against your scheme → the Condition node pulls ambiguous scripts into a short review queue → the full mark sheet waits at the Approval node for your sign-off → after approval a standard-tier agent reports which question the batch failed and which students need individual attention → optionally a Tool (MCP) node writes the approved marks to the school gradebook.

2. Parent progress updates that write themselves — and wait for your approval

Parents phone during class hours asking how their child is doing. You give an off-the-cuff answer from memory, promise to send something in writing, and then spend Sunday evening writing forty near-identical WhatsApp messages from a register and a stack of marked papers — or you don't, and the calls start again on Monday.

Trigger: Scheduled (monthly/term) + Webhook (attendance & marks)

How the workflow runs

  1. Trigger

    Scheduled update cycle. A scheduled trigger opens the update run. Attendance and marks come from your own records or from a school ERP via an inbound Webhook / a Tool (MCP) node — labelled, because no first-party ERP connector exists.

  2. Loop

    One update per student. A Loop node runs a cheap agent per student, assembling the update from that student's approved marks, attendance and your own logged remarks — nothing else.

  3. Code

    Your grade bands, your wording. A user-defined tool node applies YOUR grade-band formula to each student's numbers, so 'needs support / on track / strong' means exactly what you decided it means, consistently across all forty.

  4. Agent

    Draft in the parent's language. An Agent node writes the message in the language the parent actually reads — Sarvam handles the Indian-language drafting — keeping the tone factual and specific: what improved, what didn't, what to do at home.

  5. Approval

    You read every one before it sends. An Approval node holds ALL forty drafts. You skim, edit the two that need a human touch, and release. Nothing about a child reaches a parent without a teacher approving that exact text.

  6. Output

    Sent, and available by voice. An Output node sends the approved message on WhatsApp or SMS. For parents who'd rather listen than read, a Voice node reads the same approved text aloud via ElevenLabs in their language — a real accessibility win for parents who don't read comfortably.

Channels & connectors

  • WhatsApp
  • SMS / Twilio
  • Voice / Call
  • Sarvam (Indian languages)
  • ElevenLabs (voice)
  • Approval / HITL
  • Tool (MCP → school ERP)

Outcome

Every parent gets a specific, factual, written update in their own language on a predictable schedule — each one read and approved by you first — and the interrupting phone calls have somewhere to point.

Why it helps

The mechanism is assembly from records you already keep, plus a consistent grade-band formula, plus batched approval. Writing forty updates by hand is forty acts of retrieval and rephrasing; approving forty assembled drafts is one review session. Consistency is the second gain — 'needs support' means the same thing for student 4 and student 39 because a formula, not end-of-evening fatigue, decides it.

Build spec

2 agents1 per-student drafting agent (via the Loop node) + 1 supervisor agent that checks the batch for tone and for anything that shouldn't go out. The grade banding is a deterministic user-defined tool. · Pattern: Loop (draft per student) → SpEL grade-band formatter → supervisor consistency check → single batched teacher Approval

System prompt (paste-ready)

You are drafting a progress update for ONE student's parent, for the teacher to approve. Use ONLY: approved marks, attendance, and the teacher's own logged remarks for this student. Structure: what improved (with the specific evidence), what still needs work (specific, one or two things), one concrete thing to do at home. Write in the parent's preferred language. Never compare this child to another child, never rank, never speculate about ability, effort, home circumstances or diagnosis, and never state a mark that has not been through the teacher's approval. If the record is too thin to say anything specific, say that plainly and suggest the teacher add a remark — do not pad. This is a DRAFT; it is sent only after the teacher approves it.

Agent roles & model tiers

  • Update drafter (per student) Economy tier — it runs once per student across the whole batch every cycle, which is exactly the pattern that has to be cheap

    Assemble one parent update from approved marks, attendance and teacher remarks only. Specific and factual. No comparisons, no speculation, no unapproved marks. Parent's own language.
  • Batch supervisor (once) Standard tier — one pass over all drafts before they reach the teacher

    Review the batch of drafts: flag any comparison between students, any speculation about ability or home life, any mark not in the approved set, and any message so generic it says nothing. Return a flagged list for the teacher's review queue — do not rewrite silently.

MCP connectors

  • School ERP / attendance & gradebook system — via a Tool (MCP) node, or inbound via Webhook; no first-party connector exists
  • WhatsApp / SMS — the parent channel
  • Sarvam — drafting in the parent's language; ElevenLabs — spoken delivery of the approved text

Built-in tools

  • knowledge_search (your reporting rubric and the phrasing you want used)
  • http_request (pull attendance and marks from the school system)
  • user-defined tool `grade_band` (SpEL): input.percent >= 75 ? 'Strong' : (input.percent >= 55 ? 'On track' : (input.percent >= 35 ? 'Needs support' : 'Needs urgent attention')) — a sandboxed expression over the tool's JSON input (no method calls, no constructors, no bean or type references, no loops in the grammar): a formatter, not a script. You encode YOUR OWN band boundaries and YOUR OWN wording once, every report card uses them identically, and when your centre changes its bands you edit the expression yourself — no developer, no redeploy

Guardrails

  • MANDATORY APPROVAL: nothing reaches a parent without the teacher approving that exact text at the Approval node — no auto-send path exists in this workflow
  • No mark is ever quoted to a parent unless it has already been through the marking workflow's teacher approval
  • Only that student's own records are used — no comparison with classmates, no ranking, no speculation about ability, effort, home circumstances or any diagnosis
  • A thin record produces an honest 'not enough recorded this month' plus a prompt for the teacher to add a remark, never padded filler
  • Grade bands come from the teacher's own SpEL expression, so the same numbers always produce the same band across the whole batch and across terms

Cost strategy

The drafter runs once per student per cycle, so economy tier is the only sensible choice for a tutor with forty or four hundred students — this is the recipe where tiering decides whether the feature is affordable at all. The `grade_band` SpEL tool is deterministic and free per call, which is a genuine saving over asking a model to apply the bands. Exactly one standard-tier supervisor pass runs over the whole batch. A monthly cycle for forty students is forty economy calls plus one standard call.

Output & delivery

A Loop node drafts one update per student with an economy-tier agent from approved records only → your `grade_band` SpEL formula labels each consistently → a standard-tier supervisor flags comparisons, speculation or empty drafts → ALL drafts wait at the Approval node for your review and edits → an Output node sends the approved text on WhatsApp/SMS, with an ElevenLabs voice version in the parent's language for those who prefer to listen.

3. Question papers built from your blueprint instead of retyped every term

Every term you rebuild the question paper by scrolling old Word files, copy-pasting questions, and manually counting whether the marks add to eighty and whether the chapter weightage matches the blueprint. Then you retype the whole thing again for the retest, because the students who took it have already circulated it.

Trigger: Webhook / manual start ("set a term paper: Physics, 80 marks")

How the workflow runs

  1. Knowledge

    Blueprint + your question bank. A Knowledge node holds the official blueprint (chapter weightage, question-type split, difficulty spread) and your own accumulated question bank and past papers.

  2. Parallel

    Draft each section at once. A Parallel node fans generation across the sections — MCQ, short answer, long answer, numerical — each drafted against its own slice of the blueprint rather than sequentially.

  3. Agent

    Set questions to the blueprint. An Agent node drafts questions that hit the required chapter weightage and difficulty mix, each tagged with chapter, marks and difficulty, and each with a full marking scheme.

  4. Code

    Arithmetic checked by code, not vibes. A Code node verifies the hard constraints deterministically: total marks, per-chapter weightage, question-type counts, difficulty distribution. A model should never be trusted to confirm that a column of marks adds to eighty.

  5. Condition

    Blueprint satisfied?. A Condition node loops back for a targeted regeneration if any constraint is missed — it fixes the specific failing section rather than regenerating the whole paper.

  6. Approval

    You sign off before it's a paper. An Approval node holds the draft paper AND its marking scheme. A question paper is your professional judgement — you review, edit, and approve before it exists as an exam.

Channels & connectors

  • Webhook
  • Email
  • Knowledge base
  • Approval / HITL
  • Tool (MCP → exam-board / LMS question bank)

Outcome

A blueprint-compliant draft paper with a full marking scheme in one pass, with the marks arithmetic and weightage machine-verified — and a fresh variant for the retest without retyping anything.

Why it helps

The mechanism is generation grounded in your own bank plus deterministic constraint checking. The tedious part of paper-setting is not writing questions, it is the bookkeeping — weightage, totals, difficulty spread — which is arithmetic and belongs in a Code node. The variant-for-the-retest problem disappears because generation is cheap once the blueprint is encoded. The paper is still yours: you approve it.

Build spec

2 agents1 section-setting agent (runs in Parallel per section) + 1 reviewer agent that reads the assembled paper as a whole. The constraint arithmetic is a deterministic Code node, not an agent. · Pattern: Parallel section drafting → deterministic Code constraint check → Condition (targeted regeneration) → teacher Approval

System prompt (paste-ready)

You are setting ONE section of a question paper for {{subject}}, {{grade}}, {{board}}. Work strictly within the syllabus and blueprint in Knowledge and draw on the teacher's own question bank for style and standard. Return {questions:[{text, chapter, type, marks, difficulty (EASY|MED|HARD), expected_answer, marking_scheme[]}]}. Hit the chapter weightage and difficulty mix given for THIS section. Never reproduce a question verbatim from a live or recently-used paper — vary the numbers and the framing. Never go outside the syllabus scope. Do not attempt to verify the marks total yourself; the workflow checks the arithmetic deterministically. This is a DRAFT for the teacher to approve.

Agent roles & model tiers

  • Section setter (one per section, in Parallel) Premium tier — this is the one place in the whole pack where a premium model genuinely pays: a badly-set question is a term's worth of unfair marking, and it runs a handful of times per term, not thousands of times a day

    Draft one section to its blueprint slice with a full marking scheme per question. In-syllabus only. No verbatim reuse of a recent paper. Vary numbers and framing.
  • Whole-paper reviewer (once) Standard tier — reads the assembled paper for the things a section-level view can't see

    Read the assembled paper: flag duplicated concepts across sections, ambiguous wording, questions whose marks don't match their demand, and anything outside the syllabus. Report; do not silently rewrite.

MCP connectors

  • Exam-board / LMS question bank — via a Tool (MCP) node, or inbound via Webhook; no first-party connector exists
  • Email — delivering the approved paper and scheme to the teacher

Built-in tools

  • knowledge_search (the blueprint, the syllabus, and your own question bank / past papers)
  • user-defined tool `blueprint_gap` (SpEL): input.chapterMarks < input.requiredMarks ? 'REGENERATE_SECTION' : (input.hardCount > input.hardMax ? 'EASE_MIX' : 'OK') — your own blueprint tolerance rule over the tool's JSON input, so a targeted regeneration is triggered by YOUR standard, editable without a developer or a redeploy

Guardrails

  • The teacher approves before it is a paper: the draft and its marking scheme both wait at the Approval node — there is no path where a generated paper reaches students unreviewed
  • Questions are drawn strictly from the syllabus and blueprint in Knowledge and from the teacher's own bank — never invented outside the prescribed scope
  • No verbatim reuse of a live or recently-circulated paper; numbers and framing are varied for every generated variant
  • Marks totals, chapter weightage and difficulty distribution are verified by a deterministic Code node, never by a model asserting the arithmetic is fine
  • Every question ships with its marking scheme, so the paper and the marking standard are approved together rather than the scheme being improvised later

Cost strategy

This is the deliberate inversion of the rest of the pack. Paper-setting runs a handful of times a term, so premium tier on the section setters is affordable and correct — the quality of a question is high-stakes and long-lived. Parallel sections keep wall-clock time down; the deterministic Code node does the constraint arithmetic for free rather than burning premium tokens re-checking totals; and the whole-paper review is a single standard-tier call. Compare it with the doubt-answering and marking recipes, which run thousands of times and sit on economy for exactly the same reasoning applied in the other direction.

Output & delivery

A Parallel node drafts every section with a premium-tier setter against its blueprint slice → a deterministic Code node verifies totals, weightage and difficulty spread → the Condition node regenerates only the failing section → a standard-tier reviewer reads the assembled paper for duplication and ambiguity → the paper AND its marking scheme wait at the Approval node for the teacher's edits and sign-off, and a fresh variant for the retest is a re-run, not a retype.

4. Tuition fee reminders and UPI collection, with every receipt approved

Fees are tracked in a notebook or a spreadsheet. You send reminders yourself, awkwardly, in the same WhatsApp thread you use to share notes — or you don't send them and carry the arrears. Payments come in by UPI from a phone number you have to match back to a student by hand, and receipts get written out one at a time when a parent asks.

Trigger: Scheduled (fee cycle) + Webhook (payment received)

How the workflow runs

  1. Trigger

    Fee cycle opens. A scheduled trigger starts the cycle against your own fee register (or one pulled from a coaching-centre system via a Tool (MCP) node — labelled, since no first-party connector exists for it).

  2. Loop

    Work out each family's position. A Loop node runs a cheap agent per student: what's due, what's paid, what concession or sibling discount applies, how many cycles overdue.

  3. Code

    Your fee rules, as a formula. A user-defined tool node applies YOUR reminder policy deterministically — how many days before the date, how many follow-ups, when it stops being an automated reminder and becomes a conversation you have yourself.

  4. Approval

    You approve every reminder before it sends. An Approval node holds the reminder batch. Money messages to a parent are relationship-sensitive; you see the list, remove the family you know is having a hard month, and release the rest.

  5. Output

    Reminder with a UPI link. An Output node sends the approved reminder on WhatsApp or SMS with a Razorpay UPI payment link — parents pay from the message rather than asking for account details again.

  6. Approval

    Receipts are approved too. When the Razorpay webhook confirms a payment, the workflow matches it to the student and drafts the receipt — which passes a second Approval before it's issued, because a receipt is a financial record and it has to be right.

Channels & connectors

  • WhatsApp
  • SMS / Twilio
  • Razorpay (UPI)
  • Webhook
  • Approval / HITL
  • Tool (MCP → coaching-centre fee register)

Outcome

Fee reminders go out on a schedule you set, in your wording, with a UPI link — and every reminder and every receipt passes your approval, so the awkward parts stay human and the clerical parts don't stay on your evenings.

Why it helps

The mechanism is a per-student position calculation plus a policy formula plus two approval gates. The reminder-writing and the payment-to-student matching are clerical and repeat every cycle; the decision about which family gets chased this month is not, which is why it sits behind an approval you actually read. Receipts get a second gate because a financial record with the wrong number is worse than no record.

Build spec

2 agents1 per-student fee-position agent (via the Loop node) + 1 payment-matching agent triggered by the Razorpay webhook. The reminder policy is a deterministic user-defined tool; both approvals are workflow nodes. · Pattern: Loop (fee position per student) → SpEL reminder policy → Approval → UPI link; payment webhook → match → second Approval on the receipt

System prompt (paste-ready)

You are a fee-desk assistant for ONE coaching centre. For ONE student, compute the position from the fee register only: {student_ref, due, paid, concession_applied, balance, cycles_overdue, evidence}. Apply concessions and sibling discounts exactly as recorded — never assume one applies. Draft a short, respectful reminder in the parent's language: amount, due date, how to pay. Never threaten, never mention any consequence for the child's attendance or class participation, and never compare families. If the register is ambiguous (an unmatched payment, a conflicting entry), do NOT draft a reminder — flag it for the teacher. Everything you produce is a DRAFT pending approval.

Agent roles & model tiers

  • Fee-position agent (per student) Economy tier — it runs once per student every cycle; a coaching centre with three hundred students is precisely why this cannot be a big model

    Compute one student's fee position from the register only, with evidence. Apply recorded concessions exactly. Draft a short respectful reminder. Flag ambiguity instead of drafting.
  • Payment matcher (per payment webhook) Economy tier — a short, structured matching task per payment

    Match one confirmed Razorpay payment to a student from the amount, reference and payer details. Return {matched: true/false, student_ref, confidence, unmatched_reason}. Never guess a match on low confidence — an unmatched payment goes to the teacher's queue, and the receipt is drafted only for a confident match.

MCP connectors

  • Coaching-centre fee register / accounting sheet — via a Tool (MCP) node, or inbound via Webhook; no first-party connector exists
  • Razorpay — UPI payment links and payment-confirmation webhooks (first-party)
  • WhatsApp / SMS — the reminder channel

Built-in tools

  • knowledge_search (your fee structure, concession policy and the wording you want used)
  • http_request (read the fee register; issue the approved receipt)
  • user-defined tool `reminder_stage` (SpEL): input.daysOverdue > 30 ? 'TEACHER_CALLS' : (input.daysOverdue > 7 ? 'SECOND_REMINDER' : (input.daysUntilDue <= 3 ? 'GENTLE_NUDGE' : 'NONE')) — your own escalation ladder over the tool's JSON input, ending in a human conversation rather than a harder automated message. Change the day counts yourself, mid-term, with no developer and no redeploy

Guardrails

  • MANDATORY APPROVAL, twice: no fee reminder reaches a parent without the teacher approving the batch, and no receipt is issued without a second approval — a receipt is a financial record
  • Amounts, concessions and balances come only from the fee register; an unmatched payment or a conflicting entry is flagged for the teacher, never reconciled by guesswork
  • Reminders are respectful by construction: no threats, no mention of any consequence for the child's attendance or participation, no comparison between families
  • The escalation ladder ends in 'the teacher calls' — the workflow never gets progressively harsher on its own
  • Payments are handled by Razorpay's own first-party flow; the agent never sees or stores card, bank or UPI credentials — it only matches a confirmed payment reference to a student

Cost strategy

Both agents are economy tier by design: one runs per student per cycle, the other per payment, and neither task is more than structured lookup and short drafting. The `reminder_stage` SpEL tool costs nothing per call and replaces what would otherwise be a model deciding escalation — cheaper AND more predictable. There is no standard- or premium-tier work in this recipe at all, which is the right answer for a tutor: the fee desk should be the cheapest thing they run, not a line item that competes with the teaching workflows.

Output & delivery

A Loop node computes each student's fee position with an economy-tier agent → your `reminder_stage` SpEL formula decides who is nudged, who is reminded again and who you call yourself → the whole batch waits at the Approval node for you to prune and release → approved reminders go out on WhatsApp/SMS with a Razorpay UPI link → the payment webhook fires, an economy-tier matcher ties it to a student, and the drafted receipt passes a second Approval before it is issued.

Related industries

Build one of these in minutes

The sandbox gives you a live agent workspace — no account, no card. Or head back to the full catalogue and compare patterns across every industry.