New Estimate
Estimates
| # | Address | Status | Created |
|---|
Current Prototype Status
This is the CSS RoofConnect AI roof-replacement estimator prototype
(client: Connect Service Solutions; dev partner: Orases). It turns a building address
into an internal estimate PDF: order an EagleView measurement report, run a
deterministic takeoff against the price book,
have Claude write the narrative and flag concerns, and render the PDF. By design,
the AI never sets or changes a number — all quantities and prices come
from src/estimation/takeoff.ts + pricebook/pricebook.json.
Where things stand
- Full pipeline works end-to-end on mock EagleView data — three demo addresses (see the form above), no per-report cost.
- Deterministic takeoff engine + price book; 22 unit & golden-snapshot tests green.
- PDF rendering (WeasyPrint) verified on this server.
- Deployed as
css-estimator.service(port 3100) behind this gated subdomain;PUBLIC_URLconfigured. - Anthropic API key configured — full e2e (incl. real Claude judgment call) passed on this server 2026-07-08. Each estimate costs ~$0.10 in Claude usage.
- Phase 2 — live EagleView API not started. Needs sandbox credentials from developer.eagleview.com (partner contact: Integrations@EagleView.com). The complete checklist is in
docs/EAGLEVIEW-INTEGRATION.md; onlysrc/eagleview/live.tsandnormalize.tsmay touch the wire format. The webhook path (/webhooks/eagleview) is already exempted from this site’s access gate.
Measurement-data costs — EagleView vs. alternatives
Benchmark: one Walmart Supercenter-scale roof (~180,000 sq ft, low-slope). Full sourced
comparison in docs/DATA-SOURCES.md — don’t re-research it. “quote” = vendor
doesn’t publish pricing.
| Provider | Cost / building | Turnaround | API | Verdict |
|---|---|---|---|---|
| EagleView Premium Commercial | $89.50 flat (+ ~$0.10 Claude) | ~3–6 hr | Yes — OAuth2 + webhooks | Current default — only per-report option with a published rate card and real ordering API |
| EagleView Bid Perfect Commercial | $49 flat | ~3–6 hr | Yes (same) | Ballpark only — no linear footages, can’t feed a full takeoff |
| Nearmap (subscription) | ~$2,000–2,600/yr, unlimited | On demand | Yes — strongest APIs | The volume play at ~25+ sites/yr; also returns parapet heights |
| GAF QuickMeasure Commercial | quote | <24 hr | No — via AccuLynx/JobNimbus | Manual fallback; poor automation target |
| Roofr | $13–19 | <2–3 hr | No | Out — unproven at big-box scale |
| Hover | $29 | Hours + on-site | Enterprise only | Out — ground photos can’t capture a large flat roof |
| Drone (e.g. DroneDeploy) | $500–1,500+ | ~Days end-to-end | Yes | Accuracy escalation for survey-grade needs, not the pipeline |
| Google Solar API (satellite) | Near-free | Instant | Yes | Sanity-check / free pre-screen only; not takeoff-grade |
Next developer — start here
- Code lives at
/var/www/css/estimatoron this server (ubuntu@hep.orases.dev). Readdocs/ARCHITECTURE.mdbefore changing anything;CLAUDE.mdhas the hard rules and commands. - Use Node 22 from
~/opt/node-v22.17.0-linux-x64/bin— system Node 18 belongs to the voice bot (css-bot.service), don’t touch it. - Keep
npm testgreen (golden snapshots pin the money math) and never remove the live-order cost gate (409 +confirmCost) — live reports cost $49–90 each. - Provider payloads stay quarantined: everything outside
src/eagleview/consumes normalizedRoofMeasurementsonly.docs/DATA-SOURCES.mdexplains how to add a new measurement provider behind the same seam.