ADMIN ACCOUNT{{ adminBar.email }}
{{ cheer.head }}
{{ cheer.count }}tasks done today
{{ cheer.streakLine }}
{{ cheer.result }}
{{ cheer.line }}
{{ cheer.nextLine }}
// your_profile

Your Profile

{{ me.email }}
{{ me.emailNote }}
P{{ level }} {{ streak }}d {{ quotaShort }}
Your sign-in details and subscription show here when you are signed in.
signed in as{{ me.email }} ADMIN

Everything the app knows about you, and all of it editable. Your level sets how hard the tasks are, the questionnaire casts the rooms, and what you say here in your own words outranks the tick boxes wherever the two disagree. Your answers and their reviews are kept in your account, so tasks can be matched to you and your progress can be measured.

{{ profileLine }}
this week's focus
{{ fx.name }}
{{ fx.line }}
“{{ fx.said }}” → {{ fx.better }}
{{ fx.note }}
do{{ fx.todo }}
{{ fx.progress }}
Change it once this week, to:
{{ fx.text }}
{{ fx.text }}
{{ fx.last }}
your english
{{ me.lvl }} {{ me.lvlName }}
{{ me.lvlNote }}
{{ me.measured.text }}
how you behave under pressure
{{ me.type }} {{ me.typeName }}
{{ me.typeQuip }}
your first language
{{ me.l1Label }}
{{ me.l1Note }}
from your coach
{{ cn.countLabel }}
{{ ce.date }}
{{ ce.note }}
{{ ce.progress }}
in your own words
{{ me.textNote }}
say it out loud
{{ me.answeredLabel }}
Four questions, spoken rather than typed. Nothing here is marked or scored: it is on file so the coach knows how you actually sound, and you can re-record any of it whenever you like.
Voice input isn't supported in this browser. Type your answer, or use Chrome, Edge or Safari to speak.
{{ me.aboutErr }}
0{{ q.n }}
{{ q.q }}
{{ q.hint }}
{{ q.interim }}
{{ q.said }}
on camera
{{ me.vidLabel }}
your answers
{{ row.label }} {{ row.value }}
your voice recordings
{{ me.rec.status }}
{{ me.rec.note }}
{{ me.rec.kept }}
{{ me.rec.msg }}
Practice level {{ level }} {{ toL }}% to P{{ nextLevel }}
{{ xpTotal }} XP total {{ quotaShort }}
{{ dayNoteLabel }}
{{ st.k }}
{{ st.v }}
your english Declared {{ me.measured.declared }} · {{ me.measured.text }}
Monthly benchmark
The same one minute answer every month, marked the same way, so the only thing that can move it is you.
{{ bm.doneLabel }}
{{ br.month }} {{ br.score }} {{ br.detail }} {{ br.delta }}
Your weeks {{ wh.sub }}
{{ wh.emptyLine }}
{{ wt.value }} {{ wt.label }}
{{ wt.note }}
{{ wl.text }}
{{ wh.chartLabel }}
solid: full days · light: other practice days · dashed line: your goal · violet: this week so far
your training log · words out loud each week
{{ tb.top }} {{ tb.label }}
{{ ts.v }}
{{ ts.k }}
{{ ts.joke }}
{{ tl.passLine }}
the days you practise
{{ wd3.label }}
{{ wh.weekdayLine }}
every week, newest first
{{ wr.range }} {{ wr.line }}
{{ wr.headline }}
{{ rf.value }} {{ rf.label }}
{{ rf.note }}
{{ wr.insight }}
{{ wr.stopped }}
{{ wr.focus }}
{{ si2.text }}
{{ wr.note }}
Your speaking
{{ sp.sub }}
{{ sp.goal }}
{{ sp.emptyLine }}
{{ sr.label }} {{ sr.line }} {{ sr.when }} {{ sr.mark }}
Mistakes you are fixing
{{ mk.sub }}
{{ mk.emptyLine }}
{{ mr.name }} {{ mr.count }} {{ mr.status }}
“{{ mr.said }}” → {{ mr.better }}
{{ mr.note }}
Your skills
out of 100, and how far each moved this week
{{ sb.label }}{{ sb.from }} {{ sb.value }} {{ sb.delta }}
{{ ms.title }}
{{ ml }}
Class board
Practice days this week and month, for learners who choose to be on it. No scores, ever.
{{ cb.err }}
{{ cr.rank }} {{ cr.name }} {{ cr.days }}
Nobody is on the board yet.
Your year
{{ yr.summary }}
less more rest day
previewing a first login
{{ demoStageLabel }}
The board is showing what a new learner sees. Nothing has been cleared and nothing is being written: your own profile, streak and history are exactly where they were, and a reload ends the preview.
a shout out from Łukasz
{{ so.text }}
Keep your voice recordings?
With your yes, the app records your spoken answers where your browser allows it and keeps the audio in your private account for 12 months, so your speaking can be compared over time. If you say no, no recording is kept. You can change this any time in Your Profile, under About you.
last week {{ bi.text }}
last week in review · {{ rv.range }}
{{ rv.headline }}
{{ dm.label }}
filled: full day · tinted: some · dashed: none
{{ rf.value }} {{ rf.label }}
{{ rf.note }}
{{ rv.insight }}
{{ rv.stopped }}
this week{{ rv.next }}
{{ si.text }}
second try
{{ redo.line }}
// today's plan
{{ plan.title }}
{{ plan.welcome }}
{{ wd.label }}
{{ wk.goalLine }} {{ wk.tasksLine }}
week goal
i have {{ plan.budgetNote }}
{{ it.headText }}
{{ it.bigHead }}
{{ it.bigLine }}
{{ it.bigSub }}
{{ it.fbHead }}
{{ st.v }}
{{ st.k }}
One thing to practise next
{{ it.focus.action }}
{{ it.focus.label }}
{{ it.focus.example }}
{{ category.taskSign }}Task: {{ category.taskLabel }}
  • {{ criterion.sign }}{{ criterion.status }}: {{ criterion.requirement }}
    {{ proof.label }}: “{{ proof.quote }}”
