Automating recurring work | Viktor Academy

The morning a report shows up without you lifting a finger is when most people finally get it.

A scheduled task is just standing work you hand Viktor once. He runs it on schedule, every time, online or not, and brings you the result. Viktor calls these scheduled tasks. You may also see the word cron, the technical name for the same thing.

By the end you should know how to

What is a scheduled task?

A task that runs automatically on a schedule you define. Set it once, Viktor handles the rest. Like a recurring calendar event, except instead of reminding you, Viktor actually does it.

Step 1

You describe it

Step 2

Viktor schedules it

Step 3

Runs automatically

Step 4

You get results

Results land where you want them: Slack or Teams, email, or files.

What makes scheduled tasks powerful:

Always on.Runs whether you are online or not, overnight, weekends.

Consistent.Same task, same time, no variation.

Flexible.Anything Viktor can do once, he can do on repeat.

Viktor builds the scheduled task, confirms the schedule, and handles the rest.

The two types of scheduled task

Every scheduled task is one of two kinds, a script cron or an agent cron. Picking the right one is the whole game, and it is mostly about cost.

Script cron

The workhorse

Best for: data syncs, API calls, templated messages, file operations.

Agent cron

The thinker

Best for: written summaries, analysis, content drafting, multi-step decisions.

How to choose:

Ask yourself

Condition Script cron if yes Agent cron if yes
Is the output the same every time? Check a price, sync data, send a fixed message -
Does it need to read and summarize? - Digest a channel, analyze feedback
Can I describe it as "fetch X, send Y"? Pull from an API, post to a channel -
Does it need to write original text? - Draft emails, compose updates
Is it a simple if/then check? If file changed, notify me -
Does it need judgment calls? - Prioritize leads, triage issues

Default to script crons

Most recurring work, syncs, checks, fixed messages, needs no AI at all, so it should cost nothing. Only reach for an agent cron when the task truly needs to read, reason, or write. This one habit is what keeps automation affordable.

Script crons

The free workhorse. If a task does not need to think, make it a script cron and stop worrying about cost entirely.

Real examples. Just describe what you want:

Those four cover an email inbox check, a CRM data sync, a website uptime monitor, and a Google Drive file watcher.

Under the hood

Viktor writes a Python script and schedules it. A pure script with no model call runs no AI, so it costs zero credits. You can run that kind of script cron every minute and never touch your credit balance. The one exception: if a script triggers work that does involve a model, for example handing off to an agent step, that part is not free.

Agent crons

When a task needs to read, write, or decide, you want an agent cron. It spins up a full AI on every run, so each run costs real credits. Two things drive that cost: which model runs, and how often it runs.

AI model

Best for

Relative cost

Model choice matters

Sonnet is the right default for routine digests and summaries. Save Opus for genuinely heavy reasoning and complex writing, since it costs more on every run. Viktor picks the right model for the task, or you can just say "Use the cheaper model for this one."

Here is the daily channel digest landing in a channel:

A few more agent crons people set up:

Condition scripts, the gatekeeper

If "default to script crons" is the first big idea, this is the second: do not let an agent run when there is nothing to do. A condition script is a lightweight, free check that runs before each scheduled task. If it passes, the task runs. If not, it skips that cycle, with nothing spent. A free check decides whether the paid work happens, so an agent never spins up just to tell you there was nothing to report.

Without a condition

The agent cron runs every morning, checks for new feedback, finds nothing, and posts "No new feedback today."

A full paid run, for nothing

With a condition

A free check runs first, sees no new messages, and skips. The agent never spins up.

No agent run, nothing spent

Common conditions:

Condition What it checks Pairs well with
New Slack messages New posts in a channel since last run? Digests, feedback analyzers
New emails Unread emails matching a filter? Email sweeps, lead alerts
File changed A Drive file modified since yesterday? Report generators, data syncs
Business days only Is today Monday to Friday? Any work-hours task
API returned data Did the response contain new records? CRM syncs, form watchers

You do not write these yourself

Just tell Viktor "Only run this if there are new messages in #feedback" and he attaches the condition automatically.

What can you automate?

Almost anything you would hand a new hire as standing work. A sample, with the task type each tends to use:

Not sure which type?

Describe what you want and Viktor recommends the type, writes the code or prompt, and sets the schedule. You do not need to know Python or cron syntax.

Scheduling: frequencies and timing

