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.