Files
scan-receipts/receipt_scanner_to_excel_blueprint.md
Timo 84b9987c49 Add full application: receipt scanning, auth, billing, and account deletion
Brings the working codebase (Next.js app, auth system, Stripe billing,
Docker/deploy config, tests, docs) into version control on top of the
placeholder initial commit, and adds account self-deletion (Danger Zone
in Settings, password + typed-email confirmation, cascading DB cleanup,
Stripe cancellation) per GDPR right-to-erasure.

Excludes local build caches, node_modules, and internal agent scratch
files; .gitignore hardened to keep those out going forward.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-19 20:59:04 +02:00

245 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🧾 Receipt Scanner to Excel: Vollständiger Micro-App Masterplan & Technische Architektur-Spezifikation
**Erstellt / Aktualisiert:** 14. August 2026
**Status:** Validierte Tentacle-Opportunity (High Demand / Zero Title Moat)
**Datenbasis:** Original Google Keyword Planner & Apple Search Ads Validierung
**Ziel-Märkte:** Global (US Storefront Priorität #1, DE Storefront Priorität #2, ES/MX Priorität #3)
**Kernversprechen:** *„Foto machen → Daten stimmen → Excel ist fertig.“*
---
## 📌 1. Executive Summary & Die Tentacle-Chance
Mega-Apps wie *CamScanner*, *Adobe Scan*, *QuickBooks* und *Expensify* generieren monatlich Millionenumsätze, sind jedoch für den schnellen Alltagseinsatz **überladen, teuer ($15$35/Monat)** und erfordern langwierige Registrierungen.
Nutzer (Freelancer, Handwerker, Selbstständige, Außendienstler) suchen im App Store und bei Google gezielt nach einer **einzigen simplen Funktion**:
👉 **„Receipt Scanner to Excel“** (Kassenbon fotografieren $\rightarrow$ Beträge/MwSt. extrahieren $\rightarrow$ 1-Klick Excel/CSV Export).
### 🔍 App Store SERP & Validierung
- **Opportunity Score:** `8499/100 🔥` (Globaler Durchschnitt)
- **Titel-Besetzung Top 5:** **0 von 5** Apps in fast allen Stores nutzen das Exact-Match-Keyword im App-Titel.
- **Wettbewerbslage:** Große Scanner-Apps ranken nur über generische Store-Autorität, nicht über ASO-Fokus.
---
## 🎯 2. Reale Google Keyword Planner Daten & Metriken (DE, US, ES/MX)
### A. 🇩🇪 Deutschland / DACH-Markt (Google Keyword Planner)
#### Top-Volumen Keywords (100 1.000 Suchen / Monat)
| Keyword | Suchvolumen / Mo. | Wettbewerb | CPC (Gebot oben) | CPC (Gebot Spitzenwert) | Trend / Signal |
| :--- | :---: | :---: | :---: | :---: | :--- |
| **`belege scannen`** | 100 1.000 | Hoch | 2,03 € | 5,77 € | Stabiler B2B Core-Traffic |
| **`belege scanner`** | 100 1.000 | Hoch | 1,83 € | 6,23 € | Hohe Kaufintention |
| **`kassenbon scanner`** | 100 1.000 | Hoch | 1,01 € | 4,25 € | Kernbegriff für Kassenbons |
| **`belege digitalisieren`** | 100 1.000 | Hoch | 1,78 € | 6,40 € | Vorbereitende Buchhaltung |
| **`kassenbon scanner app kostenlos`** | 100 1.000 | Mittel | 0,80 € | 3,07 € | **🔥 +900 % Trend (Explodierend)** |
| **`belege scannen und verwalten kostenlos`** | 100 1.000 | Hoch | 1,16 € | 2,82 € | Starker App-Suchbegriff |
| **`belegscanner`** | 100 1.000 | Hoch | 1,02 € | 3,94 € | Single-Word Keyword |
| **`scanner für belege`** | 100 1.000 | Hoch | 2,03 € | 5,77 € | Hardware/Software Switch |
| **`app kassenbon scannen`** | 100 1.000 | Mittel | 1,37 € | 4,63 € | Mobile Intent |
| **`scanner für rechnungen`** | 100 1.000 | Hoch | 1,23 € | 7,96 € | B2B Rechnungsverarbeitung |
| **`datev scannen`** | 100 1.000 | Hoch | 1,06 € | 3,55 € | DATEV-Schnittstellen Intent |
| **`kontieren der belege`** | 100 1.000 | Gering | 0,89 € | 3,22 € | Buchhaltungs-Nische |
#### High-CPC & Exact-Match Nischen (10 100 Suchen / Monat)
| Keyword | Suchvolumen / Mo. | Wettbewerb | CPC Min | CPC Max (Spitze) | Relevanz für Landingpage |
| :--- | :---: | :---: | :---: | :---: | :--- |
| **`kassenbon scannen excel`** | 10 100 | **Gering** | — | — | **🎯 Exact Match Goldnische (0 Moat!)** |
| **`wiso mein büro belege scannen`** | 10 100 | Mittel | 2,26 € | **35,74 € 🔥** | Extrem kaufkräftige Selbstständige |
| **`eingangsrechnungen digitalisieren`** | 10 100 | Mittel | 7,36 € | **18,26 €** | B2B Rechnungsimport |
| **`lieferscheine scannen und archivieren`**| 10 100 | Hoch | 3,12 € | **12,14 €** | Handwerker & Logistik |
| **`digitale belegerfassung`** | 10 100 | Hoch | 3,38 € | **11,96 €** | Kanzleien & Buchhalter |
| **`buchhaltung digitale belege`** | 10 100 | Hoch | 1,99 € | **11,74 €** | Steuerberatung |
| **`belege fotografieren app`** | 10 100 | Mittel | 3,95 € | 7,50 € | Mobile-First Intent |
| **`rechnung scanner app`** | 10 100 | Mittel | 2,19 € | 8,65 € | App Store / Play Store Traffic |
| **`tankbelege scannen`** | 10 100 | Mittel | 0,80 € | 3,86 € | Reisekosten & Fuhrpark |
| **`quittungen scannen app`** | 10 100 | Hoch | 1,58 € | 5,08 € | Quittungs-Erfassung |
---
### B. 🇺🇸 US & Globaler Markt (Google Keyword Planner Englisch)
#### High-Volume Keywords (1.000 10.000 Suchen / Monat)
| Keyword | Suchvolumen / Mo. | Wettbewerb | CPC Min | CPC Max (Spitze) | Trend |
| :--- | :---: | :---: | :---: | :---: | :--- |
| **`receipt scanner`** | 1.000 10.000 | Hoch | 1,48 € | 9,43 € | Globaler Core-Suchbegriff |
| **`receipt tracker`** | 1.000 10.000 | Mittel | 4,24 € | **25,94 €** | Expense Tracking |
| **`receipt scanner app`** | 1.000 10.000 | Mittel | 1,79 € | 9,72 € | Mobile App Store Traffic |
| **`best receipt scanner app`** | 1.000 10.000 | Mittel | 1,73 € | 9,26 € | High-Intent Vergleichssuche |
| **`receipt apps`** | 1.000 10.000 | Mittel | 1,98 € | 12,79 € | Generische App-Suche |
| **`ocr receipt scanner`** | 1.000 10.000 | **Gering** | 2,36 € | **11,91 €** | **🔥 +900 % Trend (AI OCR)** |
| **`best app for receipt scanning`** | 1.000 10.000 | Mittel | 1,73 € | 9,26 € | Review-Traffic |
| **`scan a receipt app`** | 1.000 10.000 | Mittel | 1,79 € | 9,72 € | Action-Intent |
#### High-Value B2B & Software Keywords (100 1.000 Suchen / Monat)
| Keyword | Suchvolumen / Mo. | Wettbewerb | CPC Min | CPC Max (Spitze) | Bemerkung |
| :--- | :---: | :---: | :---: | :---: | :--- |
| **`receipt tracking software`** | 100 1.000 | Gering | 9,63 € | **65,15 € 🔥** | Maximaler B2B-Kaufwert |
| **`expensify receipt scanning`** | 100 1.000 | Gering | 0,60 € | **63,91 € 🔥** | **+900 % Trend (Konkurrenten-Alternative)** |
| **`track expenses for small business`** | 100 1.000 | Mittel | 9,18 € | **48,01 €** | SMB Finance Intent |
| **`best small business expense tracker`** | 100 1.000 | Mittel | 9,42 € | **41,97 €** | KMU Zielgruppe |
| **`receipt tracker for business`** | 100 1.000 | Mittel | 8,45 € | **36,11 €** | B2B Spesen |
| **`receipt scanning software`** | 100 1.000 | Mittel | 3,86 € | **23,64 €** | Desktop & Web SaaS |
| **`invoice scanner`** | 100 1.000 | Mittel | 4,78 € | **23,53 €** | Rechnungsverarbeitung |
| **`receipt scanner that categorizes`** | 100 1.000 | Hoch | 2,13 € | 9,22 € | **🔥 +900 % Trend (Auto-Kategorisierung)** |
| **`ai receipt scanner`** | 100 1.000 | Mittel | 2,02 € | 13,89 € | KI-Positionierung |
---
## 📱 3. Fertiges ASO-Metadaten-Set (App Store & Play Store)
### 🇺🇸 US & International Storefront (Englisch)
- **App Title (29/30 Zeichen):** `Receipt Scanner to Excel: XLSX`
- **Subtitle (30/30 Zeichen):** `Quick Scan Receipts & Invoices`
- **Keywords Field (99/100 Zeichen):** `receipts,expense,tracker,invoice,export,tax,mileage,belege,buchhaltung,spesen,csv,ocr,accounting,sheet`
- **Promotional Text (170 Zeichen):**
> Instant 1-tap receipt and invoice scanner with automatic Excel (.xlsx) & CSV export. No complicated setup, no expensive cloud subscriptions. Just scan & export.
---
### 🇩🇪 Deutscher Storefront (Lokalisiert)
- **App Title (29/30 Zeichen):** `Beleg Scanner zu Excel: XLSX`
- **Subtitle (29/30 Zeichen):** `Quittungen & Rechnungen Scan`
- **Keywords Field (98/100 Zeichen):** `belege,quittung,ausgaben,buchhaltung,steuer,rechnung,spesen,finanzen,csv,tabelle,scanner,ocr,kassenbon`
- **Promotional Text (168 Zeichen):**
> Kassenbons & Rechnungen mit 1 Klick scannen und direkt als fertige Excel-Tabelle (.xlsx) oder CSV teilen. Ideal für Steuerberater, Selbstständige und Spesenabrechnungen.
---
## 💰 4. Unit Economics & Margen-Kalkulation
| Posten | Kennzahl / Kosten |
| :--- | :--- |
| **Input-Kosten (DeepSeek V4 Flash pro 1M):** | $\approx \$0.0679$ |
| **Output-Kosten (DeepSeek V4 Flash pro 1M):** | $\approx \$0.1680$ |
| **API-Kosten pro gescanntem Beleg:** | $\approx \$0.00015 - \$0.0008$ (< 0,1 Cent) |
| **API-Kosten für 100 Belege (Monat):** | $\approx \$0.015 - \$0.08$ (**1,5 bis 8 Cent**) |
| **Abo-Umsatz pro Nutzer:** | **4,99 € / Woche** oder **39,99 € / Jahr** |
| **Lifetime-Option:** | **59,99 € Einmalkauf** (ca. 48,99 € Reingewinn nach Store-Fee) |
| **Bruttomarge:** | **> 84% Reingewinn (> 98% Deckungsbeitrag)** |
---
## 💳 5. Monetarisierungs- & Paywall-Strategie
| Modell | Preis | Konditionen / Vorteile | Trigger & Psychologie |
| :--- | :--- | :--- | :--- |
| **Free-Tier** | **0,00 €** | 5 kostenlose Scans pro Monat | Sofortiger Test ohne Reibung. |
| **Weekly Pro** | **4,99 € / Woche** | 3 Tage kostenlos testen | Standard-Trigger beim 6. Scan oder beim Export. |
| **Annual Pro** | **39,99 € / Jahr** | Entspricht 0,77 €/Woche (**70 % Ersparnis**) | Als `Bester Wert` optisch hervorgehoben. |
| **Lifetime Lizenz** | **59,99 € Einmalkauf** | Einmal zahlen, lebenslang nutzen | Perfekt für deutsche Freelancer & Handwerker mit Abo-Aversion. |
---
## 🏗️ 6. Systemarchitektur & Robuster Server-Stack
```mermaid
flowchart TB
subgraph Clients ["1. Clients & Frontend"]
Web["Web-App / Landingpage (Next.js 15 / React)"]
Mobile["iOS & Android App (Capacitor.js)"]
end
subgraph Backend ["2. Backend Processing Layer (Node.js Server)"]
UploadAPI["Upload Route (/api/scan)"]
SharpEngine["sharp Engine (Drehen, Kontrast, Kompression)"]
PreCheck["SHA-256 Hash & Duplikat-Check"]
AISDK["Vercel AI SDK (generateObject + Zod)"]
ResolutionEngine["Receipt Resolution Agent"]
ExcelEngine["Excel Engine (exceljs)"]
end
subgraph Storage ["3. Daten & Services"]
Postgres[(PostgreSQL via Neon / Supabase + Drizzle)]
R2Storage["Cloudflare R2 / S3 (Beleg-Bilder)"]
LLM["DeepSeek V4 Flash / Vision Fallback"]
Stripe["Stripe Billing & Apple IAP"]
Discord["Discord Sales Webhook Bot"]
end
Web --> UploadAPI
Mobile --> UploadAPI
UploadAPI --> SharpEngine
SharpEngine --> R2Storage
SharpEngine --> PreCheck
PreCheck <--> Postgres
PreCheck --> AISDK
AISDK <--> LLM
AISDK --> ResolutionEngine
ResolutionEngine <--> Postgres
ResolutionEngine --> ExcelEngine
Stripe --> Discord
```
---
## ⚡ 7. Die 5-stufige Beleg-Pipeline
1. **Upload & SHA-256 Hash:** Sofortiger Hash-Abgleich gegen PostgreSQL (Duplikat-Prävention).
2. **Bildoptimierung (`sharp`):** Auto-Rotate, Kontrast-Boost für Thermopapier, Skalierung auf max. 1600 px.
3. **Strukturierte Extraktion mit Confidence-Scores:** Zod-Schema mit Confidence pro Feld, `taxBreakdown` und `lineItems`.
4. **Deterministische Plausibilitätsprüfung:** Netto + MwSt = Brutto, Summe(Positionen) = Brutto.
5. **Receipt Resolution Agent:** Schlägt Händler-Kategorisierungen vor und fragt nur bei unklaren Feldern nach (*„Datum 14.08.2026? [Ja] [Ändern]“*).
---
## 🗄️ 8. Zod Schema & PostgreSQL Schema
### Zod Extraktions-Schema (`src/lib/schema/receipt.ts`)
```typescript
import { z } from 'zod';
export const ReceiptExtractionSchema = z.object({
merchant: z.object({
name: z.string().describe("Name des Händlers"),
address: z.string().nullable(),
taxId: z.string().nullable(),
confidence: z.number().min(0).max(1),
}),
date: z.object({
isoDate: z.string().describe("Belegdatum YYYY-MM-DD"),
time: z.string().nullable(),
confidence: z.number().min(0).max(1),
}),
documentType: z.enum(["KASSENBON", "RECHNUNG", "TANKBELEG", "BEWIRTUNGSBELEG", "PARKTICKET", "SONSTIGES"]),
receiptNumber: z.string().nullable(),
currency: z.string().default("EUR"),
totalAmount: z.object({
value: z.number().describe("Bruttobetrag"),
confidence: z.number().min(0).max(1),
}),
netAmount: z.number().nullable(),
taxBreakdown: z.array(z.object({
ratePercent: z.number(),
taxAmount: z.number(),
netAmount: z.number().nullable(),
})),
lineItems: z.array(z.object({
description: z.string(),
quantity: z.number().default(1),
price: z.number(),
taxRate: z.number().nullable(),
})),
suggestedCategory: z.enum(["Bewirtung", "Reisekosten & Hotel", "Tanken & KFZ", "Bürobedarf & IT", "Verpflegungsmehraufwand", "Material & Einkauf", "Sonstiges"]),
validation: z.object({
isMathValid: z.boolean(),
isDuplicateSuspected: z.boolean().default(false),
needsUserReview: z.boolean(),
reviewField: z.enum(["none", "date", "totalAmount", "taxBreakdown", "merchant"]).default("none"),
reviewReason: z.string().nullable(),
})
});
export type ReceiptData = z.infer<typeof ReceiptExtractionSchema>;
```
---
## 📊 9. Excel- & CSV-Export Spezifikation
* **Tabellenblatt 1 („Belegübersicht“):** Lfd. Nr., Belegdatum, Händler, Kategorie, Belegnummer, Netto, MwSt 7%, MwSt 19%, Brutto, Status mit formatierten Währungen und `=SUMME()` Formeln.
* **Tabellenblatt 2 („Einzelpositionen Detail“):** Alle Einzelartikel jedes Belegs.
* **DATEV-kompatible CSV:** UTF-8 mit BOM, Semikolon-getrennt.