Skip to main content

Case Study — Desktop predecessor · AI

InteliFactu — AI invoice extraction, multi-tenant AI invoice SaaS

InteliFactu today is a multi-tenant SaaS that turns supplier PDFs into booked accounting entries. Its current platform runs an OCR and LLM invoice pipeline; an earlier desktop version used a cross-platform Tauri, Rust and Next.js application with AI-assisted extraction, configured for Windows, macOS and Linux from one Rust and TypeScript source tree, with local data in SQLite.

  • Tauri
  • Rust
  • Next.js
  • TypeScript
  • React
  • SQLite
  • AI / LLM
Native (Tauri)Runtime
Windows / macOS / LinuxConfigured desktop targets
Local-first (SQLite)Data

Overview

This case study covers the retired desktop predecessor of InteliFactu, which now runs as a multi-tenant web product; the desktop app is what the architecture below describes. It was an invoicing application built for small businesses and freelancers who deal with high invoice volumes and want to keep their financial data on their own machine. Its Tauri packaging targeted Windows, macOS, and Linux, with a Next.js + React frontend and Rust backend.

The desktop code included OpenAI extraction prompts and local invoice records. The successor SaaS has the documented PDF/OCR pipeline, structured extraction, and accounting-system integration.

What I built

  • Tauri shell hosting a Next.js renderer process, with Rust commands exposing filesystem, SQLite access, and AI orchestration through the Tauri IPC boundary.
  • Local SQLite schema for clients, invoices, line items, tax rates, and supplier records — designed so the entire database lives on the user’s machine, not on a remote server.
  • AI extraction prompts for invoice data, with local company, provider, and invoice records accessed through Rust commands and dedicated SQL files.
  • Cross-platform packaging configured for every desktop target Tauri bundles (.dmg, .msi, .deb/.AppImage) from one source tree, with the updater plugin wired in.
  • SQL organized as one file per query, with separate extraction prompts under the Rust backend source tree.

Why this mattered

The desktop design kept the database on the user’s machine and used web UI technology inside Tauri. AI extraction was a separate part of the workflow; local database storage does not mean model requests stayed on the device.

Outcome

The desktop predecessor combined a Next.js renderer, Rust commands, SQLite, and extraction prompts in a Tauri application. It was later retired during the move to the multi-tenant web product. The desktop code included multi-platform bundle configuration and the updater plugin.

Building a team that owns production?

I am open to remote senior and staff-level product and platform roles where technical judgment matters after the deploy, not only before it.

A useful first message

Send the role, product context, team shape, location constraints, and interview process. I will reply with the most relevant evidence from the systems I have shipped and operated.