Recued
Menu
← Back to recipes

Grade DeepTutor answers

by recued-core v10 40 views

Use “Grade DeepTutor answers” in Recued. Scheduled class batch. It uses the connections and settings you choose when you run it.

Complete workflow

DeepTutor Records 9 pinned recipes

Use DeepTutor Records in Recued for tutoring, student and assignment record-keeping. It stores students, assessments, answers, artifacts and scorecards, and includes 7 ready-to-run workflows that enrol students, send assessments, capture answers and grade them. Paid students arrive through any Seller provider lane (Stripe, Paddle, Lemon Squeezy). It needs the DeepTutor pack for question generation. It runs locally on your machine. Actions that change data use Recued's approval controls.

You are viewing one recipe in this workflow. Installing it opens the complete pack so its other recipes and background automations arrive together.

Use “Grade DeepTutor answers” in Recued. Scheduled class batch. It uses the connections and settings you choose when you run it.

pack:deeptutor-daily-masterydeeptutorgradingassignment
by recued-core pinned v10

Use “Enroll free DeepTutor student” in Recued. Exact-form enrollment template for a free class.

pack:deeptutor-daily-masteryform-response-templatestudentenrollment
by recued-core pinned v7

Use “Register paid DeepTutor student” in Recued. It turns one complete Seller order into a class roster record.

pack:deeptutor-daily-masterystudentenrollmentpaid
by recued-core pinned v7

Use “Send DeepTutor assignment or exam” in Recued. Scheduled class dish. It uses the connections and settings you choose when you run it.

pack:deeptutor-daily-masterydeeptutorassignmentexam
by recued-core pinned v10
Capture DeepTutor answer
Background automation

Use “Capture DeepTutor answer” in Recued. It runs on its own when a student emails their answers back, and files that reply as a pending answer so the grading workflow can score it on the next run.

pack:deeptutor-daily-masterydeeptutorstudentanswer
by recued-core pinned v8

Use “List DeepTutor assignments and exams” in Recued. It provides a read-only class index over the DeepTutor pack's own assessment records.

pack:deeptutor-daily-masterydeeptutorassignmentexam
by recued-core pinned v4
Show all 9 recipes

Use “View DeepTutor assessment” in Recued. It provides a read-only exact detail for one DeepTutor assignment or exam.

pack:deeptutor-daily-masterydeeptutorassignmentexam
by recued-core pinned v3

Use “View DeepTutor scorecards” in Recued. Lists the derived assignment and exam scorecards the DeepTutor pack keeps in its own records. Supply one Seller customer id for that student's rows, or leave it blank for the owner-wide scorecard list.

pack:deeptutor-daily-masterydeeptutorscorecardstudent
by recued-core pinned v3
Require DeepTutor records runtime
Background automation

Use “Require DeepTutor records runtime” in Recued. It confirms this server can store the class records the other DeepTutor workflows depend on, and stops with a clear message when it cannot.

by recued-core pinned v1
View pack details, dependencies, and permissions →

Scheduled grading

Save one clone per Seller tier/class and assessment namespace. The answer batch is clamped to 1..10, but assessment question_count itself has no authored ceiling. Before any model call, each compact answer manifest drives exact file reads: Recued decodes, hashes, parses, and identity-checks both the student submission and its assessment artifact. One foreach op-step grades each verified multi-question submission as a whole.

The grader must answer exactly CORRECT|feedback, PARTIAL|feedback, or INCORRECT|feedback; those map to 100, 50, and 0. Feedback is bounded to 1,000 characters; it is stored in the answer record’s own long-text slot, not inline in a key-value envelope. Malformed output becomes needs_review with a null score and is not emailed. DeepTutor chat is not used for grading because its v1.5.5 general chat capability mounts internal tools.

Crash posture is unchanged in shape and now rides the record’s own protected revision: pending -> graded_pending_delivery before mail -> graded_delivered after mail, each update asserting the revision it read. Scorecards are recomputed only from graded_delivered answers, one scorecard record per (student, namespace). Records are pack-owned (D-221), so every row also carries the pack version it conforms to.

What the run report counts

Every batched step reports what LANDED, not what was attempted. A rejected write inside a batch is a per-item failure — the run itself still reports success — so Scorecards written counts only the writes the store accepted, Scorecard write failures counts the rest, and the scorecard table lists the rows that actually persisted. When the two disagree, the difference is real: the run did less than it set out to do.

Because this dish runs on a schedule, nobody is reading that card. Notify me when a scheduled run fails partway (on by default) sends one notification when a feedback email or a scorecard write is rejected. Nothing is lost either way — answers whose feedback failed stay at revision 1 and are retried next run, and rejected scorecards are recomputed from delivered rows next run — but without the notification the shortfall is invisible until someone opens the dish.

How it works 145 steps

Inspect the data fetches, transforms, gates, and output this recipe runs.

