Ario Barin Ostovary

Software Engineering, University of Waterloo

Quip

A local Mac writing assistant that learns from the corrections you accept.

At Hack the 6ix, Kevin, Ricky, Kai, and I built a Mac writing assistant that actually lives where you type. We did not put a textbox on a web page and call it an input method. Quip Native is a real macOS input source, so you can type into a normal text field, get a candidate bar near the caret, and explicitly choose whether anything changes.

Quip candidate bar offering a context-aware correction beside typed text

I took the model and evaluation side. The hard part was not making a model fix obvious typos. It was teaching a small local model to expand shorthand, use nearby context when it actually helps, return five schema-valid suggestions, and leave the text alone when the best edit is no edit. I built the training data and augmentation pipeline, the strict model contract, the ranking and evaluation tooling, and the Freesolo LoRA runs around Qwen3.5-2B.

Quip benchmark comparing the fine-tuned local adapter with base and frontier models

The final adapter hit 80.7% ranked success on a 135-row evaluation slice, 16.3 points above the strongest Qwen base model in the same comparison, with about 1.7 seconds of managed latency. I was more excited that unnecessary edits fell to 8.3%. A writing assistant that changes every sentence is not smart; it is just annoying.

The rest of the system is a fun stack: Swift InputMethodKit for the actual typing path, a Tauri app with a Rust composition engine, a loopback bridge, and local MLX model servers. Accepted and dismissed suggestions become local learning signals, but we deliberately kept the data bounded and local instead of treating every keystroke as training data.

Quip architecture from the macOS input method through the Rust composition engine to local MLX model servers and learning signals

It is still a hackathon build. Cross-app behavior needs more hardening, local startup and latency can be better, and the per-user adapter loop is not finished. But we left Hack the 6ix with a real input method, a trained local model, and an end-to-end path that actually edits normal Mac text fields. That is a much better place to be than another autocomplete textbox.