AWS Builder Center

My Serverless Plant Stopped Dying and Started Gaslighting Me: From Cron to Agentic AI for $1.82

From a dumb $1 cron to a $1.82 agentic AI that remembers my fails and plans my exams. Architecture + the $187 bug.

IA & ML Student

Introduction

In my last article I built a Serverless Plant that dies if I don't study for $1/month. Stack: EventBridge -> Lambda -> DynamoDB -> Bedrock Haiku roast.
It worked. But it was stupid. It only knew if last_study > 24h -> guilt_trip(). I hacked it by studying for 1 minute.
So I fired it. And hired an agentic plant.

Why the Cron Plant Was a Liar

The v1 plant was reactive. It had no memory. No idea I had 3 ML exams this week.
I needed something that decides, not just runs. That's when I moved to Agentic AI.

Architecture v2: The Gaslighting Plant

New stack for $1.82/mo in eu-south-2 (Spain):
User study event -> API Gateway -> Bedrock AgentCore Runtime -> Strands Decider
Tools the agent has:
  • check_memory -> DynamoDB + S3 Vectors + Titan Embeddings v2. Remembers I suspended Networks 2 months ago.
  • check_procrastination -> reads my GitHub commits and calendar
  • plan_week -> creates a study plan in DynamoDB
  • roast -> Bedrock Claude 3.5 Haiku with Guardrails
Before: EventBridge cron every hour.
Now: Agent decides if it should motivate, blackmail, or plan.
Cost breakdown as a student:
ServiceCost / month
AgentCore Runtime$0.40
S3 Vectors$0.30
Bedrock Haiku$0.80
Lambda + EventBridge$0.32
Total$1.82
Still cheaper than a café con leche in Baracaldo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from strands import tool
import boto3

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('plant-memory')

@tool
def check_memory(student_id: str) -> str:
"""Checks past failures and study streaks"""
item = table.get_item(Key={'pk': student_id}).get('Item')
if not item:
return "No memory, first semester vibes"
return f"Last failed: {item['last_failed']}, Streak: {item['streak']} days"

@tool
def plan_week(exams: list) -> str:
"""Creates a study plan if exams are near"""
return f"Plan created: {len(exams)} exams detected. Roast level: maximum."
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