🛠️ Hosting & deployment

Manual Zoho sync

Force-pull the latest leads from Zoho on demand

What it does
Pulls every reviewed lead from Zoho + refreshes John's notes. The dashboard already auto-syncs on page load and every 15 min — this is just a manual override.
Endpoint
POST /api/zoho/sync?incremental=false&fetch_notes_force=true

Sevalla (App Hosting) Live

Where this tool runs in production

Dashboard
app.sevalla.com
App
prime-property-valuation-tool · London (europe-west2) · 1 GB RAM
Build
Auto-deploys on every push to main · ~3 min
Logs
Web box → View logs (or download CSV)

GitHub repo Live

Source of truth — connected to Sevalla auto-deploy

Repo
thejfdesign/prime-property-valuation-tool
Default branch
main (every push auto-deploys to Sevalla)
Workflow
Local edit → git push → Sevalla rebuilds in ~3 min

📝 Team feedback export

Hand-off file for AI prompt-tuning

Why
Sales team leaves notes on each lead about where the AI got things wrong/right. Export bundles every note with the full lead + AI context attached so the model can analyse end-to-end.
How to use
Click button → JSON downloads → drop the file path into the chat → I tighten the prompt based on patterns.
Endpoint
GET /api/feedback/export
Export feedback (JSON)

🟢 Live — actively used

Anthropic API Live

Claude Sonnet 4.6 with vision

Manage account
console.anthropic.com
Why we use it
Generates the John Henry-style valuation summary, structured fields, and reads Street View + satellite images via vision.
Where in app
backend/pipeline/claude_llm.py
Cost
~£0.98 per valuation (with prompt caching)

Zoho CRM Live

Lead source + comparison data

CRM
crm.zoho.com
API Console (manage Self Client)
api-console.zoho.com
Why we use it
Pulls John's verdicts (BMH_Value field) on Leads. Each pull becomes a side-by-side comparison row in the Comparisons dashboard.
Where in app
backend/sources/zoho.py · POST /api/zoho/sync
Auth
OAuth Self Client → refresh token in .env (long-lived)
Cost
Existing CRM subscription

Google Cloud — Maps APIs Live

Street View · Satellite · Places

Manage credentials
console.cloud.google.com/apis/credentials
Why we use it
Street View frontage photo (current + historical), satellite plot view (extensions, solar panels, A-road proximity), Places API for nearby commercial detection.
Where in app
backend/sources/google_maps.py
APIs enabled
Street View Static · Maps Static · Places
Cost
Free at our volume (~28k requests/month free tier)
To-do at launch
Restrict key to https://*.yourdomain.co.uk/* referrer + lock to those 3 APIs only

EIG Property Auctions Live

UK auction history

Login
eigpropertyauctions.co.uk
Account email
[email protected]
Account manager
David Sandeman · 01737 232289
Why we use it
Has this address ever been to auction? Failed auction = hard ceiling rule from John's brief.
Where in app
backend/sources/eig.py (Playwright authenticated scraper, session-cached)
Subscription
Active until 1 Feb 2027

EPC Register Live

Energy Performance Certificates

Login / API token
epc.opendatacommunities.org
Account email
[email protected]
Why we use it
Construction type (mid/end-terrace/semi/detached/flat), tenure, age band, floor area in m². Authoritative for property type — AI cross-checks visual.
Where in app
backend/sources/epc.py
Cost
Free
⚠️ Migration needed
Site retiring May 2026 — migrate to Get energy performance of buildings data service before then

HM Land Registry Live

Confirmed sold prices

Data portal
landregistry.data.gov.uk
Why we use it
Most authoritative source for UK sold prices. Pulled per postcode for last 3 years to anchor AI valuation.
Where in app
backend/sources/land_registry.py (SPARQL endpoint)
Cost
Free · no account needed

Rightmove Live

Live listings + photos

Site
rightmove.co.uk
Why we use it
Live listing for the address — asking price, time on market, photos (interior/exterior).
Where in app
backend/sources/rightmove.py (Playwright self-built scraper)
Cost
Free · no account
Note
Public-page scraping — may need patching if Rightmove redesigns

Postcodes.io Live

Geocoding

API docs
postcodes.io
Why we use it
UK postcode → lat/long for Google Maps queries; admin district + region for context.
Where in app
backend/sources/postcodes_io.py
Cost
Free · no account · community-funded

PropertyData.co.uk Live

AVM (Automated Valuation Model) — sanity check

Login + usage
propertydata.co.uk usage
Why we use it
Independent automated valuation as a third-opinion sanity check against our comp-driven figure. AI cites it but does not anchor to it.
Where in app
backend/sources/propertydata.py · /valuation-sale endpoint
Cost
1 credit per call · cached locally for 30 days · trial 500 credits / 14 days · then £28/mo + VAT

⚪ Pending — on the roadmap

Kinsta Application Hosting Pending

Production deployment

Login
my.kinsta.com
Why we'll use it
Host the Python + Playwright app behind public HTTPS so Zoho can webhook into it. Same vendor as the WordPress sites.
Cost
$7/month
Status
Not yet deployed — Dockerfile to be built when ready

Sprift Optional

Property due-diligence reports

Sign up
sprift.com
Why we might use it
Planning, flood, broadband, schools, environmental — broader DD beyond pure valuation.
Cost
£30–50 per report or subscription
Decision
Useful for non-standard / flood-zone deals only

Zoopla Skipped

Reference only

Site
zoopla.co.uk
Why we're skipping
Brief states "reference only, NOT used for calculation". Land Registry already covers sold prices. Adding for one number isn't worth the build cost.

🔐 Credentials checklist

Stored asWhat it isAction when launching
ANTHROPIC_API_KEY Claude API key Rotate soon
EPC_API_KEY + EPC_EMAIL EPC HTTP Basic auth Migrate to new gov service before May 2026
GOOGLE_STREETVIEW_API_KEY + GOOGLE_MAPS_API_KEY Google Maps API key Restrict to launch domain + lock to 3 APIs
EIG_USERNAME + EIG_PASSWORD EIG login credentials Rotate password soon
ZOHO_CLIENT_ID + ZOHO_CLIENT_SECRET + ZOHO_REFRESH_TOKEN Zoho OAuth Self Client Refresh token never expires unless revoked

All credentials live in /Users/jfdesign/PRIME PROPERTY/AI Prime/jh-valuation/.env — gitignored, never committed.

📖 John Henry's shorthand glossary

Codes the AI knows when reading or writing John's notes. Edit any row inline — the AI picks up changes on the next run. Confidence flags low-confidence entries that need verification.

Code Meaning Category Confidence Notes
Loading…