ForgetText
Inspiration
The idea for ForgetText came from a simple observation: we rarely forget what we want to say, but we often forget when we need to say it.
Birthday wishes, follow-ups, reminders, and check-ins usually come to mind at inconvenient times. Existing solutions rely on calendar reminders or manual scheduling forms, which add friction and still require users to return later and complete the task themselves.
We wanted to create an AI agent that removes that friction entirely. Instead of remembering a message at the right time, users can simply express their intent in natural language and let the system handle the rest.
What it does
ForgetText is an AI-powered message scheduling agent for Facebook Messenger.
Users type instructions such as:
Send Minh Ngoc "Happy Birthday!" tomorrow at 9 AM
The system understands the recipient, message content, and delivery time, schedules the task, and automatically sends the message through Messenger when the time arrives.
The platform can also enrich messages with external context. For example:
Check my GitLab issues and send a summary to Hanh Trang at 5 PM
In this case, the agent retrieves live GitLab data, generates a summary with Gemini, and delivers the result automatically.
How we built it
Our architecture combines several Google Cloud services and agentic components:
- Gemini 2.5 Flash on Vertex AI parses natural language into structured scheduling instructions.
- FastAPI serves the chat interface and orchestration layer.
- APScheduler manages future message execution.
- Playwright automates a real Messenger browser session to send messages.
- Google Cloud Storage persists browser session data across container restarts.
- Cloud Run hosts the application with warm instances to support scheduled execution.
- Artifact Registry stores deployment images.
Workflow
User
↓
Gemini on Vertex AI
↓
Scheduler
↓
Playwright Browser Automation
↓
Facebook Messenger
This allows users to interact naturally while the system performs the execution autonomously at a later time.
Challenges we ran into
The biggest challenge was building reliable browser automation in a serverless environment.
Cloud Run containers are stateless by design, while Messenger automation requires persistent authenticated browser sessions. We solved this by archiving browser session data to Google Cloud Storage and restoring it whenever a container starts.
Another challenge was ensuring safe automation. Messenger's interface changes frequently, and incorrect selectors could cause messages to be sent to the wrong location. We implemented guardrails that verify the real Messenger composer before any automated action is executed.
Finally, scheduling future jobs inside a cloud-hosted application required careful Cloud Run configuration, including warm instances and disabled CPU throttling to ensure tasks could execute reliably after users disconnected.
What we learned
This project taught us that building an AI agent is much more than calling an LLM.
We learned how to combine reasoning, scheduling, persistence, and browser automation into a complete workflow that performs real-world actions. We also gained hands-on experience deploying agentic systems on Google Cloud using Vertex AI, Cloud Run, Cloud Storage, and Artifact Registry.
Most importantly, we learned that the gap between user intent and execution can often be eliminated entirely. Users shouldn't need to manage forms, reminders, or workflows when they can simply state what they want to happen and let an AI agent carry it out.
Future plans
We currently support Facebook Messenger as our first communication channel.
Future work includes:
- Slack, WhatsApp, and SMS integrations
- Durable database-backed scheduling
- Contact disambiguation and recipient verification
- Preview and approval workflows
- Additional agent integrations for external data sources
Vision
Turn intentions into actions, delivered exactly when they matter.

Log in or sign up for Devpost to join the conversation.