Offline AI-Powered WhatsApp Property Parser
Extract structured property data from unstructured WhatsApp messages β fully offline, zero setup.
PropParse Lite takes messy WhatsApp property listing messages like this:
Dijual rumah di BSD
LT 120 / LB 90
3 KT, 2 KM
Harga 1.5M nego
Hub 08123456789
And instantly extracts structured data:
| Location | Type | LT | LB | BR | BA | Price | Contact | Notes |
|---|---|---|---|---|---|---|---|---|
| BSD | House | 120 | 90 | 3 | 2 | 1.5M | 08123456789 | nego |
No internet required. No API keys. No data leaves your device.
- π§ Hybrid AI + Regex Parsing β Regex handles deterministic fields; LLM handles semantic understanding
- π 100% Offline β All processing happens locally on your device
- π English + Indonesian β Supports both
3 BRand3 KT(Kamar Tidur) formats - β‘ Blazing Fast β Regex-only mode parses in <5ms; hybrid mode in <2 seconds
- π€ Export to CSV/JSON β One-click export to spreadsheet or structured data
- π Paste, Upload, or Drag & Drop β Multiple input methods
- π¨ Premium Dark UI β Glassmorphism design with micro-animations
Raw WhatsApp Text
β
ββββββββββββββββββββ
β Regex Engine β β Phone, Price, LT/LB, BR/BA, Type, Notes
ββββββββ¬ββββββββββββ
β
ββββββββββββββββββββ
β LLM Parser β β Location, Property Type (semantic)
β (Qwen2.5-0.5B) β via llama-server (OpenAI-compatible API)
ββββββββ¬ββββββββββββ
β
ββββββββββββββββββββ
β Validator β β Cross-check regex vs LLM, normalize, merge
ββββββββ¬ββββββββββββ
β
Structured JSON / Table / CSV
Fallback: When LLM is unavailable, the app runs in Regex-Only mode β still extracts 8 out of 9 fields accurately.
- Node.js (v18+)
- Rust (v1.70+)
- Visual Studio Build Tools with "Desktop development with C++" workload
git clone https://github.com/<your-username>/PropParse.git
cd PropParse
npm installnpm run tauri devThis compiles the Rust backend and opens the desktop app. On the first run, compilation takes 2β5 minutes.
Download the LLM model and llama-server binary:
powershell -ExecutionPolicy Bypass -File scripts\download-model.ps1This downloads:
- Qwen2.5-0.5B-Instruct (Q4_K_M quantization, ~400MB)
- llama-server.exe from llama.cpp (~50MB)
After downloading, restart the app β it auto-detects and starts the LLM server.
| Field | Regex | LLM | Example |
|---|---|---|---|
| π Location | β | β | BSD, Serpong, Sudirman |
| π Property Type | β | β | House, Apartment, Land |
| π Land Size (LT) | β | β | 120 mΒ² |
| π’ Building Size (LB) | β | β | 90 mΒ² |
| ποΈ Bedrooms | β | β | 3 |
| πΏ Bathrooms | β | β | 2 |
| π° Price | β | β | 1.5M, 500jt, Rp 2.000.000.000 |
| π Contact | β | β | 08123456789 |
| π Notes | β | β | nego, furnished, SHM, BU |
| Layer | Technology |
|---|---|
| Desktop Shell | Tauri 2.0 (Rust) |
| Frontend | Vanilla HTML/CSS/JS |
| LLM Runtime | llama.cpp (llama-server) |
| AI Model | Qwen2.5-0.5B-Instruct (GGUF Q4_K_M) |
| Fonts | Inter, JetBrains Mono (Google Fonts) |
PropParse/
βββ src/ # Frontend
β βββ index.html # App layout
β βββ styles.css # Dark glassmorphism theme
β βββ main.js # App orchestration & events
β βββ parser.js # Pipeline orchestrator
β βββ regex-engine.js # Deterministic field extraction
β βββ llm-client.js # OpenAI-compatible LLM client
β βββ validator.js # Cross-check & normalize
β βββ export.js # CSV/JSON export
βββ src-tauri/ # Rust backend
β βββ src/
β β βββ lib.rs # Tauri commands & app state
β β βββ sidecar.rs # llama-server lifecycle
β β βββ main.rs # Entry point
β βββ binaries/ # llama-server binary (gitignored)
β βββ resources/models/ # GGUF model file (gitignored)
β βββ capabilities/default.json # Security permissions
β βββ Cargo.toml # Rust dependencies
β βββ tauri.conf.json # App configuration
βββ scripts/
β βββ download-model.ps1 # Model & binary downloader
βββ package.json
βββ .gitignore # Excludes models, binaries, secrets
βββ README.md
- Zero data collection β No telemetry, no analytics, no phone-home
- No API keys β No external services, no cloud dependencies
- Local-only processing β Text never leaves your machine
- No secrets in repo β
.gitignoreblocks.env,.pem,.key, model files, binaries - CSP enforced β Content Security Policy restricts network access to
127.0.0.1:8321only
Dijual rumah di Kelapa Gading
LT 200 / LB 150
4+1 KT, 3+1 KM
Harga 5M nego
SHM, furnished
Hub 081234567890
For sale: 2BR apartment in Sudirman
Building area 45sqm
Price: IDR 800jt
Contact +628567890123
Ruko BSD 3lt
LT/LB 75/225
Hrg 3.5M nego
BU, SHM
WA 08123456789
| Shortcut | Action |
|---|---|
Ctrl+Enter |
Parse messages |
Ctrl+V |
Paste into input |
| Click cell | Copy cell value |
- WhatsApp Web auto-import
- OCR for image-based listings
- Multi-message batch parsing improvements
- Custom extraction templates
- CRM integration (Google Sheets, Airtable)
- macOS and Linux builds
MIT License β see LICENSE for details.
Built with ποΈ Tauri + π§ llama.cpp + β€οΈ for offline-first tools