--- title: FutureSelves emoji: ✨ colorFrom: yellow colorTo: gray sdk: gradio sdk_version: 5.50.0 app_file: app.py pinned: false tags: - backyard-ai - openbmb - nvidia-nemotron - tiny-titan - best-agent - off-brand - bonus-quest-champion --- # ✦ FutureSelves **A daily ritual where your future self sends you transmissions.** A private future-radio, not a dashboard. Check in with one word, receive a voice transmission from across time, make a tiny choice that reshapes who gets to speak tomorrow. The whole ritual lives inside a single signal chamber — no card-grid, no SaaS, no scroll. All inference runs on-device via three small models — no cloud dependencies, no API bills, no data uploaded. ## How it works 1. **Onboarding** — Tell the system about your current life chapter: what you're avoiding, what you're afraid won't happen, what's draining you, and what would make a miraculous year. *Or skip straight to the demo with **✦ Try Maya's example** — a fully-populated 4-day history from Maya, a 28-year-old founder, with audio for each transmission.* 2. **Daily check-in** — One word + optional note for today. A structured insight extractor (Nemotron-Parse) reads your note for emotional signals. 3. **Transmission** — Your assigned future self (MiniCPM 2.5B, prompted with your full context) generates a personalized narrative message with a specific action prompt and cliffhanger. The transmission is **spoken aloud** via local TTS (Kokoro / Piper). 4. **Your move** — Choose: toward, steady, release, or repair. Each choice shifts your timeline and builds toward unlocking new cast members. 5. **Reaction** — Tell your future self how it landed. The next transmission remembers. ## Models | Model | Params | Role | Sponsor | |---|---|---|---| | MiniCPM 2.5 (openbmb) | ~2.5B | Transmission generation (primary LLM) | OpenBMB | | Nemotron-Parse (NVIDIA) | <1B | Structured note extraction (emotions, themes, entities) | NVIDIA Nemotron | | Piper / Kokoro | 15–82M | Text-to-speech (pre-rendered samples + local synthesis) | — | Each model is well under 32B params. Total: ~3.1B across all three models — qualifies for **Tiny Titan**. ## Prizes targeted (honest list) | Prize | Why we qualify | |---|---| | **Backyard AI (track)** | Practical daily-life app for personal reflection and emotional accountability. The demo persona (Maya) is a real-archetype user with 4 days of history, demonstrating depth. | | **OpenBMB MiniCPM Build** | MiniCPM 2.5 is the **primary** generation model — not a side experiment. Every transmission in the live demo runs through it. | | **NVIDIA Nemotron** | Nemotron-Parse extracts structured insights from check-in notes (sentiment, emotions, themes). Falls back to keyword extraction when GPU memory is tight — documented and graceful. | | **Tiny Titan** | ~3.1B total across all models — deep under the 4B cap. | | **Best Agent** | Multi-step agentic pipeline: check-in → note extraction → prompt assembly → generation → choice → reaction → memory persistence. Open trace at [`traces/agent-trace.jsonl`](traces/agent-trace.jsonl). | | **Off Brand** | Custom transmission-console interface (Fraunces + IBM Plex Mono), atmospheric gradients and scanlines, animated tuning-state waves, voice-orb constellation rail, horizontal signal-path progress bar — a private future-radio, not a card-grid dashboard. | | **Best Use of Modal** | Persona summarizer runs as a Modal serverless GPU function ([`traces/modal_app.py`](traces/modal_app.py)). Generates a 1-paragraph narrative summary from a persona's full history. Eligible for the $20k Modal credits pool. | | **Bonus Quest Champion** | Six bonus criteria: 🔌 Off the Grid (no cloud APIs), 🎨 Off-Brand (custom UI), 📡 Sharing is Caring (open agent trace), 📓 Field Notes (blog post), + Nemotron sponsor + Modal sponsor. | > **Note on badges we don't claim:** We do not claim 🎯 Well-Tuned (we use base MiniCPM 2.5, not a fine-tuned variant) or 🦙 Llama Champion (we use 🤗 Transformers, not llama.cpp). We also do not claim OpenAI Codex as a sponsor — the code was written by humans with AI assistance, not by Codex. ## Tech - **UI:** Gradio 5.50.0 with a custom transmission-console skin (Fraunces serif for the chamber voice, IBM Plex Mono for instrument labels), atmospheric gradients and scanlines, a horizontal voice-orb constellation rail, and a signal-path progress bar in place of step pills - **LLM:** MiniCPM 2.5 via 🤗 Transformers with SDPA attention, running on a T4 GPU in HF Spaces - **Extraction:** Nemotron-Parse (NVIDIA) with keyword fallback when GPU is constrained - **TTS:** Piper 15–60M voices (pre-rendered samples in `audio/voices/`, served as static assets) + Kokoro 82M for live synthesis when available - **State:** In-memory session state with `gr.BrowserState` persistence across page refreshes - **Demo persona:** Maya, a 28-year-old founder with 4 days of pre-written transmission history. Pre-rendered audio for each. Click **✦ Try Maya's example** on the first screen to skip onboarding. - **Agent trace:** Every transmission logs the full chain (system prompt, user prompt, raw LLM output, parsed JSON, note insights, duration) to `traces/agent-trace.jsonl` for the **Sharing is Caring** bonus quest. See [`traces/agent-trace.jsonl`](traces/agent-trace.jsonl). - **Modal integration:** Persona summarizer runs on Modal's serverless T4 GPU. Function source in [`traces/modal_app.py`](traces/modal_app.py), summaries in [`traces/persona-summaries.json`](traces/persona-summaries.json). ## Running locally ```bash pip install -r requirements.txt python app.py ``` ## Links - **[Live Space](https://huggingface.co/spaces/Papajams/futureselves)** — deployed on T4 GPU - [Source (monorepo)](https://github.com/udingethe/futureselves/tree/main/hf-space) - [Demo video](demo.mp4) — 2-minute walkthrough - [Demo walkthrough](FIELD_NOTES.md#the-artifact-end-to-end) — step-by-step guide for judges - [Social post](https://medium.com/@ungethe/building-small-9aea8bf5236e) — Medium article - [Agent trace](traces/agent-trace.jsonl) — open record of every transmission - [Field Notes blog post](FIELD_NOTES.md) — what we built and what we learned - [Modal app](traces/modal_app.py) — serverless persona summarizer