·Language: Not separately assessed in this review.
{{ assessment.sign }}
Language: {{ assessment.answerLabel }}{{ assessment.label }}
“{{ assessment.quote }}” {{ assessment.note }}
  • {{ strength.tag }}
    +
    “{{ strength.quote }}” {{ strength.note }}

{{ category.emptyNote }}

  1. {{ problem.tag }}
    −
    “{{ word.t }}” → {{ word.t }}{{ problem.note }}
    {{ problem.note }}
{{ reading.tag }}
{{ badge.label }}
{{ row.text }}

{{ category.measurement }}

Next time: {{ category.next }}

More observations
  • −{{ observation.note }}
Additional advice · optional
“{{ advice.original }}” → {{ advice.improved }}
{{ advice.idiom }}
{{ advice.meaning }}
Use when: {{ advice.when }}
“{{ advice.example }}”
{{ advice.note }}
+ {{ advice.savedLabel }}
{{ it.detail }}
{{ it.kindLabel }} · {{ it.timeLabel }}
{{ it.text }}
{{ it.say }}
{{ plan.restedLine }}
{{ loop.title }}
{{ loop.note }}
Check your personality, to be sure.
Twelve questions. It sets the habit your coach hunts for in every answer.
A category built for you is ready to draft.
speakmentor drafts three around your weak spots and you pick one.
{{ midweek.title }}
{{ midweek.who }}, {{ midweek.whoWho }}
opens Wednesday
Your next tailored category unlocks in {{ unlockNeedLabel }}, written from how you actually score.
{{ unlockCountLabel }}
P{{ level }} PRACTICE LEVEL
{{ xpTotal }} TOTAL XP
{{ streak }} DAY STREAK {{ streakNote }}
$ speakmentor --start

Speak English like the engineer you already are.

Practice the real situations you hit at work, standups, PR reviews, conference calls, and get instant feedback split into grammar, vocabulary, and idioms.

// streak repair
Your {{ repair.lostLabel }} ended. Answer {{ repair.needLabel }} today and it comes back at {{ repair.restoredLabel }}.
{{ repair.countLabel }}
// your repeated mistake
You have got {{ fixRun.label }} wrong {{ fixRun.countLabel }} recently. {{ fixRun.sizeLabel }}, two minutes.
{{ fixRun.nodeLine }}
// this week
{{ week.days }}{{ week.partialLabel }}
days completed
{{ week.answers }}
answers reviewed
{{ week.xp }}
XP
{{ week.avg }}
average score
{{ week.retired }}
drills retired
{{ week.trend }} {{ week.note }}
{{ week.stopped }}
// {{ rs.jumpLabel }}
// weekly_video_challenge

Video Presentation

one take, once a week · {{ videoData.limitLabel }} max · +120 XP

Record a short presentation. Get visual body language feedback and specific coaching on your message, English and audience.

{{ videoData.stageLabel }}Camera preview → Record → Feedback
this week's scenario
{{ videoData.label }}
{{ videoData.brief }}
in the room {{ videoData.partnerWho }}
{{ videoData.partnerHow }}
{{ videoData.lockLabel }}
One recording a week keeps it a real performance. Work on the notes from your last take in the meantime.
{{ videoData.doneCount }} completed
Preview first. Recording starts only when you press Record.
+ Camera access: allow once or remember

Choose Allow this time for one visit, or Allow while visiting the site to remember access in Chrome. In Safari, use this website's Camera and Microphone settings: Ask or Allow. The browser controls these choices. SpeakMentor reuses access you have already allowed.

{{ videoData.secsLabel }}
Camera and microphone ready. You can stop early or retake before feedback.
{{ videoData.liveText }}
{{ m.k }}
{{ m.v }}
{{ m.note }}
+ Transcript · {{ videoData.wordCount }} words

{{ videoData.transcript }}

Keep this page open to retry, or download the recording before leaving. No score or weekly completion has been saved.

+ Use an existing recording

AI reviews your transcript and measured numbers. Camera measurements stay on your device; no images or landmarks are uploaded for feedback.

Feedback saves to your account and completes this week's challenge.

Feedback always saves. Audio is sent for transcription. Only text and aggregate measurements are sent for feedback. The full recording is saved only if selected.

{{ videoData.saveStatus }}

{{ videoData.busyLabel }}
{{ videoData.errText }}
+ Watch this recording
{{ videoData.report.score }}/100

{{ videoData.report.headline }}

{{ videoData.report.explainer }}

{{ metric.label }}

{{ metric.value }}

Do this first

{{ videoData.report.oneThing }}

Keep: {{ videoData.report.keep }}

{{ step }}

{{ reason }}

{{ row.label }}{{ row.score }}/100

{{ row.summary }}

Details

{{ line }}

-{{ g.original }}
+{{ g.improved }}
// {{ g.note }} · {{ g.severity }} · repeats: {{ g.repeats }}
+you fix this one, quick check below
{{ v.original }}→{{ v.suggestion }}
// {{ v.note }}

Vocabulary range: Too little speech to judge this

{{ pair.tech_phrase }} → {{ pair.business_phrase }}

{{ pattern.quote }} → {{ pattern.fix }} · {{ pattern.pattern }}

{{ metric.label }}{{ metric.value }}

{{ tip }}

Pauses at the end of sentences are normal. Levels are relative to your browser's processed audio.

