Skip to main content
Scheduled automation generates content at regular intervals based on repository activity over a defined time period. This is perfect for creating consistent content like weekly updates, monthly changelogs, or regular social media posts.

How Scheduled Triggers Work

Notra uses cron-based scheduling to trigger content generation at your preferred frequency:
1

Schedule Configuration

Define when content should be generated (daily, weekly, or monthly)
2

Automatic Trigger

At the scheduled time, Notra initiates the content generation workflow
3

Activity Analysis

AI analyzes repository activity within your configured lookback window
4

Content Generation

Generated content summarizes changes and progress from the time period
5

Review & Publish

Content appears in your dashboard for review and publishing

Schedule Frequencies

Generate content every day at a specified time.Configuration:
  • Hour (0-23)
  • Minute (0-59)
Best For:
  • High-velocity teams with frequent releases
  • Daily standup summaries
  • Active social media presence
  • Real-time progress tracking
Example Use Cases:
  • Daily LinkedIn posts about product progress
  • End-of-day changelog updates
  • Daily investor updates during intensive development periods

Lookback Windows

Scheduled automations analyze repository activity over a configurable time period:
current_day
string
Activity from midnight UTC today to now
yesterday
string
Activity from the previous calendar day (midnight to midnight UTC)
last_7_days
string
default:true
Activity from the past 7 days (default)
last_14_days
string
Activity from the past 14 days
last_30_days
string
Activity from the past 30 days
Choose a lookback window that matches your schedule frequency. For weekly schedules, last_7_days works well. For monthly schedules, consider last_30_days.

Supported Output Types

Scheduled automation currently supports:

Changelogs

Customer-facing summaries of features, fixes, and improvements shipped during the time period.

LinkedIn Posts

Professional updates about product progress and achievements, optimized for LinkedIn’s format.
More output types (blog posts, Twitter/X posts, investor updates) are coming soon to scheduled automation.

Configuring Scheduled Triggers

Set up scheduled automation through the Notra dashboard:
1

Navigate to Automations

Go to your workspace settings and select the Automations tab
2

Create Schedule

Click “New Automation” and select “Scheduled”
3

Name Your Schedule

Give your schedule a descriptive name (e.g., “Weekly LinkedIn Update”)
4

Select Repositories

Choose which repositories to analyze for content generation
5

Set Frequency

Configure when content should be generated:
  • Daily: Select time
  • Weekly: Select day and time
  • Monthly: Select day of month and time
6

Choose Lookback Window

Select how far back to analyze repository activity
7

Configure Output

Select the content type (changelog or LinkedIn post)
8

Enable Schedule

Enable the schedule to begin automatic generation

Content Generation Context

When a schedule triggers content generation, Notra analyzes:
  • Time Range: Activity within your configured lookback window
  • Repositories: All selected repositories’ combined activity
  • Commits & PRs: Merged pull requests and commit history
  • Issues: Closed issues and significant discussions
  • Releases: Published releases during the period
  • Brand Voice: Your configured tone, audience, and custom instructions
interface ContentGenerationContext {
  organizationId: string;
  repositories: Array<{
    integrationId: string;
    owner: string;
    repo: string;
    defaultBranch: string | null;
  }>;
  tone: ToneProfile;
  promptInput: {
    sourceTargets: string;
    todayUtc: string;
    lookbackLabel: string;
    lookbackStartIso: string;
    lookbackEndIso: string;
    companyName?: string;
    companyDescription?: string;
    audience?: string;
    customInstructions?: string | null;
  };
}

Cron Expression Format

Notra automatically generates cron expressions from your configuration:
# Daily at 9:00 AM UTC
0 9 * * *
All schedules run in UTC timezone. Plan your schedule times accordingly based on your target audience’s timezone.

Testing Schedules

You can manually trigger any schedule to test output before enabling:
  1. Navigate to the schedule in your dashboard
  2. Click “Run Now” to manually trigger content generation
  3. The system analyzes the current lookback window and generates content
  4. Review the output to ensure quality and relevance
Manual test runs use the current time and lookback window. If you test a weekly schedule on Tuesday, it will analyze the past 7 days from Tuesday, not from your configured day.

Schedule Management

Manage your schedules through the dashboard:
  • Edit: Update frequency, lookback window, or output type
  • Enable/Disable: Turn schedules on or off without deleting configuration
  • Duplicate: Copy a schedule to create variations quickly
  • Delete: Remove schedules you no longer need
When you edit a schedule’s frequency or time, the changes take effect immediately. The next run will use the new schedule.

Monitoring & Logs

View execution history for all scheduled runs:
  • Run Status: Success, failed, or rate-limited
  • Execution Time: When the schedule triggered
  • Content Generated: Link to the generated post
  • Workflow Run ID: Unique identifier for troubleshooting
  • Generation Details: What repositories and time range were analyzed
Logs help you:
  • Verify schedules are running as expected
  • Debug generation failures
  • Track content output over time
  • Identify patterns in your development activity

Common Use Cases

Weekly Product Updates

Generate LinkedIn posts every Monday summarizing the previous week’s progress.

Monthly Changelogs

Create comprehensive monthly changelogs for customers on the 1st of each month.

Daily Standup Content

Generate daily summaries for high-velocity teams shipping continuously.

Investor Reports

Automate monthly or weekly progress updates for stakeholders.

Best Practices

Choose a schedule frequency that aligns with your development pace. High-velocity teams might use weekly schedules, while teams with monthly releases might prefer monthly schedules.
Use lookback windows that match your schedule frequency:
  • Daily schedule → current_day or yesterday
  • Weekly schedule → last_7_days
  • Monthly schedule → last_30_days
Schedule content generation to post when your audience is most active. Remember all times are in UTC.
Create different schedules for different content types. For example:
  • Weekly changelog for customers
  • Weekly LinkedIn post for general audience
  • Monthly investor update
Treat scheduled content as drafts. Always review before publishing to ensure accuracy and relevance.
Use clear names like “Weekly Monday Changelog” instead of generic names like “Schedule 1”.

Troubleshooting

Check:
  • Schedule is enabled in the dashboard
  • Cron configuration is valid
  • QStash service is operational (check status page)
  • Your subscription includes scheduled automation
View the schedule’s execution log to see if runs are being attempted.
Check:
  • Repositories have activity in the lookback window
  • Repositories are still connected and accessible
  • Target repositories exist in your configuration
  • GitHub API access is working
If there’s no activity in the lookback window, the AI may not generate content.
Check:
  • Lookback window is appropriate for your activity level
  • Brand voice and custom instructions are configured
  • You’re analyzing the right repositories
  • Repository activity is sufficient for meaningful content
Adjust your lookback window or custom instructions to improve output.
If GitHub API rate limits are hit during scheduled generation, the workflow automatically retries after the rate limit resets. Check logs for rate_limited status.

Infrastructure Details

Notra uses Upstash QStash for reliable scheduled workflow execution:
  • Reliability: QStash ensures schedules run even if your infrastructure is temporarily unavailable
  • Retries: Automatic retries on transient failures
  • Monitoring: Built-in observability for all scheduled runs
  • Scalability: Handles any number of concurrent schedules
// Create a schedule
await client.schedules.create({
  destination: `${appUrl}/api/workflows/schedule`,
  cron: "0 9 * * 1", // Every Monday at 9 AM UTC
  body: JSON.stringify({ triggerId }),
});

Next Steps

Event-Based Automation

Learn about webhook-triggered content generation

Brand Voice Configuration

Customize tone and style for your scheduled content

Build docs developers (and LLMs) love