AI-powered quoting, diagnostics, and automation for CRAWA's field operations. Built on AroFlo, Cloudflare Workers, and Claude.
HMAC-SHA512 signed API proxy on Cloudflare Workers. Handles authentication, signing, and CORS so credentials never reach the browser. Tested and verified against live AroFlo data.
Field techs sign in with their existing AroFlo Field credentials. Server-side proxy validates against AroFlo Field, issues HMAC session tokens (24h expiry). No new passwords to manage.
Claude Opus 4.6 proxied server-side via Cloudflare Worker. Supports SSE streaming for real-time analysis. API key never touches the client. Powers photo analysis, note structuring, and quote generation.
Apple-inspired PWA for field use. Five-step flow: Job → Assess → Analyse → Quote → Review. Photo upload (camera or library), equipment readings, AI diagnostic chat, dual quote output (callout + works). Accept diagnosis → auto-navigates to quote draft with everything populated. Job notes, assets, and service history loaded per-task. Dual login support (AroFlo Field + 2FA).
Built into the Review step. Standard rate ($205 first hour + $130/hr thereafter) or after-hours flat rate ($595). Generates a separate draft quote from the works quote.
Detailed process maps for current and optimised quoting workflows. Side-by-side comparison with Mermaid flowcharts, step mapping, and KPI targets.
Client-facing dashboard with real AroFlo data. Tabs for jobs, quotes, invoices, sites & assets. Next scheduled visit card, quote approval actions, and service request submission with PDF work order upload.
PDF parsing via Claude on the worker proxy. Sends documents to Claude with type-specific prompts, extracts structured data. Supports work orders, SWMS, insurance certs, contracts, invoices, equipment manuals, and 15+ other document types.
Upload PDF work orders, AI extracts all fields, auto-resolves client and location in AroFlo, maps priority and task type, creates the task. Staff login ties task to their AroFlo user.
General-purpose document upload for back-office staff. 24 document types across 6 categories. AI analyses each document with type-specific prompts, suggests classification, attach-to target, and visibility. User reviews and submits.
Sites with 100+ units need per-unit assessment (photos, notes, readings) with pause/resume capability. Unit picker UI, progress tracking, and bulk AI analysis grouped by fault type.
Push both draft quotes (callout + works) to AroFlo as draft quotes on the task. Write assessment notes and diagnosis back to the task. Attach photos to the job. AroFlo write endpoints (notes, materials, task update, substatus) confirmed working.
Send quote summary to three designated recipients on submission. Recipients not yet specified.
Serper.dev API key stored as worker secret. Proxy endpoint and tool wiring into the agent not yet built.
Cloudflare Worker replaces the Sweeny/Entourage AI tool. MS Graph webhooks on service@crawa.com.au trigger instant processing. AI parses email body + PDF attachments, identifies client (10+ patterns), resolves AroFlo entities (client, location, task type, priority), two-layer dedup, creates task, sets substatus "New job to be booked in". Daily cron for subscription renewal + catch-up scan.
Magic link authentication for the customer portal. Verify email against AroFlo contacts, send one-time link, create session token. Client sees only their own data.
The current API user (sweeny.studios1 / "The Entourage AI") has restricted permissions — no permission group assigned, so fields like assigneds always return empty. Cannot be fixed from the API side. Plan: deploy the wo-intake worker replacement, then retire this account and issue a new API key under Richard's profile with full permissions.
The email WO intake worker requires an Azure Entra ID app registration with Mail.Read permission on the service@crawa.com.au shared mailbox. Registration has been requested but credentials not yet received.
Querying assets linked to a location (to support multi-unit jobs) requires the API user to have access to the assets and locations zones. Will be resolved when the new API key is issued under Richard's profile.
No structured parts catalogue or supplier price index exists. The quoting tool currently relies on manual part entry by the tech. For the agent to auto-assemble quotes (as per the optimised process), it needs access to supplier price lists, CRAWA's markup rules, and a parts database.
Different customers have different agreed rates. No structured rate card data exists — it's currently tacit knowledge held by the office expert. Needs to be captured and codified before the agent can apply correct pricing.
The quoting tool filters jobs using a schedule-based lookup as a workaround — the assigneds field on tasks always returns empty due to the sweeny.studios1 API user's missing permissions. Once a new API key is issued with proper permissions, job filtering will switch to using the assigneds field directly.
The quoting tool works as a web app but has no offline capability yet. Field techs in remote locations or basements may lose connectivity mid-assessment. A service worker with local state persistence would solve this.
MX records have been set but domain verification is still pending from a previous session. Required for email sending via the platform.