{{ note }}

Estimated from your camera image. Not a full read of body language. Lighting, glasses and movement differences can reduce accuracy.

{{ note }}

Useful phrases

"{{ id.idiom }}"
{{ id.meaning }}
use when: {{ id.when }}
“{{ id.exampleText }}”
✓ {{ id.savedLabel }}
save to
Transcript · {{ videoData.report.issueLabel }}
{{ part.text }}{{ part.text }}
{{ part.text }} → {{ part.fix }}
Your presentation, improved

− {{ rw.original }}

+ {{ rw.improved }}

{{ sk.step }}: {{ sk.template_with_gaps }}

{{ videoData.report.score }}/100
PRESENTATION & ENGLISH

{{ videoData.report.headline }}

Keep: {{ videoData.report.strength }}

Your next steps

{{ f.n }}. {{ f.text }}

EXPLORE YOUR FEEDBACK
+ {{ a.area }} {{ a.scoreLabel }}

{{ a.note }}

You said: “{{ a.evidence }}”

Try: “{{ a.tryThis }}”

+ Formal or conversational?

Formal: {{ videoData.report.formal }}

Conversational: {{ videoData.report.conversational }}

{{ videoData.report.registerWhy }}

+ Vocabulary & useful expressions
{{ v.phrase }} · {{ v.meaning }}

{{ v.example }}

{{ v.fit }}
Optional idiom: {{ videoData.report.idiom.phrase }}

{{ videoData.report.idiom.meaning }} {{ videoData.report.idiom.example }}

{{ videoData.report.idiom.caution }}

+ Body language · visual evidence

{{ videoData.report.bodyScore }}

Based on sampled frames, not continuous motion analysis.

{{ v.area }} · {{ v.scoreLabel }}

{{ v.note }}

{{ e.time }} · {{ e.observation }}

{{ v.advice }}

{{ videoData.report.bodyNote }}

Rehearse: {{ videoData.report.bodyDrill }}

+ Your presentation, improved

{{ videoData.report.rewrite }}

+120 XP · Challenge complete

{{ videoData.historyError }}

{{ videoData.historyReport.score }}/100

{{ videoData.historyReport.headline }}

{{ videoData.historyReport.explainer }}

{{ metric.label }}

{{ metric.value }}

Do this first

{{ videoData.historyReport.oneThing }}

Keep: {{ videoData.historyReport.keep }}

{{ step }}

{{ reason }}

{{ row.label }}{{ row.score }}/100

{{ row.summary }}

Details

{{ line }}

-{{ g.original }}
+{{ g.improved }}
// {{ g.note }} · {{ g.severity }} · repeats: {{ g.repeats }}
+you fix this one, quick check below
{{ v.original }}→{{ v.suggestion }}
// {{ v.note }}

Vocabulary range: Too little speech to judge this

{{ pair.tech_phrase }} → {{ pair.business_phrase }}

{{ pattern.quote }} → {{ pattern.fix }} · {{ pattern.pattern }}

{{ metric.label }}{{ metric.value }}

{{ tip }}

Pauses at the end of sentences are normal. Levels are relative to your browser's processed audio.

{{ note }}

Estimated from your camera image. Not a full read of body language. Lighting, glasses and movement differences can reduce accuracy.

{{ note }}

Useful phrases

"{{ id.idiom }}"
{{ id.meaning }}
use when: {{ id.when }}
“{{ id.exampleText }}”
✓ {{ id.savedLabel }}
save to
Transcript · {{ videoData.historyReport.issueLabel }}
{{ part.text }}{{ part.text }}
{{ part.text }} → {{ part.fix }}
Your presentation, improved

− {{ rw.original }}

+ {{ rw.improved }}

{{ sk.step }}: {{ sk.template_with_gaps }}

{{ videoData.historyReport.score }}/100
PRESENTATION & ENGLISH

{{ videoData.historyReport.headline }}

Keep: {{ videoData.historyReport.strength }}

Your next steps

{{ f.n }}. {{ f.text }}

EXPLORE YOUR FEEDBACK
+ {{ a.area }} {{ a.scoreLabel }}

{{ a.note }}

You said: “{{ a.evidence }}”

Try: “{{ a.tryThis }}”

+ Formal or conversational?

Formal: {{ videoData.historyReport.formal }}

Conversational: {{ videoData.historyReport.conversational }}

{{ videoData.historyReport.registerWhy }}

+ Vocabulary & useful expressions
{{ v.phrase }} · {{ v.meaning }}

{{ v.example }}

{{ v.fit }}
Optional idiom: {{ videoData.historyReport.idiom.phrase }}

{{ videoData.historyReport.idiom.meaning }} {{ videoData.historyReport.idiom.example }}

{{ videoData.historyReport.idiom.caution }}

+ Body language · visual evidence

{{ videoData.historyReport.bodyScore }}

Based on sampled frames, not continuous motion analysis.

{{ v.area }} · {{ v.scoreLabel }}

{{ v.note }}

{{ e.time }} · {{ e.observation }}

{{ v.advice }}

{{ videoData.historyReport.bodyNote }}

Rehearse: {{ videoData.historyReport.bodyDrill }}

+ Your presentation, improved

{{ videoData.historyReport.rewrite }}

// session history
No sessions yet. Your feedback will appear here after your first analysis, even when you choose not to save the video.
// session history
{{ videoData.takesLabel }}
{{ videoData.cmpHint }}
then vs now · {{ videoData.cmpGapLabel }}
{{ videoData.cmpDeltaLabel }}
{{ videoData.cmpLine }}

{{ videoData.cmpA.label }}

{{ videoData.cmpA.headline }}

{{ a.area }} · {{ a.score }}%
{{ a.note }}

