Skip to main content

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 start then /a-run-all
  • Bring up LDAP container too: cd ams-deploy && ./local.sh --profile ldap up -d openldap
  • Verify ports: :9090 Keycloak, :8080 backend, :5173 frontend, :8025 Mailpit, :1389 openldap
  • 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:

OrgTypeHow
Demo BankBANK seed/p/{slug}/orgs → "More options" → Create Demo Org → BANK
Demo Tax(manual or 2nd BANK seed)Same flow, different name
Demo Patentmanual (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

FieldValue
Server URLldap://localhost:1389
Keycloak LDAP URL (Advanced)ldap://openldap:389
Bind DN / passwordcn=admin,dc=example,dc=com / adminpassword
Users DNou=users,dc=example,dc=com
User filter(objectClass=inetOrgPerson)
  • Click Test Connection → expect green
  • Click Save → "Connected" badge appears (keycloakComponentId set)
  • Seed users available: alice, bob, carol @example.com (passwords <name>password)

⚠️ Direct LDAP-user /sign-in and /sign-up are 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:

HandlerWhat it checks
DocumentCompletenessCheckHandlerAll required docs uploaded + approved
CreditReportCheckHandlerSchufa-style credit check outcome
ClientApprovalCheckHandlerClient 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.

EndpointPurpose
GET /api/v1/templates/{id}/schemaThird party fetches the field schema
POST /api/v1/applicationsFull JSON submission (creates + submits in one call)
POST /api/v1/applications/{id}/documentsAttach 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-approved
    • submit-needs-review.json — missing/invalid field → routes to MANUAL underwriter
  • Open Postman / a .http file 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:

TemplateUse for
CustomBlank builder — show flexibility
Monthly OperationsWorkload + per-staff breakdown
Quarterly BusinessDecisions, SLA, approval rates
Closed ApplicationsOutcomes + time-to-decision
Client CommunicationsMessages, 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)

#StageShowTalking point
1Sign inKeycloak hosted login"Standard OIDC, your IdP"
2LDAP / SSOOrg → Settings → LDAP, Test Connection green"Plug into your directory — no user re-onboarding"
3Org picker/p/{slug}/orgs with 2 orgs"Multi-tenant from day one"
4Workspace switcherSwitch between Staff / Client / Partner workspaces"One org, many surfaces"
5Features & AccessWorkspace sheet → toggle feature, flip role checkbox"Tailor each workspace per team"
6Staff workspaceApplications list"Underwriting workflow surface"
7JSON 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."
8JSON 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"
9Application detailHero app: status, assignees, tabs, audit trail"Single source of truth per case"
10DocumentsUpload + review + status change"Internal vs external review"
11CommentsInternal vs external thread"Audit-grade communication"
12Status workflowTemplate → workflow builder (ReactFlow), point at SYSTEM vs MANUAL nodes"Auto vs human — configured, not coded"
13TemplatesWizard steps editor + AI Create Step"Business users build forms"
14AI AssistantPinned chat panel, AI Translate"Embedded AI per org"
15Client workspaceSwitch to client view, upload doc"Same platform, two faces"
16ReportsReports → New → Monthly Operations → Run → download PDF live; show Schedules tab + saved template"From data to PDF in two clicks. Schedule it weekly."
17SettingsTeam, roles, permissions, branding"Granular control"
18WrapNotifications bell + Messages"Closed feedback loop"

4b. Patent org — alternative mini-flow (replaces rows 6–11 when audience is IP / patent)

#StageShowTalking point
P1Patent searchOpen hero application → Patent Search tab → keyword / applicant / CQL query"EPO OPS at your consultant's fingertips"
P2Patent detailBibliographic data, abstract, claims"Full record — no tab-switching to Espacenet"
P3PDF cacheOpen PDF (pre-cached) → "0 EPO credits used""Per-org cache, multi-page merge, your storage provider"
P4AI infoPatent-scoped AI chat: ask "summarise the independent claim""AI grounded in this patent + the parent application"
P5AI on selectionHighlight a paragraph → Ask AI about it"Inline reasoning — no copy-paste"
P6AI notesAdd a private note on the patent → reopen later, still there"Personal scratchpad, saved per patent"
P7Save to applicationSave 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):

  1. Problem we solve
  2. Who uses AMS (staff vs client vs partner)
  3. Live-demo recap (3–4 screenshots)
  4. Architecture in one picture (multi-org, multi-workspace)
  5. Roles & permission matrix
  6. AI inside AMS (assistant + step builder + patent AI)
    • Reports & analytics — built-in templates, scheduled runs, PDF export
  7. 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
  8. Pricing / plans
  9. Roadmap next 90 days
  10. 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