Documentation
Everything ARC Journey Scanner checks, how it scores, and what it does with your data. If a finding surprised you, the rule behind it is on this page.
How the score is calculated
This is a Journey Friction Score derived only from the journey you described. It is not a CSAT, NPS, or CES measurement and does not predict churn. Where the description lacks metrics, the report says so rather than estimating.
Each dimension starts at 100. Findings deduct a fixed penalty by severity: critical −30, high −18, medium −9, low −4, info −0. Dimension scores are combined as a weighted average. Bands: 80+ strong, 60–79 adequate, 40–59 at risk, below 40 critical.
| Dimension | Weight | What it measures |
|---|---|---|
| Customer Effort | 3 | Starts at 100. Deducts for each detected point where the customer must repeat information, re-enter data, or chase the business for a response. |
| Channel Continuity | 2 | Starts at 100. Deducts for each channel switch where context is not carried, each unowned channel, and channel fragmentation without a system of record. |
| Wait States | 2 | Starts at 100. Deducts for each stage where the customer waits with no stated acknowledgement, ETA, confirmation, or status visibility. |
| Ownership Clarity | 2 | Starts at 100. Deducts for each stage with no named owner, each person-dependent continuity, and each handoff with no stated context transfer. |
| Back-office Friction | 2 | Starts at 100. Deducts where staff cannot see the customer record or shuttle work between systems. Customer effort and staff effort are scored as two sides of the same gap. |
| Critical Moments | 1 | Starts at 100. Deducts where a high-stakes moment (first value, escalation, renewal, failure recovery) is handled by an unowned or fully automated path with no human fallback. |
| Stated Drop-off | 1 | Starts at 100. Deducts only when the description itself states abandonment or drop-off. This is not a churn forecast and is not inferred from silence. |
| Purchase Path | 2 | Starts at 100. Deducts for account walls, sales-only buy paths, long pre-pay forms, missing price, forced phone purchase, guest-checkout gaps, funnel gaps, and SPA gaps on scanned purchase URLs. |
What the score is not
- A measurement of customer satisfaction or loyalty
- A churn or conversion forecast
- A replacement for talking to actual customers
- A claim about how customers feel — only about how the journey is structured
- A probability that a customer will leave
- A live authenticated crawl of a checkout session
- A certification that the buy path is compliant or complete
Rule catalog (v0.5.0)
31 deterministic rules. No network, no model, no randomness — the same input always produces the same findings. Rule ids are permanent; a rule whose meaning changes gets a new id.
effort
- JY-EFFORT-001simplifyCustomer must repeat information already given
Carry context across the handoff. The fix is usually giving the second team read access to what the first team collected — not a new channel.
- JY-EFFORT-002simplifyCustomer must chase for a response
Make the next step the business's obligation, with a visible commitment. If a customer has to chase, the process, not the customer, failed.
- JY-EFFORT-003simplifyCustomer re-enters the same data
Prefill from the record you already have. A form that asks for known data is a broken integration, not a necessary step.
channel
- JY-CHANNEL-001simplifyChannel switch loses context
Give each channel read access to the same record. Multi-channel without shared context is worse than one channel done well.
- JY-CHANNEL-002governChannel with no stated owner
Assign ownership and a response target per channel, or route the channel into a system that assigns for you.
- JY-CHANNEL-003simplifyChannel fragmentation without a system of record
Pick a system of record every channel writes to before adding another channel. Channel count is not a capability.
wait
- JY-WAIT-001simplifyCustomer waits with no acknowledgement or ETA
Acknowledge immediately and set an expectation. Reducing perceived wait is often cheaper and more effective than reducing actual wait.
- JY-WAIT-002simplifyConversion point with no confirmation
Send a confirmation that the action registered, with what happens next. Silence after submit is a manufactured wait.
ownership
- JY-OWNERSHIP-001governStage described as a process with no named owner
Name an owner per stage. Ownership is a prerequisite for measurement, and measurement is a prerequisite for improvement.
- JY-OWNERSHIP-002governContinuity depends on a specific individual
Convert the dependency to a role with documented context. Keep the relationship, remove the single point of failure.
- JY-OWNERSHIP-003simplifyHandoff between teams with no stated context transfer
Define the handoff as a record the receiving team can open, not as an email a person forwards.
moment
- JY-MOMENT-001keep-humanHigh-stakes moment with no human path
Keep a human reachable at the moments that decide the relationship. Automate the routine and staff the decisive.
- JY-MOMENT-002keep-humanFirst-value moment with no guidance
Design a first-value path with a named owner. Self-serve is not the same as abandoned.
abandon
- JY-ABANDON-001simplifyStated drop-off or abandonment, with evidence
Treat the stated drop-off point as a measurement target. Do not estimate a rate this tool did not observe — instrument that step and watch it.
backoffice
- JY-BACKOFFICE-001simplifyStaff cannot see what the customer already submitted
Give serving staff read access to the customer-created record before you train them to ask better questions.
- JY-BACKOFFICE-002automateStaff re-key or shuttle work between systems
Remove the re-key. Integrate or drop a system. This is automation of a chore, not a use case for a language model.
personalization
- JY-PERSONAL-001simplifySame message to everyone at a relationship moment
Use fields you already have (name, plan, last action) in the relationship message. That is personalization; a new model is not required.
automate
- JY-AUTO-001automateRepetitive mechanical work that a rule could do
Replace the repeated mechanical step with a rule, a template, or an integration. Do not introduce a model to do a lookup.
augment
- JY-AI-001augment-with-aiUnstructured judgment work where a model might help — after the process is clean
Only after waits, ownership and context-carrying are fixed: trial a model on the unstructured judgment step with a human review path. The mechanism is assistance, not autonomy.
purchase
- JY-BUY-001simplifyAccount or login required on the purchase path
Offer guest checkout, or defer account creation until after payment. Requiring a password before value is a common abandon point.
- JY-BUY-002simplifyPurchase path routes to sales instead of self-serve checkout
If self-serve is intended, put price and checkout on the page. If sales-assist is intended, say that clearly and remove fake buy CTAs.
- JY-BUY-003simplifyLong form before payment
Cut fields to what payment and fulfillment require. Move enrichment to after the purchase.
- JY-BUY-004simplifyPurchase language without a clear price
Show price (or a clear price range) next to the buy CTA. Do not make the buyer start checkout to learn the cost.
- JY-BUY-005simplifyPhone required to complete purchase
Add a self-serve path, or label the phone path as the only way to buy so expectations match the process.
- JY-BUY-006simplifyLittle visible HTML on a purchase URL — possible SPA gap
Re-scan after confirming critical checkout steps are in the server-rendered HTML, or supply a plain-language description of the steps the SPA hides.
- JY-BUY-007simplifyCompeting buy and sales CTAs on the same purchase page
Make one path primary on the page. If self-serve is the goal, demote “Book a demo” below the fold or route it only for enterprise tiers. If sales-assist is the goal, remove fake buy CTAs.
- JY-BUY-008simplifyBuy path with no shipping or returns link on scanned pages
Link shipping, returns, or refund terms from the buy path pages this scan can see. If they already exist on an unfetched page, surface them earlier in the funnel.
- JY-BUY-009simplifyAccount wall without a guest checkout option
Add guest checkout, or defer account creation until after payment. If account is required by policy, say why on the page and keep the form to the minimum.
- JY-BUY-010simplifyFree trial CTA without a visible price
Show post-trial price (or a clear range) next to the trial CTA, and state what happens when the trial ends.
- JY-BUY-011simplifyCheckout/cart page without payment method signals
If payment methods are present only via JavaScript, add a server-rendered trust line (accepted cards / wallets). If they are missing, add them before asking for payment details.
- JY-BUY-012simplifyBuy intent observed but no cart or checkout page reached
Ensure pricing and product pages link to a reachable cart or checkout URL in the HTML. Marketing and engineering should walk the path together and confirm the public link graph.
API
Everything the web UI does is available over HTTP. No key, no account. Please keep it to a few requests a minute — the rate limiter will tell you if you do not.
POST /api/assess
Content-Type: application/json
{
"url": "https://example.com/pricing",
"text": "optional notes (not required when url is set)",
"context": { "industry": "saas" },
"useModel": false
}
→ 200 AssessmentResult (findings, evidence, score, recommendations, blueprint, limitations)
→ 400 { "error": "..." } input failed validation
→ 429 { "error": "..." } rate limited
GET /api/rules the catalog above, as JSON
GET /api/health { status, version, rulePackVersion, ruleCount }Data policy
The text you submit is processed in the request and discarded when the response is sent. It is not written to a database, not used for training, and not sent to a model provider unless you explicitly opt in to the optional narrative pass. Errors are logged with the content redacted.
Email is collected only if you ask for a copy of a report. Assessment never requires it. The full policy is in docs/05-data-policy.md.
Everything else
The complete build package — product brief, PRD, architecture, threat model, evaluation plan, runbook — is in the repository. The roadmap is public and the issue tracker is open.