Multiple updates since last revision

Last updated June 26, 2025

Building a Great Prompt

The Challenge: Weekly Team Productivity Report

Let's watch a prompt evolve from a vague idea to a precise specification. Our goal: create an agent that generates weekly team productivity reports by combining data from Google Calendar, Notion project databases, and distributing results via Slack.

TLDR: Great prompts evolve through iteration.
Start with a simple goal, then progressively add specificity.
Continue with exact requirements, output format details.
Consider edge case handling.
Each iteration reduces ambiguity and increases reliability

Iteration 1: The Initial Experiment

Most users start with something like this:

❌ Version 1: Basic Experiment

Create a weekly team report showing how productive we were

Problems with this prompt:

  • "Productive" is undefined - what metrics matter?

  • No data sources specified - calendar? projects? tasks?

  • No output format defined - where does the report go?

  • "Team" is ambiguous - which people or departments?

Iteration 2: Adding Specificity

Now we add specific data sources and basic metrics:

🔶 Version 2: More Specific

Create a weekly report for the Product Team by analyzing:
- Meeting time from Google Calendar
- Project progress from our Notion workspace
- Send the summary to #product-updates Slack channel

Show metrics like total meeting hours and completed tasks

Improvements: Specific team, data sources, output destination. Still problematic: "Our Notion workspace" is vague, no format specified, "completed tasks" undefined.

Iteration 3: Exact Details and Structure

Now we add precise data sources, calculation methods, and output formatting:

🟡 Version 3: Detailed Specification

Create weekly Product Team report every Monday at 9 AM.

Check:
- Google Calendar: "Product Team Calendar" 
  Count meetings with >2 attendees from Product Team
  Exclude 1:1s and personal events
  Calculate total hours vs focus time

- Notion Database: "Sprint Tasks" (ID: abc123)
  Tasks with Status = "Done" 
  Assigned to: @alice, @bob, @charlie, @diana
  Count by priority (P0, P1, P2)

Output:
📊 Product Team Weekly Summary
Meeting Analysis: [X] hours meetings, [Y] hours focus
Tasks: P0: [#] | P1: [#] | P2: [#] | Points: [#]

Post to #product-updates, mention 

Major improvements: Specific names/IDs, clear criteria, exact format. Still missing: Error handling, edge cases, validation.

Iteration 4: Heavy Specification

The final version includes comprehensive error handling, edge cases, and quality assurance. Here's the complete specification broken into logical sections:

✅ Part 1: Core Configuration

AGENT: Product Team Weekly Report Generator
SCHEDULE: Every Monday at 9:00 AM PST
REPORTING PERIOD: Previous Monday 00:00 to Sunday 23:59
TEAM: alice@co.com, bob@co.com, charlie@co.com, diana@co.com

✅ Part 2: Data Collection Rules

GOOGLE CALENDAR ("Product Team Calendar" - product@company.com):
Include: Events with ≥2 Product Team attendees, "Busy" status
Exclude: 1:1s, All-day events, "Free"/"Private" events
Calculate: Total meeting hours, Focus time, Efficiency score

NOTION TASKS ("Sprint Tasks" database - abc123def456):
Filter: Assignee in team list, Status = "✅ Done"
Metrics: Count by Priority (P0/P1/P2), Sum story points
Completion rate vs planned sprint goals

✅ Part 3: Output Format

📊 Product Team Weekly Summary | Week of [MONDAY_DATE]

🤝 Meeting Analysis:
Total team meeting time: [X.X] hours
Average per person: [X.X] hours/week  
Focus time ratio: [XX]% (target: >70%)

Task Delivery:
P0 Critical: [#] completed / [#] planned ([XX]%)
P1 High: [#] completed / [#] planned ([XX]%)
P2 Medium: [#] completed / [#] planned ([XX]%)
Story points: [#] ([XX]% of sprint goal)

📈 Insights:
Most productive day: [DAY] ([#] tasks)
Sprint progress: [ON_TRACK/BEHIND/AHEAD]

cc: @sarah.product

Post to: #product-updates

✅ Part 4: Error Handling & Validation

ERROR RESPONSES:
Calendar fail: "⚠️ Calendar unavailable - using previous average"
Notion empty: "⚠️ No tasks found - verify sprint setup"
Missing member: "⚠️ Data missing for [NAME] - excluded"
No meetings: "✨ No meetings - 100% focus time achieved!"

VALIDATION:
Meeting hours < 40 per person
Task dates within reporting period  
Story points are numeric
Focus time % between 0-100%
At least 1 team member has data

FAILURE ACTIONS:
Both systems fail DM @sarah.product
Post fails Retry 3x, then email backup
Log errors to "Agent Monitoring" database

The Evolution Pattern

Notice how each iteration systematically eliminated ambiguity:

  • V1 → V2: Added specific team, data sources, and destination

  • V2 → V3: Defined exact criteria, calculations, and output format

  • V3 → V4: Added comprehensive error handling and validation

The difference between V1 and V4 is the difference between an agent that might work sometimes and an agent that works reliably in production across all your integrated platforms. Every great prompt follows this evolution from experiment to production-ready specification.