A professional, infrastructure-free toolkit for MBA case interview preparation.
ProCase is designed for consulting clubs and MBA students practicing case interviews in pairs. It streamlines the casing experience by giving hosts full control over case notes, exhibit delivery, and timers while giving participants a clean, distraction-free view of revealed exhibits in real time.
Live Web App: https://casingautomation.vercel.app
| Platform | Download Link | Notes |
|---|---|---|
| 🍏 Mac (Apple Silicon) | Download for Mac (Apple Silicon) | For M1, M2, M3, M4 Macs (2020+) |
| 🍏 Mac (Intel) | Download for Mac (Intel) | For older Macs (2019 and earlier) |
| 🪟 Windows PC | Download for Windows (.exe) | Setup installer for Windows 10 & 11 |
| 🌐 Web Version | Launch Web App | Instant browser join for Casees |
- Centralized Case Library: Organize cases by case type (M&A, Profitability, Market Entry, etc.), difficulty (1–5 stars), source casebook, and custom tags.
- Built-in PDF Slicer: Extract individual cases directly from multi-page master casebooks. Mark specific pages as shareable exhibits vs. confidential interviewer notes.
- Live Session Controls:
- Host live sessions using simple 5-character join codes or direct invite links.
- Reveal exhibits one-by-one to your partner with a single click.
- Built-in synchronized stopwatch with Begin, Pause, and Reset controls.
- Session History & Analytics:
- Automatically records completed sessions with partner names, duration, and ratings.
- View per-case statistics (total times given, times received, average duration, fastest completion).
- Export case progress summaries to CSV for consulting club leadership reporting.
- Zero-Friction Access: Join directly via web browser without creating an account or installing software.
- Real-Time Exhibit Delivery: Only revealed exhibits are displayed; new exhibits auto-scroll into view as the interviewer reveals them.
- Screen Wake Lock: Automatically prevents mobile and laptop screens from sleeping during active interviews.
- Session Feedback: Rate case difficulty and record session completion upon finishing.
ProCase is engineered to require zero server-side infrastructure and zero recurring operational costs:
- Peer-to-Peer Networking: Real-time communication (exhibit reveals, timer synchronization, metadata) is powered by WebRTC DataChannels via PeerJS through public STUN servers.
- Client-Side Storage: All case documents, sliced PDF binary blobs, and session history are stored locally in the browser's IndexedDB using Dexie.js.
- Client-Side PDF Processing: PDF parsing, canvas rendering, and page extraction run entirely in the browser using PDF.js and pdf-lib.
- Sustainable Long-Term: Because there are no servers, databases, or API subscriptions to pay for or manage, the application remains fully functional indefinitely across club leadership transitions.
| Layer | Technology |
|---|---|
| Frontend Framework | React 19 + TypeScript |
| Bundler & Dev Server | Vite 8 |
| Desktop Shell | Electron 40 |
| P2P Networking | PeerJS (WebRTC DataConnection) |
| Local Database | Dexie.js 4 (IndexedDB wrapper) |
| PDF Manipulation | pdf-lib (extracting/slicing pages) |
| PDF Rendering | pdfjs-dist (canvas rendering) |
| Icons | Lucide React |
.
├── electron/
│ └── main.ts # Electron desktop main process
├── src/
│ ├── components/
│ │ ├── AppLogo.tsx # SVG brand logo
│ │ ├── CaseSlicer.tsx # 2-phase case creation & exhibit configuration UI
│ │ └── PDFViewer.tsx # Responsive canvas-based PDF renderer
│ ├── services/
│ │ ├── LibraryService.ts # Dexie IndexedDB CRUD, history tracking & import/export
│ │ ├── PdfService.ts # PDF loading, slicing, and rendering utilities
│ │ └── PeerService.ts # WebRTC P2P connection handling & message protocol
│ ├── App.tsx # Primary application coordinator and views
│ ├── App.css # Main styling and theme variables
│ ├── index.css # Base resets
│ └── main.tsx # React application entry point
├── public/ # Static assets and application icons
├── scout_casebook.js # Node script for scouting casebook PDF boundaries
├── vite.config.ts # Vite & Electron plugin configuration
└── package.json
- Node.js (v18 or higher recommended)
npm(v9+)
git clone <repository-url>
cd CasingAutomation
npm installStart the Vite development server with Hot Module Replacement (HMR):
npm run devOpen http://localhost:5173 in your browser.
To typecheck and build the web and desktop bundles:
npm run buildOutput files will be generated in dist/ (web assets) and dist-electron/ (Electron main process).
npm run lint- Single Case Export/Import: Export any case as a standalone
.case.jsonfile containing metadata and base64-encoded PDF data. - Full Library Backup: Export and restore your complete library via a single
.jsonbackup. - Bulk CSV + Master PDF Slicer: Bulk-slice a master casebook PDF using a CSV format specifying page boundaries, case types, difficulty, and exhibit designations:
Title, Type, Difficulty, StartPage, EndPage, Tags, PageMetadata "Solar Strategy","Profitability",4,1,10,"energy;sustainability","Case Overview|false;Exhibit A|true"
- Progress Report Export: Export all historical casing session metrics into
.csvfor club-wide tracking and member reporting.