← all work

Morph

One text box that turns into the right card as you type - an event, a checklist, a timer, a bill split, a poll, a converter and more - in English and (Swiss) German, saved to Calendar, Reminders, TickTick or Obsidian.

Type
Personal Project · AI / Local ML
Year
2026–now
Role
Sole developer - a fork of Shapeshift (MIT), rebuilt around a local model.

Measured which part should decide what: keyword rules pick the card (~88% on unseen phrasing vs ~35% for the model), a local model reads 12 softer signals in one ~130 ms call, and parsers handle every date and amount.

  • Eval-driven: rules vs model, measured
  • One local model call, ~130 ms
  • Calendar, Reminders, TickTick & Obsidian

The problem

Quick thoughts - a meeting, a shopping list, splitting a bill - end up scattered across apps, and AI parsers that guess dates or amounts get them wrong just often enough to be useless.

Type anything once and get a card that actually does its job, with nothing leaving the machine and no model ever inventing a value.

What I did

  1. Swapped the hosted model for Laya, a small multilingual classifier running locally through my own laya-mcp server.
  2. Built an eval set and let the numbers decide the split: rules choose the card, Laya answers the signal questions, deterministic parsers extract dates, amounts and units.
  3. Made cards do something: Apple Calendar and Reminders, two-way TickTick sync, Obsidian notes, plus a Spotlight-style Mac app and an iPhone Shortcut.

Outcome

19 card types that understand English, German and Swiss input, run fully local and fall back to rules when the model is offline.

Stack

  • Next.js 16
  • React 19
  • Tailwind 4
  • Bun
  • Laya (local ML)
  • Swift
Next caseMacFold

© Johan Stefanesback home

Get in touch
Still building this site