Inspiration
After-school tutoring nonprofits run on thin margins — one volunteer tutor often covers 20–30 kids. The hardest moment for a student isn't during a session; it's at 7pm on a school night, stuck on a homework problem with no adult around. Kids quietly give up, and tutors have no way to know who's falling behind. Lumi fixes both sides of that gap inside the tool the org already uses: Slack.
What it does
Lumi lives in the nonprofit's Slack workspace and does four things:
- Helps students in the moment. A student sends Lumi a question. Lumi replies with a Socratic hint — a nudge toward the next step, never the finished answer — in warm, age-appropriate language, and adds a 👀 reaction while it's thinking. If the student is still stuck, it offers a simpler hint.
- Spots the kids who are truly stuck. Powered by Claude, Lumi watches for a student repeatedly struggling on the same concept or showing frustration ("I still don't get it"). After a few tries it privately posts a Block Kit escalation card to the tutors' channel — who's stuck, on what topic, and what they've already tried — with one-click Start a session and Mark handled buttons.
- Closes the loop. One click and a human tutor takes over; the student instantly gets a warm message that help is on the way. No child is ever called out in public.
- Builds practice on request. When a student asks for practice, Lumi generates a short quiz on the topic at their grade level (no answers) — so they can self-check, then work through it with hints.
How we built it
Scaffolded from the Slack CLI slack create agent template and built with Bolt for Python on Slack's AI agent framework. Lumi's coaching and stuck-detection are powered by Claude (Anthropic API). The tutor escalation experience uses Block Kit interactive cards. The architecture is also Real-Time Search API–ready — the search integration is built and scoped, designed to enrich stuck-detection across channels.
Challenges we ran into
The core design challenge was deciding when a student is genuinely stuck — not just asking a single question — without ever calling a child out publicly. We solved it with a Claude-based signal that tracks repeated struggle on the same concept and only escalates past a threshold. We also worked through the realities of shipping a full Slack agent end-to-end (CLI hooks, running the app reliably, and routing the model calls) so the whole loop runs live.
Accomplishments that we're proud of
The entire loop works live in Slack: Socratic hints that never give the answer, a radar that quietly spots a struggling student, a private Block Kit card that hands off to a human tutor in one click, a caring nudge back to the student, and a built-in safety refusal when a student asks for the answer outright — and it was built by a non-technical product manager through guided vibe-coding, proving this pattern is within reach for the nonprofits who'd actually use it.
What we learned
That the most helpful thing an education agent can do is withhold the answer and coach instead. That keeping a human in the loop is what makes an agent safe for kids. And that you don't need exotic infrastructure to catch a struggling student — a well-prompted model watching the conversation is enough.
Impact
- Every student gets an instant, patient first responder — median time-to-first-help drops from hours to seconds.
- Scarce human tutors get a triage radar — instead of guessing who needs help, they get a prioritized signal of at-risk students, so their limited volunteer hours reach the kids who need them most.
- It scales the mission without scaling headcount — the same pattern works for any tutoring org, classroom, or study community on Slack.
Safety by design (K-12)
Hints, not answers. Human-in-the-loop — Lumi surfaces, a tutor decides and acts. Kid-safe language and scope, with refusals that route to a human. Privacy by design: nothing about a student is stored outside of Slack.
What's next for Lumi — Study Stuck-Spotter
Real-Time Search API fully wired for cross-channel signals; multilingual hints for ESL students; and a weekly "who's struggling" digest for coordinators.
Built With
- anthropic-api
- block-kit
- bolt-python
- claude
- python
- real-time-search-api
- slack-ai
- slack-cli
Log in or sign up for Devpost to join the conversation.