earlier {{ videoData.cmpA.score }}%
{{ videoData.cmpA.meta }}

{{ videoData.cmpB.label }}

{{ videoData.cmpB.headline }}

{{ a.area }} · {{ a.score }}%
{{ a.note }}

later {{ videoData.cmpB.score }}%
{{ videoData.cmpB.meta }}
{{ t.label }} {{ t.scoreLabel }}
{{ t.meta }}
{{ t.headline }}
{{ t.recordingLabel }}
// {{ quizData.tierLabel }}

{{ quizData.unitName }}

{{ quizData.focus }}

{{ quizData.coachName }} {{ quizData.coachWho }}
{{ quizData.coachWhy }}
these lines are for
{{ quizData.rehearsalText }}
recommended for you · {{ quizData.rehearsalCat }}
{{ quizData.formatLabel }} {{ quizData.lvlLabel }}{{ quizData.stepLabel }}{{ quizData.tallyLabel }} {{ quizData.notGradedLabel }}
{{ quizData.fixPre }}{{ quizData.fixPart }}{{ quizData.fixPost }}
the underlined part is wrong, type the correction
{{ quizData.prompt }}
use this word {{ quizData.keyWord }}
{{ quizData.lead }}
type only the missing words
{{ quizData.prompt }}
one word only, {{ quizData.hintLabel }}
{{ quizData.prompt }}
{{ quizData.turn2From }}
{{ quizData.turn2Who }} says
{{ quizData.turn2Says }}
{{ quizData.prompt }}
{{ quizData.sayAsk }}
{{ quizData.mustHead }}
{{ mu.tick }} {{ mu.text }}
{{ quizData.wcLabel }}
how it lands {{ quizData.delVerdict }}
{{ quizData.delNote }}
{{ quizData.fbTitle }} · {{ quizData.answerCaption }} {{ quizData.answerLine }}
{{ quizData.sayNote }}
{{ quizData.why }}
{{ quizData.spentLine }}
{{ quizData.enterNote }}
marking your line…
{{ quizData.redoNote }}
{{ quizData.scoreLabel }}
{{ quizData.quip }}
{{ rw.label }} {{ rw.text }}
{{ quizData.xpLine }}
{{ quizData.ungradedLine }}
{{ quizData.missedLabel }}
{{ m.q }}
{{ m.answer }}
{{ m.why }}
// grammar

Grammar

Thirteen grammar disciplines, unlocked one at a time, plus a mix when you confuse two of them.

Start with the three tenses you use every day, then how to ask a question in the right order, the two things every conversation needs. Clearing a trial banks its XP; scoring 90% or better on it opens the next one, and every run draws a different set of exercises, so a near miss is worth re-running. Finishing a whole discipline opens the next one, and only that one: irregular verbs, the continuous and perfect forms, the small words that change what you promised, reporting what was said, and on through conditionals, modals, idioms, phrasal verbs and the soft skills the language is for.

{{ treeProgress }}
{{ treeOverall }}
{{ treeXpLabel }}
{{ profile.headline }}
{{ pr.label }} {{ pr.countLabel }} {{ pr.avgLabel }}
{{ pr.note }}
How progression works

{{ treeFirstLine }}

{{ b.label }}
{{ b.kindLabel }}
{{ b.gateLine }}
{{ n.name }}
{{ n.useLabel }}
+{{ n.xp }} XP
{{ n.xpBankedLabel }}
{{ n.leakLabel }}
{{ n.staleLabel }}
finish this one
{{ b.weakLabel }}
{{ b.looseLabel }}
{{ treeMystery.n }}
?
{{ treeMystery.teaser }}
{{ tq.n }} {{ tq.label }}
{{ catLine }}
{{ catShownLine }}
{{ cr.cid }} {{ cr.level }} {{ cr.topic }} {{ cr.mapLabel }}
// soft_skills

Soft Skills

{{ softLine }}

Three levels, and they run on their own ladder rather than behind the grammar branches. Basic is open from the start: agreeing, asking for clarification, paraphrasing. Clear half of a level and the next one opens. Every drill is scored like any other trial, and one of them lands in Learn Today whether or not your grammar needs work.

{{ softLockLine }}
{{ b.softLabel }}
{{ b.kindLabel }}
{{ n.name }}
rehearse the real one
What is the hard conversation this week?

Who it is with, what you have to get out of it, and what you are dreading. Four lines from your own situation, marked the same way the trials are. No XP and no tier: this one is practice for Thursday.

{{ sfMatchLine }}
{{ sfRealErr }}
{{ sfLine }}
{{ sfShownLine }}
{{ sr.cid }} {{ sr.whoLabel }} {{ sr.topic }}
{{ sr.stateLabel }}

My students

Who has access, who signed in, and how their learning goes. Only you see this page.

Add a student
Creates the account and gives access. No payment, invoice or newsletter is involved.
Coach notes for {{ ced.email }}
{{ ced.meta }}
{{ ced.err }} {{ ced.msg }}
The student sees thisin their profile, under From your coach. The AI reads it too.
Only you see thisthe student never does. The AI uses it to choose their tasks, without mentioning it.
{{ it.text }}
These answers fill their questionnaire, so they skip it at their first sign in. To change them, change the raw notes and polish again.
They answered the questionnaire themselves, so their answers stay. The note still reaches every task the AI writes for them.
{{ lrn.updated }}
{{ lrn.count }}
{{ lrn.msg }}
{{ lrn.askText }}
No student matches.
{{ lx.email }} {{ lx.badge }} {{ lx.sub }} rank {{ lx.rank }}
{{ al.text }}
{{ lx.access }} {{ lx.login }} {{ lx.activity }} {{ lx.notes }}
{{ st.k }}
{{ st.v }}
{{ sk.label }}{{ sk.value }}
{{ lx.recentLabel }}
{{ lx.noteText }}
How many students practise each week, and how many keep going after they join.
{{ eng.err }}
{{ eng.summary }}
week startingstudents who practiseddays each, on averagedays with all 3 tasks done
{{ w.week }}{{ w.active }}{{ w.days }}{{ w.full }}
joined in the week ofnew studentsstill practising a week laterstill practising a month later
{{ c.week }}{{ c.size }}{{ c.d7 }}{{ c.d30 }}
// live training

