AWS Builder Center
Weekend Agent Challenge: Morning Brief Agent

Weekend Agent Challenge: Morning Brief Agent

I built an AI-powered agent that wakes up at 6 AM every day, gathers weather, news, and quotes, then uses Amazon Bedrock to deliver a personalized morning briefing to my inbox — all while I sleep.

Vision & What the Agent Does

Have you ever wished someone could organize your morning before you even open your eyes? That's exactly what the Morning Brief Agent does.
The Morning Brief Agent is an AI-powered personal assistant that runs completely on its own — no buttons to click, no apps to open. Every single day at 6:00 AM IST, while I'm still asleep, this agent wakes up, gathers real-time information from multiple sources, uses artificial intelligence to compose a personalized morning briefing, and delivers it straight to my email inbox.

The Problem It Solves

Every morning, most of us waste 15-20 minutes checking weather apps, scrolling through news feeds, and trying to mentally prepare for the day. This agent eliminates that friction entirely. By the time I pick up my phone, a beautifully formatted, AI-generated summary is already waiting in my inbox.

What Triggers It

The agent is triggered by Amazon EventBridge Scheduler using a cron expression ( cron(30 0 * * ? *) ) that fires at 6:00 AM IST every single day — weekdays, weekends, holidays. It never misses a day.

What It Does On Its Own

Once triggered, the agent autonomously performs these steps:
  1. Fetches live weather data for my city (Chennai) from OpenWeatherMap — temperature, humidity, wind speed, and conditions
  1. Pulls the top 5 technology news headlines from India via NewsAPI.org
  1. Grabs an inspirational quote from the Quotable API to start the day with motivation
  1. Sends all this raw data to Amazon Bedrock (Nova Micro model) which uses AI to compose a warm, friendly, and actionable morning briefing
  1. Delivers the final brief via Amazon SNS directly to my email

How It Reports Back

The agent sends a beautifully formatted email with a subject line like "☀️ Your Morning Brief - July 17, 2026". The email includes a weather summary with outfit suggestions, numbered news headlines, and a motivational quote — all written in a conversational, friendly tone by the Nova AI model.



How I Built It

Development Process

I started by identifying the core value proposition: the best productivity tool is one you never have to open. With that philosophy, I designed the agent to be completely autonomous from day one.
My development process followed these steps:
  1. Planning the architecture — I mapped out which AWS services would handle each responsibility (scheduling, compute, AI, notifications)
  1. Building the data fetchers — I wrote Python functions to pull data from three external APIs (weather, news, quotes) with proper error handling and fallbacks
  1. Integrating Amazon Bedrock — This was the AI brain of the agent. I crafted a detailed prompt that instructs the Nova Micro model to generate a warm, concise, and actionable morning brief
  1. Setting up notifications — I configured Amazon SNS to deliver the generated brief via email
  1. Infrastructure as Code — I wrote a complete SAM template ( template.yaml ) so the entire stack can be deployed with a single command

Key Decisions

  • Chose Amazon Nova Micro over larger models because it's fast, cost-effective, and more than capable for text generation tasks like this
  • Used SNS instead of SES for simpler setup — SNS handles email subscriptions with built-in confirmation flows
  • Built with single-file Lambda to keep deployment simple and the project easy to understand for other builders
  • Added fallback responses — if any API fails, the agent still generates a useful brief rather than crashing

Challenges & Solutions

Challenge 1: Bedrock API Request Format The Nova model has a specific request/response format different from other models. I spent time reading the documentation to get the  inferenceConfig  and message structure correct.
Solution: Used the  messages  array format with  inferenceConfig  containing  max_new_tokens ,  temperature , and  top_p  parameters.
Challenge 2: Timezone Handling EventBridge uses UTC, but I needed the agent to trigger at 6 AM IST (UTC+5:30).
Solution: Calculated the UTC equivalent ( cron(30 0 * * ? *)  = 12:30 AM UTC = 6:00 AM IST) and used Python's  timezone(timedelta(hours=5, minutes=30))  for date formatting in the brief.
Challenge 3: Git and Deployment As a first-time builder pushing to GitHub and deploying with SAM, I encountered path issues and authentication challenges.
Solution: Learned about Git initialization in the correct directory, personal access tokens for GitHub authentication, and SAM guided deployments.



