Toastmasters Sibiu · Club de comunicare și leadership
Învață să vorbești cu impact.
Hub-ul de cunoștințe al clubului — 40+ pagini despre roluri, pathways, ședințe și tehnici de evaluare. Sursă pentru membri noi și ghid de referință pentru cei activi.
TM Knowledge Hub — VirtualMeetings
Hub local Toastmasters pentru proiectul VirtualMeetings + uz personal Pavel ca rol activ la TM Sibiu. Versiune: Iteration 1 (P0 pentru ședința 2026-05-20). Iteration 2 + 3 planificate post-test. Sursă autoritativă pentru viziune produs: docs/PLATFORM_TM_FEASIBILITY.md.
Cuprins
- Tabel rapid — cele 22 roluri TM
- Agenda standard ședință TM
- Quick reference filler-e RO + EN
- Threshold-uri și praguri
- Status implementare per rol în VirtualMeetings
- Surse oficiale verificate
- Glosar termeni TM
- Evoluție platformă — Zoom Apps SDK
1. Tabel rapid — cele 22 roluri TM
Ordine cronologică ședință (din state.py:MEETING_ROLE_ORDER). Status cod: ✅ implementat / 🟡 parțial / ❌ neimplementat.
| # | Rol RO | Rol EN | Tip | Durată tipică | Status cod | Fișă |
|---|---|---|---|---|---|---|
| 1 | Președinte› | President | management | — (deschide/închide) | ❌ | TODO Iteration 2 |
| 2 | Toastmaster› | Toastmaster | management | — (gazdă) | 🟡 (agenda UI 60%) | management_toastmaster.md |
| 3 | Evaluator General› | General Evaluator› | evaluation | 5-7 min raport | ❌ | evaluation_general.md |
| 4 | Numărător de Ă-uri› | Ah-Counter› | evaluation | 1-2 min raport | ✅ | evaluation_ah_counter.md |
| 5 | Cronometror› | Timer› | evaluation | 1-2 min raport | ❌ (preset greșit existent) | evaluation_timer.md |
| 6-9 | Vorbitor 1-4 | Prepared Speakers | speaking | 5-7 min fiecare | n/a (speaker rol uman) | TODO Iteration 2 |
| 10 | Maestrul Jobenului› | Table Topics Master› | management | — (conduce TT› round) | ❌ | TODO Iteration 2 |
| 11-18 | TT Vorbitor 1-8 | Table Topics› Speakers | speaking | 1-2 min fiecare | n/a | TODO Iteration 2 |
| 19-22 | Evaluator› 1-4 | Speech Evaluators | evaluation | 2-3 min raport fiecare | ❌ | TODO Iteration 2 |
| — | Gramatician› | Grammarian› | evaluation | 2-3 min raport | ✅ (Faza 1 completă) | evaluation_grammarian.md |
Notă Gramatician: nu apare separat în MEETING_ROLE_ORDER standard de 22 — e parte din echipa de evaluare, alăturea cu Numărător› & Cronometror. În cod este integrat ca rol principal (vezi state.py ROLE_ALIASES și meeting_roles).
Total status: - ✅ 2 roluri complet implementate (Gramatician, Numărător) - 🟡 1 rol parțial (Toastmaster — agenda UI) - ❌ 19 roluri neimplementate (în roadmap Faza 2)
2. Agenda standard TM
Ședința Toastmasters Sibiu durează 60-90 min, hibrid (fizic + Zoom).
| Slot | Activitate | Durată | Rol responsabil |
|---|---|---|---|
| 1 | Deschidere + introducere oaspeți | 5-7 min | Președinte |
| 2 | Anunț Word of the Day› | 1 min | Gramatician |
| 3 | Introducere rolurilor de evaluare | 2-3 min | Numărător + Cronometror + Gramatician |
| 4 | Vorbitor 1 (Prepared Speech) | 5-7 min | Vorbitor 1 |
| 5 | Vorbitor 2 (Prepared Speech) | 5-7 min | Vorbitor 2 |
| 6 | Vorbitor 3 (Prepared Speech) | 5-7 min | Vorbitor 3 |
| 7 | Vorbitor 4 (Prepared Speech, opțional) | 5-7 min | Vorbitor 4 |
| 8 | Pauză / Joker | 5-10 min | Toastmaster |
| 9 | Table Topics intro (Maestrul Jobenului anunță) | 2 min | Maestrul Jobenului |
| 10 | TT Vorbitori 1-8 | 1-2 min × N | TT Speakers |
| 11 | Vot TT (best speaker, opțional) | 2 min | Maestrul Jobenului |
| 12 | Evaluator 1 (evaluează Vorbitor 1) | 2-3 min | Evaluator 1 |
| 13 | Evaluator 2 (evaluează Vorbitor 2) | 2-3 min | Evaluator 2 |
| 14 | Evaluator 3 (opțional) | 2-3 min | Evaluator 3 |
| 15 | Evaluator 4 (opțional) | 2-3 min | Evaluator 4 |
| 16 | Cronometror raport | 1-2 min | Cronometror |
| 17 | Numărător raport | 1-2 min | Numărător |
| 18 | Gramatician raport | 2-3 min | Gramatician |
| 19 | Evaluator General raport (sumar + recomandări) | 5-7 min | Evaluator General |
| 20 | Vot speakers (best speech, best TT, best eval) | 2-3 min | Toastmaster |
| 21 | Anunțuri și remember | 3-5 min | Președinte |
| 22 | Închidere | 1-2 min | Președinte |
Total estimat: ~80-100 min depending on # vorbitori și TT.
3. Quick reference filler-e
Vezi linguistics_ro/filler_words_ro.md pentru detalii.
Top RO (cele mai comune)
| Cuvânt/Sunet | Categorie | Severity tipic | Sugestie |
|---|---|---|---|
ăă/ăăă |
hesitation_um | mare | Pauză tăcută |
deci |
discourse_marker | medie (densitate >1/30s) | Pauză + intră direct |
adică |
discourse_marker | medie | Reformulează direct |
păi |
discourse_marker | mică | Intră în propoziție direct |
gen |
discourse_marker | medie | Folosește „de exemplu” |
practic |
discourse_marker | mică | Adesea redundant |
basically |
anglicism | medie | Folosește „practic” sau elimină |
hmm |
hesitation_um | mare | Pauză tăcută |
știi? (la final) |
tag_question | mică | Convertește în afirmație |
nu? (la final) |
tag_question | mică | Afirmă direct |
Top EN (referință internațional)
- um, uh, er, ah — vocal pauses
- and, but, so, you know, well, like — discourse markers
- basically, literally, actually — overused intensifiers
NU se contabilizează (oficial cluj.toastmasters.ro)
- Pauze tăcute între propoziții — legitime, recomandate
- Variații regionale acceptate
- Alegere stilistică intenționată (repetiție retorică)
4. Threshold-uri și praguri
Praguri standard TM International + Sibiu specific.
Durata intervenții (Cronometror)
| Tip intervenție | Verde | Galben | Roșu | Disqualified (contest) |
|---|---|---|---|---|
| Prepared Speech (Vorbitor 1-4) | 5:00 | 6:00 | 7:00 | <4:30 sau >7:30 |
| Table Topics (TT Vorbitor) | 1:00 | 1:30 | 2:00 | <1:00 sau >2:30 |
| Speech Evaluation | 2:00 | 2:30 | 3:00 | <2:00 sau >3:30 |
| Role reports (Gramatician, Numărător, Timer) | 1:00 | 2:00 | 3:00 | n/a |
Filler density (Numărător, recomandare practică)
NU există threshold oficial TM (sursa: Ah-Counter official page). Pragurile de mai jos sunt convenții VirtualMeetings + practică TM Sibiu.
| Densitate fillere | Status | Acțiune raport |
|---|---|---|
| <3 total per speech | ✓ disciplinat | „Felicitări — sub prag” |
| 3-5 total per speech | ✓ acceptabil | Menționează tic specific, fără critică |
| 6-10 total per speech | ⚠ peste prag | „peste 5+”, recomandare antrenament pauza |
| >10 total per speech | ⚠ atenție | „peste 5+”, focus tic recurent, recomandare clară |
Scoring rubric (vezi evaluation_framework/ — Iteration 2)
- Speech: 1-5 pe dimensiuni (content, structure, language, voice, body, audience engagement)
- Pathway level progression: Level› 1-5 cu competențe specifice
5. Status implementare per rol în VirtualMeetings
| Rol | Detection auto | Operator UI | Public Display | Raport | Persist |
|---|---|---|---|---|---|
| Gramatician | ✅ (grammar_ro batch) | ✅ (col 4 Notițe) | n/a | ✅ (4 col × speaker) | ✅ pavel_notes.jsonl |
| Numărător de Ă-uri | ✅ (3-tier + AI repair) | ✅ (+1 manual button) | n/a | ✅ (sumar + detaliu + timeline) | ✅ filler_manual.jsonl |
| Cronometror | 🟡 (watchdog 2:30) | ❌ | ❌ | ❌ | ❌ |
| Toastmaster (agenda) | 🟡 (UI 60%) | ❌ | n/a | ❌ | ❌ |
| Evaluator General | ❌ | ❌ | n/a | ❌ | ❌ |
| Speech Evaluators (1-4) | ❌ | ❌ | n/a | ❌ | ❌ |
| Maestrul Jobenului | ❌ | ❌ | n/a | ❌ | ❌ |
| Președinte | n/a | n/a | n/a | n/a | n/a |
| Speakers (4 + 8 TT) | n/a (speaker rol uman, nu modul software) | n/a | n/a | n/a | n/a |
Roadmap Faza 2.C (post-2026-05-20): Cronometror (prim modul nou) → Maestrul Jobenului → Numărător hands raised (CV) → Evaluator General.
Roadmap Faza 2.D (2026-05-22+): Zoom Apps SDK POC — înlocuiește OCR speaker detection cu onActiveSpeakerChange event nativ, sidebar UI în Zoom client. Plan complet: docs/zoom-apps-sdk-integration.md.
6. Surse oficiale
Vezi OFFICIAL_SOURCES.md pentru lista completă cu data verificării și freshness checklist.
Oficial Toastmasters International
- toastmasters.org/membership/club-meeting-roles — hub roluri
- toastmasters.org/magazine — articole best-practice
- toastmasters.org/resources — scripts + logs oficiale
Cluburi District 95 (Eastern Europe — Pavel context)
- cluj.toastmasters.ro — PDF-uri roluri RO
- siriustoastmasters.org — articole evaluare
- TM Sibiu — material intern (vezi rădăcina
docs/toastmasters/)
Local arhivat
raw_html/— 9 pagini HTML scraped 2026-05-16raw_html/cluj-numarator.pdf— PDF original Clujroles/*.md— fișe extrase și îmbogățite
7. Glosar termeni TM
| Termen› | Definiție |
|---|---|
| TM | Toastmasters (organizația globală) |
| TI | Toastmasters International (entitatea legală US) |
| District 95› | Diviziunea geografică Eastern Europe (RO + Bulgaria + Serbia + altele) |
| Pathways› | Programul educațional curent (lansat 2018, înlocuiește vechiul CC/CL) |
| Path | Unul din cele 11 trasee din Pathways (ex: Presentation Mastery, Strategic Relationships) |
| Level 1-5 | Etapele progresiei într-un Path (Level 1 = mastery basic, Level 5 = advanced/leadership) |
| CC | Competent Communicator› — certificare legacy (înlocuit cu Pathways Level› 2-3) |
| CL | Competent Leader — certificare legacy |
| ACB | Advanced Communicator Bronze — certificare legacy |
| DTM› | Distinguished Toastmaster› — cea mai înaltă certificare (necesită mentor + leadership) |
| Prepared Speech | Discurs› de 5-7 min, pregătit din timp, evaluat de un Evaluator dedicat |
| Table Topics (TT) | Discurs impromptu de 1-2 min, pe subiect dat de Maestrul Jobenului |
| Speech Evaluation | Feedback structurat oral de 2-3 min după un Prepared Speech |
| General Evaluator | Persoană care evaluează ÎNTREAGA ședință (incluzând echipa de evaluatori) |
| Sergeant at Arms› | Officer responsabil cu logistica (echipament, materiale, snacks) |
| VPE› | Vice President Education› — officer responsabil cu programarea ședințelor |
| VPM› | Vice President Membership› — officer responsabil cu recrutarea |
| VPPR› | Vice President Public Relations› — officer responsabil cu marketing |
| CRC | Commend-Recommend-Commend — pattern feedback (Faza 2 evaluation_framework/) |
| Word of the Day | Cuvântul Zilei›, propus de Gramatician ca exercițiu vocabular |
| Ah-Counter | Numărător de Ă-uri (filler words tracker) |
| Grammarian | Gramatician |
| Timer | Cronometror |
8. Cum se folosește acest hub
Pavel în timpul ședinței: - Răspuns rapid „ce face X?”: tabel din §1 → click pe fișa rolului (dacă completă) - Întrebare la filler-e: §3 quick reference - Întrebare la timing: §4
Iteration viitoare (Pavel / contribuitori):
- Completează fișele rămase folosind _template_role.md
- Adaugă material în meeting/, administrative/, pathways/, evaluation_framework/, contests/
- Actualizează acest hub când implementezi noi role modules în cod (Faza 2.B/2.C)
Lansare externă (Iteration 3): - Acest hub devine resursă publishable pentru alte cluburi RO sau pentru produsul Faza 3 - Verifică OFFICIAL_SOURCES.md freshness înainte de lansare
8. Evoluție platformă — Zoom Apps SDK
Plan complet detaliat: docs/zoom-apps-sdk-integration.md. Status: plan complet, cod zero. Implementare POST 2026-05-20.
Ce câștigăm față de starea curentă
| Problemă azi | Soluție Zoom Apps SDK |
|---|---|
| Speaker detection = OCR pe screenshot (fragil, ~80% accuracy, 500ms lag) | onActiveSpeakerChange event nativ (~100%, milisecunde) |
Asignare manuală roluri (rol v1 Maria în CLI) |
getMeetingParticipants → dropdown click în sidebar |
| UI în browser separat (Cmd+Tab constant) | Sidebar permanent în interiorul Zoom |
| Setup pe Mac nou = 5 pași (venv, swift build, etc.) | Click install din Zoom Marketplace |
| Audio route = hack Process Tap | Audio rămâne local (Zoom App = UI + metadata, NU audio) |
Ce nu schimbăm
- Audio rămâne pe Mac (
audio mic+ speakers, validat empiric: 0 halucinații vs 40% pentru Zoom tap) - Whisper rămâne local (mlx-whisper large-v3 pe ANE)
- Claude rămâne local (CLI Pro/Max OAuth)
- Backend ai-service la
127.0.0.1:8000neschimbat — Zoom App e un client nou al/ws/liveexistent
API-uri Zoom folosite
// Speaker detection — înlocuiește TextRecognizer OCR
zoomSdk.addEventListener('onActiveSpeakerChange', (event) => {
fetch('http://127.0.0.1:8000/set_speaker', {
method: 'POST',
body: JSON.stringify({ speaker: event.participants[0].screenName })
});
});
// Lista participanți — înlocuiește comenzile "rol v1 Maria"
const { participants } = await zoomSdk.getMeetingParticipants();
// → dropdown în sidebar cu asignare role la click
RTMS — pentru ce e util (neprofesionist)
Ce e: Zoom poate „deschide un robinet” din care curge audio-ul live al meeting-ului spre serverul tău.
3 scenarii concrete:
1. Gramatician pe iPad (fără Process Tap Mac-only): audio curge prin cloud Zoom → server nostru → Whisper
2. Multi-stream per vorbitor: Zoom poate livra un stream separat per participant activ → Whisper pe Cornel separat de Diana → calitate mai bună la overlap
3. Livrare garantată: dacă Process Tap pierde conexiunea 5s, RTMS notifică explicit (nu mai stai cu chunks: 0 și nu știi de ce)
Decizie: RTMS = fallback multi-platform, NU default. audio mic + Process Tap rămân primary (audio nu pleacă în cloud).
Recordings API — ședințe istorice TM Sibiu
Zoom păstrează înregistrările cloud. Putem descărca retroactiv toate ședințele TM Sibiu cu 3 endpoint-uri REST:
GET /v2/users/{userId}/recordings?from=2026-01-01&to=2026-05-31
→ lista meeting-urilor înregistrate cu UUID, durată, linkuri
GET /v2/meetings/{meetingId}/recordings
→ fișiere per meeting: MP4 video, M4A audio-only, VTT transcript Zoom
4 use case-uri imediate: 1. Re-procesare cu Whisper local → fișe gramatician retroactive pentru tot istoricul TM Sibiu 2. Indexare FTS5 SQLite → „când a vorbit cineva despre altruism?” → timestamp + link recording 3. AI summarize post-meeting → email automat cu rezumat la participanți 4. Comparație Whisper local vs transcript Zoom oficial (calibrare confidence thresholds)
Cost: gratuit (API calls) + bandwidth descărcare (m4a ≈ 30MB/oră).
UI sidebar — soluție pentru 320px
Zoom App rulează într-un sidebar de 320px (față de 4 coloane × 480px în browser UI actual). Soluție: 3 tab-uri comutabile:
TAB LIVE (default în ședință):
⏱ 19:42:30 🟢 -32dB ← header sticky
Speaker activ: ▶ Cornel [✏]
Agenda: Vorbitor 2 (4:32/7:00) ██░░
⚠ ERORI (3) [▼] ← accordion colapsabil
• „ăă" filler tic
• propoziție incompletă
• „path" anglicism
✨ CREATIVE (1) [▼]
📝 NOTIȚELE MELE [+ ADD]
[12:34] a clipit nervos
[12:42] încheiat tare
TAB FIȘE: tab-uri orizontale per vorbitor + timeline TOOL/PAVEL/AMBELE per speaker.
TAB RAPORT: preview + export + sync recording Zoom.
Toggle [⤢] → trece în Main view (înlocuiește tile-urile video, layout 2 coloane exact ca browser UI azi).
Timeline implementare (post 2026-05-20)
| Dată | Faza | Livrabil |
|---|---|---|
| 2026-05-22 | Faza 0 | Cont dev Zoom, OAuth, boilerplate JS, hosting HTTPS |
| ~2026-05-29 | Faza 1 | onActiveSpeakerChange + WS bridge /ws/live + tab LIVE |
| ~2026-06-03 | Test paralel | Browser UI + Zoom App ambele active în ședință TM live |
| ~2026-06-12 | Recordings | CLI fetch-recording + re-procesare retroactivă |
| ~2026-06-17 | Test pilot | Zoom App singur (fără browser UI fallback) |
Faza 3 — Platformă proprie TM (LiveKit, post 6+ luni validare)
Plan tehnic complet: docs/PLATFORM_TM_FEASIBILITY.md Status: decizie strategică luată 2026-05-16, cod zero. Implementare DOAR după pre-condiții.
Dacă 5+ role modules ajung mature și TM Sibiu vrea activ să iasă din Zoom, construim propria platformă de meeting — nu pentru a concura Zoom global, ci pentru a fi mai bun specific pentru TM: timer integrat, roluri native, per-speaker recording automat, link de participare, zero Process Tap fragility.
De ce LiveKit (și nu altele)
| Opțiune evaluată | Verdict | Motiv respingere |
|---|---|---|
| LiveKit self-hosted ⭐ | ALES | Per-track audio nativ; Agents Python = ai-service reutilizat 80%; coturn existent refolosit |
| Jitsi Meet self-hosted | ❌ | Monolit Java/XMPP; per-speaker audio non-idiomatic; fork UI obligatoriu pentru roluri TM |
| Mediasoup DIY | ❌ | 24-32 săpt; SFU bugs la 22:00 pre-meeting = ședință stricată |
| Java from scratch | ❌ | GC pauses 50-200ms rup audio real-time (RTT <30ms necesar); niciun SFU modern nu e Java |
Ce câștigăm față de Zoom companion
| Zoom companion (Faza 2) | Platformă proprie LiveKit (Faza 3) |
|---|---|
| Process Tap / RTMS = audio fragil sau cloud | WebRTC browser = audio nativ, per-participant track |
| Speaker detection = OCR + Zoom SDK | LiveKit emite participant.speaking nativ |
| Recording = sprint files greu de sincronizat | LiveKit Egress → MP4 per-speaker automat |
| Roluri asignate manual în CLI | JWT custom claims cu meeting_roles pre-ședință |
| Funcționează doar pe Mac (Process Tap) | Browser → cross-platform (Mac/Windows/Linux) |
Pre-condiții ne-negociabile (confirmate 2026-05-16)
- 5+ role modules mature și folosite live min 3 luni
- TM Sibiu vrea activ să iasă din Zoom (semnal real, nu speculativ)
- Cel puțin 1 alt club interesat (validare externă)
- Pavel are 3-6 luni bandwidth production (confirmat)
Server: self-hosted pe ce-dev-01 (4 vCPU, Infomaniak, deja există). NU LiveKit Cloud ($50/mo).
- ✅ Iteration 1 (2026-05-16): _template_role + Ah-Counter + Grammarian + Timer + filler_words_ro + hub
- ✅ Iteration 1.5 (2026-05-16 noaptea): General Evaluator + Toastmaster + meeting/agenda_standard +
build_html.py(generare site HTML standalone din markdown, 123 KB / 10 pagini) - ✅ Iteration 1.6 (2026-05-16 seara): Secțiunea §8 Evoluție platformă — plan complet Zoom Apps SDK + RTMS + Recordings API + UI sidebar 320px
- ✅ Iteration 1.7 (2026-05-16): §8 extins cu Faza 3 — platformă proprie LiveKit: analiză 4 opțiuni (Java respins explicit), pre-condiții, câștiguri vs companion pattern, referință PLATFORM_TM_FEASIBILITY.md
- 🟡 Iteration 2 (post 2026-05-20): 17 fișe rol rest + administrative/ + evaluation_framework/ + pathways/ parțial + Zoom Apps SDK POC (speaker detection, sidebar)
- ⚪ Iteration 3 (înainte lansare): contests/ + polish + cross-links + publicare