Inspiration
OLYM3 runs OpenMatrixSkill, a platform that sets AI-competency standards and issues digital certificates. It connects learners, academies and employers. Our learners told us the same thing again and again: they start a course with good intentions, then life gets busy. The web dashboard sits unopened, and the certificate never happens.
The one app they do open dozens of times a day is WhatsApp. So we asked a simple question: what if the course, the exam and the certificate all came to the learner, instead of waiting for the learner to come back?
What it does
SkillTutor is an agentic AI tutor that lives in the learner's messaging apps. It is connected to the OpenMatrixSkill skill matrix.
• Learn in WhatsApp. The learner sends "học" ("study") and gets the next 5-minute micro-lesson from their enrolled skill path, with a check question and quick-reply buttons.
• Get certified in chat. The agent runs the certification quiz as interactive WhatsApp reply buttons or list messages. It grades each answer, explains mistakes and keeps quiz state across messages. On a pass it:
◦ records the result in OpenMatrixSkill;
◦ issues a certificate with a SHA-256 integrity hash;
◦ emails a branded certificate through Amazon SES.
• Verify certificates by message. An employer texts a certificate code (OMS-XXXXXXXX) by WhatsApp or SMS, or opens the verify page. The agent checks the code and its hash and confirms who earned what, and when.
• Drop-out Rescue. An hourly job finds inactive learners and escalates one step per run:
1. Day 3: a WhatsApp approved template (free text if inside the 24-hour window).
2. Day 5: SMS, for learners who muted WhatsApp.
3. Day 7: a personalised comeback plan by email.
Messages are written by Bedrock, respect quiet hours (08:00–21:00 local) and stop the moment the learner replies. Each reply is logged as a reactivation.
• Progress and reminders. "Send my progress by email" or "remind me at 20:30" are handled as agent tool calls.
• Operator dashboard. It shows learners, rescue stage, pass rate, certificates issued, nudges per channel and reactivation rate per CDS channel. That makes the impact measurable.
How we built it
SkillTutor uses the same stack as OpenMatrixSkill: TypeScript, Node.js and Next.js 15 (App Router).
• Agent. A plan → act → observe loop on the Amazon Bedrock Converse API with native tool use (7 tools, up to 6 steps per turn). The same agent code is packaged as an arm64 container for Amazon Bedrock AgentCore Runtime (/ping, /invocations). The web app calls it with InvokeAgentRuntime, one isolated runtime session per learner.
• Tools:
◦ get_learner_profile
◦ get_next_lesson
◦ start_assessment
◦ submit_answer
◦ send_progress_email
◦ set_study_reminder
◦ verify_certificate
They read and write OpenMatrixSkill through a typed adapter and trigger CDS sends. The model never invents grades or certificates; all facts come from tools.
• WhatsApp. We use AWS End User Messaging Social (@aws-sdk/client-socialmessaging, SendWhatsAppMessage). It sends text, interactive buttons, list messages and approved templates. Inbound events arrive via SNS on a signature-verified HTTPS webhook.
• SMS. AWS End User Messaging SMS (@aws-sdk/client-pinpoint-sms-voice-v2, SendTextMessage) handles two-way messaging via SNS and respects opt-out keywords.
• Email. Amazon SES v2 (@aws-sdk/client-sesv2) sends certificates, progress reports and rescue emails.
• State. Amazon DynamoDB single-table design: learner state, conversation memory, events and certificates. An in-memory store is used for local runs.
• Scheduling and hosting. Amazon EventBridge triggers the rescue job. The Next.js app runs as a standalone container on AWS App Runner.
• Quality. We wrote 13 Vitest tests covering the quiz flow, certificate integrity, the rescue ladder, WhatsApp payloads, SNS parsing and signing. A Simulator page and a dry-run outbox let anyone run the full flow without an AWS account.
Disclosure: OpenMatrixSkill (the existing learning platform and its content) pre-dates the hackathon. SkillTutor talks to it only through the OpenMatrixClient adapter. All SkillTutor code was written during the submission period, with the help of AI coding assistants.
Challenges we ran into
• WhatsApp's 24-hour customer-service window. Business-initiated messages need approved templates. We track each learner's last inbound time and choose free text or template automatically.
• Fitting an exam into chat UI limits. Reply buttons allow 3 options and 20-character titles. We render full options in the body, put short labels on the buttons, and fall back to list messages for more options and to text for SMS.
• Keeping the agent honest. Grading and certificate issuance are deterministic tools with state in DynamoDB. The LLM orchestrates and explains but can't award a pass on its own.
• One codebase, three runtimes (local, Next.js on App Runner, AgentCore Runtime) with shared state. Accomplishments that we're proud of
• A learner can go from "hi" to a verifiable certificate in a few minutes without leaving WhatsApp.
• Three CDS services work together in one loop (WhatsApp, SMS, SES) and each has a clear job.
• Rescue impact is measured per channel: nudges sent and learners who came back.
• Anyone can reproduce it: clone it, run npm run dev, then open the Simulator.
What we learned
• Channel choice is part of the product. WhatsApp is the best place to teach, SMS reaches people who have gone quiet, and email suits documents people keep.
• An agent works best when the model orchestrates and explains while tools hold the rules.
• AgentCore Runtime made it straightforward to run a Node.js agent with per-session isolation.
What's next for SkillTutor
• Voice-note answers (Amazon Transcribe) and spoken mock interviews.
• RCS rich cards for job matches, using the OpenMatrixSkill employer network.
• Anchoring certificate hashes on-chain through OpenMatrixSkill.
• AgentCore Memory for long-term learner preferences.
• A multi-tenant mode for partner academies, then an AWS Marketplace listing.## Inspiration
Built With
- amazon-bedrock
- amazon-bedrock-agentcore
- amazon-dynamodb
- amazon-eventbridge
- amazon-ses
- amazon-sns
- aws-app-runner
- aws-end-user-messaging-sms
- aws-end-user-messaging-social
- docker
- next.js
- node.js
- react
- typescript
Log in or sign up for Devpost to join the conversation.