Process (145 steps)
■ class_key_value trim
Trim whitespace from setting class key
■ class_key_bounded_value truncate
Truncate class key value to a max length
■ class_key_bounded compare
Check if class key value equals class key bounded value
■ sender_mail default
Apply default
■ batch_limit_number to_number
Convert setting batch limit to a number
■ batch_limit_value clamp
Clamp batch limit number between 1 and 10
■ inputs_valid all
Check if all conditions are true
⚠ inputs_guard guard
Stop if inputs valid equals
◆ answer_rows recued-core.deeptutor-records.answer.search
Search answer on deeptutor records
■ pending_rows filter
Filter by condition
■ pending_count count
Count items in pending rows
■ pending_batch slice
Take a subset of
■ batch_with_submission_id map
Extract submission_artifact_ref from each item
■ batch_with_artifact_ids map
Extract assessment_artifact_ref from each item
◆ submission_artifact_gets recued-core.deeptutor-records.artifact.get
Get artifact on deeptutor records
■ submission_artifact_gets_ok filter
Filter by condition
■ submission_artifact_gets_failed filter
Filter by condition
■ submission_artifact_failed_count count
Count items in submission artifact gets failed
■ submission_sources map
Extract from each item
◆ submission_reads core.storage.file.read
Read storage file
■ successful_submission_reads filter
Filter by condition
■ submission_reads_failed filter
Filter by condition
■ submission_read_failed_count count
Count items in submission reads failed
■ submission_texts decode_base64
Apply decode_base64
■ submission_text_rows map
Extract from each item
■ submission_hashes sha256
Apply sha256
■ submission_hash_rows map
Extract from each item
■ submission_parses json_parse
Apply json_parse
■ submission_rows map
Extract from each item
■ submission_validity all
Check if all conditions are true
■ valid_submission_envelopes filter
Filter by condition
■ valid_submission_rows map
Extract from each item
◆ assessment_artifact_gets recued-core.deeptutor-records.artifact.get
Get artifact on deeptutor records
■ assessment_artifact_gets_ok filter
Filter by condition
■ assessment_artifact_gets_failed filter
Filter by condition
■ assessment_artifact_failed_count count
Count items in assessment artifact gets failed
■ assessment_sources map
Extract from each item
◆ assessment_reads core.storage.file.read
Read storage file
■ successful_assessment_reads filter
Filter by condition
■ assessment_reads_failed filter
Filter by condition
■ assessment_read_failed_count count
Count items in assessment reads failed
■ assessment_texts decode_base64
Apply decode_base64
■ assessment_text_rows map
Extract from each item
■ assessment_hashes sha256
Apply sha256
■ assessment_hash_rows map
Extract from each item
■ assessment_parses json_parse
Apply json_parse
■ assessment_rows map
Extract from each item
■ assessment_question_counts count
Count items in item assessment questions
■ assessment_count_rows map
Extract from each item
■ assessment_validity all
Check if all conditions are true
■ valid_assessment_envelopes filter
Filter by condition
■ grading_sources map
Extract from each item
■ grading_contexts map
Extract from each item
■ grading_requests_bounded default
Apply default
■ grading_packets map
Extract from each item
✦ grade_calls core.ai.prompt
AI generates a response from a custom prompt
■ successful_grade_calls filter
Filter by condition
■ grade_calls_failed filter
Filter by condition
■ grade_call_failed_count count
Count items in grade calls failed
■ grade_rows map
Extract from each item
■ responses_trimmed trim
Trim whitespace from item raw response
■ response_parts split
Split item result into parts
■ protocol_rows map
Extract from each item
■ part_counts count
Count items in item parts
■ count_rows map
Extract from each item
■ feedback_trimmed trim
Trim whitespace from item feedback raw
■ feedback_bounded truncate
Truncate item result to a max length
■ feedback_rows map
Extract from each item
■ verdicts_trimmed trim
Trim whitespace from item verdict raw
■ verdicts_upper uppercase
Convert item result to uppercase
■ normalized_rows map
Extract from each item
■ verdict_statuses switch
Map item verdict to one of: CORRECT, PARTIAL, INCORRECT
■ status_rows map
Extract from each item
■ protocol_validity all
Check if all conditions are true
■ grade_decisions map
Extract from each item
■ decision_keys template
Generate text from a template
■ decision_rows map
Extract from each item
■ grade_scores switch
Map item decision key to one of: true:CORRECT, true:PARTIAL, true:INCORRECT
■ score_rows map
Extract from each item
■ answer_states switch
Map item decision key to one of: true:CORRECT, true:PARTIAL, true:INCORRECT
■ final_rows map
Extract from each item
■ graded_at date_add
Add 0 seconds to
■ graded_at_ms date_parse
Parse graded at as a date
■ graded_value_envelopes merge
Combine objects together
■ graded_values filter
Filter by condition
■ graded_value_sizes map
Extract result from each item
■ graded_values_within_limit filter
Filter by condition
■ graded_value_count count
Count items in graded values
■ graded_value_within_limit_count count
Count items in graded values within limit
■ graded_values_size_valid compare
Check if graded value within limit count equals graded value count
⚠ graded_values_size_guard guard
Stop if graded values size valid equals
◆ grade_cas recued-core.deeptutor-records.answer.update
Update answer on deeptutor records
■ grade_cas_success filter
Filter by condition
■ grade_cas_failed filter
Filter by condition
■ grade_failed_count count
Count items in grade cas failed
■ grade_persisted_count count
Count items in grade cas success
■ needs_review_rows filter
Filter by condition
■ needs_review_count count
Count items in needs review rows
◆ delivery_rows recued-core.deeptutor-records.answer.search
Search answer on deeptutor records
■ awaiting_delivery_rows filter
Filter by condition
■ delivery_batch slice
Take a subset of
■ delivery_batch_identified map
Extract assessment_ref from each item
■ delivery_capacity_envelopes merge
Combine objects together
■ delivery_capacity_values filter
Filter by condition
■ delivery_capacity_sizes map
Extract result from each item
■ delivery_capacity_within_limit filter
Filter by condition
■ delivery_batch_count count
Count items in delivery batch
■ delivery_capacity_within_limit_count count
Count items in delivery capacity within limit
■ delivery_capacity_valid compare
Check if delivery capacity within limit count equals delivery batch count
⚠ delivery_capacity_guard guard
Stop if delivery capacity valid equals
◆ feedback_mail core.mail.send
Send mail
■ feedback_mail_success filter
Filter by condition
■ feedback_mail_failed filter
Filter by condition
■ feedback_mail_failed_count count
Count items in feedback mail failed
■ delivered_value_envelopes merge
Combine objects together
■ delivered_values filter
Filter by condition
■ delivered_value_sizes map
Extract result from each item
■ delivered_values_within_limit filter
Filter by condition
■ delivered_value_count count
Count items in delivered values
■ delivered_value_within_limit_count count
Count items in delivered values within limit
■ delivered_values_size_valid compare
Check if delivered value within limit count equals delivered value count
⚠ delivered_values_size_guard guard
Stop if delivered values size valid equals
◆ delivery_cas recued-core.deeptutor-records.answer.update
Update answer on deeptutor records
■ delivery_cas_success filter
Filter by condition
■ delivery_cas_failed filter
Filter by condition
■ delivery_failed_count count
Count items in delivery cas failed
■ delivered_count count
Count items in delivery cas success
◆ score_answer_rows recued-core.deeptutor-records.answer.search
Search answer on deeptutor records
■ delivered_score_rows filter
Filter by condition
■ score_groups group_by
Group by customer_id
■ scorecard_id_seeds json_stringify
Apply json_stringify
■ scorecard_ids sha256
Apply sha256
■ scorecard_rows map
Extract from each item
◆ scorecard_writes recued-core.deeptutor-records.scorecard.upsert
Upsert scorecard on deeptutor records
■ scorecard_write_results default
Apply default
■ scorecard_write_success filter
Filter by condition
■ scorecard_write_failed filter
Filter by condition
■ scorecard_attempted_count count
Count items in scorecard rows
■ scorecard_written_count count
Count items in scorecard write success
■ scorecard_failed_count count
Count items in scorecard write failed
■ scorecard_table to_table
Format results as a data table
■ has_run_failures any
Check if any of the conditions are true
■ should_notify all
Check if all conditions are true
◆ notify core.notification.send
Send notification
skip: step.should_notify not_equal true
■ summary to_summary
Format results as a summary card
▼
Output
summary summary
table scorecard_table
Settings 6 configurable