Łukasz's Live Training

Join live sessions with Łukasz. The next link, access details and schedule are always here.

{{ liveData.formTitle }}
{{ liveData.err }}
{{ liveData.next.statusLabel }}

{{ liveData.next.topic }}

{{ liveData.next.dateLabel }} · {{ liveData.next.tool }}

{{ liveData.next.description }}

{{ liveData.next.countdownLabel }}
{{ unit.value }}
{{ unit.label }}
Join training ↗password: {{ liveData.next.password }}
No live session is scheduled yet

{{ liveData.emptyMessage }}

Coming next

{{ event.topic }}
{{ event.dateLabel }} · {{ event.tool }}
join ↗

Past sessions

{{ event.topic }}
{{ event.dateLabel }} · {{ event.tool }}
// materials

Łukasz's Materials

Articles and videos posted for you to work through.

Each one carries its own flashcard deck, and the pacer drops the oldest unread one into your daily plan.

{{ matsData.progressLabel }}
{{ matsData.countLabel }}
{{ matsData.formTitle }}
link
{{ matsData.urlKindLabel }}
title
{{ matsData.titleHint }}
note to students
topics
excerpt or transcript · optional
On YouTube it is under the video: ...more, then Show transcript. Leave it empty and the material page asks for it.
{{ matsData.err }}
Nothing posted yet

{{ matsData.emptyMessage }}

Nothing matches that. Clear the search or pick a different topic.
{{ g.label }}
// the shelf

Books Łukasz recommends

Books for working alone at the business end of IT: client work, scope, pricing, explaining a decision to people who do not read code. Standing recommendations, not assignments. Nothing here enters your daily plan or counts against the queue above.

{{ booksData.formTitle }}
title
reading up on it…
author
why I recommend it · one point per line
level
topics {{ booksData.suggestLabel }}
cover · optional
looking…
{{ booksData.coverNote }}
{{ booksData.err }}
The shelf is empty. Anything added here is a suggestion only. It never appears in the daily plan.
{{ b.initials }}
{{ b.levelLabel }}
{{ b.title }}
{{ b.author }}
{{ pt.text }}
{{ pt.text }}
{{ tg.label }}
That material is gone.
// {{ matData.takeInLabel }}
Player refusing to load? Some videos block embedding, {{ matData.watchLabel }}
{{ matData.kindLabel }} from Łukasz · {{ matData.author }}

{{ matData.title }}

{{ matData.note }}

{{ tg.label }}
// this material
{{ matData.openLabel }}
paste the transcript
The cards and questions are written from what the author says. On YouTube it is under the video: ...more, then Show transcript. Copy it and paste it here.
{{ matData.txErr }}
// practice questions
Four open questions on this topic: your position, an argument about its impact, where it leads, and a decision. Answer them out loud and you have something to say when it comes up.
{{ r.n }}
No questions left. Add one, or save to keep the set empty.
Nothing changes until you save. An empty question is dropped.
// flashcards {{ matData.cardCountLabel }}
{{ matData.draftNote }}
drafting ten cards…
No cards on this one yet. Draft a deck, or write the first card yourself.
{{ matData.err }}
{{ c.term }}
{{ c.def }}
"{{ c.ex }}"
draft ✓ in your deck
// flashcards

{{ terms.known }} {{ terms.knownLabel }} · {{ terms.learning }} still learning
{{ cardIO.msg }}
Generate a deck for everyone
Phrases of two words or more, verbs as infinitives, proofread. You edit the draft, then publish it.
title
what the cards are about
links, one per line · optional
The model cannot open links. They are kept as the deck's sources; paste the text below.
text to draft from · optional
{{ deckGen.mixLine }}
{{ deckGen.err }}
{{ deckGen.status }}
{{ gc.n }}
sort
{{ newDeckLabel }}
{{ cr.term }} {{ cr.def }} “{{ cr.ex }}” {{ cr.stateLabel }} {{ cr.scoreLabel }}
Nothing matches that.
sort decks
{{ cardIO.msg }}
your deck · empty
Nothing saved yet
Save a term from any review, or use the controls below to import a CSV or add a card.
delete {{ md.count }} cards?
{{ d.ioMsg }}
No deck has a card matching that.
{{ studyData.title }} · {{ studyData.indexLabel }} · from {{ studyData.srcLabel }}
No cards saved yet
Cards land here from your reviews, most answers come back with one term worth keeping, and saving it takes one tap.
term
{{ studyData.term }}
click the card to flip →
meaning
{{ studyData.def }}
// example {{ studyData.ex }}
deck finished
{{ studyData.doneScore }} {{ studyData.doneLine }}
{{ mc.term }} {{ mc.def }}
{{ studyData.hitLabel }} {{ studyData.missLabel }} {{ studyData.leftLabel }} {{ studyData.dueLabel }}
space flips · ← → move
// speaking
{{ capLabel }}
{{ genErr }}

Speaking Practice

Live conversations and chat practice, matched to the situation.

For you mixes your topics, small talk, then an interview, then a client call, climbs slowly from easy to your hardest room, and casts a different person for each one. Start at the top and don't choose; clear one and a new task takes its place. Each topic beside it is that topic's whole list, when you want one situation in particular.

