Skip to content

Independent product · In development

Doppel

Local AI, grounded in your work.

A native Mac assistant bringing search, speech and source checks together—with specialized models working within a shared memory budget.

Work
Product engineering & applied ML
Platform
macOS · MLX · Core ML
Context
Built by Jacob Warren, founder of Odd Machine
Status
Independent product in development
RetrieveFind the relevant source

Combine keyword, semantic and graph search, with time constraints where requested.

RankChoose useful passages

A small cross-encoder reranks candidates before they become retrieved context.

InspectKeep the source in reach

Passage links preserve a route from the assistant’s context back to the original material.

Source review follows its own path: original + revision → scope and meaning checks → a reviewable result.
A simplified view of two implemented jobs: finding relevant material and checking changes to previously cited support. Source access and review rules surround the model calls.
The problem

Finding the words is only the beginning.

A useful answer may depend on a meeting, a note and a document written weeks apart. Similar wording can conceal a different date, scope or level of commitment.

Doppel brings retrieval and interpretation into the same product while keeping source evidence available for inspection. A proposal, a confirmed choice and a report about an earlier event receive different treatment.

What’s implemented

Several focused models, one usable workflow.

Search across signals

Keyword, semantic and graph retrieval run as complementary channels. Reciprocal-rank fusion combines candidates; a MiniLM cross-encoder can rerank them. Time filters apply across the retrieval channels.

Check changing support

When a cited original changes, Doppel compares its earlier and current passages. Scope, named details and numeric qualifications stay part of the check. Unavailable comparisons remain visibly incomplete.

Keep meeting meaning distinct

Local processing separates choices, tasks, proposals and reported events. Evidence quotes and timestamps support review; ambiguous model scores can abstain. A model’s interpretation does not itself confirm a record.

Share a desktop memory budget

Model admission accounts for estimated residency and observed process memory. Idle models can be evicted before another loads. Language and vision use MLX; several smaller inference paths use Core ML.

The model stack

Match the model to the job.

The configured stack combines existing open-weight models with native runtimes, conversion tooling and product-specific checks.

Configured model families reviewed October 18, 2026. Core ML compute placement depends on the artifact and available hardware.
JobImplementation
Language & visionLFM2.5-VL-3B · 4-bit MLX checkpoint
Speech recognitionQwen3-ASR-0.6B · Core ML backend, with a separately admitted MLX fallback for eligible failures
Speech outputKokoro-82M · MLX
EmbeddingsJina embeddings v2 small · Core ML path configured for CPU and Neural Engine
Passage rankingMS MARCO MiniLM-L6-v2 · Core ML cross-encoder
Entity & relation extractionGLiNER-Relex base · Core ML, with a work-specific label policy
Meaning checksModernBERT-large-NLI · Core ML, with source and scope gates
Recovery & continuity

Preserve the work around inference.

The speech path bounds concurrent work, reuses and clears decoder state, and contains supported native exceptions. Failed meeting processing preserves source audio for an explicit retry.

Conversation compaction stores a disposable working summary alongside the canonical transcript. Edits and branch changes invalidate stale summaries. Token-cache reuse requires compatible lineage and matching prefixes.

These are implemented recovery and consistency mechanisms. Their usefulness depends on the complete workload, model revision and hardware.

Evidence status · Implementation review

This case study describes an independent product under development. The repository includes focused regression and conversion checks for the mechanisms described. This article reports no new comparative accuracy, speed or energy benchmark.

Local model inference is one part of the product. Connected services and web search have their own network behavior.

Engineering notes

Inside the implementation.

Running several AI models within a desktop memory budget

Residency, compute placement, cache reuse and recovery in an on-device assistant.

Read the note

Checking whether a source still supports a claim

Original passages, revisions, scope checks and bounded comparisons of meaning.

Read the note
Visit the Doppel product site

Bring us the technical obstacle.

Start with an Engineering Sprint: $17,250 USD, two weeks, one agreed obstacle.

See the Engineering Sprint
Discuss a project