Configurable at install. Defaults shown — change them anytime in Recued.

class key setting = [object Object]
batch limit setting = 5
assessment kind setting = assignment
notify channels setting = [object Object]
notify on failure setting = true
sender mail instance setting =

Uses (8 operations)

Pack operation Search answer on deeptutor records recued-core.deeptutor-records.answer.search
Pack operation Get artifact on deeptutor records recued-core.deeptutor-records.artifact.get
Files Read storage file core.storage.file.read
AI models AI generates a response from a custom prompt core.ai.prompt
Pack operation Update answer on deeptutor records recued-core.deeptutor-records.answer.update
Mail Send mail core.mail.send
Pack operation Upsert scorecard on deeptutor records recued-core.deeptutor-records.scorecard.upsert
Notifications Send notification core.notification.send

Trust & control

What installing this recipe would let it do. Recued grants these permissions at install — review them there before approving.

Permissions it requires

Mail sendSend notifications
Declared by the recipe — Recued grants these at install, where you review them before approving.

What it's allowed to do

Write Pack DeepTutor Records external change
Read: answer.search · No approvalRead: artifact.get · No approvalWrite: answer.update · No approvalWrite: scorecard.upsert · No approval
Read Files core.storage.file.read read-only
Read AI models core.ai.prompt read-only
Write Mail core.mail.send external change
Read Notifications core.notification.send external change

Data it touches

SurfacesFilesAI modelsMailNotifications

About

Tags

pack:deeptutor-daily-masterydeeptutorgradingassignmentexamscheduledclass-batchscorecardemailfile-artifactcrash-saferecords

Details

145 steps 6 configurable settings recipe_id: grade-deeptutor-answers