Skip to main content
Notra’s content pipeline is the core system that converts your team’s work into content. Understanding this pipeline helps you make the most of the platform and troubleshoot when needed.

The Five-Step Pipeline

Every piece of content generated by Notra flows through these five stages:

1. Ingest Activity

The pipeline begins when Notra receives activity from your connected systems. How ingestion works:
  • GitHub webhooks deliver events like push, pull request merge, and release
  • Notra’s API endpoints receive and validate webhook payloads
  • Activity data is normalized into a common internal format
  • Metadata like repository owner, branch, and timestamps are extracted
What gets ingested:
  • Merged pull requests on main/default branch
  • New releases and version tags
  • Commit batches from push events
  • Issue closures (Linear integration)
  • Notable Slack conversations (Slack integration)
Notra only processes activity from repositories and channels you’ve explicitly connected. The platform uses integration IDs to enforce strict access control.
Normalization example: A GitHub push event with multiple commits gets transformed into:
{
  eventType: "push",
  eventAction: "created",
  ref: "refs/heads/main",
  branch: "main",
  commitCount: 12,
  commitIds: ["abc123", "def456", ...],
  firstCommitTimestamp: "2026-03-01T10:30:00Z",
  lastCommitTimestamp: "2026-03-02T14:45:00Z",
  headCommitId: "xyz789"
}
This structured format allows the AI to work with consistent data regardless of the source.

2. Analyze Context

Once activity is ingested, AI analysis determines what matters and why. Analysis objectives:
  • Identify technical changes (new features, bug fixes, refactors)
  • Evaluate user impact and relevance to target audience
  • Prioritize updates by significance (security > breaking > features > performance)
  • Filter out low-signal maintenance work
How the AI analyzes: The AI agent has access to specialized tools:
{
  getPullRequests: // Fetch detailed PR context
  getReleaseByTag: // Get release notes and version info  
  getCommitsByTimeframe: // Retrieve commit history
  listAvailableSkills: // Check for enhancement plugins
  getSkillByName: // Load specialized skills like "humanizer"
}
For a 7-day changelog, the agent might:
  1. Call getCommitsByTimeframe with days: 7 to fetch all commits
  2. Identify notable commit messages mentioning features or fixes
  3. Call getPullRequests for each significant PR number found
  4. Build a prioritized list of changes worth highlighting
Prioritization logic: The AI evaluates each change against these criteria:
1

Security impact

Does this fix a vulnerability or improve security posture? Highest priority.
2

Breaking changes

Will this require users to update their code or configuration? High priority.
3

Major features

Is this a significant new capability users will notice? Medium-high priority.
4

Reliability fixes

Does this resolve crashes, errors, or edge cases? Medium priority.
5

Performance improvements

Will users experience measurable speed or efficiency gains? Medium priority.
Internal changes like dependency bumps, formatting tweaks, and test updates are typically filtered out unless they have clear external impact.
You can influence what the AI considers important by specifying your target audience in brand settings. For example, “developers and technical teams” results in more technical detail and PR links.

3. Generate Drafts

With analyzed context in hand, Notra produces structured content using specialized agents. Content types:
  • Changelogs: Technical release notes organized by category
  • LinkedIn posts: Social-friendly updates highlighting key improvements
  • Blog posts (roadmap): Long-form feature announcements and stories
Agent workflow for changelog generation:
  1. Load the appropriate tone-specific prompt (e.g., conversational)
  2. Receive user prompt with context (source repos, timeframe, company info)
  3. Call GitHub tools to gather all relevant data
  4. Build Highlights section with top 1-5 most important changes
  5. Categorize remaining updates into More Updates sections
  6. Apply humanization skill if available to polish the text
  7. Call createPost to save the final draft
Output structure for changelogs:
# [Title]

[Summary paragraph: 120-180 words]

## Highlights

### [Feature name]
[Why it matters]

### [Another feature]
[Impact description]

## More Updates

### Security
- **[Change title]** #123 - Description (Author: @username)

