# JurisCore — Full System Status + Test Protocol
## May 19, 2026 | Aster Wren Vale

---

## PART 1: HONEST SYSTEM STATUS

### What's Working

| Component | URL/Location | Status |
|-----------|-------------|--------|
| Landing page (root) | `https://juriscorelegal.com` | ✅ Live — loads in <1s |
| Landing page (pages.dev fallback) | `https://juriscore-landing.pages.dev` | ✅ Live |
| EC2 Backend health | `https://api.juriscorelegal.com/health` | ✅ Healthy, KG loaded |
| EC2 PreFlight intake | `https://api.juriscorelegal.com/api/preflight/analyze` | ✅ Working |
| EC2 MatterOS CRUD | `https://api.juriscorelegal.com/api/matters` | ✅ Working |
| EC2 Demand letter | `https://api.juriscorelegal.com/api/preflight/demand-letter` | ✅ Working |
| Frontend app (deployed) | `https://0d506bbe.juriscore-frontend.pages.dev` | ✅ Live — 10 pages |
| Local backend AI Research | `localhost:3001/api/research/ask` | ✅ Working — llama3.2:3b on Mac mini |
| Install zip (landing page) | `juriscore-landing/juriscore-install.zip` | ✅ Buildable, 10KB (scripts only) |
| Stripe activation router | `signal-loom-api/routers/juriscore.py` | ✅ Logic complete |
| Trial key creation endpoint | `/v1/juriscore/test/create-pending` | ✅ Built |
| Local Ollama | `localhost:11434` | ✅ 2 models: llama3.2:3b + llama3.3:70b |

### What's Broken / Needs Fixing

| Issue | Severity | Root Cause | Fix Needed |
|-------|----------|------------|------------|
| **www.juriscorelegal.com = 522** | 🔴 HIGH | CNAME chain (www → juriscorelegal.com → pages.dev). Cloudflare Pages can't proxy through another CNAME at same level. | Change www CNAME to point `8b698e6c.juriscore-landing.pages.dev` directly (done, propagating) |
| **AI Research 404 on EC2** | 🔴 HIGH | `call_ollama()` in EC2 backend sends `User-Agent: JurisCore/2.0` header which Ollama on EC2 rejects (404). Local backend fine. | Remove `User-Agent` header from request OR set `JURISCORE_MODEL=qwen2:0.5b` env var (Ollama on EC2 works with direct curl without UA) |
| **Install zip is scripts only** | 🔴 HIGH | `juriscore-install.zip` has `install-juriscore.py` + `hardware_detect.py` only (~10KB). No Ollama binary. No bundled model. | Need to bundle actual Ollama binary + model download into zip, OR handle Ollama install via official install script during install |
| **No Stripe payment link for $219/mo** | 🟡 MEDIUM | Stripe products exist but all prices are archived/old. No active `buy.stripe.com` link for $229/mo (Complete Plus). | Create new active payment link for $229/mo + $2295/yr for landing page |
| **Pricing section still shows mailto** | 🟡 MEDIUM | Professional tier CTA is still `mailto:access@juriscorelegal.com`, not a Stripe buy link | Wire `$229/mo` buy link once created |
| **Install guide not on landing page** | 🟡 MEDIUM | `INSTALL-GUIDE.md` written but not linked from landing page download section | Add "Installation Guide" link below download buttons |
| **EC2 backend has old router code** | 🟡 MEDIUM | EC2 production is missing settings/training/research routers (P0 before any public push) | Sync local `juriscore-src/backend/` → EC2 `/opt/juriscore-v2/backend/` |

---

## PART 2: FULL USER FLOW — IDEAL PATH (what we're building toward)

```
[User lands on juriscorelegal.com]
         │
         ▼
[Herosection: "Download JurisCore" button]
         │
         ▼
[User downloads juriscore-install.zip]
         │
         ▼
[User unzips + runs: python3 install-juriscore.py]
         │
         ├─→ Ollama downloaded + installed (via official install script)
         ├─→ Hardware detection → appropriate model selected
         ├─→ AI model downloaded (2-10 min on first run)
         ├─→ Backend + frontend installed to ~/.juriscore/
         ├─→ Launch agent configured (survives reboot)
         └─→ First-run verification

[User opens JurisCore app — browser launches to localhost:5000]
         │
         ▼
[Setup wizard: Firm name → Jurisdiction → Admin PIN]
         │
         ▼
[Onboarding checklist: 6 training modules]
         │
         ▼
[MatterOS dashboard: "Create your first matter" CTA]
         │
         ▼
[PreFlight intake OR Matter creation]
         │
         ▼
[AI Research with citation gate]
         │
         ▼
[Documents: Engagement letter PDF generation]
         │
         ▼
[Subscription prompt: "Start 7-day trial or subscribe"]
         │
         ├─→ Trial: email + HWID → API creates pending → 7-day key generated
         └─→ Subscribe: Stripe buy link → webhook → pending created → key generated

[License key stored in ~/.juriscore/license.db]
[Local app activates — full features unlocked]
```

---

## PART 3: WHAT WORKS TODAY vs. WHAT NEEDS WORK

### ✅ What Can Work Right Now (with caveats)

1. **Landing page** — ✅ Professional, credible, Bench & Byte design. Real product story.

2. **EC2 backend (without AI Research)** — ✅ PreFlight, MatterOS, Documents, Auth, Settings all work.

3. **Local AI Research** — ✅ On Mac mini localhost, citation gate working, KG-verified citations.

