Recued
Menu
← Back to recipes

Grade DeepTutor answers

by recued-core v7 10 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 education, tutoring, student and assignment record-keeping. It stores students, assessments, answers, artifacts and scorecards, and includes 9 ready-to-run workflows that enrol students, send assessments, capture answers and grade them. 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 v7

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 v4

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 v4

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 v7
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 v5

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 ?
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 ?
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 ?
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 ?
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 ?
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 ?
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 ?
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 ?
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 ?
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 ?
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 ?
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 ?
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 ?
skip: step.should_notify not_equal true
summary to_summary
Format results as a summary card
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 = in_app
notify on failure setting = true
sender mail instance setting =

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.

About

Tags

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

Details

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