Case study Inkward
How an app learned to read handwriting
A journaling app from our own development: the OCR pipeline for real handwriting, the AI architecture behind it, and what client projects can take away from it
Editorial responsibility: mittl medien · Contact: Robert Mittl
Updated:
Inkward is an app we built ourselves: you write your journal by hand, on paper, on the iPad, or on an e-ink device such as the reMarkable, and the app reads your entries and mirrors back, in two or three sentences, what it finds in your own words. No coaching, no judging, no streaks. The apps for iOS, Android, Apple Watch, and Wear OS are fully native; all details are on inkward.life. This case study shows the technical implementation.
Handwriting is not print
Handwriting in a journal presents particular challenges for text recognition (OCR): lines are often cramped and written quickly, with abbreviations and personal terms. Inkward's multi-OCR pipeline combines results from Google Cloud Vision, Azure, Mistral, and Claude. For mobile photo uploads, text recognition on the phone can provide an additional source.
A further Claude call brings the results together: it receives the page image, the available OCR texts, and a personal dictionary derived from earlier entries. The prompt instructs the model to mark unreadable passages and avoid inventing words. The individual recognition results are then compared using the image and the writing context.
Before recognition comes rendering
In reMarkable notebooks, pen movements are stored as vector data: individual strokes with pressure values. Inkward generates an image from them for text recognition. Stroke width follows a pressure curve that mimics the ink flow of a pen. The renderer works at double resolution and smooths the edges through supersampling. This preparation determines which stroke details reach the OCR services. For photos of paper pages, local text recognition provides an early quality signal: the app can warn before uploading when it detects very little text.
The device is not a requirement
Inkward accepts handwriting through several routes: as a photo of a paper page through the system's document scanner (VisionKit on iOS, ML Kit on Android), written directly on the iPad with the Apple Pencil on a PencilKit canvas, via cloud sync from the reMarkable or Supernote, and by email to a personal drop-in address. These inputs then use the same recognition and analysis pipeline. Mobile photo uploads and iPad pages are stored locally before transmission; a persistent queue allows uploads to be retried after app restarts.
Separate AI calls for analysis and mirror
Inkward's core idea is a brief mirror of the user's own words. After the OCR steps, a Claude call reconstructs the text and extracts structured fields such as mood and energy. A further, separate call is intended for the mirror. It receives the reconstructed text and instructions to write two or three short sentences without advice. This separation gives the mirror its own prompt, allowing the structured analysis and the wording to be controlled separately. The journal entry provides the basis for the mirror.
Privacy in the application code
Central journal fields in the database, including reconstructed text, mirror text, and raw OCR texts, are encrypted with AES-256-GCM. The encryption routine then checks that the designated fields are encrypted. Diagnostics for the OCR steps record measures such as text lengths. Stored photo page images are cleared automatically after 30 days. When an account is deleted, a shared deletion routine removes journal entries, mirrors, reports, and cloud connections, among other data, after a 30-day grace period.
The application infrastructure runs at Hetzner in Helsinki. For recognition and analysis, page images or texts are sent to external AI services; this can also involve transfers to the United States. Inkward's privacy policy explains the providers involved, processing terms, and deletion periods.
From the app to visibility
As with all our projects, the work does not end at the build: the Inkward website is available in seven languages, with guides such as How to start journaling and free templates such as the five-year journal One line a day for reMarkable and Supernote, each with structured data and a clean hreflang setup. We apply the same combination of development and marketing to client projects.
What you can take away from this
If your product is going to use AI, both the model choice and the pipeline shape its quality: how the data gets in, what happens with bad input, and how privacy is implemented in the application code. These are exactly the questions we answer for client projects too. How we handle deep operating-system integration is shown in our second case study: Callvent, phone calls become calendar events. Not every project needs this much work: when the content already lives in Joomla or WordPress and no sensors or system integration are involved, publishing the website as an app in the stores is a fixed-price job with no codebase of your own.