Lumi is an AI learning companion for children ages 6 to 14. A child can photograph something unfamiliar or ask a question out loud, then hear a short explanation adapted to their age.
Project page: Devpost - Lumi
- Account creation with adult email verification
- Fixed, verified test account for hackathon reviewers
- Mobile camera capture and desktop image upload
- Voice recording, playback, transcription, and submission
- Homework help: photograph a worksheet, ask by text or voice, then receive an age-adapted answer and spoken teaching explanation
- Text-answer or annotated-photo response mode for homework help
- Private homework-help history (last 20 responses per account), including replayable explanation audio
- Age-adapted educational explanations in English, Brazilian Portuguese, or Spanish
- Browser-language detection with a manual language selector
- AI-generated speech synchronized with the Lumi talking video
- Input and output safety checks for child-appropriate use
- Separate daily photo and audio limits per verified account
- Registration limited to three requests per IP in any five-minute window
- Tester-only control portal for registration and daily usage limits
- Discovery photos and recordings are processed temporarily. Homework-help responses are retained privately in the account history so a child can revisit them. When the annotated-photo option is chosen, that private response image includes the photographed page; direct access requires that same signed-in account.
Lumi uses OpenAI in the core product flow:
| Purpose | Model |
|---|---|
| Image understanding and educational explanations | gpt-5.6-luna |
| Voice transcription | gpt-4o-mini-transcribe |
| Spoken explanations | gpt-4o-mini-tts |
| Multimodal input and output safety | omni-moderation-latest |
The runtime calls the Responses, Moderations, Audio Transcriptions, and Audio Speech APIs from the PHP server. No API key is exposed to the browser.
The project was designed and implemented with Codex. GPT-5.6 is also used directly in the shipped multimodal explanation workflow.
Lumi is intentionally strict because its audience includes children.
- The registration form asks for an adult's email and a child-safe display name or nickname.
- The exact age stays on the Lumi server.
- Only an age group and preferred language are used for response adaptation.
- The display name is excluded from reasoning, vision, and transcription prompts. It is added only to the final text-to-speech request so the greeting and explanation use one consistent voice.
- Images are resized and re-encoded before analysis, removing EXIF metadata.
- Discovery photos and voice recordings exist only for the duration of the request. Homework photos are retained only when the child specifically chooses the annotated-photo response, and only inside the private history image.
- Unsafe inputs, unsafe model outputs, and high-risk topics use a pre-generated refusal response.
- The app does not identify people in images or infer sensitive personal traits.
See the public privacy.php page for the user-facing policy.
- PHP 8.1+ server-rendered pages and JSON endpoints
- MySQL 5.7+/MariaDB with automatic schema initialization
- Native browser Camera, MediaRecorder, and Dialog APIs
- SMTP email verification over TLS
- Dependency-free OpenAI REST integration through PHP cURL
- Apache
.htaccessrules for private source, configuration, and storage paths - Database-backed runtime settings managed through
Portal.php
- Copy
.env.exampleto.env. - Add the database, SMTP, and OpenAI credentials.
- Point a PHP 8.1+ web server at the repository root.
- Open
index.php.
The database tables and reviewer account are created on the first database connection. Set TESTER_EMAIL and TESTER_PASSWORD only in the private environment file.
Required PHP extensions:
curl
fileinfo
gd
mbstring
openssl
pdo_mysql
Reviewer credentials are provided in the private Devpost submission notes. They are intentionally excluded from this public repository.
- PHP syntax validation across all application files
- JavaScript syntax validation for landing and app flows
- Live OpenAI image-analysis and voice-question smoke tests
- Live multilingual image-analysis and speech smoke test
- Responsive browser checks at desktop and mobile viewports
- Production HTTPS, static asset, and protected-path checks
- Production database initialization and reviewer login
The Lumi character artwork, videos, and music in this repository are project assets supplied for the hackathon. The universe background and square Lumi app icon were created with OpenAI image generation for this interface.