### Features & Enhancements  
- **[Change title]** #124 - Description (Author: @username)

### Bug Fixes
- **[Change title]** #125 - Description (Author: @username)
Notra uses Claude 4.5 Haiku via AI Gateway for content generation. The model is specifically chosen for its speed, cost-efficiency, and strong reasoning capabilities.

4. Apply Brand Voice

Generated drafts are adapted to match your workspace’s brand identity. What brand voice controls:
  • Company name and description: Context about who you are and what you build
  • Tone profile: Conversational, Professional, Casual, or Formal
  • Target audience: Who you’re writing for (developers, customers, stakeholders)
  • Custom instructions: Additional guidelines like “avoid jargon” or “include metrics”
How adaptation works: Brand settings are injected into the AI prompt as context:
<company>Acme Corp - Building developer tools for modern web apps</company>
<target-audience>Software developers and engineering teams</target-audience>
<custom-instructions>
- Keep technical accuracy while being approachable
- Include PR links for all changes
- Emphasize security and performance improvements
</custom-instructions>
The AI then generates content that:
  • Uses terminology appropriate for the audience
  • Matches the selected tone profile
  • Follows custom instructions
  • Maintains technical accuracy
Tone profile impact:
ProfileStyleExample
ConversationalWarm, authentic, founder-to-community”We’ve shipped some great improvements this week…”
ProfessionalClear, confident, corporate”This release includes several significant enhancements…”
CasualFriendly, relaxed, informal”Hey folks! Check out what we built this week 🎉“
FormalPrecise, traditional, structured”The engineering team has completed the following deliverables…”
You can update your brand settings at any time. Changes apply to all future content generation—existing drafts are not modified.

5. Publish-Ready Output

The final step stores polished content in your dashboard. What happens at this stage:
  • Draft is saved to the database with metadata
  • Content type (changelog, linkedin_post) is recorded
  • Source repositories and timeframe are attached
  • Draft appears immediately in your dashboard
  • You receive notification that content is ready for review
Dashboard capabilities:
  • View all generated drafts in one place
  • Edit content directly with inline markdown editor
  • Copy markdown for publishing elsewhere
  • Track which events triggered each draft
  • Filter by content type and date range
Notra keeps content in draft form until you decide to publish. This gives you full control over what goes out and when.

Pipeline Configuration

You can customize pipeline behavior through settings: Event-based triggers:
  • Enable/disable automatic generation for specific event types
  • Configure which content types to generate (changelog only, LinkedIn only, both)
  • Set minimum commit threshold before generating content
Scheduled workflows:
  • Choose frequency (daily, weekly, monthly)
  • Set time windows (e.g., “last 7 days”)
  • Select which repositories to include

Error Handling

The pipeline includes robust error handling: GitHub API rate limits:
  • Automatic retry with exponential backoff
  • Cache frequently accessed data to minimize requests
  • Clear error messages when limits are hit
Failed generation:
  • Errors are logged with full context
  • You’re notified of failures in the dashboard
  • Partial results are preserved when possible
Missing data:
  • AI omits details it can’t verify rather than guessing
  • Tools are called to fill gaps when needed
  • Generic descriptions used when specifics unavailable

Performance and Scaling

The pipeline is designed for efficiency:
  • Parallel processing: Independent tool calls run concurrently
  • Smart caching: GitHub data cached for 2-30 minutes based on volatility
  • Pagination handling: Large commit lists processed in batches automatically
  • Background execution: Generation runs async without blocking webhooks
Typical changelog generation takes 15-45 seconds depending on activity volume. Most of this time is spent calling GitHub APIs to fetch PR and commit details.

Monitoring Pipeline Health

You can monitor pipeline activity through:
  • Dashboard activity feed showing recent generations
  • Error notifications for failed workflows
  • Integration status indicators
  • GitHub webhook delivery logs (in GitHub settings)
Understanding this pipeline helps you optimize Notra for your workflow and troubleshoot when content doesn’t match expectations.

Build docs developers (and LLMs) love