{{ catData.label }}

// {{ catData.archKicker }} attacks {{ catData.attacks }}

// built for you, {{ catData.blurb }}

Same place, same people throughout: {{ catData.world }}

{{ catData.winLabel }} {{ catData.usesLeftLabel }}
{{ catData.countLabel }} · {{ catData.rotationLine }} · {{ catData.addCountLabel }}

Choose a task in its written or spoken format, and get grammar, vocabulary and idiom feedback, with a score at the end. A drill's level sets three things at once: who you are talking to, how hard the task itself is, and how long you get.

your own situation
{{ catData.addErr }}
{{ catData.addHint }}
level · room, stakes and clock
{{ catData.addLvlNote }}
{{ catData.addLvlRoom }}
{{ catData.addLvlClock }}
added to this topic
{{ catData.addedText }}
{{ catData.rotNote }}
{{ catData.shownLabel }}
{{ catData.filterEmptyText }}
yours {{ t.stateLabel }}
{{ speakData.runEmptyText }}
Recommended for you {{ speakData.hero.stateLabel }}
{{ speakData.hero.catLabel }} {{ speakData.hero.bandLabel }} {{ speakData.hero.formatLabel }}
{{ speakData.hero.text }}
{{ speakData.hero.stakesLabel }}
{{ speakData.hero.metaLabel }} with {{ speakData.hero.roomLabel }}

Up next

{{ speakData.countLine }}
{{ d.catLabel }} {{ d.stateLabel }} {{ d.bandLabel }}

{{ speakData.listTitle }}

{{ speakData.findLine }}
{{ speakData.emptyText }}
{{ d.catLabel }} {{ d.stateLabel }} {{ d.bandLabel }}
{{ sessionData.tag }} · {{ sessionData.taskText }}
{{ sessionData.chipPop.title }}
{{ sessionData.chipPop.curTitle }}
{{ sessionData.chipPop.curNote }}
| {{ sessionData.turnLabel }}
tip · {{ sessionData.tipText }}
this task is {{ sessionData.moveLabel }}
{{ sessionData.moveRule }}
{{ ms.text }}
not · {{ sessionData.moveNot }}
casting the room…
{{ sessionData.sceneWho }}
your mission · {{ sessionData.sceneGoal }}
{{ sessionData.sceneOpener }}
the coach could not write their opening line, this one is generic
{{ turn.user }}
speakmentor · review
{{ turn.summary }}
{{ turn.score }}/100
likely outcome
{{ turn.gauge.label }}
{{ turn.gauge.note }}
{{ turn.gauge.coach }}
“{{ turn.gauge.fixFrom }}” → {{ turn.gauge.fixTo }}
{{ category.taskSign }}Task: {{ category.taskLabel }}
  • {{ criterion.sign }}{{ criterion.status }}: {{ criterion.requirement }}
    {{ proof.label }}: “{{ proof.quote }}”
·Language: Not separately assessed in this review.
{{ assessment.sign }}
Language: {{ assessment.answerLabel }}{{ assessment.label }}
“{{ assessment.quote }}” {{ assessment.note }}
  • {{ strength.tag }}
    +
    “{{ strength.quote }}” {{ strength.note }}

{{ category.emptyNote }}

  1. {{ problem.tag }}
    −
    “{{ word.t }}” → {{ word.t }}{{ problem.note }}
    {{ problem.note }}
{{ reading.tag }}
{{ badge.label }}
{{ row.text }}

{{ category.measurement }}

Next time: {{ category.next }}

More observations
  • −{{ observation.note }}
Additional advice · optional
“{{ advice.original }}” → {{ advice.improved }}
{{ advice.idiom }}
{{ advice.meaning }}
Use when: {{ advice.when }}
“{{ advice.example }}”
{{ advice.note }}
+ {{ advice.savedLabel }}
{{ turn.xp }} pts{{ turn.indexLabel }} {{ turn.bonusLabel }} {{ turn.carriedLabel }} {{ turn.graspLabel }} saved to {{ turn.savedDeck }} · "{{ turn.savedTerm }}"
saved to {{ turn.savedDeck }} · "{{ turn.savedTerm }}"
{{ turn.partnerName }} {{ turn.partnerMood }}
{{ turn.partnerSays }}
✓ they gave you what you came for
{{ turn.nudgeText }}
{{ turn.replyName }} {{ turn.replyRole }}
{{ turn.reply }}
quick check · {{ challengeData.patternLabel }}
you said
{{ challengeData.saidLine }}
{{ challengeData.prompt }}
{{ challengeData.reply }}
{{ challengeData.why }}
{{ sessionData.pendingText }}
speakmentor · reviewing
{{ sessionData.errText }}
{{ spotData.kicker }}
{{ spotData.title }}
-{{ spotData.saidLine }}
+{{ spotData.betterLine }}
// {{ spotData.noteLine }}
{{ spotData.formatLabel }}{{ spotData.stepLabel }}
{{ spotData.fixPre }}{{ spotData.fixPart }}{{ spotData.fixPost }}
type the correction
{{ spotData.prompt }}
use {{ spotData.keyWord }}
{{ spotData.lead }}
{{ spotData.prompt }}
use: {{ spotData.hintLabel }}
{{ spotData.fbTitle }} · answer: {{ spotData.answerLine }}
{{ spotData.why }}
{{ spotData.doneLine }}
Łukasz Fabian
Time for feedback
session report
{{ sessionData.report.steps5.small }}
{{ sessionData.report.steps5.pct }}
result
{{ sessionData.report.outLabel }}
{{ sessionData.report.outTurns }} · mission was {{ sessionData.report.outGoal }}
{{ sessionData.report.outLine }}
{{ sessionData.report.outBonus }}
{{ sessionData.report.quip }}
{{ sessionData.report.turnScores }}
{{ cheer.count }}tasks done today {{ cheer.head }} {{ cheer.streakLine }} {{ cheer.result }} {{ cheer.line }} {{ cheer.nextLine }}
{{ sessionData.report.scoreNote }}
One thing to practise next
{{ sessionData.report.focus.action }}
{{ sessionData.report.focus.label }}
{{ sessionData.report.focus.example }}
this week's focus
{{ sessionData.report.weekFocus.name }}
{{ sessionData.report.weekFocus.line }}
“{{ sessionData.report.weekFocus.said }}” → {{ sessionData.report.weekFocus.better }}
{{ sessionData.report.weekFocus.note }}
{{ category.taskSign }}Task: {{ category.taskLabel }}
  • {{ criterion.sign }}{{ criterion.status }}: {{ criterion.requirement }}
    {{ proof.label }}: “{{ proof.quote }}”
