Inspiration
Life's most meaningful moments deserve more than a greeting card that gets filed away. When someone graduates, gets married, welcomes a baby, or simply needs a reminder that they're loved — they deserve something lasting. We built Charmbook because we believe the people who care about you should be able to give you a gift that keeps giving, something you can return to on hard days, lonely nights, or whenever you need a boost.
What it does
Charmbook lets you create a digital "book of charms" — a collection of heartfelt messages and memories from friends and family:
- Create a Book - Sign up and create a Charmbook for any milestone: graduation, farewell, birthday, wedding, new baby, or just because.
- Gather Charms - Share a contributor link with friends and family so they can add their own personal messages, photos, and memories.
- Gift the Magic - Share a special link with your recipient. Here's where the AI magic happens: when they open their Charmbook, they share how they're feeling ("I'm having a rough day" or "feeling grateful today"), and our LLM-powered mood matching system analyzes their emotional state to reveal the perfect charm for that exact moment.
This isn't random selection — the AI considers the emotional tone of their message, whether they need comfort or celebration, and intelligently matches them with the most appropriate charm from their collection.
How we built it
Backend Architecture (Raindrop Platform):
- 6 Microservices deployed on Raindrop:
- api-gateway (public HTTP entry point)
- auth-service (JWT authentication)
- book-service (book CRUD operations)
- charm-service (charm management)
- reveal-service (AI-powered mood matching)
- upload-service (image handling)
Raindrop Smart Components:
- SmartSQL (charmbook-db) - Relational database storing users, books, charms, reveals, and feedback with proper foreign key relationships
- KV Cache (token-blacklist) - Fast token invalidation for secure logout
- SmartBucket (uploads) - Protected storage for user-uploaded images
- SmartInference - Cloudflare Workers AI running Llama 3.1 8B for real-time mood analysis and charm selection
AI Implementation: The reveal-service uses an LLM with a carefully crafted system prompt that:
- Analyzes emotional tone (positive, negative, neutral)
- Detects implicit needs ("feeling low" → comforting messages)
- Scores charms based on content match, novelty, and author relevance
- Returns structured JSON with selection reason and confidence score
- Falls back gracefully to random selection if LLM fails
Frontend (Vultr VPS):
- Next.js 16 with React, deployed on Vultr VPS with PM2 process management
- Magical reveal animations (orb writing effect, vortex page transformation)
- Responsive design with theme customization per book
Built entirely with Claude Code as the AI coding assistant, using the Raindrop MCP Server for seamless deployment.
Challenges we ran into
- Mood-to-charm matching quality - Getting the LLM to consistently return valid JSON and make emotionally intelligent selections required iterating on the system prompt and adding robust fallback handling.
- Animation timing with async fetches - The magical reveal experience needed to feel seamless, so we optimized to fetch charms during the writing animation and skip loading states when data is ready.
- Service orchestration - Coordinating 6 microservices with proper authentication flow and error propagation required careful API gateway design.
Accomplishments that we're proud of
- True AI-powered emotional matching - Not just random reveals, but contextually aware selection that knows "I need comfort" means something different than "surprise me!"
- Microservice architecture - Clean separation of concerns across 6 services, all deployed and managed through Raindrop
- Production-ready - JWT auth, image uploads, feedback system, daily reveal limits — this is launch-ready
- The "For the hard days" philosophy - Creating technology that genuinely helps people during difficult moments
What we learned
- Raindrop's declarative manifest approach makes microservice deployment remarkably simple
- SmartInference's Cloudflare Workers AI integration provides fast, affordable LLM inference at the edge
- The best AI features feel magical, not mechanical — we spent significant time on the reveal animation to make the experience feel like discovering treasure, not clicking a button
What's next for Charmbook
- Voice message charms via ElevenLabs integration
- SmartMemory for remembering recipient preferences across sessions
- Collaborative video messages stitched together into personal compilations
- Physical keepsakes - QR codes linking to digital Charmbooks
Built With
- claude-code
- cloudflare-workers-ai
- jwt
- llama-3.1-8b
- next.js
- pm2
- raindrop-platform
- react
- smartinference
- smartsql
- tailwind-css
- typescript
- vultr-vps
Log in or sign up for Devpost to join the conversation.