Sprout is an AI-powered content generation platform that creates safe, age-appropriate educational videos for children. It uses a multi-stage pipeline with safety checks, human approval gates, and automatic voice/image generation.
- Age-Adaptive Content : Three tiers: Sprout (3-6), Explorer (6-10), Tween (10-13)
- Safety-First Pipeline : Multiple safety checks before content is generated
- Human Approval Gate : Review and edit scripts before final generation
- Smart Voice Selection : LLM-powered voice matching based on content
- Auto-Generated Visuals : Scene images created via Pollinations.ai
- Content Nutrition Label : Parent-friendly rating breakdown
- Provenance Manifest : Full audit trail of the generation process
Backend:
- Node.js + Express
- Anthropic Claude (script generation, safety, voice selection)
- ElevenLabs (text-to-speech)
- Pollinations.ai (image generation)
Frontend:
- React 18 + Vite
- Tailwind CSS
sprout/
├── client/ # React frontend
│ ├── src/
│ │ ├── components/ # UI components
│ │ │ ├── AgeTierSelector.jsx
│ │ │ ├── ApprovalGate.jsx
│ │ │ ├── BundleOutput.jsx
│ │ │ ├── ManifestViewer.jsx
│ │ │ ├── NutritionLabel.jsx
│ │ │ ├── PipelineProgress.jsx
│ │ │ ├── SafetyBlock.jsx
│ │ │ ├── SeedPicker.jsx
│ │ │ ├── SlideshowPlayer.jsx
│ │ │ └── StyleConfig.jsx
│ │ ├── App.jsx
│ │ └── index.css
│ └── tailwind.config.js
├── server/ # Express backend
│ ├── pipeline/ # Content generation pipeline
│ │ ├── approvalGate.js
│ │ ├── bundleAssembler.js
│ │ ├── contentRatingEngine.js
│ │ ├── costTracker.js
│ │ ├── elevenLabs.js
│ │ ├── manifestWriter.js
│ │ ├── nutritionLabelWriter.js
│ │ ├── router.js
│ │ ├── safetyChecker.js
│ │ ├── scenePlanner.js
│ │ ├── scriptGenerator.js
│ │ ├── slideGenerator.js
│ │ ├── topicExtractor.js
│ │ ├── vocabularyChecker.js
│ │ └── voiceSelector.js
│ ├── bundles/ # Generated content storage
│ ├── manifests/ # Provenance manifests
│ └── index.js
├── shared/
│ └── types.js # Shared type definitions
└── .env # Environment variables
- Node.js 18+
- npm or yarn
- Anthropic API key
- ElevenLabs API key
-
Clone the repository
git clone https://github.com/yourusername/sprout.git cd sprout -
Install backend dependencies
cd server npm install -
Install frontend dependencies
cd ../client npm install -
Create environment file
# In the root directory cp .env.example .env -
Configure environment variables
# Required ANTHROPIC_API_KEY=your_anthropic_api_key ELEVENLABS_API_KEY=your_elevenlabs_api_key # Optional PORT=3001
-
Start the backend server
cd server npm start -
Start the frontend dev server (in a new terminal)
cd client npm run dev -
Open the app
http://localhost:5173
- Seed Discovery — Parse input topic
- Safety Check — Validate content is age-appropriate
- Voice Selection — LLM selects optimal voice for content
- Script Generation — Create scene-by-scene script
- Content Rating — Score on violence, fear, complexity, inclusivity
- Human Approval — Review, edit, approve, or reject
- Media Generation — Generate audio (ElevenLabs) + images (Pollinations)
- Assembly — Bundle all assets with manifest
POST /api/generate— Start a new content generationGET /api/status/:id— Get pipeline statusGET /api/bundle/:id— Get completed bundle
POST /api/approve— Approve content for generationPOST /api/edit— Submit edited scenesPOST /api/reject— Reject content
POST /api/voice-preview— Preview voice selection for seedGET /api/voice-sample/:voice_id— Get voice audio sample
GET /api/audio/:id— Stream audioGET /api/download/audio/:id— Download MP3GET /api/download/captions/:id— Download SRTGET /api/slides/:id/:sceneId— Get slide image
Sprout includes 8 pre-configured ElevenLabs voices:
| Voice | Tiers | Character | Best For |
|---|---|---|---|
| Rachel | Explorer, Tween | Calm, friendly | Educational explainers |
| Domi | Explorer, Tween | Energetic, playful | Science, how-to |
| Bella | Sprout, Explorer | Warm, gentle | Storytime, nature |
| Antoni | Tween | Friendly, calm | History, social studies |
| Arnold | Explorer, Tween | Energetic, curious | Adventure, space |
| Adam | Tween | Calm, authoritative | Technology |
| Sam | Sprout, Explorer | Playful, warm | Animals, art |
| Gigi | Sprout | Warm, gentle | Preschool content |
Sprout implements multiple layers of safety:
- Input Safety Check — Blocks inappropriate topics before processing
- Vocabulary Checker — Flags complex words for age tier
- Content Rating — Scores violence, fear, complexity (0-5 scale)
- Human Approval — Required before final generation
- COPPA Compliant — All content adheres to children's privacy standards
MIT