install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/real-estate-shark" ~/.claude/skills/plurigrid-asi-real-estate-shark && rm -rf "$T"
manifest:
skills/real-estate-shark/SKILL.mdsource content
Real Estate Shark
Trit: MINUS (-1) — Validation/Analysis
Color:
#DA9E5AURI:
skill://real-estate-shark#DA9E5A
Purpose
Transform single property/neighborhood images into photorealistic 3D Gaussian Splats using Apple's ml-sharp, enabling virtual walkthroughs from a single photograph. Bridge to PropertyPriceOracle for valuation analytics.
When to Use
- Converting property listing photos to 3D walkthroughs
- Neighborhood visualization from street-level imagery
- Real estate due diligence with 3D spatial analysis
- Virtual staging and property tours from single images
Dependencies
— SHARP monocular view synthesisapple/ml-sharp
— Addictive market dynamics valuationPropertyPriceOracle- Gay.jl GF(3) coloring for property classification
Quick Start
# Activate ml-sharp environment cd ~/ies/ml-sharp && source .venv/bin/activate # Single image → 3D Gaussian Splat (<1 second on GPU) sharp predict -i property_photo.jpg -o splats/ --device mps # With video rendering (CUDA only) sharp predict -i photos/ -o splats/ --render --device cuda # Render from existing splats sharp render -i splats/ -o videos/
Architecture
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ │ Property Image │────▶│ SHARP (ml-sharp)│────▶│ 3DGS .ply file │ │ (single photo) │ │ ViT + SPN + UNet│ │ (63MB splat) │ └─────────────────┘ └──────────────────┘ └────────┬────────┘ │ ┌──────────────────┐ │ │ PropertyPriceOracle│◀────────────┘ │ • get_price() │ Spatial analysis │ • get_volatility()│ informs valuation │ • get_sentiment() │ └──────────────────┘
GF(3) Balanced Triad
| Skill | Trit | Role |
|---|---|---|
| -1 | Validation: 3D reconstruction quality |
| 0 | Coordination: Geo-spatial transforms |
| +1 | Generation: Price dynamics |
| Sum | 0 | ✓ Conserved |
Output Format
SHARP produces 3DGS
.ply files compatible with:
- gsplat renderers
- Standard 3DGS viewers
- OpenCV coordinate convention (x right, y down, z forward)
Performance
| Metric | Value |
|---|---|
| Inference time | <1 second (GPU) |
| Output size | ~63MB per splat |
| LPIPS improvement | 25-34% vs prior SOTA |
| DISTS improvement | 21-43% vs prior SOTA |
Example: Neighborhood Batch Processing
from pathlib import Path import subprocess def shark_neighborhood(image_dir: Path, output_dir: Path, device: str = "mps"): """Convert neighborhood photos to 3D splats.""" cmd = [ "sharp", "predict", "-i", str(image_dir), "-o", str(output_dir), "--device", device ] subprocess.run(cmd, check=True) return list(output_dir.glob("*.ply")) # Usage splats = shark_neighborhood( Path("~/listings/123_main_st/photos"), Path("~/listings/123_main_st/splats") ) print(f"Generated {len(splats)} 3D property splats")
Integration with PropertyPriceOracle
from addictive_market_dynamics import PropertyPriceOracle # Initialize oracle with base property values oracle = PropertyPriceOracle({ 1: 450_000, # 123 Main St 2: 525_000, # 456 Oak Ave 3: 380_000, # 789 Pine Rd }) # Get current valuation with market dynamics for prop_id in [1, 2, 3]: price = oracle.get_price(prop_id) vol = oracle.get_volatility(prop_id) sentiment = oracle.get_sentiment(prop_id) cascade = oracle.get_cascade_state(prop_id) print(f"Property {prop_id}: ${price:,.0f} (vol={vol:.2%}, {cascade})")
References
- Apple ml-sharp
- arXiv:2512.10685 — Sharp Monocular View Synthesis
- Project Page