Barista training, the fun way

Train baristas who are ready for anyone.

Cangkruk turns a café's own SOP & menu into gamified, level-based training — then becomes the difficult customer you practice against, and grades you.

Join the TestFlightiOS 17+ · Bahasa Indonesia UX

Busy managers have little time for hands-on coaching, so new baristas memorize SOPs or learn on real customers — inconsistent service, avoidable mistakes, low confidence. Cangkruk gives them a safe place to practice, and gives managers their time back.

How it works

Upload your docs, auto-generate the training, simulate the real job, get graded.

  1. 1

    Ingest

    A manager uploads the café's real PDF/DOCX SOP + menu.

  2. 2

    Extract

    Clean text is pulled from those files on-device — with OCR fallback for scans.

  3. 3

    Transform

    An LLM restructures the raw text into clean, leveled learning modules.

  4. 4

    Learn

    Trainees read the generated material, organized into progressive levels.

  5. 5

    Practice

    Trainees roleplay out loud against escalating AI customer personas.

  6. 6

    Assess

    The AI grades the transcript with a summary + coaching feedback.

  7. 7

    Habit

    A home-screen widget + notifications nudge daily practice.

What baristas get

Four features that turn a stack of documents into a confident shift.

1

AI-powered voice roleplay

Practice real customer conversations, out loud.

Live speech-to-text feeds a stateful, in-character AI customer whose reply is spoken back to you. Time-boxed 5-minute sessions in Bahasa Indonesia.

2

Lessons from your SOP & menu

Upload real docs — get structured training.

The app extracts text from your café's PDF/DOCX on-device and an LLM rewrites it into clean, leveled, beginner-friendly lessons.

3

Instant feedback & shareable history

Coaching after every session, saved to share.

Each session ends with an AI summary and actionable suggestions. Every practice is saved and shareable with your manager via the iOS share sheet.

4

Secure content management

Sensitive SOPs stay protected and on-device.

Manager-only, permission-based access. Local auth with CryptoKit AES-GCM, and user data stays on the device — nothing stored on a server.

Four customers, rising heat

The roleplay escalates. Each persona is a real café archetype — beat one to face the next.

Tier 1

Pelanggan Ramah

The Friendly Newcomer

A relaxed first-timer, curious about the menu and happy to ask for recommendations.

Tests: Product knowledge

Tier 2

Ibu-Ibu Buru-Buru

The Rushing Auntie

Impatient and easily annoyed — interrupts and complains, but softens with fast, polite service.

Tests: Efficiency under pressure

Tier 3

Pelanggan Perfeksionis

The Perfectionist

Meticulous, with special requests and allergies; only satisfied by empathy and a real solution.

Tests: Active listening & problem-solving

Tier 4

Si Karen

The Entitled One

Demands fake discounts, compares to other cafés, threatens 1-star reviews — calmed only by polite, firm boundaries.

Tests: De-escalation & composure

Built with

A native iOS app, protocol-oriented and fully mockable.

UI & App

  • SwiftUI
  • UIKit
  • WidgetKit + App Intents
  • Lottie

Data & Security

  • SwiftData (offline-first)
  • CryptoKit (AES-GCM)

Voice & AI

  • Speech (STT)
  • AVFoundation
  • Gemini (LLM + TTS)

Documents

  • PDFKit
  • Vision OCR
  • ZIPFoundation (DOCX)

Backend & Tooling

  • FastAPI
  • XCConfig
  • Swift Testing
  • Xcode Cloud
  • TestFlight

Under the hood

On-device document extraction

PDFKit reads the text layer; scanned pages fall back to Vision OCR. DOCX is unzipped and its XML walked to preserve paragraphs.

LLM curriculum generation

An engineered Head Barista system prompt turns messy SOP/menu docs into warm, Markdown-structured, leveled lessons under a strict JSON contract.

Real-time voice roleplay

A streaming loop: Apple Speech STT to a stateful in-character LLM to Gemini TTS, time-boxed to 5 minutes with a countdown and auto-feedback.

Local secure auth

Register, login, and reset with passwords encrypted at rest via CryptoKit AES-GCM — fully on-device.

Habit & retention

A WidgetKit + App Intents widget reads shared App Group state to ask trained today, backed by scheduled local notifications.

Offline-first content

Lessons are generated once via API and stored in SwiftData, so the app works against previously generated content offline.

The team

Made at the Apple Developer Academy.