CodingIdeas.ai

VaultMerge — The Obsidian Sync Conflict Resolver That Stops Your Mac From Eating Your iPhone Notes

Obsidian Sync's mobile-prioritization bug has been silently overwriting desktop edits for years and the community workaround is 'just pick one primary device.' VaultMerge is a desktop app that shows a pre-commit diff between conflicting vault versions and lets you merge them in 30 seconds.

Difficulty

intermediate

Category

Productivity

Market Demand

Medium

Revenue Score

5/10

Platform

Desktop App

Vibe Code Friendly

No

Hackathon Score

6/10

Validated by Real Pain

— sourced from real community discussions

App Storereal demand

Obsidian Sync users report the app prioritizes mobile device state over desktop during conflict resolution, causing silent data loss that users discover only after their work has been overwritten.

What is it?

When Obsidian Sync resolves a conflict between mobile and desktop edits, it silently picks the mobile version — and your desktop work disappears into a hidden conflict copy you never knew existed. Power users have documented this in hundreds of forum threads, resorting to manual Git commits and disabling mobile sync entirely. VaultMerge is an Electron or Tauri app that hooks into your local Obsidian vault folder, watches for conflict files (the ones Obsidian creates with duplicate filenames), surfaces a side-by-side diff UI, and lets you merge them with one click before they overwrite anything. It targets the 40k+ Obsidian power users who use sync across 2+ devices daily and have hit this bug at least once.

Why now?

Tauri 2.0 released stable in late 2024 makes lightweight macOS desktop apps shippable in days without Electron's complexity — the tooling for this idea just became practical for a solo indie dev.

  • Real-time vault folder watcher using chokidar that detects Obsidian conflict files instantly (Implementation note: watch for filenames matching Obsidian conflict pattern)
  • Side-by-side visual diff with line-level merge selection using diff2html
  • One-click merge that writes resolved file and removes conflict copy
  • Conflict history log showing every merge decision made

Target Audience

Obsidian power users syncing across 2+ devices — estimated 40k users who have reported this conflict bug on Reddit and the Obsidian forum.

Example Use Case

David, a daily Obsidian user across MacBook and iPhone, opens VaultMerge after syncing and sees 3 conflict files highlighted in red — he clicks each one, picks the correct paragraph from each version in the diff view, and saves the merged file in 45 seconds total.

User Stories

  • As an Obsidian power user, I want to see a visual diff of conflicting file versions, so that I can pick the right edits without losing any work.
  • As a Mac and iPhone Obsidian user, I want conflicts detected automatically, so that I never discover lost notes a week after the overwrite.
  • As a paying Obsidian Sync subscriber, I want a merge history log, so that I can audit what was resolved in case something looks wrong later.

Done When

  • Detection: done when app identifies an Obsidian conflict file within 5 seconds of it appearing in the vault folder.
  • Diff view: done when user sees both file versions side by side with changed lines highlighted in green and red.
  • Merge: done when user clicks merge and the resolved file appears in the vault with conflict copy gone.
  • License gate: done when user's 6th merge attempt shows a paywall and Stripe purchase unlocks unlimited merges immediately.

Is it worth building?

$19 one-time × 200 sales/month = $3,800/month gross. $5/month subscription × 100 users = $500 MRR recurring. Total at month 3: ~$2k-4k blended.

Unit Economics

CAC: $2 via Obsidian forum organic posts. LTV: $19 one-time (plus $60 if monthly tier adopted). Payback: immediate. Gross margin: 93%.

Business Model

One-time license, $19. Optional $5/month for auto-merge rules and cloud conflict log.

Monetization Path

Free trial for 5 conflict resolutions. One-time purchase unlocks unlimited. Monthly tier adds AI-assisted auto-merge suggestion.

Revenue Timeline

First dollar: week 2 via forum post download. $1k revenue: month 1. $3k/month: month 4.

Estimated Monthly Cost

Vercel for license validation API: $20, Stripe fees: ~$30 at $1k revenue, code signing certificate: $10/month amortized. Total: ~$60/month.

Profit Potential

$2k-4k/month sustainable. Not a unicorn, but a real indie business with near-zero churn.

Scalability

Low-medium — niche product with high retention value. Could expand to Logseq and Dendron users.

Success Metrics

Week 1: 50 downloads from Obsidian forum post. Month 1: 30 paid licenses. Month 3: 100 licenses sold.

Launch & Validation Plan

Post a detailed description of the conflict bug with screenshots on r/ObsidianMD and Obsidian forum, ask users to upvote if they have hit it — 100 upvotes validates the market before writing one line of code.

Customer Acquisition Strategy

First customer: reply directly to every open Reddit thread where someone complains about Obsidian sync conflicts, link to a free 5-resolution trial download. Ongoing: Obsidian forum showcase, Obsidian YouTube channels, SEO on 'obsidian sync conflict resolver'.

What's the competition?

Competition Level

Low

Similar Products

Kaleidoscope ($70/year) is a generic file diff tool with no Obsidian awareness. Git-based workflows require technical setup. Obsidian's built-in conflict handling is the bug itself — VaultMerge is the first Obsidian-native resolver.

Competitive Advantage

No existing tool specifically targets Obsidian's conflict file format — users currently use generic merge tools like Kaleidoscope at $70/year which have no Obsidian-specific context.

Regulatory Risks

