Inspiration
I am originally from South Africa, but I am currently a full-time teacher in South Korea and as such, I’ve seen too many students fall through the cracks—not because they lack talent, but because they lack access, I have also been a student in need and know what it feels like to be, in rural classrooms, where there's often no Wi-Fi, no computers, and no after-school support. I wanted to create something that could be their voice-powered tutor, even without the internet. iFundo was born to be exactly that: a lightweight, offline-first educational assistant that listens, speaks, and teaches.
What it does
iFundo is a voice-powered educational assistant designed to work in both online and offline environments. It allows students to:
- Ask questions out loud and receive spoken answers
- Study flashcards pulled from Amazon S3
- Practice past exam papers
- Interact with a natural-sounding AI voice (Amazon Polly) when online
- Rely on locally stored AI knowledge (Titan embeddings + JSON) when offline
- Use a simple, accessible Flask dashboard interface It runs entirely on a Raspberry Pi and starts up automatically with the system.
How we built it
- Speech Recognition: Vosk offline STT engine
- Offline Retrieval: JSON-based QA powered by Titan Embeddings G1 to support RAG
- Voice Output: pyttsx3 (offline) and Amazon Polly (online)
- Wake Word Detection: Custom stream listener for “Hello Teacher”
- Dashboard: Flask web interface for flashcards and past papers
- Content Hosting: Amazon S3 for flashcards and exams
- Cloud AI Mode: Amazon Bedrock (Titan Text Express) for online query handling
- Automation: Crontab to auto-launch the assistant on boot
- Infra Tools: Git, EC2 (testing), and lots of Bash
Challenges we ran into
- IAM Permissions: I couldn’t create buckets, push Docker images, or access ECR until I manually attached full access policies. I was learning AWS roles live, mid-deployment.
- Terraform Errors: The Breaking Barriers deploy script broke on a malformed
backend.hclfile. I had to edit and rebuild it by hand. - Docker on Linux: Even after installing Docker, it refused to work until I added myself to the Docker group and restarted.
- Local Embedding Search: Without a vector DB, I had to write my own local query-matching system using cosine similarity from scratch.
- pyttsx3 Voice Issues: The offline voice sounded like a robot until I manually adjusted voice rate and cleaned up response formatting.
- CORS Hell: My S3-hosted flashcards wouldn't load in the dashboard until I fixed CORS permissions and rewrote the frontend JSON loader.
- Threaded Audio Listening: Getting continuous audio + wake word detection + TTS + Flask to all work simultaneously on a Pi? That nearly broke me.
Accomplishments that we're proud of
- Successfully deployed a working, voice-based tutor that works completely offline.
- Created a fallback system that switches between local and cloud AI based on connectivity.
- Learned and integrated multiple AWS services on the go (S3, Polly, Bedrock, EC2, IAM).
- Used the Breaking Barriers AI Gateway deployment repo despite its quirks, and completed it with CLI tools, Terraform, and Docker.
- Built a system that boots automatically and runs without needing a human operator—perfect for real classrooms.
What we learned
- How to juggle multiple AWS tools with little-to-no upfront documentation
- How to debug IAM and permissions errors under time pressure
- How to architect for offline-first AI systems using lightweight libraries
- How to deploy Docker images to ECR, and services to EC2, using Terraform
- That the Raspberry Pi is wildly underpowered—but wildly capable with optimization
- How to blend Python AI logic, web servers, CLI tools, and cloud services into a fully working product
What's next for iFundo
- Add multilingual support for more African and Asian languages
- Create a student-facing mobile app that connects to the Pi wirelessly
- Expand the dashboard to include interactive tests and game-based learning
- Add teacher features like analytics, voice notes, and student usage reports
- Package iFundo into a deployable image (SD card) to roll out in classrooms with zero setup
- Partner with education NGOs and local schools to pilot iFundo in low-resource regions

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