How often a scheduled task runs decides what it costs. Script crons are free at any frequency. Agent crons spin up a full AI every run, so the more often they fire, the faster they add up. This table is worth a real look.

Frequency Good for Script cost Agent cron, good idea?
Every 15 min Uptime checks, urgent alerts FREE Too expensive for an agent. Use a script.
Hourly Email checks, inbox monitoring FREE Gets expensive fast as an agent.
2x/day Digests, status syncs FREE Fine for an agent if you need it.
1x/day Reports, daily briefs, cleanups FREE The sweet spot for agent crons.
Weekdays only Work reports, team digests FREE Good for work tasks.
1x/week Weekly summaries, newsletters FREE Very cheap.

Do

Don't

Just say it in plain English

"Every weekday at 9 AM Eastern," "Twice a day, morning and evening," or "Every Monday and Thursday at noon." Viktor figures out the cron expression.

Managing your scheduled tasks

Once a scheduled task is running, you stay in control. The lifecycle of any scheduled task looks like this:

  1. Create
  2. Monitor
  3. Adjust
  4. Pause / Delete

What you can do:

Action How Where
View all scheduled tasks See every active and paused task app.viktor.com/settings/tasks
Pause a task "Pause my daily email sweep" or click Pause Chat or dashboard
Resume a task "Resume my daily email sweep" Chat or dashboard
Edit timing "Change my digest to run at 9 AM instead of 7 AM" Chat
Edit the task "Update my weekly report to also include #sales" Chat
Trigger manually "Run my weekly report now" (runs once, immediately) Chat
Delete a task "Delete my daily email sweep" or use the dashboard Chat or dashboard

Cost control and optimization

Scheduled tasks are where credits quietly add up, because they run without you watching. A little discipline here is worth more than anywhere else in Viktor.

Five rules that keep costs in check:

  1. Script first. If it does not need reasoning, make it a script cron. Always free.
  2. Use Sonnet, not Opus. It costs less per run and handles routine digests and reports fine.
  3. Add conditions. Never let an agent cron run with nothing to do. Condition scripts are free.
  4. Reduce frequency. Start at 1x/day. Only increase if you truly need faster turnaround.
  5. Audit monthly. Ask "Audit my scheduled tasks" and Viktor flags the expensive runs.

A real example

One team cut a status report's cost by roughly 14x just by switching from the most powerful model several times a day to a lighter model once a day. Same report, same quality.

Common questions

Do I need to know Python?

No. Describe what you want in plain English and Viktor writes the code.

Do scheduled tasks run when I am offline?

Yes. They run on Viktor's servers on a timer, whether you are online or not.

Can I have multiple scheduled tasks?

Yes, there is no hard limit. Just watch your total usage if you have several agent crons running.

What if a scheduled task fails?

Viktor logs it and notifies you in your chat, then retries on the next run. You can see the history at app.viktor.com/settings/tasks.

Can a scheduled task message people outside my team?

Yes, with an email integration. Viktor asks for approval before sending unless you set it to auto-send.

Can I test a scheduled task before it goes live?

Yes. Say "run it once now" or "trigger it manually" to see the result first.

Will Viktor tell me if a scheduled task costs too much?

He tracks usage per task. Ask "How much is my daily report costing?" any time.

Can I pause without deleting?

Yes. Say "pause my daily digest," then "resume" whenever you want it back.

Troubleshooting

What you see

What you see Likely cause What to do
"My task didn't run" Paused, or the condition script skipped it Check app.viktor.com/settings/tasks and look for "skipped" in the log.
"It ran but sent nothing" Ran but found nothing to report Normal with condition scripts. Check the log to confirm.
"It is running too often" Frequency set too high "Change my task to run once a day instead of hourly."
"The output is wrong" Prompt or script needs adjustment Tell Viktor what was wrong and he updates the task.
"Credits dropping overnight" An agent cron is running while you sleep Ask "What scheduled tasks ran last night?" and pause or adjust.
"I see a task I don't recognize" A teammate created it, or it was set up earlier Ask "What is the scheduled task at [path] doing?"

Ready to automate?

The fastest way to start is to ask. In Slack or Teams, tell Viktor: "Set up a daily report of what happened in #general." He chooses the task type, sets the schedule, and has it running in minutes.

Want someone to set this up for you? Let a Viktor Expert handle it.

Book a call