OffGridSchedula / docs /demo-walkthrough.md
ParetoOptimal's picture
Upload folder using huggingface_hub
bc8328b verified
|
Raw History Blame Contribute Delete
8.83 kB

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; 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; 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.