Positive Posture Preserve Me (PPPM)
It is a multimodal memory-to-confidence platform.
The core idea is simple: people often forget their strongest moments right when they need confidence the most. PPPM helps users capture those moments in voice, text, image, and video, then transforms them into an uplifting capsule they can revisit before exams, interviews, presentations, and high-pressure days.
Inspiration
We were inspired by a common pattern: people are capable and resilient, but stress makes them forget their own evidence of progress.
Traditional journaling tools are useful, but often feel passive and text-heavy. We wanted to build something emotionally engaging and immediate: a “confidence replay” experience that feels more like reliving momentum than reading notes.
What it does
PPPM lets users:
- create memory capsules from text, voice, images, and videos
- chat with AI for clarifying prompts to deepen context
- generate interleaved multimodal output (story text + visuals + audio/video segments)
- store media locally by default, with optional Google Cloud Storage credentials
- run capsule generation asynchronously with job progress/status updates
- track generation state in Firestore (with safe in-memory fallback)
- use secured auth flows with server-side CAPTCHA checks and verified Google ID tokens
How we built it
We built PPPM as a full-stack TypeScript project:
- frontend: React + Vite + Zustand + i18n
- backend: Node.js + Express + Prisma
- AI layer: Google GenAI SDK for multimodal pipeline orchestration
- storage: local filesystem fallback, optional GCS
- realtime/state: Firestore-backed generation state service
On the generation side, we moved from a synchronous path to an async job pipeline:
- enqueue generation job
- update stages (
UPLOADING -> UNDERSTANDING -> PLANNING -> GENERATING -> FINALIZING) - compose final multimodal segments
- persist capsule and return complete result to UI
Challenges we ran into
- balancing cost and reliability: cloud-only flows were expensive early, so we implemented local-first storage fallback
- turning generation into a robust async workflow without breaking existing client behavior
- hardening auth beyond UI-only checks (server-side CAPTCHA verification and proper Google token signature verification)
- handling multimedia assembly constraints across environments (especially video toolchain/runtime restrictions)
- keeping user experience smooth while adding security and backend complexity
Accomplishments that we're proud of
- delivered a practical local fallback architecture that still supports cloud upgrade paths
- implemented a real async generation pipeline with progress/status visibility
- integrated multimodal story composition with text, image, audio, and video segments
- upgraded security posture with stronger auth verification flows
- shipped a git-ready, deployable project structure with clear environment templates
What we learned
We learned that emotional-product UX and backend architecture must evolve together.
If generation quality improves but latency and reliability degrade, trust drops quickly.
We started modeling product trade-offs as:
\[ \text{User Trust} \propto \frac{\text{Quality} \times \text{Reliability}}{\text{Latency} + \text{Friction}} \]
That mindset helped us prioritize async jobs, transparent progress, and fallback paths.
What's next for Positive Posture Preserve Me
- richer voiceover and recap quality tuning
- stronger realtime UX around capsule generation and reminders
- production-grade queue workers and observability dashboards
- improved accessibility and localization depth
- polished sharing/export workflows for confidence capsules
- final cloud deployment hardening and demo optimization
Built With
- docker
- express.js
- googlecloudstorage
- googlefirestore
- i18next
- node.js
- prisma
- react
- reactquery
- sqlite
- typescript
- vite
- zustand


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