@@ -33,6 +33,7 @@ RETRY_FAILED=false
3333START_FROM=0
3434MAX_RETRIES=2
3535MIN_SCORE=0
36+ MODEL=" " # empty = let claude -p use the Claude Max default
3637
3738usage () {
3839 cat << 'USAGE '
@@ -48,6 +49,9 @@ Options:
4849 --start-from N Start from offer ID N (skip earlier IDs)
4950 --max-retries N Max retry attempts per offer (default: 2)
5051 --min-score N Skip PDF/tracker for offers scoring below N (default: 0 = off)
52+ --model NAME Claude model passed to `claude -p --model` (default:
53+ unset = Claude Max default). Use a cheaper model for
54+ large batches, e.g. `--model claude-sonnet-4-6`.
5155 -h, --help Show this help
5256
5357Files:
@@ -81,6 +85,7 @@ while [[ $# -gt 0 ]]; do
8185 --start-from) START_FROM=" $2 " ; shift 2 ;;
8286 --max-retries) MAX_RETRIES=" $2 " ; shift 2 ;;
8387 --min-score) MIN_SCORE=" $2 " ; shift 2 ;;
88+ --model) MODEL=" $2 " ; shift 2 ;;
8489 -h|--help) usage; exit 0 ;;
8590 * ) echo " Unknown option: $1 " ; usage; exit 1 ;;
8691 esac
@@ -355,13 +360,17 @@ process_offer() {
355360 -e " s|{{ID}}|${esc_id} |g" \
356361 " $PROMPT_FILE " > " $resolved_prompt "
357362
358- # Launch claude -p worker (uses default model from Claude Max subscription)
363+ # Launch claude -p worker.
364+ # Model defaults to the Claude Max subscription default unless --model was
365+ # passed. Building the command in an array keeps quoting safe regardless.
366+ local -a claude_args=(-p --dangerously-skip-permissions)
367+ if [[ -n " $MODEL " ]]; then
368+ claude_args+=(--model " $MODEL " )
369+ fi
370+ claude_args+=(--append-system-prompt-file " $resolved_prompt " " $prompt " )
371+
359372 local exit_code=0
360- claude -p \
361- --dangerously-skip-permissions \
362- --append-system-prompt-file " $resolved_prompt " \
363- " $prompt " \
364- > " $log_file " 2>&1 || exit_code=$?
373+ claude " ${claude_args[@]} " > " $log_file " 2>&1 || exit_code=$?
365374
366375 # Cleanup resolved prompt
367376 rm -f " $resolved_prompt "
0 commit comments