·Language: Not separately assessed in this review.
{{ assessment.sign }}
Language: {{ assessment.answerLabel }}{{ assessment.label }}
“{{ assessment.quote }}” {{ assessment.note }}
  • {{ strength.tag }}
    +
    “{{ strength.quote }}” {{ strength.note }}

{{ category.emptyNote }}

  1. {{ problem.tag }}
    −
    “{{ word.t }}” → {{ word.t }}{{ problem.note }}
    {{ problem.note }}
{{ reading.tag }}
{{ badge.label }}
{{ row.text }}

{{ category.measurement }}

Next time: {{ category.next }}

More observations
  • −{{ observation.note }}
Additional advice · optional
“{{ advice.original }}” → {{ advice.improved }}
{{ advice.idiom }}
{{ advice.meaning }}
Use when: {{ advice.when }}
“{{ advice.example }}”
{{ advice.note }}
+ {{ advice.savedLabel }}
{{ sessionData.report.roomReadText }}
{{ sessionData.report.trialText }}
+{{ sessionData.report.xp }} XP
{{ sessionData.report.leak.line }}
carried in {{ sessionData.report.carryText }}
Delivery measurements · optional details
delivery {{ sessionData.report.dlv.score }} {{ sessionData.report.dlv.line }}
{{ sessionData.report.dlv.wpm }} {{ sessionData.report.dlv.pace }} {{ sessionData.report.dlv.fillers }} {{ sessionData.report.dlv.restarts }} {{ sessionData.report.dlv.clarity }}
· {{ dn }}
{{ sessionData.report.dlv.coverage }}
your next session · already set up
{{ sessionData.report.plan.headline }} {{ sessionData.report.plan.chip }}
{{ sessionData.report.plan.why }}
-{{ sessionData.report.plan.fixOriginal }}
+{{ sessionData.report.plan.fixImproved }}
// {{ sessionData.report.plan.fixNote }}
{{ sessionData.report.plan.footnote }}
or take a different task
up next {{ sessionData.upNext.bandLabel }} {{ sessionData.upNext.kindLabel }} {{ sessionData.upNext.catLabel }}
{{ sessionData.upNext.text }}
{{ sessionData.upNext.personaName }} {{ sessionData.upNext.personaWho }} {{ sessionData.upNext.memLine }}
{{ sessionData.quotaHeadline }} practice target reached
{{ sessionData.quotaResetLine }} {{ sessionData.quotaStreakLine }}
still open right now
{{ sessionData.quotaFootnote }}

Voice input isn't supported in this browser. Type your answer, or use Chrome, Edge or Safari to speak.

Recording 0:00 Your words appear when you stop.
{{ sg.label2 }} {{ sessionData.capBar.countLabel }}
response time {{ sessionData.reactBar.label }}
{{ sessionData.timerLabel }}{{ sessionData.liveText }} {{ sessionData.capMeta }} {{ sessionData.composerMeta }} {{ sessionData.inputHint }}
{{ nodeModal.label }}
{{ nodeModal.name }}
{{ nodeModal.kindLabel }} {{ nodeModal.limitLabel }} reward +{{ nodeModal.xp }} XP {{ nodeModal.passLabel }}
the mission
{{ nodeModal.task }}
why you are here
{{ nodeModal.leakNote }}
worth re-running
{{ nodeModal.staleLine }}
basepastparticiple
{{ vg.label }}
{{ vg.note }}
{{ vr.base }} {{ vr.past }} {{ vr.part }}
✓ {{ vg.ok }}
✗ {{ vg.no }}
{{ nodeModal.rulesLabel }} {{ nodeModal.rulesLead }}
these words signal it
{{ cue }}
{{ grp.label }}
· {{ r.text }}
✓{{ r.ok }}
✗{{ r.no }}
{{ nodeModal.gradeNote }}
✓ {{ nodeModal.doneLabel }}
🔒 {{ nodeModal.lockText }}
{{ nodeModal.passNote }}
$ speakmentor --layers
{{ layers.countLabel }}
the room {{ layers.roomShort }}

Who's on the other side?

// every change applies the moment you make it, close whenever you like

Same sentence, different room, different verdict. Each layer you switch on sharpens what the coach grades.

