Practice TOEFL®-style writing tasks, get structured AI feedback, and track your progress without paying for another full exam prep platform.
OpenPrep is for learners who already use local AI tools such as Codex, Claude Code, Ollama, or OpenCode and mainly want to improve their Writing score. Instead of starting from an empty chat window, you get a focused desktop workflow: pick a prompt, write your response, submit it, review feedback, and improve over time.
Quick facts: free & open source (MIT) · macOS desktop app · uses AI you already have · no account required · local data storage
Download the latest release · Run locally · Contribute
TOEFL® prep tools can get expensive fast, and not every learner needs a full platform for every section. A lot of people are already comfortable with Reading, Listening, or Speaking, but want focused help with Writing.
OpenPrep is built for that use case:
- Focus on Writing first. Start with TOEFL®-style writing prompts instead of paying for a full-course prep app you may not need.
- Use the AI tools you already have. OpenPrep uses Switchboard to connect to local AI tools such as Codex, Claude Code, Ollama, and OpenCode.
- Practice in a structured flow. Choose a prompt, write your response, submit it, and review the result in one consistent workflow.
- Get feedback you can study. Scores, criterion notes, improvement points, and phrase-level feedback are shown in a structured UI instead of a long chat transcript.
- See your progress. Attempts are saved locally so you can review earlier work and track improvement over time.
- Keep room to grow. Writing is the first focus, but broader exam sections can be added later if users ask for them.
OpenPrep is more useful than opening ChatGPT alone because it gives you curated tasks, a repeatable workflow, structured output, saved attempts, and a place to compare progress over time.
OpenPrep starts with a local AI tool picker for evaluation, then opens a catalog of writing tasks so practice begins with a concrete exam-style assignment, not a blank chat.
The submission screen keeps the task and response area together, so you can stay in the essay instead of managing tabs, timers, or copied prompts.
Evaluation runs through the configured provider path, then returns a structured result the UI can render consistently.
Scores, strengths, improvement points, and detailed writing feedback are presented as a study artifact you can actually use for the next attempt.
OpenPrep is in an early open-source preview. The current vertical slice focuses on macOS and TOEFL®-style writing practice:
- prompt catalog
- writing submission flow
- Switchboard-backed writing evaluation
- structured feedback UI
- local persistence foundation
- progress-oriented attempt storage
- typed Electron IPC boundaries
- mock provider for UI development
Planned product direction includes history and review, broader exam support, speaking feedback, reading and listening modules, and provider selection.
OpenPrep is a third-party practice tool, not an official product.
Grab the newest app build from the GitHub releases page.
Because this is an early local-first macOS app, your system may ask you to confirm that you want to open software downloaded from the internet. That is expected for unsigned preview builds.
Recommended runtime:
- Node.js
22 - macOS
- a supported local AI tool if you want live AI evaluation
npm install
npm run devFor local UI work without a live AI call:
OPEN_PREP_AI_PROVIDER=mock npm run devSwitchboard-backed evaluation uses a five-minute timeout by default. If your local setup regularly needs more time, override it in milliseconds:
OPEN_PREP_AI_TIMEOUT_MS=600000 npm run devUseful checks:
npm run typecheck
npm run lint
npm testBuild the desktop app:
npm run buildIf Electron fails to install correctly, use Node 22, remove node_modules, and run npm install again. The current Electron toolchain is tested against the CommonJS path used by vite-plugin-electron and is not intended for Node 26.
|
RECOMMENDED AI AGENT PROMPT Copy this prompt into your coding agent before making larger changes. It gives the agent the minimum repo context up front and points it to the project instructions it should follow.
|
OpenPrep keeps the desktop security boundary explicit:
rendererhandles React UI, routing, and view state.preloadexposes a narrow typed bridge.mainowns persistence, provider calls, and privileged work.shared/domaincontains contracts, schemas, and pure domain types.
The AI provider layer is deliberately pluggable. Switchboard handles local tool discovery, authentication, and execution while OpenPrep keeps prompt construction, parsing, and failure handling behind a common interface.
This architecture matters, but it is supporting infrastructure rather than the headline. The main product idea is still simple: give TOEFL® Writing learners a focused workflow that feels like practice, not a chatbot thread.
- Website: https://mauriceheinze.github.io/open-prep/
- TOEFL® Writing guides: https://mauriceheinze.github.io/open-prep/guides/toefl-writing-complete-guide
- Product vision: markdown/PRODUCT.md
- Engineering standards: markdown/ENGINEERING.md
- Technical decisions: markdown/PROJECT_DECISIONS.md
- First release README: markdown/RELEASE_README_0.1.0.md
- Prompt catalog notes: prompts/writing/README.md
OpenPrep is a good project for people who care about calm learning software, focused writing practice, typed domain modeling, and AI feedback that is presented as a real product experience.
Before opening a PR:
npm run typecheck
npm run lint
npm testPlease keep changes aligned with the product and engineering docs. The short version: preserve strict process boundaries, validate unsafe inputs, keep UI logic out of business logic, and avoid coupling the app core to a single exam, section, or AI provider.
TOEFL®, IELTS, and Cambridge are trademarks of their respective owners. OpenPrep is an independent open-source project and is not affiliated with or endorsed by those organizations.




