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.
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 calendarplan_week-> creates a study plan in DynamoDBroast-> Bedrock Claude 3.5 Haiku with Guardrails
Before: EventBridge cron every hour.
Now: Agent decides if it should motivate, blackmail, or plan.
Now: Agent decides if it should motivate, blackmail, or plan.
Cost breakdown as a student:
| Service | Cost / 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')
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"
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."Enjoyed reading this content? Let the author know!
Your likes, comments, shares, and saves help creators reach more builders.
Loading recommendations
Loading article