the room you are about to walk into
{{ layers.partnerText }}
tip · {{ layers.tipText }}
rooms you land, rooms you miss where your reads actually fail
{{ r.label }} {{ r.count }}
{{ dial.kicker }}
{{ dial.value }} {{ dial.meta }}
{{ dial.note }}
{{ layers.dialsSum }}
{{ mrow.t }}
{{ mrow.d }}
your level · {{ layers.levelLabel }}
{{ layers.tierLine }}
{{ layers.suggestionText }}
Your conversation partner who is on the other side today
what decides this room
{{ layers.roomModeNote }}
your coaching profile
{{ layers.profileStatus }} {{ layers.profileNote }}
Every layer shown as on is graded. Turn one off to remove it from the coach's criteria. Use basic context only removes the layers but keeps the current band.
Talk to someone specific sets every layer below at once
{{ layers.personaName }} {{ layers.personaWho }}
{{ layers.personaNote }}
{{ layers.memLine }} {{ layers.memTimes }}
{{ ps.label }}
layer level 1 · Be understood A2+
Who they are to you, whether they are a woman or a man, and roughly how old they are, the three things you know before they open their mouth.
{{ layers.t1.teaser }}
Who they are to you {{ layers.sw.power.valueLabel }} {{ layers.sw.power.lockLabel }}
{{ layers.powerHint }}
A woman or a man? {{ layers.sw.gender.valueLabel }} {{ layers.sw.gender.lockLabel }}
{{ layers.genderHint }}
Roughly how old are they? {{ layers.sw.gen.valueLabel }} {{ layers.sw.gen.lockLabel }}
{{ layers.genHint }}
layer level 2 · Read the room B2+
Whether they know your domain and how technical they are, what decides how much you explain, and how much jargon survives.
{{ layers.t2.teaser }}
Do they know your domain? {{ layers.sw.domain.valueLabel }} {{ layers.sw.domain.lockLabel }}
{{ layers.domainHint }}
How technical {{ layers.sw.tech.valueLabel }} {{ layers.sw.tech.lockLabel }}
{{ layers.techHint }}
layer level 3 · Where they are from C1+
Their culture, the same sentence is well judged in Germany and rude in Japan.
{{ layers.t3.teaser }}
Their culture {{ layers.sw.culture.valueLabel }} {{ layers.cultureCtx }} {{ layers.sw.culture.lockLabel }}
{{ layers.cultureHint }}
layer level 4 · Play the person C2+
Their psychology, the top rung of the layer ladder. The temperament dial below it is the other axis, not a layer: it is always available, at every level.
{{ layers.t4.teaser }}
Their personality {{ layers.sw.roomMbti.valueLabel }} MBTI · four taps {{ layers.sw.roomMbti.lockLabel }}
{{ layers.roomTypeLabel }}
{{ layers.roomQuip }}
{{ layers.roomAdapt }}
how hard they are · the second dial any level
Not a rung on the ladder above. The band is available at every layer level and sets the pass score.
How hard do they make it? {{ layers.sw.diff.valueLabel }} {{ layers.sw.diff.lockLabel }}
{{ layers.diffHint }}
{{ layers.diffTurns }}
Switch layers mid-session from the chips above the task. Nail every read in one answer and you bank bonus XP.
$ speakmentor --profile
{{ surveyStepLabel }}

{{ surveyTitle }}

{{ surveySub }}

// how new categories get built
Your profile sets the direction; your practice record sets the difficulty. {{ progressLine }}

Context Layers

applies to every new task
My world anyone, as the task decides
{{ ln.ask }}
{{ peopleData.world.note }}
My people

{{ peopleData.emptyLine }}

{{ peopleData.card.name }}
{{ peopleData.card.who }}
your record · {{ peopleData.card.record }}
{{ b.label }}
In your words  {{ peopleData.card.words }}
How they play it  {{ peopleData.card.readNote }}
How they play it  {{ peopleData.card.note }}
What works  {{ peopleData.card.works }}
they are your
how hard
what you know
{{ peopleData.form.hint }}
Personality choose it, describe it, or both {{ peopleData.form.typeLine }}
{{ peopleData.form.evidence }}
{{ peopleData.form.err }}
A nickname is enough. What you write here is read by the coach that plays this person.
How hard
{{ peopleData.pace.note }}
$ speakmentor --read-the-person

Who are you actually dealing with?

Paste their LinkedIn About, an email thread, your own notes, or a call transcript. You get a read on their type and how to talk to them, saved as a person you can practise with by name.

{{ describeData.fileName }}
{{ describeData.errText }}
{{ describeData.resType }} {{ describeData.resTypeName }} {{ describeData.resConf }}
{{ describeData.resWho }}
{{ describeData.resNote }}
{{ describeData.resEvidence }}
$ speakmentor --who-am-i {{ testData.stepLabel }}
{{ testData.question }}
Agree Disagree
No wrong answers, answer as you actually are, not as you would like to be.
{{ testData.type }}
{{ testData.typeName }}
{{ testData.typeQuip }}
{{ testData.typeTell }}
{{ b.label }} {{ b.pctLabel }}
// built for you · choose one

Three ways to go after it

{{ candData.line }}

Each one climbs from your easiest room to your hardest, and every task is written against a mistake you have actually made.
$ speakmentor --explain-plan
{{ pacerData.sessionsLabel }}

Rank {{ pacerData.rankLabel }} · {{ pacerData.phase }}

{{ pacerData.phaseLine }}

{{ z.label }} · {{ z.floorLabel }}
{{ pacerData.nextLine }}
{{ pacerData.seedLine }}
{{ pacerData.moveLabel }}
{{ pacerData.moveNote }}
{{ pacerData.queueLine }}
{{ pacerData.weekLabel }} · {{ pacerData.avgLabel }}
difficulty mix at this phase
{{ m.label }} {{ m.pctLabel }}
skill tracks · measured from your feedback
{{ sk.label }} {{ sk.valLabel }}
{{ sk.tag }} · {{ sk.drives }}
where every drill in the app sits
{{ c.n }} {{ c.label }} {{ c.note }}
when a drill appears
{{ r }}
when it disappears
{{ r }}
recent decisions
{{ e.whenLabel }} {{ e.text }}