ai-time-machine / docs /immersive_experience_execution_plan.md
manikandanj's picture
Prepare AI Time Machine hackathon Space
5862322 verified
|
Raw
History Blame Contribute Delete
8.62 kB
# Immersive Time-Travel Experience Execution Plan
Date: 2026-06-13
## Product Direction
Build a surreal time-travel spectacle first. The user should not feel like they opened a voice chatbot; they should feel like they activated a machine, crossed a portal, landed in another time, and met a person who belongs there.
The core demo sequence:
1. User chooses coordinates and presses **Launch**.
2. The cockpit begins a dramatic portal sequence.
3. A year counter rewinds or fast-forwards from the current year into the destination year.
4. The portal hides model latency while world, character, and optional narration assets are prepared.
5. The destination fades in slowly: first atmosphere, then world image, then character portrait.
6. A narrator voice introduces the world and character in a cinematic tone.
7. The narrator voice stops. The character voice is clearly different.
8. Live conversation begins inside the revealed world.
9. The user can ask for an artifact/souvenir and receive a visual object from that world.
## Hackathon Constraints
- The app remains a Gradio app hosted as a Hugging Face Space.
- The 32B parameter limit is treated as **per model used**, not cumulative across all models.
- Every model used for core functionality must have an individually defensible parameter count.
- Cloud APIs are allowed unless a specific bonus badge requires local-only operation. We are optimizing for wow and reliability, not Off-the-Grid.
- Current model choices remain valid:
- LLM: Qwen/Qwen3-8B, 8B.
- STT: nvidia/nemotron-3.5-asr-streaming-0.6b, 0.6B.
- TTS: ResembleAI/chatterbox or Chatterbox Turbo family, about 0.5B.
- Image: black-forest-labs/FLUX.1-schnell, 12B.
## Architecture Strategy
Keep the existing ports-and-adapters architecture.
Add immersion as typed events and UI state, not as one-off Gradio hacks:
- `ImmersiveScene`: generated/fallback scene metadata.
- `CharacterPortrait`: generated/fallback portrait metadata.
- `Narration`: text, audio path, narrator voice profile.
- `Artifact`: visual souvenir image plus markdown description.
- `ImmersiveEvent`: event emitted during launch/reveal.
The backend remains responsible for encounter state. The frontend owns visual animation and audio mixing.
## Phase 1: Portal Shell And State Plumbing
Goal: Make launch feel dramatic before any new model integration.
Build:
- Portal stage in `cockpit.html`.
- Year-travel counter that animates from current year to destination year.
- Dramatic launch states: dormant, launching, traversing, resolving, revealing, conversation ready.
- World reveal container with fallback gradient/texture.
- Character portrait aperture with fallback silhouette.
- Narration caption slot.
- JS function to ingest a hidden JSON UI payload and update the portal.
- Preserve existing live voice controls and transcript.
No external APIs.
No image generation.
No narration audio yet.
Validation:
- User clicks Launch and sees a cinematic portal sequence.
- Year counter moves in the correct direction for past/future.
- Destination/persona data appears in the immersive shell.
- Existing voice controls still work.
- The app still runs with fixture profile.
## Phase 2: Immersive Backend Contracts
Goal: Add backend contracts that can carry scene, portrait, narration, and artifact data without forcing UI rewrites.
Build:
- Domain models:
- `ImmersiveScene`
- `CharacterPortrait`
- `Narration`
- `VisualArtifact`
- Domain events:
- `SceneEvent`
- `PortraitEvent`
- `NarrationEvent`
- `VisualArtifactEvent`
- UI render state fields for immersive payload JSON.
- Fixture adapter data for at least two hero encounters.
- Tests for event ordering and serialization.
Validation:
- Fixture encounters populate scene/portrait/artifact placeholders.
- Hidden JSON payload updates after launch.
- No real image/audio APIs are required.
## Phase 3: Image Generation With Together FLUX
Goal: Generate the world and character from the destination/persona.
Build:
- `ImageGenerationPort`.
- Together adapter using `black-forest-labs/FLUX.1-schnell`.
- Generate scene and portrait in parallel after destination/persona are available.
- Cache base64 images per encounter.
- Fallback to generated CSS visual if image generation fails.
- Add `image` model entry to `config/models.yaml` with 12B parameter count.
- Update model-budget validation to check each enabled model individually against 32B.
Validation:
- Scene and portrait appear during or shortly after portal traversal.
- Slow image generation does not block the visual launch sequence.
- Failure leaves the demo usable.
## Phase 4: Cinematic Narration
Goal: Add a movie-opening narration that is distinct from the character voice.
Build:
- Narration prompt template:
- 15-25 seconds max.
- Describes year, place, atmosphere, and the person being contacted.
- Uses third-person cinematic narration.
- Avoids speaking as the character.
- Narrator voice profile:
- Stable, lower-energy, documentary/cinematic style.
- Separate from character `VoiceProfile`.
- Generate narration audio during portal animation.
- Play narration once after world reveal.
- Duck ambient audio under narration.
- Only open live voice after narration finishes or user skips.
Validation:
- Narrator and character voices are obviously different.
- Narration improves immersion without delaying interaction too much.
- Skip/continue control exists if audio generation is slow.
## Phase 5: Ambient Sound And Reactive Mixing
Goal: Make the world feel alive before the character speaks.
Build:
- Bundle small CC0 ambient loops:
- temporal storm / portal hum
- rain
- market/crowd murmur
- fire/hearth
- wind
- machinery
- insects/night
- water/harbor
- Ambient selector based on destination atmosphere, mode, and visual motifs.
- Web Audio mixer:
- portal hum during traversal
- crossfade to destination ambience
- duck ambience under narration and character speech
- optional stereo panning/small reverb
Validation:
- Launch has sound even before voice response.
- Ambience does not fight speech.
- Audio remains optional and browser-safe.
## Phase 6: Artifact Reveal
Goal: Create a memorable "the character handed me something" moment.
Build:
- Extend souvenir generation into a visual artifact:
- letter
- map fragment
- newspaper clipping
- receipt
- sketch
- warning poster
- tool tag
- Generate artifact prompt from destination, persona, and conversation.
- Reveal artifact in the portal/world UI with a physical animation.
- Save artifact with encounter trace.
Validation:
- Asking for a souvenir creates a visual object, not just markdown.
- Artifact matches the era and persona.
- Artifact is shareable in screenshots.
## Phase 7: Hero Demo Polish
Goal: Make the submission judge-ready.
Build:
- Two golden paths:
- Surreal past encounter.
- Strange/future encounter.
- A deterministic demo script:
- Launch.
- Listen to narration.
- Ask what is happening.
- Ask about one visible object.
- Ask for a souvenir.
- Challenge with a modern concept and watch the character react in-world.
- Field Notes doc.
- Shared traces.
- Screenshot/video-friendly layout.
- HF Space deployment check.
Validation:
- Demo works cold.
- Demo video can be recorded in one take.
- The app visibly qualifies for Off-Brand, Field Notes, and Sharing Is Caring.
## Deferred Until After Core Wow Works
- Full 3D avatar.
- Wav2Lip/SadTalker/LivePortrait realtime animation.
- Three.js room navigation.
- Gaussian splat viewer.
- WebXR.
- Fully live image generation for every conversation turn.
These are visually attractive but risky. A generated scene, portrait, ambient sound, narration, and artifact reveal provide most of the perceived immersion with much lower demo risk.
## Agent Implementation Model
Use agents by phase with disjoint ownership:
- Frontend worker: `cockpit.html`, `cockpit.css`, `cockpit.js`.
- Backend contracts worker: domain models/events, view model payload.
- Adapter worker: image generation port and Together adapter.
- Audio worker: narration/ambient audio integration.
- Test worker: focused unit/smoke tests and fixture updates.
At the end of each phase:
1. Run focused tests.
2. Start the app if needed.
3. Validate UI behavior.
4. Stop and collect feedback before proceeding.