C4 — Context diagram
The widest view. Who uses Helm, and which external systems Helm talks to.
Boundaries
Inside the system context: the Helm Worker, the per-shop D1 database, the per-shop R2 bucket, the bible RAG corpus.
Outside: every external SaaS Helm depends on. The shop's bank (Stripe wires money there), Cloudflare's own infrastructure (Workers, D1, R2), the operator's hardware (terminal, printer, scanner, drawer).
People (actors)
| Actor | What they do | What they see |
|---|---|---|
| Shop owner | Configures shop, hires/fires staff, sets prices, reviews money | All screens. Owner role grants all 10 tabs. |
| Sales staff | Rings sales, takes phone calls, attaches customers, processes returns | Sales + Customers + Inventory (read-only mostly). Sales role. |
| Mechanic | Works the service queue, adds parts/labour to tickets, marks tickets ready | Today + Service + Customers + Inventory. Mechanic role. |
| Junior | Cash register only; basic customer lookup. No money-altering actions. | Today + Sales + Customers. Junior role. |
| End customer | Drops off a bike, picks one up, buys parts, books a rental | Public marketing site. Does not log in to Helm directly. |
The role + permission system is per-shop (no shared identity across shops) — see security model.
External systems
Stripe — card processing + subscriptions
The shop's own Stripe account, connected via Stripe Connect (Standard accounts). In-shop card via Stripe Terminal hardware; the Helm subscription (Kvick → shop) goes through a separate Stripe customer.
Twilio — outbound SMS
One Kvick-owned account, per-shop sub-accounts. Use cases: "your bike is ready," "your appointment is tomorrow," "we received your trade-in offer," "marketing opt-in confirmations." Two-way conversational SMS is on the roadmap but not in scope today.
Anthropic Claude API — AI Support bubble + corpus indexing
RAG against this bible + the shop's own D1 schema + the operator's conversation history. The Support bubble is conversational; under the hood, structured queries to D1 run alongside the chat for grounded answers. See AI integration and slice 11.
Google Business Profile (GBP) API — reviews + hours
Read reviews, post replies, sync shop hours from shop_config. OAuth flow against the shop owner's Google account. Webhook-driven for new reviews.
Meta Graph API — Instagram / Facebook
Cross-post shop content (new arrivals, sales, events). Read engagement metrics for the dashboard. Per-shop OAuth.
Vendor APIs — Quality Bicycle Products (QBP), Shimano, others
B2B procurement: auto-PO from low-stock alerts, real-time wholesale stock checks. Per-shop credentials. Most shops start without these wired; they're an add-on for shops that want them.
Resend / Postmark — transactional email
Receipt emails, password resets, weekly summary emails to owners. Choice of vendor TBD; current preference Resend for deliverability + developer experience.
What's deliberately NOT in the system context
- Accounting (Quickbooks Online, Xero) — exports only, no real-time integration. Daily/weekly CSV/JSON dump for the shop's accountant.
- HR / payroll — out of scope. Helm tracks hourly wages for cost-of-service reporting, but does not run payroll.
- Inventory marketplace — Helm doesn't expose a shop's inventory to a multi-shop marketplace. Each shop's data is theirs.
- Multi-shop reporting — when Kvick has 50+ shops, aggregate analytics across them (with consent) inform future product features. Today: out of scope.
See also
- C4 Container — one level deeper
- Deployment topology — how the Worker is actually deployed per-shop
- Security model — auth, authz, audit
- AI integration — the Claude API + bible corpus details