What this covers
ChatGPT Tasks lets you schedule a recurring prompt — a 7am market digest, a Sunday-night weekly summary, a Friday “what’s new in my industry” sweep — without leaving the chat. It’s not cron and it’s not Zapier; it’s a lightweight scheduler tied to a single chat thread. This guide is about the shape of Tasks that work, the failure modes that are silent and easy to miss, and when you should drop down to API-on-cron instead.
Who this is for
People who already have a recurring “I should check X every morning” habit and want to make it run on its own. Founders, analysts, researchers, ops folk. If you’ve never written the prompt manually a few times, don’t schedule it yet — you don’t know what good output looks like.
When to reach for it
- Daily news / market digest filtered to a specific industry or set of companies.
- Weekly KPI check-in where the question is the same and the source is a public URL.
- Monthly “what’s new in my field” sweep across a set of blogs or arxiv categories.
- Birthday / anniversary reminders with a context-aware draft message.
Before you start
- Run the prompt manually 5-10 times first. You want to know what the output looks like before you stop reading it.
- Decide what “good enough” means. Tasks output that nobody reads is just an email volume problem.
- Pick a time window with care. Markets-open scans need to run after the open; news digests need to run after morning publication, not before.
- Decide failure tolerance. If a missed run is fine, Tasks is great. If a missed run is catastrophic, build it on the API with monitoring.
Step by step
-
Draft the prompt in a fresh chat and run it 3-5 times across different days. Look at the variance — does it return useful output every time, or only on certain days?
-
Once stable, ask ChatGPT to turn it into a scheduled Task:
Run this prompt every weekday at 7:00am Pacific: Search the web for major news on \{industries\} from the last 24 hours. Filter to items with at least one of: funding, regulatory, product launch. Output as 5 bullets max, each with source URL and one-line "why it matters." If nothing meaningful happened, say "no notable news" — don't pad. -
Confirm the Task appears in your Tasks list with the right schedule and time zone. Check the time zone — DST and travel both break assumptions.
-
Let it run for a week and read every output. Look for: empty results (the search didn’t trigger), repeated content (the model is recycling), wrong tone (you fix the prompt, not the schedule).
-
Tighten the prompt based on the week. Add explicit constraints:
Constraints: - Each bullet must cite a URL published within the last 24 hours. - Don't include opinion pieces or newsletters — only primary sources. - If web search returns no fresh items, say so explicitly and stop. -
Once it’s stable, pair with a downstream action. Have the Task email itself to your inbox, or pipe its output into a notes file you review weekly. Tasks without a downstream landing place get ignored.
A prompt template for scheduled digests
You are running a recurring scheduled task.
Schedule: {frequency, time, time zone}.
Goal: {one-sentence deliverable}.
Inputs: {URLs, topics, names to track}.
Constraints:
- Every claim must cite a source URL.
- If sources return nothing fresh, say so — don't fabricate filler.
- Output format: {bullets / table / short paragraph}.
- Stop at the format limit. Don't add commentary.
Failure mode: if web search is unavailable, output "search unavailable — manual run needed."
That last line matters — silent failures are the main thing that ruins Tasks workflows.
Quality check
- Read the first 5-7 runs in full. After that, scan weekly and audit a random one monthly.
- Compare a fresh manual run to the scheduled output on the same day — they should match closely. Drift means the prompt is brittle.
- If web search is part of the Task, occasionally check whether it actually fired. The model sometimes returns trained-data answers without searching, especially on lower-priority schedules.
- Track empty / “nothing notable” outputs. If you’re getting too many, the filter is too tight. Too few, it’s too loose.
How to reuse this workflow
- Keep your scheduled Tasks in a dedicated Project so the system instructions and the schedule stay coupled.
- Maintain a
scheduled-tasks.mdnote with each Task’s purpose, schedule, and expected output shape — Tasks UI is thin, your notes are the audit trail. - Retire Tasks that aren’t read. Email volume that becomes background noise is worse than no Task at all.
Recommended workflow
Manual run 5-10x → convert to Task with explicit time zone → read every output for a week → tighten the prompt → pair with downstream landing → audit monthly.
Common mistakes
- Scheduling a prompt you’ve never run manually. You don’t know if it works yet.
- Ignoring time zones. A task that says “7am” without zone fires at server-zone 7am, which is not your 7am. Set it explicitly.
- Trusting that web search fires every time. It doesn’t — model load and silent fallbacks happen. Add “if search unavailable, say so” to the prompt.
- Letting outputs pile up unread. Tasks become noise within two weeks if there’s no review habit.
- Scheduling at the wrong cadence. Daily news digests are usually fine; daily competitive-research sweeps are usually too noisy and decay.
- Using Tasks for anything where a missed run breaks something. Tasks is best-effort, not guaranteed. For guaranteed runs, use the API on cron with retries and monitoring.
FAQ
- What if a Task fails silently?: Check the chat thread — failed runs sometimes show up there. Build a “did it run?” check into your weekly review.
- Can a Task call tools like web search and code interpreter?: Yes — but explicitly mention which tool you want used in the prompt. The scheduler doesn’t always pick the right one without a nudge.
- Tasks vs cron-on-API — when do I use which?: Tasks for personal “I want a digest” workflows. API on cron for anything where the output feeds a production system, needs retries, or requires logging beyond the chat UI.
- How do I pause a Task while on vacation?: Tasks UI typically allows pause / disable per Task. Pause is better than delete — preserves the prompt history and schedule.