Low regulatory risk. macOS Gatekeeper notarization required for direct download — plan 1 week for Apple notarization setup.

What's the roadmap?

Feature Roadmap

V1 (launch): conflict detection, visual diff, one-click merge, 5-free-merge trial. V2 (month 2-3): AI merge suggestion, conflict history browser. V3 (month 4+): Windows support, Logseq compatibility.

Milestone Plan

Phase 1 (Week 1-2): conflict detection and diff view working on macOS. Phase 2 (Week 3-4): merge logic, license gate, Stripe purchase flow. Phase 3 (Month 2): notarization, forum launch, 30 paid licenses.

How do you build it?

Tech Stack

Tauri (Rust + React), chokidar for file watching, diff2html for visual diffs, Stripe for licensing — build with Cursor for Rust backend, v0 for diff UI components.

Suggested Frameworks

Tauri, chokidar, diff2html

Time to Ship

2 weeks

Required Skills

Tauri or Electron, React, file system watching, diff algorithms.

Resources

Tauri docs, chokidar npm package, diff2html docs, Obsidian forum conflict threads.

MVP Scope

src-tauri/main.rs (file watcher + conflict detection), src/App.tsx (main UI shell), src/components/DiffViewer.tsx (side-by-side diff), src/components/ConflictList.tsx (conflict file list), src/lib/merge.ts (merge logic), src/lib/detector.ts (conflict file pattern matcher), src-tauri/Cargo.toml (Tauri deps), package.json (React + diff2html), .env.example (vault path config).

Core User Journey

Download app -> point to vault folder -> conflict detected automatically -> open diff view -> merge with one click -> conflict resolved.

Architecture Pattern

chokidar watches vault folder -> detects conflict filename pattern -> triggers React UI notification -> user opens diff view -> selects merge choices line by line -> Tauri writes merged file to disk -> conflict copy deleted -> log entry saved locally.

Data Model

ConflictFile has path, detected_at, status (pending, merged, dismissed). MergeDecision has conflict_id, chosen_lines, resolved_at. LicenseKey has key, activated_at, device_id.

Integration Points

Stripe for license purchase and validation, chokidar for file system watching, diff2html for visual diff rendering, Tauri for native file system access.

V1 Scope Boundaries

V1 excludes: AI auto-merge, cloud conflict log, Windows support, Logseq support, Git integration.

Success Definition

An Obsidian power user downloads VaultMerge without any founder interaction, resolves their first real conflict in under 60 seconds, and buys the license immediately after.

Challenges

Distribution is brutal for a desktop utility — App Store submission adds 2+ weeks and 30% revenue cut, while direct download requires building trust with privacy-conscious Obsidian users who will not run unknown binaries.

Avoid These Pitfalls

Do not build for Windows and Linux simultaneously with macOS — nail macOS first since that is where 80% of Obsidian power users are. Do not require internet connection for core merge functionality — users will distrust a local file tool that phones home.

Security Requirements

No user auth required. License key validated via Stripe API call. App never reads vault file contents beyond the two conflicting versions displayed. No telemetry without explicit opt-in.

Infrastructure Plan

Vercel for license validation API endpoint only, no database needed V1 (license checked via Stripe API), GitHub Actions for macOS build and notarization, Sentry for crash reporting.

Performance Targets

File conflict detection latency under 1 second, diff rendering under 200ms for files under 10k lines, app binary under 15MB, zero internet required for core merge workflow.

Go-Live Checklist

  • macOS notarization complete and direct download tested.
  • Stripe license purchase flow tested end-to-end.
  • Sentry crash reporting live.
  • 5-merge trial limit verified working.
  • Privacy policy published confirming no vault data leaves device.
  • 10 beta Obsidian users confirmed stable on macOS Sequoia.
  • Rollback: previous build downloadable from GitHub releases.
  • Obsidian forum launch post drafted with conflict screenshot.
  • Direct download page live on custom domain.

First Run Experience

On first run: app prompts user to select their Obsidian vault folder, then immediately scans and shows any existing conflict files. No manual config required: demo conflict file pre-bundled in app can be loaded to show the diff UI without a real vault.

How to build it, step by step

1. Define conflict file detector pattern in src/lib/detector.ts matching Obsidian conflict filename format. 2. Set up Tauri project with npx create-tauri-app and React frontend. 3. Implement chokidar watcher in src-tauri/main.rs emitting events to React via Tauri invoke. 4. Build ConflictList component showing detected conflict files with timestamps. 5. Build DiffViewer component using diff2html to show side-by-side line diff of two file versions. 6. Implement merge logic in src/lib/merge.ts that writes chosen lines to resolved file. 7. Add conflict history log stored in local SQLite via Tauri plugin. 8. Build license gate: 5 free merges, then Stripe payment link for $19 one-time purchase. 9. Add macOS notarization config and test direct download install flow. 10. Verify: create an artificial Obsidian conflict file, confirm detection, open diff, merge, confirm conflict file removed and resolved file correct.

Generated

May 16, 2026

Model

claude-sonnet-4-6

Disclaimer: Ideas on this site are AI-generated and may contain inaccuracies. Revenue estimates, market demand figures, and financial projections are illustrative assumptions only — not financial advice. Do your own research before making any business or investment decisions. Technology availability, pricing, and market conditions change rapidly; always verify details independently.