AWS Services Used / Architecture Overview

Services Used

AWS Service
Purpose
Free Tier
Amazon Bedrock (Nova Micro)
AI text generation — composes the personalized morning brief
Free tier credits
AWS Lambda (Python 3.12)
Serverless compute — runs the agent code
1M free requests/month
Amazon EventBridge Scheduler
Cron trigger — wakes the agent at 6 AM daily
Free
Amazon SNS
Email delivery — sends the brief to my inbox
1,000 free emails/month
AWS SAM / CloudFormation
Infrastructure as Code — deploys everything
Free
Amazon CloudWatch Logs
Monitoring and debugging
5GB free/month

Architecture Overview

Plain text
┌─────────────────────────┐
│ Amazon EventBridge │
│ Scheduler │──── Triggers at 6:00 AM IST daily
│ cron(30 0 * * ? *) │
└───────────┬─────────────┘
│
▼
┌─────────────────────────┐
│ AWS Lambda │
│ (Python 3.12) │
│ │
│ ┌─────────────────┐ │ ┌────────────────────┐
│ │ get_weather() │───┼────▶│ OpenWeatherMap API │
│ └─────────────────┘ │ └────────────────────┘
│ │
│ ┌─────────────────┐ │ ┌────────────────────┐
│ │ get_top_news() │───┼────▶│ NewsAPI.org │
│ └─────────────────┘ │ └────────────────────┘
│ │
│ ┌─────────────────┐ │ ┌────────────────────┐
│ │ get_daily_quote()│───┼────▶│ Quotable API │
│ └─────────────────┘ │ └────────────────────┘
│ │
│ ┌─────────────────┐ │ ┌────────────────────┐
│ │ generate_brief_ │───┼────▶│ Amazon Bedrock │
│ │ with_bedrock() │ │ │ (Nova Micro) │
│ └─────────────────┘ │ └────────────────────┘
│ │
│ ┌─────────────────┐ │ ┌────────────────────┐
│ │ send_notification│───┼────▶│ Amazon SNS │
│ └─────────────────┘ │ │ → Email Delivery │
│ │ └────────────────────┘
└─────────────────────────┘

How the Agent is Triggered

The agent uses Amazon EventBridge Scheduler with a cron expression. Every day at 12:30 AM UTC (6:00 AM IST), EventBridge automatically invokes the Lambda function. No manual intervention is needed — the agent runs 365 days a year, completely hands-free.
The entire infrastructure is defined in a single  template.yaml  file using AWS SAM, making it reproducible and deployable with just two commands:  sam build  and  sam deploy --guided .



What I Learned

This weekend challenge taught me several valuable skills and concepts:

1. Amazon Bedrock Integration

I learned how to call Amazon Bedrock's Nova models from Lambda using the  boto3  client. Understanding the message format, inference configuration, and response parsing was a key learning. The Nova Micro model is impressively fast and capable for text generation tasks.

2. Event-Driven Architecture

Building an agent that runs on its own taught me the power of event-driven design. Instead of building a UI and waiting for user input, I designed a system that delivers value proactively. This mindset shift — from reactive to proactive — is something I'll carry into future projects.

3. Serverless Best Practices

I learned about Lambda timeout configuration, environment variable management for secrets, IAM policy scoping for Bedrock and SNS, and how to structure a Lambda project for SAM deployment.

4. Infrastructure as Code

Writing the SAM template taught me how to define Lambda functions, EventBridge rules, SNS topics, and subscriptions all in a single YAML file. The  sam deploy --guided  experience made deployment approachable.

5. Error Handling & Resilience

I built the agent with graceful degradation — if the weather API fails, the agent still generates a brief with available data. If Bedrock is unavailable, a fallback template kicks in. This resilience-first approach ensures the agent never completely fails.

6. The "Always-On" Philosophy

The biggest takeaway: the best tools work for you while you're away. This challenge pushed me to think beyond traditional request-response applications and build something that creates value autonomously.



Link to Repository

The repository includes:
  • Complete Lambda function source code (Python 3.12)
  • AWS SAM template for one-command deployment
  • Detailed README with setup instructions
  • Architecture diagrams and sample output



Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article