Spaces:
Sleeping
Sleeping
File size: 8,828 Bytes
bc8328b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | # Demo video β recording walkthrough & talk track
The end-to-end runbook for recording the public demo video: environment prep,
the shot-by-shot walkthrough with the exact talk track, and *why each line is
worded the way it is*. The compact storyboard lives in
[demo-script.md](./demo-script.md); this document is the operator's guide for
actually producing it for a general-public audience (the hackathon
Submission-tab finale is replaced with a public closer).
## Decisions baked into this walkthrough
- **Backend: the live GPU Space.** Record against the real model β streaming
output, real extraction, working vision. Never record stub mode
(`USE_STUB_EXTRACTOR=1` output is visibly fake and vision is disabled).
- **Calendar: a brand-new demo Google account** (e.g. `offgridschedula.demo@`),
not a personal calendar. Zero PII can appear on camera β no real events, no
real email in the OAuth chrome β and the calendar is seeded with exactly the
event that produces the on-screen conflict.
- **The on-camera "event lands in the calendar" moment uses .ics import**, not
a server-side OAuth push. `credentials.json`/`token.json` must never live on
the public Space; importing the downloaded .ics into the demo account's
Google Calendar shows the same payoff with zero server credentials. (An
optional locally-recorded one-click-push splice is described at the end.)
## Part A β Prep (before recording day)
### A1. Demo Google account
1. Create the account; set a neutral profile name ("OffGrid Demo").
2. In its Google Calendar (local timezone), seed **one clashing event**:
`Dentist β Tuesday 5:00 PM`. It collides with "practice moved to Tuesday
5pm" in the UI's built-in sample thread, which is what makes the β οΈ conflict
badge fire on camera. Add 1β2 filler events so the calendar looks lived-in.
3. Export the calendar (Settings β Import & export β Export) and save the
unzipped file as `demo-existing-calendar.ics` β this gets uploaded in the UI.
### A2. Assets
- **Flyer image** for the vision shot: a simple school-event flyer (title,
date, time, place) as PNG/JPEG β *not HEIC* (the vision pipeline can't decode
it), under 4 MB.
- **Staged iMessage chat** for the opening phone shot: stage a group chat with
demo contacts containing the storyboard lines ("Picture day Thursday 9am",
"practice moved to Tuesday 5", "RSVP by Friday") and screen-record it
scrolling. Never show a real chat.
### A3. Space
1. Put the Docker Space on a GPU tier (T4 is enough for E4B) and **restart
it** β restarting also clears `/tmp`, so no previously-ingested feed data is
visible anywhere in the UI.
2. Confirm `USE_STUB_EXTRACTOR` is unset and `MMPROJ_FILE` is set (vision).
3. Dry-run after llama-server health is green: sample thread β real streamed
output; upload `demo-existing-calendar.ics` β conflict badge; flyer β event
from image.
4. Relative dates resolve from the **server clock (UTC)** β check the dry-run
dates land on the expected weekdays and adjust the seeded Dentist event if
needed.
### A4. Recording
- 1080p+ screen capture (QuickTime / OBS) in a **clean browser profile** logged
into the demo Google account only.
- Record the voiceover separately after screen capture β cleaner than
narrating live, and the talk track below is written to be read.
## Part B β Shot list with talk track
| # | Time | Screen | Action | Talk track |
|---|------|--------|--------|------------|
| 1 | 0:00β0:08 | iPhone clip | Staged class group chat scrolls past | "Every parent knows this chat. The dates are in here β and they're easy to miss." |
| 2 | 0:08β0:20 | Browser | Open the Space; hero + badges visible; zoom the π badge | "OffGridSchedula. No app, no account β a small model runs right in the Space. No cloud APIs anywhere: that's the **Off the Grid** quest β local-first, the whole thing runs on the model in front of you." |
| 3 | 0:20β0:34 | Schedule flow | Upload `demo-existing-calendar.ics` first, then tap **Try a sample**; thinking panel streams; flash the model card link | "Paste the chat. The model reading it is **Well-Tuned** β our own fine-tune of Gemma, published on Hugging Face with its eval scorecard β and it runs through the llama.cpp runtime: **Llama Champion**." |
| 4 | 0:34β0:48 | Results | Event cards appear; β οΈ conflict vs Dentist; free-slot chips | "It pulls out the events, checks your calendar, and catches the clash β before anything is saved." |
| 5 | 0:48β0:58 | Vision | Start over β drop in the flyer PNG β event extracted from the image | "A flyer or screenshot works too β the same local model reads the date, time and place right off the picture." |
| 6 | 0:58β1:10 | Export | Copy the drafted reply; **Download .ics**; switch tabs and import it into the demo Google Calendar β events appear on the grid | "It drafts the reply, and the events drop straight into your calendar β Google, Apple, anything that takes a .ics." |
| 7 | 1:10β1:22 | Activity | Activity tab's live pipeline; click **share trace**; the public dataset page flashes | "Every agent run is observable β and one click publishes a redacted trace to a public Hub dataset for anyone to learn from. That's **Sharing is Caring**: the open trace quest." |
| 8 | 1:22β1:35 | Closer | Slow pan over the custom landing page β end card with the Space URL | "And everything you've watched β the hero, the cards, that dashboard β is a custom frontend pushed far past the default Gradio look: **Off-Brand**. Open source, runs locally, your messages never leave the machine. Try it free β link below." |
Tip for shot 6: pre-open the demo calendar's import dialog in a second tab so
the on-camera import is two clicks. Tip for shot 7: have the
`ParetoOptimal/offgridschedula-traces` dataset page pre-loaded in a tab so the
"published" beat is one cut, not a page load.
## Why the talk track is worded this way
- **Shot 1 names the pain before the product.** "Every parent knows this chat"
earns the next 60 seconds from a general audience that has never heard of
local LLMs β the hook is the missed pickup, not the model.
- **The bonus quests are named out loud, verbatim, at their evidence moments.**
This track serves two audiences at once: the public hook stays in shots 1
and 4β6, while the field guide's quest names β **Off the Grid** (local-first,
no cloud APIs), **Well-Tuned** (published fine-tune), **Llama Champion**
(llama.cpp runtime), **Sharing is Caring** (open trace on the Hub), and
**Off-Brand** (custom UI past stock Gradio) β are each spoken exactly when
the screen shows the proof. Judges score the video against those names;
making them explicit means no claimed quest can be missed on a single watch.
(The sixth claimed quest, **Field Notes**, is print, not screen β it lives on
the end card and in the README, not the voiceover.)
- **Shot 2 still kills the two adoption objections immediately** ("no app, no
account") before the first quest callout β the badge language is framed as a
plain-English promise ("the whole thing runs on the model in front of you"),
so the callout lands for laypeople too.
- **Shot 4's "before anything is saved"** is the trust beat β the agent
proposes, the human disposes. This line pre-empts the "AI touched my
calendar" fear that kills scheduling tools.
- **Shot 6 generalizes the payoff** ("Google, Apple, anything that takes a
.ics") so the demo doesn't read as Google-only β and the on-screen action
matches the off-grid story: a local file the user chooses to import.
- **Shot 8 closes on the three-word value stack** β open source, local,
private β and a single call to action, with the Off-Brand callout folded
into the visual it describes. People remember one URL and one feeling.
## Part C β Edit & publish
- Assemble: phone clip β screen capture β end card. Speed-ramp model wait time
but keep ~2 s of genuine streaming so it reads as live.
- Burn in captions (most social viewers watch muted). Export 1920Γ1080;
optionally a 1080Γ1920 vertical crop of shots 3β6 for Shorts/Reels.
- Pair with the draft copy in [social-post.md](./social-post.md); link the
video from the README (Build Small hard rule #3).
- **Pause or downgrade the GPU Space after recording** unless the closer is
meant to drive live traffic.
## Optional: one-click Google Calendar push splice
To show the actual **Add to Google Calendar** button instead of the .ics
import: run the app locally, complete the one-time OAuth flow as the *demo*
account to mint a local `token.json`, enable the toggle, and record just that
click β the UI is pixel-identical and splices cleanly. Never upload
`credentials.json`/`token.json` to the public Space.
|