Workshop Demo Prep
Glance-able checklist for a live AMS demo (one or more orgs). Not a script — a pilot's checklist.
1. Day before — environment
- Pick environment: prod (axvero.dev) > develop > local. Prod = most stable.
- If local:
cd ams-deploy && ./local.sh startthen/a-run-all - Bring up LDAP container too:
cd ams-deploy && ./local.sh --profile ldap up -d openldap - Verify ports:
:9090Keycloak,:8080backend,:5173frontend,:8025Mailpit,:1389openldap - Confirm the demo Keycloak user can log in
- Charge laptop, test HDMI / mirroring, disable notifications
2. Day before — seed orgs
Create 2–3 demo orgs so multi-tenant story lands:
| Org | Type | How |
|---|---|---|
| Demo Bank | BANK seed | /p/{slug}/orgs → "More options" → Create Demo Org → BANK |
| Demo Tax | (manual or 2nd BANK seed) | Same flow, different name |
| Demo Patent | manual (no seeder yet) | Create org → add 1 STAFF workspace → enable Patent feature in workspace sheet |
Per org, after seed:
- Open staff workspace → confirm 5 clients + 5 applications loaded
- Pick one application to be your "hero" — note its title
- Pre-write 1 internal + 1 external comment on it
- Pre-upload 1 document, leave 1 pending
- Set org branding (logo + accent color) — themes well on screen
- Add a 3rd workspace manually (e.g. Partner Portal, MIXED) so the workspace switcher shows ≥3 entries
- Assign each team to a different workspace via team → Workspaces tab
2b. Day before — LDAP / Directory
Org → Settings → Integrations → LDAP
| Field | Value |
|---|---|
| Server URL | ldap://localhost:1389 |
| Keycloak LDAP URL (Advanced) | ldap://openldap:389 |
| Bind DN / password | cn=admin,dc=example,dc=com / adminpassword |
| Users DN | ou=users,dc=example,dc=com |
| User filter | (objectClass=inetOrgPerson) |
- Click Test Connection → expect green
- Click Save → "Connected" badge appears (
keycloakComponentIdset) - Seed users available: alice, bob, carol @example.com (passwords
<name>password)
⚠️ Direct LDAP-user
/sign-inand/sign-upare currently broken (Keycloak rejects email-collision). For the demo, show config + Test Connection only — don't live-sign-in as alice.
2d. Day before — Auto-approval workflow
The workflow engine drives auto-approve vs manual underwriting. Each step is SYSTEM (auto) or MANUAL (officer advances).
System handlers shipped today:
| Handler | What it checks |
|---|---|
DocumentCompletenessCheckHandler | All required docs uploaded + approved |
CreditReportCheckHandler | Schufa-style credit check outcome |
ClientApprovalCheckHandler | Client clicked "I confirm" |
- Open the hero template's Workflow Builder → confirm at least 1 SYSTEM step + 1 MANUAL step exist
- Define a "happy path": submit → docs check (SYSTEM) → credit check (SYSTEM) → auto-approved
- Define an "unhappy path": same template, but missing a doc → halts at MANUAL underwriting step
- Pre-create one client whose data passes all SYSTEM checks (for the auto-approve demo)
2e. Day before — JSON / API submission
Third parties submit applications via REST. Pre-build the curl commands.
| Endpoint | Purpose |
|---|---|
GET /api/v1/templates/{id}/schema | Third party fetches the field schema |
POST /api/v1/applications | Full JSON submission (creates + submits in one call) |
POST /api/v1/applications/{id}/documents | Attach files after creation |
- Issue an API key for the demo org → store in
~/demo/api-key.txt - Save 2 ready JSON payloads in
~/demo/:submit-happy.json— passes all SYSTEM checks → auto-approvedsubmit-needs-review.json— missing/invalid field → routes to MANUAL underwriter
- Open Postman / a
.httpfile with both calls preloaded; do one dry-run - Confirm the new application appears in the staff list within ~2 seconds (realtime push)
Sample payload skeleton (adjust to your template schema):
{
"workspaceId": "<staff-workspace-uuid>",
"templateId": "<template-uuid>",
"applicants": [{ "type": "PRIMARY", "firstName": "John", "lastName": "Doe", "email": "john@example.com" }],
"answers": { "loanAmount": 250000, "purpose": "PURCHASE", "annualIncome": 90000 }
}
2f. Day before — Patent org (alternative track)
Use Demo Patent when the audience is patent attorneys / IP firms.
- Org → Settings → Integrations → Patent (EPO OPS) — enter consumer-key + secret
- Confirm the per-org quota counter shows non-zero credits
- Pick a real patent number to use live (e.g.
EP1000000A1) — pre-cache it once so the demo hits cache (zero EPO credits) - Save 2–3 patents to a hero application via Patent Search so the saved-patents list is non-empty
- Pre-write a private note on one patent + run one AI chat turn so the panel shows real content
- Choose 1 paragraph in a patent claim → confirm "Ask AI about selection" works on it
2g. Day before — Reports
Demo a one-click report → PDF. Built-in templates are seeded:
| Template | Use for |
|---|---|
| Custom | Blank builder — show flexibility |
| Monthly Operations | Workload + per-staff breakdown |
| Quarterly Business | Decisions, SLA, approval rates |
| Closed Applications | Outcomes + time-to-decision |
| Client Communications | Messages, response times |
- Open Reports → New → pick Monthly Operations → run once → confirm it produces a non-empty PDF
- Verify chart + table both render (numbers > 0 thanks to BANK seed)
- Schedule a recurring run (e.g. weekly) to show Schedules tab
- Save a tweaked version as a template (rename, save) so the templates browser has a custom entry
2c. Day before — Workspaces & Features
For each of the 2–3 workspaces, open the workspace sheet → Features & Access tab:
- Toggle a feature OFF in one workspace → confirm sidebar entry disappears
- Edit the permission matrix → flip one role's checkbox → save → switch user/role and verify it took effect
- Note which workspace = STAFF, which = CLIENT, which = MIXED — needed in flow #3 + #11
3. Day before — dry run
Run the full demo flow once. Time it. Target 15–20 min.
- Take 8–10 screenshots during dry run → fallback deck if wifi dies
- Note any glitches; fix or add a "skip this" sticky
4. Demo flow (suggested order)
| # | Stage | Show | Talking point |
|---|---|---|---|
| 1 | Sign in | Keycloak hosted login | "Standard OIDC, your IdP" |
| 2 | LDAP / SSO | Org → Settings → LDAP, Test Connection green | "Plug into your directory — no user re-onboarding" |
| 3 | Org picker | /p/{slug}/orgs with 2 orgs | "Multi-tenant from day one" |
| 4 | Workspace switcher | Switch between Staff / Client / Partner workspaces | "One org, many surfaces" |
| 5 | Features & Access | Workspace sheet → toggle feature, flip role checkbox | "Tailor each workspace per team" |
| 6 | Staff workspace | Applications list | "Underwriting workflow surface" |
| 7 | JSON submission (happy path) | curl POST /api/v1/applications with submit-happy.json → app appears live → auto-advances through SYSTEM steps → Approved | "Third parties integrate in one POST. Auto-approve when policy allows." |
| 8 | JSON submission (manual path) | Run submit-needs-review.json → app halts at MANUAL underwriter step → assign to officer → approve manually | "Same pipeline; humans only where judgment is needed" |
| 9 | Application detail | Hero app: status, assignees, tabs, audit trail | "Single source of truth per case" |
| 10 | Documents | Upload + review + status change | "Internal vs external review" |
| 11 | Comments | Internal vs external thread | "Audit-grade communication" |
| 12 | Status workflow | Template → workflow builder (ReactFlow), point at SYSTEM vs MANUAL nodes | "Auto vs human — configured, not coded" |
| 13 | Templates | Wizard steps editor + AI Create Step | "Business users build forms" |
| 14 | AI Assistant | Pinned chat panel, AI Translate | "Embedded AI per org" |
| 15 | Client workspace | Switch to client view, upload doc | "Same platform, two faces" |
| 16 | Reports | Reports → New → Monthly Operations → Run → download PDF live; show Schedules tab + saved template | "From data to PDF in two clicks. Schedule it weekly." |
| 17 | Settings | Team, roles, permissions, branding | "Granular control" |
| 18 | Wrap | Notifications bell + Messages | "Closed feedback loop" |
4b. Patent org — alternative mini-flow (replaces rows 6–11 when audience is IP / patent)
| # | Stage | Show | Talking point |
|---|---|---|---|
| P1 | Patent search | Open hero application → Patent Search tab → keyword / applicant / CQL query | "EPO OPS at your consultant's fingertips" |
| P2 | Patent detail | Bibliographic data, abstract, claims | "Full record — no tab-switching to Espacenet" |
| P3 | PDF cache | Open PDF (pre-cached) → "0 EPO credits used" | "Per-org cache, multi-page merge, your storage provider" |
| P4 | AI info | Patent-scoped AI chat: ask "summarise the independent claim" | "AI grounded in this patent + the parent application" |
| P5 | AI on selection | Highlight a paragraph → Ask AI about it | "Inline reasoning — no copy-paste" |
| P6 | AI notes | Add a private note on the patent → reopen later, still there | "Personal scratchpad, saved per patent" |
| P7 | Save to application | Save patent → it appears in the application's saved list | "Cite-trail for the consultant's report" |
5. Backup plan
- Screenshots saved to
~/Desktop/axvero-demo-shots/ - Pre-recorded 2-min video on USB stick
- Hotspot tethered to phone in case wifi fails
- Second laptop with same state (if available)
6. After the workshop — presentation prep
Capture during the session, distill after:
- Questions asked → slide: "Most-asked questions"
- Objections raised → slide: "How we address concerns"
- Feature gaps surfaced → roadmap input
- Names + emails of attendees → follow-up list
PowerPoint outline (≤10 slides):
- Problem we solve
- Who uses AMS (staff vs client vs partner)
- Live-demo recap (3–4 screenshots)
- Architecture in one picture (multi-org, multi-workspace)
- Roles & permission matrix
- AI inside AMS (assistant + step builder + patent AI)
- Reports & analytics — built-in templates, scheduled runs, PDF export
- Integrations (Keycloak/LDAP, REST API for third-party submissions, Stripe, storage providers, EPO OPS for patent orgs)
- Auto-approval pipeline: JSON in → policy check → decision out
- SYSTEM vs MANUAL underwriting
- Industry-vertical example: patent search + AI notes + AI info on claims
- Pricing / plans
- Roadmap next 90 days
- Next steps + contact
7. Reset before going home
- Stop local stack:
/a-stop-all - If you spun up extra demo orgs in prod — delete or rename
(workshop YYYY-MM-DD) - Note any bugs found →
/a-bugs log