Zettleinby Happy Sandboy
Menu

06 · AI

Zettlein is an agent, not a chatbot.

Two AI systems: a computer-vision pipeline that turns phone footage into listings, and an agent that advises users and takes actions inside Proassistly.

Capture pipeline

From phone footage to listing-ready media.

   Capture app (Quasar)                     Cloud (media-svc + ai-orchestrator)
 ┌────────────────────────┐              ┌───────────────────────────────────────────┐
 │ 1. On-device guidance  │              │ 5. Upload → S3 (raw)                      │
 │    angle · height ·    │─── HLS ─────▶│ 6. CV: room segmentation + depth          │
 │    exposure · stability│              │ 7. Floor-plan synthesis (svg + metrics)   │
 │ 2. Frame QA (reject)   │              │ 8. Photo enhancement + best-frame pick    │
 │ 3. Voice narration     │              │ 9. Video walkthrough + virtual tour       │
 │ 4. Room checklist      │              │ 10. QA gate: reject if score < threshold  │
 └────────────────────────┘              │ 11. Listing draft (KH/EN/ZH descriptions) │
                                          └───────────────────────────────────────────┘

On-device guidance

Runs in the capture app

Real-time hints: "Move back", "Raise phone", "Too dark", "Hold still". Rejects low-quality frames before they upload.

Server CV

Segmentation + depth

Room segmentation, plane estimation, depth reconstruction produce a labeled room graph and a floor plan.

Media QA gate

Never publish garbage

Composite score (sharpness, exposure, coverage, tilt). Below threshold → user re-shoots that room, not the whole property.

Advisor agent

Zettlein — the tool-using assistant.

   user turn ──▶ router ──▶ mode (seller | buyer | investor | landlord)
                        │
                        ▼
                   planner ──▶ tool calls
                        │        │
                        │        ├── search_listings(filters)
                        │        ├── explain_ownership(country, type, buyerNationality)
                        │        ├── estimate_yield(propertyId)
                        │        ├── draft_offer(listingId, terms)
                        │        ├── generate_document(kind, jurisdiction, data)
                        │        ├── open_escrow(offerId, provider)
                        │        └── book_service(providerId, stage)
                        ▼
                   RAG context     ─▶ answer + actions (Proassistly writes)
                   (listings, legal,      │
                    market data)          ▼
                                    AiAction row + AuditLog

Layers

Safety, i18n and evaluation are non-negotiable.

ai/01

RAG corpus

Grounded answers

Listings, jurisdiction packs, tax notes, developer disclosures and market comps — chunked, embedded, tenant-scoped.

ai/02

Tool layer

Typed contracts

Every tool is a typed RPC to Proassistly with schema, auth scope, dry-run and rollback semantics.

ai/03

Safety

Guardrails + review

PII redaction, jailbreak defense, mandatory human-in-the-loop for contracts > threshold, and irreversible payments.

ai/04

Multilingual

KH / EN / ZH

Khmer-first prompts, transliteration for names/addresses, currency-aware formatting.

ai/05

Model routing

Cost & latency

Small models for classification, mid-tier for chat, frontier for legal drafting; per-tenant budgets.

ai/06

Evaluation

Golden sets

Golden conversation sets per persona + adversarial prompts; regression before every model bump.