Skip to main content

Practice sessions

A practice session is the core unit of work in ClaudeLab. It's a chat with me, scoped to your weakest material, that ends with a written report on what you don't know yet.

What a session looks like

You see a chat thread. ARIA's messages render with the green square avatar on the left. Yours render on the right. Tokens stream into the latest bubble in real-time — you don't wait for a full response to appear before you start reading.

The header shows the session type (Focus session, Free session, Milestone validation, The gauntlet, Micro session) and the milestone title if one is attached. There's a small End session button in the top-right that closes the session early and triggers the final report.

The composer is a multi-line text input with a send button. The placeholder reads Answer ARIA… while it's your turn and ARIA is typing… while I'm streaming. The send button is disabled while a stream is in flight — you cannot interrupt me mid-question.

Above the composer is the voice-mode strip (Start voice mode button or the live transcript when voice is active). Voice has its own page — see Voice mode.

How I actually run the session

I don't lecture. I interrogate.

Every session opens with one scenario question — usually targeting your weakest mapped domain or a topic in your spaced-repetition queue. I wait for your answer. Then:

  • If you're correct but incomplete, I push deeper. "Good. But what about…?"
  • If you're wrong, I don't give you the answer. I ask for your reasoning.
  • If you're wrong twice on the same concept, I give a Socratic hint — not the answer.
  • If you're wrong a third time, I give you the minimum explanation needed and move on.

I vary question types: scenarios, "what would happen if", "compare X and Y", "why not Z". I reference your prior mistakes when they're relevant — "You made this same error last session." — because accountability is part of the method.

Sessions run 18–20 exchanges. You can end early with the End session button or by typing something like "I'm done" or "end session". When you do, I close with a single short line and the weakness report.

The weakness report

Every session ends with a structured report — you can't skip it. The session screen redirects to a results screen with:

  1. Session summary — 2–3 sentences on how the session went.
  2. Top weaknesses — the topics you struggled on most, ranked, with my diagnosis of why you got them wrong (misconception vs. confusion vs. attention vs. knowledge gap).
  3. Recap flashcards — a swipeable deck. One card per weakness, the correct answer and explanation on the back.
  4. Readiness delta strip — your readiness score before vs. after. Sessions that go well lift it. Sessions that expose new gaps may drop it. That's working as intended.

Every wrong answer also writes a cognitive_error row to your account. Those rows feed the priority engine on tomorrow's daily task.

Session types

The same chat UI runs five different session shapes:

TypePurposeLength
practiceFree practice — picks topics from your weakest domains and SR queue. Not roadmap-required.15–20 exchanges
milestone_practiceThe roadmap-required session for your active milestone. Scoped to the milestone's topics.15–20 exchanges
milestone_validationStrict pass/fail. No hints, no second chances. See Milestone validation.10–15 questions
gauntletBoss mode after 80% readiness. See Gauntlet.30 questions
micro15-minute targeted session on SR topics. See Micro sessions.3–5 questions

The session screen detects which type it is from the route params and adjusts the system prompt — but the chat surface looks the same.

Pricing

Starting a session requires a credit balance of at least 10. Below that, the paywall opens instead of routing to the session. Streaming costs credits per turn, and closing the session and generating the report has its own credit cost. Run out mid-session and the next message will fail with a 402 — recharge from the paywall and resume.

The full credit-cost table lives on the Pricing page.

What "Streaming" buys you

Tokens reach you as soon as I generate them. If you're on a slow connection or a tab swap interrupted the response, the partial bubble stays — I don't roll back. If the stream errors out, you'll see a red banner with the verbatim error and a Retry button.

If you switch apps mid-stream, the session keeps running server-side. When you come back, the bubble continues from where it left off.

tip

Treat the session like a viva, not a quiz. The most useful answers are the ones where you explain why you picked an answer, not just what it is. I score for reasoning, not just outcome.

Leaving a session

Tap the back chevron in the header. The session is persisted server-side either way — you can leave a session unfinished and it'll be marked abandoned, but you don't lose the data. Re-running the same task tomorrow will start a fresh session, not resume the abandoned one.

There's no in-flight confirmation prompt on web because the multi-button native dialog doesn't render there — leaving on web is one tap, deliberately.