4. **Install zip** — The `install-juriscore.py` script is solid (hardware detection, Ollama install, model download, launchd). It just needs Ollama binary bundled or pulled from official source during install.

5. **Stripe activation router** — ✅ Logic complete. Trial key endpoint exists.

6. **7-day trial key generation** — ✅ Via `/v1/juriscore/test/create-pending?email=X&tier=Y&key=juriscore-test-key`

### ❌ What Needs Work Before "Go Send to 3 Firms"

1. **AI Research on EC2** — Must fix before any firm tries AI research and it breaks
2. **Install zip completeness** — Must include Ollama install (even if it downloads from official source during install)
3. **Stripe payment link** — Must have a real buy link for $229/mo so firms can actually subscribe
4. **Pricing CTA on landing page** — Must replace mailto with Stripe buy link
5. **Install Guide link on landing page** — Must be visible in download section

---

## PART 4: 7-DAY TRIAL KEY PROTOCOL

To give each of the 3 firms a 7-day trial key:

**Mechanism:** The `/v1/juriscore/test/create-pending` endpoint in the signal-loom-api creates a pending activation without requiring Stripe payment. Then when the firm's installer runs and calls `/v1/juriscore/activate` with their email + HWID, the system finds their pending record and generates a 7-day license key.

**Steps to provision 3 trial keys:**
1. Each firm gives us: firm name + attorney email + desired tier (Professional = $219/mo)
2. I call `/v1/juriscore/test/create-pending?email=X&tier=complete_plus` via the signal-loom-api
3. Each firm downloads the installer, runs it, opens the app, enters their email when prompted
4. App calls `/v1/juriscore/activate` with email + HWID → gets 7-day key
5. Key stored locally → app activated for 7 days

**The 7-day logic:** The `expires_at` is set to `datetime.now() + timedelta(days=7)` for mock/trial subscriptions. The app shows "X days remaining" in the settings panel.

---

## PART 5: UX AUDIT — HONEST ASSESSMENT

### Strengths
- **Credibility:** Landing page looks professional and trustworthy — real law firm material, not a startup vibe
- **Architecture clarity:** "PHI never leaves your machine" is a compelling, defensible differentiator
- **PreFlight is genuinely impressive** — demand letter generation from structured intake is a real time-saver
- **Citation gate** — properly implemented, verified responses, says "I don't know" when outside KG
- **MatterOS** — clean split-panel, SOL countdown, document versioning with SHA256

### Weak Points
1. **Install experience is the biggest risk** — asking non-technical users to run Python scripts in Terminal is high-friction. Most Windows users and many Mac users have never opened Terminal.
2. **First-launch model download** — 10-15 minutes of silent download with no feedback is a churn moment
3. **No visual onboarding tour** — after setup wizard, user lands in empty MatterOS with no sample data
4. **EC2 AI Research broken** — if any firm tests AI Research on day one, it fails
5. **www.juriscorelegal.com broken** — firms may try www variant and hit 522
6. **No "Watch Demo" page** — Traves asked for this, not yet built
7. **Stripe payment link missing** — can't actually buy yet from landing page

### What Would Make This Great (Post-Launch)
- **In-app sample matter** — pre-loaded with a realistic WA PI case so users can experience PreFlight → MatterOS → AI Research → Documents without any real client data
- **Progress indicators during install** — especially the model download step (show MB downloaded, speed, ETA)
- **"Watch Demo" page** — split-screen video showing the full workflow
- **Self-service payment** — Stripe buy link, immediate key delivery

---

## PART 6: GO/NO-GO ASSESSMENT

### Can we send to 3 firms today? **NOT YET — but close.**

**Minimum viable changes needed (2-3 hours):**
1. Fix EC2 AI Research (remove User-Agent header from call_ollama OR set JURISCORE_MODEL env var properly)
2. Create Stripe payment link for $229/mo + update pricing CTA
3. Fix www.juriscorelegal.com DNS (propagating, verify within 1h)
4. Confirm install zip includes Ollama pull (official install script approach — already in install-juriscore.py)

**Should-have changes (can do parallel, doesn't block pilot):**
5. Add install guide link to landing page
6. Build "Watch Demo" page
7. Sync EC2 backend with local backend (settings/training/research routers)
8. Pre-loaded sample matter in the app

**The 7-day trial system is already built and functional.** Once the above fixes are in, the flow is:
```
Firm downloads → installs → enters email → app calls activate → key generated → 7 days
```

**Honest verdict:** With ~2-3 hours of focused fixes, this is in genuinely launchable condition for the 3-firm pilot. The architecture is sound, the PreFlight engine is the real deal, and the citation-gated AI research is a genuine differentiator. The install friction is the biggest risk — mitigated but not eliminated by the install guide.

---

## PART 7: IMMEDIATE ACTION ITEMS (Priority Order)

```
P0 (blocker, do now):
  ☐ Fix AI Research on EC2 — remove User-Agent header from call_ollama in research.py, redeploy
  ☐ Create Stripe payment link for $229/mo Professional tier
  ☐ Update pricing section CTAs to use Stripe buy links
  ☐ Verify www.juriscorelegal.com resolves (DNS propagation)

P1 (should do, can parallelize):
  ☐ Verify install-juriscore.py correctly pulls Ollama from official source during install
  ☐ Add install guide link to download section of landing page
  ☐ Sync EC2 backend with local backend code (research + settings routers)

P2 (nice to have, doesn't block pilot):
  ☐ Build "Watch Demo" page (Traves requested)
  ☐ Add sample matter to app for first-run experience
  ☐ Build proper self-service payment flow with Stripe checkout
```