Product recordings
Shot scripts for the five Trupeer recordings, and the local fixture that stages them.
The fixture is סטודיו תנועה, a Hebrew studio in Tel Aviv (Asia/Jerusalem, ILS, Elite tier). It has a year of history: 48 members who joined month by month, card billing, five leavers, four members with payment problems, six weeks of booked classes with three coaches, a 26-lead pipeline, three join links, a 26-movement library with videos, and 13 structured workouts. Movement and workout content is in English, as it always is in the product; Hebrew exists only as search aliases.
It is local-only and isolated. It lives in its own organization (taikan-video-demo) and never touches other orgs.
Before a recording session
-
Use a database of your own. The seed resets the fixture org on every run, so point
apps/api/.envat a clone (./scripts/db-clone.sh video_demo). -
Set the API env. In
apps/api/.env:TEST_HOOKS_ENABLED=trueandNODE_ENV=development, which register the always-approvingtestpayment gateway. Plan changes and debt collection need it.
-
Reset and seed. Every run purges everything the app wrote into the fixture during earlier takes, then rebuilds it:
pnpm seed:video-demo --owner-email [email protected] --confirmDates are relative to the moment you run it, so seed on the day you record. The run prints a cue sheet with the exact numbers, names and URLs that will appear on screen. Keep it open next to the recorder.
-
Hide the dev badges. Set
NEXT_PUBLIC_HIDE_DEVTOOLS=trueinapps/web/.env.local, which removes the TanStack Query and Next.js dev icons. Restartpnpm devafter changing it. -
Start the app with
pnpm dev, sign in, switch to סטודיו תנועה, and leave the UI in Hebrew. -
Reseed between takes that change data (copy week, bulk move, plan change). A reset takes under a second.
Best recording days are Sunday to Tuesday. “This week” is then mostly ahead of you, which reads naturally. Later in the week, stage the training video in next week instead (see video 4).
Recording without speaking
You record with the microphone off; the narration is generated afterwards.
- Record silently, one video per recording, following the scenes below. Each scene is one narration line plus the actions that go with it.
- Hold for the scene’s length. Each scene lists roughly how long its narration takes to read (about 2.5 words a second). Do the actions, then keep the screen still until that time has passed. Long waits, like Spotter thinking, can be trimmed in the editor afterwards.
- In Trupeer, replace the narration it generates with the lines under Narration, pasted scene by scene so each line lands on its step. Pick one voice and use it for all four videos so the series sounds like one product.
- If Trupeer’s voice or timing doesn’t work, generate the same lines with a dedicated TTS tool (ElevenLabs, for example) and lay the audio under the silent recording in any editor.
The narration is your English text, word for word. The UI stays in Hebrew.
Before each recording
- Chrome in full screen at 100% zoom, bookmarks bar hidden (⌘⇧B), and only the tabs the video needs.
- macOS Do Not Disturb on, so no notifications land in the shot.
- Move the mouse slowly and hover for half a second before every click; Trupeer zooms toward the cursor.
- Reach every screen through the sidebar, never the URL bar.
- Type Spotter prompts at a natural speed rather than pasting them.
1. Spotter — “Your gym, on autopilot” (45–60 s)
The story: one Sunday morning, four admin jobs, all done by asking. Each job is asked on the page where its result shows, so the payoff lands on screen behind the sheet.
| Scene | Do (silently) | Hold | Narration |
|---|---|---|---|
| 1 | Start on לוח זמנים, this week. Click › to next week and let the empty grid sit. | 5 s | Running a gym means repeating the same admin work every day. |
| 2 | Hover over ספוטר in the top bar, then click it. | 2 s | With Spotter, you just ask. |
| 3 | Type תעתיק את לוח השיעורים של השבוע לשבוע הבא. When the card appears, click העתקת השיעורים. Watch 23 draft classes fill the week behind the sheet. | 3 s after the classes appear | Copy next week’s schedule. |
| 4 | Close the sheet. Sidebar → סקירה כללית. Open Spotter, click +, type מה המצב העסקי החודש? MRR, חובות ומי צריך טיפול בתשלום. | Until the answer finishes, then 2 s | Check who needs payment attention. |
| 5 | Close the sheet. Sidebar → לידים (8 cards in חדש). Open Spotter, +, type תעביר את כל הלידים מהקמפיין "חוזרים לזוז · ספטמבר" משלב חדש לשלב נוצר קשר. Approve. The six cards move to נוצר קשר behind the sheet. | 3 s after the move | Move new leads to the next stage. |
| 6 | Close the sheet. Sidebar → לוח זמנים → ›. Open Spotter, +, type תבנה אימון של 4 סבבים: 8 Goblet Squat, 10 Push-Up ו-250m Row, ותשבץ אותו באימון הפונקציונלי של 18:30 ביום ראשון הבא. Approve. | 2 s after approval | Create a workout and place it on the schedule. |
| 7 | Scroll the chat up slowly over the approval cards. | 8 s | Spotter understands your business context, takes action across Taikan, and always shows you what will change before it happens. |
| 8 | Close the sheet. Click Sunday’s 18:30 class to show the workout on it, then close it. | 4 s | Less clicking. Less admin. More time coaching your members. |
| 9 | Hover over ספוטר. | 2 s | This is Taikan Spotter. |
Verified: scene 3, including the live calendar refresh. Do one dry run of scenes 4–6 before recording.
2. Acquisition funnel — “From interest to member” (45–60 s)
The story follows one lead’s journey: what a prospect sees, the link that captured them, and the pipeline that tracks them. Keep two tabs open: the dashboard, and the public join page http://localhost:3000/join/taikan-video-demo-september-000001.
| Scene | Do (silently) | Hold | Narration |
|---|---|---|---|
| 1 | Start on the join page tab: the studio’s offer, ₪289 in place of ₪389. Don’t fill it in. | 4 s | Every new member starts with one moment of interest. |
| 2 | Switch to the dashboard tab. Sidebar → לידים: the board with six stages. | 4 s | With Taikan, you can turn that interest into a tracked, organized process. |
| 3 | Sidebar → קישורי הצטרפות. Click קישור חדש, type סדנת בוקר · אוקטובר, pick the plan פעמיים בשבוע, click שמירה. | 3 s after the new row appears | Create a join link for a campaign, coach, or referral source. |
| 4 | On the new row click העתקת קישור, then rest the cursor on its QR code. | 5 s | Share it anywhere — Instagram, WhatsApp, your website, or a QR code at the gym. |
| 5 | Sidebar → לידים. Hover over the חדש column and its campaign chips. Click אורית דיין: the drawer shows Instagram and חוזרים לזוז · ספטמבר. Close it. | 5 s | Every lead enters your pipeline automatically, with the right source attached. |
| 6 | טבלה → campaign filter חוזרים לזוז · ספטמבר (6 rows) → header checkbox → העברה לשלב → נוצר קשר (preview reads 6) → confirm. Back to לוח: the six now sit in נוצר קשר. | 2 s after the board | Follow up, move leads between stages, |
| 7 | טבלה → clear the campaign filter → source filter קישור הצטרפות: every lead from a join link, each with its link as the campaign. | 3 s | and always know exactly where growth is coming from. |
| 8 | Sidebar → סקירה כללית, scroll to משפך הלידים (leads by source and conversion rate). | 3 s | No lost WhatsApp messages. No spreadsheets. No guessing. |
| 9 | Sidebar → לידים, the full board. | 3 s | Just a clear path from lead to member. |
Reseed before this video if you have already recorded the Spotter video: both move the same six leads. Delete the סדנת בוקר link (or reseed) before a retake.
3. Finance — “Know what’s happening before it becomes a problem” (50–65 s)
The story goes from the big picture to one member and back: the numbers, who needs attention, one member’s plan changed properly, then the early-warning list.
| Scene | Do (silently) | Hold | Narration |
|---|---|---|---|
| 1 | Start on סקירה כללית. Scroll once to the revenue tile: twelve months of growth. | 4 s | A fitness business should not need a spreadsheet to understand its money. |
| 2 | Sidebar → הכנסות. Hover over the forecasted recurring figure (₪17,986) and the revenue line. Click the הוראות קבע tab (upcoming charges), then the חובות tab (3 members). | 7 s | Taikan gives you one clear financial picture: active memberships, recurring revenue, upcoming payments, and members who need attention. |
| 3 | Sidebar → לקוחות → search נועה → נועה גולן → tab מסלולי חברות ותשלומים: plan, next charge, card, payment history. Click החלפת מסלול חברות. | 3 s | Manage membership plans, change a member’s plan when their needs change, |
| 4 | Choose חופשי חודשי — ₪389, מיידית, חיוב הכרטיס השמור. Rest the cursor on “חיוב היום: ₪215.6”. Click אישור השינוי: the toast appears and the plan changes. | 3 s after the toast | and keep every payment connected to the right member. |
| 5 | Sidebar → סקירה כללית. Hover down דורש את תשומת לבך: failed charges, open debt, the member whose charge failed. | 6 s | When something needs follow-up, you see it immediately — before a missed payment turns into lost revenue. |
| 6 | Hold on the overview. | 3 s | Clear numbers. Fewer manual calculations. |
| 7 | Sidebar → הכנסות, hold on the revenue line. | 3 s | More control over the business behind your gym. |
The ₪215.6 depends on the day you seed; the cue sheet prints the day’s figure. Verified: scenes 3–4, end to end.
4. Training — “Build better training, without the busywork” (50–65 s)
The story: plan a week, add one class, build its workout from the library, place it, done. Record right after the Spotter video without reseeding: next week then has classes, an empty whiteboard and an open Thursday 18:30 slot.
| Scene | Do (silently) | Hold | Narration |
|---|---|---|---|
| 1 | Start on לוח זמנים, next week. Let the full grid sit. | 4 s | Great coaching needs structure — but it should not take hours of admin to build it. |
| 2 | Slowly sweep the cursor across the week. | 3 s | In Taikan, you can build a complete training week in one place. |
| 3 | Click the empty Thursday 18:30 slot. Create אימון פונקציונלי with coach סער; it appears in the grid. | 2 s after it appears | Create sessions, |
| 4 | Sidebar → אימונים → new → בונה מתקדם. Title Thursday Burner. Add a warm-up (2 rounds: Row 250 m, Air Squat 10) and a main section, AMRAP 12: type סקוואט in movement search and pick Goblet Squat (8 × 16 kg), then Push-Up 10 and Box Jump 12. Save. | 2 s after saving | add workouts, |
| 5 | Sidebar → לוח זמנים → the new Thursday class → attach Thursday Burner. | 2 s | and place them directly on your schedule. |
| 6 | Sidebar → תנועות → click של המועדון שלי → open Goblet Squat: the demo video plays, with cues, common faults and scaling. | 6 s | Use your exercise library to keep movements consistent, with instructions and video where your members need them. |
| 7 | Sidebar → קבוצות אימון: five personal-training members with their weekly plans. | 6 s | Build a workout once, then reuse it for group classes, personal training, or an individual member’s program. |
| 8 | Sidebar → לוח זמנים. | 2 s | Your coaches stay aligned. |
| 9 | Click the Thursday class to show its workout, then close it. | 2 s | Your members always know what’s next. |
| 10 | Hold on the week. | 2 s | And you get more time to coach. |
Record straight through in scene order. In the unfiltered movement view your local DB also lists placeholder global movements, some with the same names, so always click של המועדון שלי first. Don’t use the Paste flow; the parser rejects Hebrew input.
5. One member, both sides — “From sign-up to first workout” (60–75 s)
The story: a brand-new member, שיר קוריאל, set up by the studio on the web while their phone reacts in real time. Record it as one continuous take of the whole desktop: browser on the left, iOS Simulator on the right, signed in as [email protected]. Your clicks in the simulator show as taps, so every cause and its effect land in the same frame.
Before the take: Shir must start empty, with only the membership and a saved test card (Visa ending in 4242, test gateway). The simulator has no push notifications, so after each web action, pull down to refresh on the phone before cutting to it.
| Scene | Where | Do (silently) | Hold | Narration |
|---|---|---|---|---|
| 1 | Web | Sidebar → לקוחות → search שיר → שיר קוריאל. The profile has no plan yet. | 4 s | A new member just joined your studio. |
| 2 | Web | Tab מסלולי חברות ותשלומים → הרשמה לתוכנית → חופשי חודשי, first month at the ₪289 intro price → charge the saved card (Visa ending in 4242) → confirm. The plan and the charge appear on the page. | 3 s after it appears | Assign a membership in seconds. The payment goes through on their saved card and is recorded on their account. |
| 3 | Phone | Pull to refresh on בית. The plan appears. | 3 s | On their phone, it’s already there. |
| 4 | Phone | Tab לו״ז → tomorrow → אימון פונקציונלי 18:30 → book. The seat is confirmed. | 3 s | They pick a class and book it themselves. No calls, no WhatsApp back-and-forth. |
| 5 | Web | Sidebar → לוח זמנים → tomorrow’s 18:30 class. Shir is on the roster. | 3 s | Your coaches see exactly who’s coming. |
| 6 | Web | Sidebar → קבוצות אימון → ליווי אישי → add Shir → in Shir’s row, put PT · Day A · Legs on tomorrow’s day. | 3 s after it lands | Want to give them more? Add them to a personal program and assign workouts straight from your library. |
| 7 | Phone | Pull to refresh. The תוכנית tab appears. Open it → PT · Day A · Legs → tap Goblet Squat: the demo video and cues. | 5 s | Their program shows up in the app, every movement with instructions and a video. |
| 8 | Both | Hands off the mouse: the web member page on the left, Shir’s program on the right. | 4 s | One platform for your team. One app for your members. Everything connected. |
| 9 | Both | Hold. | 2 s | This is Taikan. |
Not yet dry-run: all of it. Two things in particular:
- The labels inside the enroll dialog (scene 2) and the app’s booking screen (scene 4). I wrote the scenes from the code, not from a run.
- The order in scene 6 matters. The phone shows the תוכנית tab only once the member is enrolled in a coaching program. Add Shir to ליווי אישי before assigning the workout, or the workout never appears.
Retakes: a reseed deletes Shir’s membership along with everything else in the studio, so reset Shir on its own instead. This keeps the membership and card, and removes what the take added:
psql postgresql://postgres:postgres@localhost:5432/taikan_dev_video_demo <<'SQL'
begin;
with m as (
select m.id, m.user_id from memberships m join users u on u.id = m.user_id
where lower(u.email) = '[email protected]' and m.organization_id = 'b100d000-0000-4000-8000-100000000001'
)
, a as (delete from workout_assignments where user_id in (select user_id from m) and organization_id = 'b100d000-0000-4000-8000-100000000001')
, e as (delete from program_enrollments where membership_id in (select id from m))
, b as (delete from bookings where membership_id in (select id from m))
, p as (delete from payment_transactions where membership_id in (select id from m))
select 1;
delete from subscriptions where membership_id in (
select m.id from memberships m join users u on u.id = m.user_id
where lower(u.email) = '[email protected]' and m.organization_id = 'b100d000-0000-4000-8000-100000000001');
commit;
SQLFixture reference
- Owner: the account passed in
--owner-email. The coaches are דנה אבירם and יונתן שגיא. - Plans: חופשי חודשי ₪389 (intro ₪289), פעמיים בשבוע ₪289, חופשי שנתי ₪3,948, ליווי אישי ₪1,200, כרטיסיית 10 כניסות ₪650, אימון ניסיון ₪50.
- Weekly timetable: Sunday to Thursday 06:30 / 17:30 / 18:30 / 19:30, plus mobility at 08:00 on alternate days. Friday at 08:00 and 09:15. Closed on Saturday.
- Emails: all fixture people use the reserved
tnua-studio.testdomain, so nothing can reach a real inbox. - Removal:
pnpm seed:video-demo --purge --confirmdeletes the org and everything under it. It walks the foreign-key graph, so rows the app created during takes go too. - Code:
scripts/seed-video-demo.ts(writes) andscripts/video-demo/data.ts(every name, movement, workout and lead on camera).