Captions: translated subtitles for the training videos, no re-render, no re-voicing
Manson asked whether the training videos could be in other languages. A real dub means re-rendering every video per language: translated Romance-language speech runs 15-25% longer than English and these are slide videos with fixed beat timings, so swapped audio drifts off what is on screen. That turns 15 files into 75 and makes every future lesson edit a five-way job. Captions keep ONE video and add small text tracks beside it, so editing a lesson re-captions that lesson only. tools/captions.mjs: ffmpeg pulls the audio, ElevenLabs Scribe transcribes with word timings (the same STT we already use to verify voiceovers), words are grouped into SENTENCES, and only then translated. Translating cue-by-cue is why most auto-captions read badly at cue boundaries. Translation goes through our own /api/public/translate, so every phrase caches forever in translations.json and costs once across the site. The STT response is cached on disk because it costs money; never pay for it twice. Language choice is evidence, not instinct. The translation cache shows real member demand: Italian and French far ahead, then Spanish, then GERMAN - which beats Portuguese by more than double, the opposite of what we assumed. Proof of concept is Italian on the 5-minute overview. Captions are deliberately NOT on by default. An English reader does not want them forced over the picture; someone who already switched the site to Italian almost certainly does. public/vtt-lang.js shows the track matching their 🌐 choice and leaves the player's CC button to do the rest. Two bugs this caught in my own code, both found by reading the output: - the line wrapper truncated each cue to two lines and SILENTLY DELETED the overflow, so "the whole plan fits in one sentence" shipped as "fits in" then "sentence". It now chunks by the real wrapped line count and never drops a word. - a one or two word tail ("sentence." alone on screen) folds back into the previous cue. The suite asserts all 780 transcript words survive into the English track. Also: .vtt had no Content-Type mapping, so it served as octet-stream and browsers silently ignore such a track. qa/captions-e2e.mjs (12 assertions) reads the parsed cues back out of the player rather than trusting the markup, which is the only way to catch that class of failure. profiles-unit 28 and gate-e2e 33 still green. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,424 @@
|
||||
WEBVTT
|
||||
|
||||
1
|
||||
00:00:00.360 --> 00:00:02.060
|
||||
Most team builds fail for one reason.
|
||||
|
||||
2
|
||||
00:00:02.360 --> 00:00:04.800
|
||||
Everybody recruits and nobody helps.
|
||||
|
||||
3
|
||||
00:00:05.840 --> 00:00:07.380
|
||||
The RM Circle flips that.
|
||||
|
||||
4
|
||||
00:00:08.220 --> 00:00:13.140
|
||||
It's a team-first build on the Polygon
|
||||
blockchain where the whole plan fits in
|
||||
|
||||
5
|
||||
00:00:13.180 --> 00:00:13.880
|
||||
one sentence.
|
||||
|
||||
6
|
||||
00:00:13.920 --> 00:00:18.860
|
||||
Get your two, help your two get theirs,
|
||||
and teach them to do the same.
|
||||
|
||||
7
|
||||
00:00:19.160 --> 00:00:24.880
|
||||
This video is the full picture, how the
|
||||
structure works, how the money moves, and
|
||||
|
||||
8
|
||||
00:00:24.920 --> 00:00:26.500
|
||||
exactly what your job is.
|
||||
|
||||
9
|
||||
00:00:27.080 --> 00:00:28.560
|
||||
It's simpler than you think.
|
||||
|
||||
10
|
||||
00:00:29.540 --> 00:00:30.780
|
||||
Everyone enters the same way.
|
||||
|
||||
11
|
||||
00:00:31.320 --> 00:00:34.540
|
||||
One position on a smart contract placed in
|
||||
a two-wide matrix.
|
||||
|
||||
12
|
||||
00:00:35.080 --> 00:00:37.820
|
||||
You need exactly two people who join with
|
||||
your link.
|
||||
|
||||
13
|
||||
00:00:38.380 --> 00:00:39.620
|
||||
We call them your directs.
|
||||
|
||||
14
|
||||
00:00:40.240 --> 00:00:42.920
|
||||
And once you have two, your position is
|
||||
qualified.
|
||||
|
||||
15
|
||||
00:00:43.420 --> 00:00:45.020
|
||||
That's the finish line for width.
|
||||
|
||||
16
|
||||
00:00:45.820 --> 00:00:46.820
|
||||
You never need a third.
|
||||
|
||||
17
|
||||
00:00:47.000 --> 00:00:49.320
|
||||
From there, the build goes down, not out.
|
||||
|
||||
18
|
||||
00:00:50.120 --> 00:00:51.760
|
||||
Your two each get their two.
|
||||
|
||||
19
|
||||
00:00:51.820 --> 00:00:53.040
|
||||
Those four get theirs.
|
||||
|
||||
20
|
||||
00:00:53.780 --> 00:00:58.740
|
||||
And the matrix fills two, four, eight,
|
||||
sixteen with the whole team pushing the
|
||||
|
||||
21
|
||||
00:00:58.800 --> 00:00:59.800
|
||||
same wave.
|
||||
|
||||
22
|
||||
00:01:00.340 --> 00:01:02.560
|
||||
You get paid two ways, and they're
|
||||
different.
|
||||
|
||||
23
|
||||
00:01:03.060 --> 00:01:05.440
|
||||
Knowing the difference saves you a lot of
|
||||
confusion.
|
||||
|
||||
24
|
||||
00:01:05.980 --> 00:01:07.720
|
||||
Stream one, entry rewards.
|
||||
|
||||
25
|
||||
00:01:08.320 --> 00:01:12.680
|
||||
Every single person who joins on your link
|
||||
pays you an entry reward delivered to your
|
||||
|
||||
26
|
||||
00:01:12.760 --> 00:01:15.400
|
||||
wallet in the same transaction they join
|
||||
with.
|
||||
|
||||
27
|
||||
00:01:15.960 --> 00:01:18.180
|
||||
Not just the first two, everyone.
|
||||
|
||||
28
|
||||
00:01:18.740 --> 00:01:20.820
|
||||
Stream two, upgrade payments.
|
||||
|
||||
29
|
||||
00:01:21.320 --> 00:01:22.880
|
||||
The program has eight levels.
|
||||
|
||||
30
|
||||
00:01:23.540 --> 00:01:27.720
|
||||
As people below you buy levels, each
|
||||
payment travels up the matrix and lands on
|
||||
|
||||
31
|
||||
00:01:27.780 --> 00:01:30.300
|
||||
one position, the one at the matching
|
||||
depth.
|
||||
|
||||
32
|
||||
00:01:30.960 --> 00:01:35.400
|
||||
Someone one layer below you pays you when
|
||||
they buy level two.
|
||||
|
||||
33
|
||||
00:01:36.380 --> 00:01:40.080
|
||||
Two layers down, level three, and so on,
|
||||
eight layers deep.
|
||||
|
||||
34
|
||||
00:01:40.320 --> 00:01:44.020
|
||||
Each person below you pays you once at
|
||||
exactly one level.
|
||||
|
||||
35
|
||||
00:01:44.980 --> 00:01:47.840
|
||||
Here's the rule that decides whether you
|
||||
catch that money.
|
||||
|
||||
36
|
||||
00:01:48.260 --> 00:01:53.720
|
||||
To receive a level payment, your position
|
||||
must be qualified, two directs, and
|
||||
|
||||
37
|
||||
00:01:53.800 --> 00:01:55.260
|
||||
already at the level being bought.
|
||||
|
||||
38
|
||||
00:01:55.680 --> 00:01:57.720
|
||||
If you're not, the payment doesn't wait.
|
||||
|
||||
39
|
||||
00:01:58.300 --> 00:02:01.880
|
||||
It passes to the next eligible position
|
||||
above you permanently.
|
||||
|
||||
40
|
||||
00:02:02.700 --> 00:02:03.700
|
||||
That's not a punishment.
|
||||
|
||||
41
|
||||
00:02:03.900 --> 00:02:06.280
|
||||
It's the contract keeping every payment
|
||||
moving.
|
||||
|
||||
42
|
||||
00:02:07.120 --> 00:02:11.180
|
||||
Your job is simply to stay one level ahead
|
||||
of your team's deepest active layer.
|
||||
|
||||
43
|
||||
00:02:12.180 --> 00:02:15.800
|
||||
And your dashboard literally shows you
|
||||
when the moment is coming.
|
||||
|
||||
44
|
||||
00:02:16.700 --> 00:02:20.300
|
||||
When someone's two slots are full and
|
||||
another person joins their team, the
|
||||
|
||||
45
|
||||
00:02:20.360 --> 00:02:24.860
|
||||
contract places that new member in the
|
||||
first open slot further down.
|
||||
|
||||
46
|
||||
00:02:25.440 --> 00:02:26.580
|
||||
That's spillover.
|
||||
|
||||
47
|
||||
00:02:28.080 --> 00:02:32.280
|
||||
Spillover fills your structure with people
|
||||
you never recruited, and every one of them
|
||||
|
||||
48
|
||||
00:02:32.340 --> 00:02:34.800
|
||||
is future upgrade income for your
|
||||
position.
|
||||
|
||||
49
|
||||
00:02:35.280 --> 00:02:38.500
|
||||
But hear this clearly, spillover does not
|
||||
qualify you.
|
||||
|
||||
50
|
||||
00:02:38.960 --> 00:02:42.980
|
||||
Only people who join with your own link
|
||||
count as your directs.
|
||||
|
||||
51
|
||||
00:02:43.860 --> 00:02:45.780
|
||||
Spillover is a gift for your depth.
|
||||
|
||||
52
|
||||
00:02:46.600 --> 00:02:48.240
|
||||
Your two is still your job.
|
||||
|
||||
53
|
||||
00:02:49.140 --> 00:02:52.020
|
||||
Once you're qualified, the team's
|
||||
recommendation is simple.
|
||||
|
||||
54
|
||||
00:02:52.860 --> 00:02:54.080
|
||||
Shift your effort down.
|
||||
|
||||
55
|
||||
00:02:54.900 --> 00:02:58.520
|
||||
Help your two get their two instead of
|
||||
stacking more directs on yourself.
|
||||
|
||||
56
|
||||
00:02:59.540 --> 00:03:02.240
|
||||
Your invite page even handles this
|
||||
automatically.
|
||||
|
||||
57
|
||||
00:03:02.700 --> 00:03:08.220
|
||||
Once you hit two of two, it routes new
|
||||
joins to the next person in your leg who
|
||||
|
||||
58
|
||||
00:03:08.280 --> 00:03:08.940
|
||||
needs them.
|
||||
|
||||
59
|
||||
00:03:08.980 --> 00:03:13.320
|
||||
And if someone still joins on your link
|
||||
afterward, then that's a bonus, never a
|
||||
|
||||
60
|
||||
00:03:13.360 --> 00:03:14.360
|
||||
problem.
|
||||
|
||||
61
|
||||
00:03:14.400 --> 00:03:18.700
|
||||
You keep the full entry reward, and they
|
||||
spill down into your leg as depth.
|
||||
|
||||
62
|
||||
00:03:19.680 --> 00:03:20.780
|
||||
There's no rule against it.
|
||||
|
||||
63
|
||||
00:03:20.960 --> 00:03:22.560
|
||||
There's just a smarter place to aim.
|
||||
|
||||
64
|
||||
00:03:24.060 --> 00:03:26.820
|
||||
This is where the RM Circle is different
|
||||
from anything you've tried.
|
||||
|
||||
65
|
||||
00:03:27.580 --> 00:03:29.260
|
||||
Your dashboard is your co-pilot.
|
||||
|
||||
66
|
||||
00:03:29.880 --> 00:03:34.400
|
||||
It shows your team live, the payments
|
||||
forming below you, exactly when to upgrade
|
||||
|
||||
67
|
||||
00:03:34.440 --> 00:03:37.460
|
||||
to catch them, and who on your team needs
|
||||
help next.
|
||||
|
||||
68
|
||||
00:03:38.400 --> 00:03:41.260
|
||||
With a message system built in, verified
|
||||
by your wallet.
|
||||
|
||||
69
|
||||
00:03:41.780 --> 00:03:43.560
|
||||
And every member has the same dashboard.
|
||||
|
||||
70
|
||||
00:03:43.640 --> 00:03:47.840
|
||||
So when you coach your two, don't just
|
||||
tell them what to do.
|
||||
|
||||
71
|
||||
00:03:48.220 --> 00:03:51.640
|
||||
Open their dashboard with them and teach
|
||||
them to run the same play for their two.
|
||||
|
||||
72
|
||||
00:03:52.560 --> 00:03:53.880
|
||||
You're not building a downline.
|
||||
|
||||
73
|
||||
00:03:54.100 --> 00:03:55.100
|
||||
You're training coaches.
|
||||
|
||||
74
|
||||
00:03:55.100 --> 00:03:57.400
|
||||
That's what builds depth that pays for
|
||||
years.
|
||||
|
||||
75
|
||||
00:03:58.320 --> 00:03:59.760
|
||||
Getting in takes three steps.
|
||||
|
||||
76
|
||||
00:04:00.560 --> 00:04:02.240
|
||||
Watch the short trainings on the site.
|
||||
|
||||
77
|
||||
00:04:02.920 --> 00:04:05.280
|
||||
Set up a free wallet and fund it with
|
||||
POEL.
|
||||
|
||||
78
|
||||
00:04:06.160 --> 00:04:08.500
|
||||
You can buy it with a debit card if you're
|
||||
brand new.
|
||||
|
||||
79
|
||||
00:04:09.120 --> 00:04:10.980
|
||||
And join right on the site with one tap.
|
||||
|
||||
80
|
||||
00:04:11.660 --> 00:04:14.900
|
||||
You'll be placed on the team
|
||||
automatically, and your dashboard is live
|
||||
|
||||
81
|
||||
00:04:14.940 --> 00:04:16.779
|
||||
the second your transaction confirms.
|
||||
|
||||
82
|
||||
00:04:17.700 --> 00:04:23.180
|
||||
Last thing, because we only do this
|
||||
honestly, this is cryptocurrency on a
|
||||
|
||||
83
|
||||
00:04:23.300 --> 00:04:25.820
|
||||
smart contract with real risk.
|
||||
|
||||
84
|
||||
00:04:26.460 --> 00:04:27.760
|
||||
No income is guaranteed.
|
||||
|
||||
85
|
||||
00:04:28.140 --> 00:04:32.220
|
||||
Results come from team effort, and you
|
||||
should only ever use money you can afford
|
||||
|
||||
86
|
||||
00:04:32.260 --> 00:04:33.100
|
||||
to lose.
|
||||
|
||||
87
|
||||
00:04:33.140 --> 00:04:34.920
|
||||
What is guaranteed is the math.
|
||||
|
||||
88
|
||||
00:04:35.440 --> 00:04:36.680
|
||||
The code can't be changed.
|
||||
|
||||
89
|
||||
00:04:36.900 --> 00:04:38.440
|
||||
No company holds the funds.
|
||||
|
||||
90
|
||||
00:04:38.820 --> 00:04:41.480
|
||||
And every payment ever made is public on
|
||||
the blockchain.
|
||||
|
||||
91
|
||||
00:04:42.140 --> 00:04:43.140
|
||||
Get your two.
|
||||
|
||||
92
|
||||
00:04:43.380 --> 00:04:44.760
|
||||
Help your two get theirs.
|
||||
|
||||
93
|
||||
00:04:45.200 --> 00:04:46.200
|
||||
Teach them to teach.
|
||||
|
||||
94
|
||||
00:04:46.680 --> 00:04:48.260
|
||||
RM Circle dot team.
|
||||
Reference in New Issue
Block a user