> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wcr.is/llms.txt
> Use this file to discover all available pages before exploring further.

# WeCareRemote platform overview

> Learn how WeCareRemote's AI assistant, blog, video conferencing, and authentication components work together to connect refugees with NGO services.

WeCareRemote is a unified platform that connects refugees with NGOs through AI-powered conversations, collaborative content, and video meetings. Each component is designed to work together under a single login, so you move seamlessly between chatting with an AI assistant, reading published resources, and joining a live video call — without switching tools or re-authenticating.

This page walks through each piece of the platform and explains how they fit together. If you are looking for a hands-on introduction, see the [Quickstart](/quickstart). If you want to integrate WeCareRemote with your own tools, see the [API overview](/api/overview).

## Architecture at a glance

WeCareRemote is built around a set of cooperating components tied together by a shared authentication layer and connected to two integration services — n8n for automation and NocoDB for structured data:

| Component       | Hosted at                          | Powered by                     | Primary audience                  |
| --------------- | ---------------------------------- | ------------------------------ | --------------------------------- |
| Web platform    | [wcr.is/home](https://wcr.is/home) | WeCareRemote app               | Refugees and NGO staff            |
| Blog            | [blog.wcr.is](https://blog.wcr.is) | WordPress                      | Everyone, with role-aware content |
| AI assistant    | Embedded in the platform           | Configurable LLM provider      | Refugees, with admin oversight    |
| Video meetings  | Embedded in the platform           | Jitsi                          | Refugees and NGO staff            |
| Authentication  | `getme.global`                     | JWT issuer                     | Used by all components            |
| Automation      | Self-hosted                        | [n8n](/integrations/n8n)       | NGO admins / operators            |
| Structured data | Self-hosted                        | [NocoDB](/integrations/nocodb) | NGO staff                         |

When you log in once on any component, the JWT token issued by `getme.global` is recognised everywhere else.

## Technical diagram

The diagram below shows how a request flows through the system and where every component sits relative to the others.

```mermaid theme={null}
flowchart LR
  subgraph Users["Users"]
    R["👤 Refugee user<br/><i>role: blog</i>"]
    A["🧑\u200d💼 NGO admin<br/><i>role: org_admin</i>"]
  end

  subgraph Auth["Authentication"]
    JWT["🔑 JWT issuer<br/>getme.global<br/>/api/v1/wordpress_auth"]
  end

  subgraph Platform["WeCareRemote platform — wcr.is"]
    WEB["🌐 Web app<br/>wcr.is/home"]
    AI["🤖 AI assistant<br/>POST /<br/>POST /stream"]
    JITSI["🎥 Jitsi video<br/>browser WebRTC"]
    REC["💾 Recordings API<br/>GET /recordings"]
  end

  subgraph Blog["WordPress blog — blog.wcr.is"]
    WP["📝 WordPress + WCR plugin"]
    SC["🔌 Shortcodes<br/>[wcr_login_form]<br/>[angular_user_info]"]
  end

  subgraph LLM["LLM providers"]
    OAI["OpenAI"]
    ANT["Anthropic"]
    GOO["Google"]
    GRQ["Groq"]
    OLA["Ollama (local)"]
    OTH["AWS Bedrock /<br/>Azure / OpenRouter /<br/>DeepSeek / custom"]
  end

  subgraph Integrations["Integrations"]
    N8N["⚙️ n8n<br/>workflows + webhooks"]
    NOCO["📊 NocoDB<br/>cases · services ·<br/>contacts · recordings"]
  end

  subgraph Storage["Storage"]
    S3["☁️ Object storage<br/>recordings.mp4"]
    DB[("🗄️ Conversation DB<br/>threads + messages")]
  end

  %% User entry
  R -->|login| WEB
  A -->|login| WEB
  R -->|read posts| WP
  A -->|publish posts| WP

  %% Auth
  WEB <-->|issue / verify JWT| JWT
  WP <-->|verify JWT| JWT
  AI <-->|verify JWT| JWT
  REC <-->|verify JWT| JWT

  %% Platform internals
  WEB --> AI
  WEB --> JITSI
  WEB --> REC
  AI <--> DB
  AI --> LLM
  JITSI -->|recordings| S3
  REC --> S3

  %% Blog plugin
  WP --- SC

  %% Integrations
  AI -. optional knowledge .-> NOCO
  N8N -->|Bearer JWT| AI
  N8N -->|Bearer JWT| REC
  N8N <-->|xc-token| NOCO
  REC -. webhooks .-> N8N
  AI -. webhooks .-> N8N
  WP -. webhooks .-> N8N
  A -->|spreadsheet UI| NOCO

  classDef user fill:#fff3e0,stroke:#e65100,color:#000
  classDef platform fill:#e3f2fd,stroke:#0d47a1,color:#000
  classDef blog fill:#f3e5f5,stroke:#4a148c,color:#000
  classDef integ fill:#e8f5e9,stroke:#1b5e20,color:#000
  classDef auth fill:#fce4ec,stroke:#880e4f,color:#000
  classDef store fill:#eceff1,stroke:#37474f,color:#000

  class R,A user
  class WEB,AI,JITSI,REC platform
  class WP,SC blog
  class N8N,NOCO integ
  class JWT auth
  class S3,DB,LLM,OAI,ANT,GOO,GRQ,OLA,OTH store
```

### How to read this diagram

* **Solid arrows** are synchronous HTTP calls made by the component at the tail of the arrow.
* **Dashed arrows** are asynchronous events — webhooks fired by the platform, or optional knowledge-base reads by the AI assistant.
* **JWT verification** is the small back-and-forth between every component and `getme.global` on the left. Every protected request flows through it.
* **n8n sits in the middle** as the event hub. It receives webhooks from the platform, calls back into the AI agent and recordings APIs, and pushes structured rows into NocoDB.
* **NocoDB is read by two clients**: NGO staff (via the spreadsheet UI) and n8n (via the `xc-token`-authenticated REST API). The AI assistant can optionally read NocoDB rows as a knowledge source.

### Trust boundaries

* The platform, the blog, and `getme.global` share the JWT trust boundary — a token issued by `getme.global` is honoured by all of them.
* n8n is **outside** the JWT trust boundary on its inbound side: it authenticates webhook callers however you configure (webhook secret, IP allowlist), then uses a stored JWT to call WeCareRemote on the outbound side.
* NocoDB is a **separate** trust boundary — it uses its own `xc-token` API tokens and does not understand WeCareRemote JWTs.

## AI assistant

The AI assistant is the primary way refugees interact with the platform. You can ask it questions, request information about available services, or get help navigating the support process. The assistant maintains conversation memory across sessions, so it builds on previous exchanges rather than starting fresh each time.

When relevant documents or knowledge bases are available to your organization, the assistant can retrieve and reference that content directly in its responses — reducing the need for back-and-forth with staff.

**What the assistant can do:**

* Answer questions in plain language about services, processes, and resources
* Retain context across messages and sessions
* Surface knowledge-base content when your organization has connected it
* Adapt its tone and the level of detail based on your role (refugee user vs. NGO admin)

<Info>
  The AI assistant supports multiple language model providers — OpenAI, Anthropic, Google, Groq, Ollama (local), AWS Bedrock, Azure OpenAI, OpenRouter, DeepSeek, and any OpenAI-compatible endpoint. The model used in your session is configured by your organization's administrator. See [Supported models](/ai-assistant/supported-models).
</Info>

## Blog and content

The blog gives NGO administrators a space to publish resources, announcements, and guides that are visible to refugee users on the platform. It is built on WordPress and uses role-based access to control who can read, write, and manage content.

* **NGO administrators** (`org_admin`) can create, edit, and publish posts.
* **Refugee users** (`blog`) can read published content relevant to their situation.
* **Logged-out visitors** see only the public portion of the blog.

This separation ensures that the content refugee users see is curated and appropriate, while giving NGO staff full editorial control. Menu items and post visibility can be configured per role using the WeCareRemote WordPress plugin — see [Role-based access](/blog/role-based-access) for the full visibility rules.

## Video conferencing

When a conversation needs to move beyond text, WeCareRemote includes integrated video meetings powered by Jitsi. Refugees and NGO staff can join a meeting directly from the platform — no third-party account or software download required.

Meetings can be recorded, which is useful for documentation, case follow-up, or sharing session summaries with other team members. Recordings are stored in secure cloud storage and accessible through the [recordings API](/api/records) or the platform UI.

<Note>
  Recording availability depends on your organization's configuration. Recordings are typically initiated by an NGO administrator. Contact your NGO contact if you need recordings enabled for your meetings.
</Note>

## Authentication

A single JWT-based authentication layer ties all of WeCareRemote's components together. When you log in through the platform, your session token is recognized by the AI assistant, the WordPress blog, and the video conferencing system — so you never need to log in separately to access each feature.

Your role (`blog` or `org_admin`) is encoded in your token and determines what actions you can take across the platform. If your role changes — for example, if an NGO grants you additional permissions — you will need to log out and back in to pick up the updated access.

For full details on how authentication works, including how to obtain and verify a token programmatically, see the [Authentication overview](/authentication/overview) and the [JWT auth reference](/authentication/jwt-auth).

<Warning>
  Do not share your login credentials or session token. If you believe your account has been compromised, contact your NGO administrator to reset your credentials immediately.
</Warning>

## A typical session

To make the pieces concrete, here is what a typical refugee user's session might look like:

<Steps>
  <Step title="Sign in once">
    The user logs in at [wcr.is/home](https://wcr.is/home). The platform issues a JWT token that travels with every subsequent request.
  </Step>

  <Step title="Ask the AI assistant a question">
    The user opens the AI assistant and asks, in their own language, what housing options are available. The assistant references the previous conversation and any connected knowledge base.
  </Step>

  <Step title="Read a published resource">
    The assistant links the user to a blog post on housing applications. Because the user is logged in, role-specific menu items and content load automatically.
  </Step>

  <Step title="Join a video call">
    The user clicks through to a Jitsi meeting with an NGO caseworker. No re-authentication is needed — the same JWT token authorises the meeting.
  </Step>

  <Step title="Resume later">
    The next day, the user returns. The AI assistant remembers the conversation and can answer follow-up questions without re-explaining context.
  </Step>
</Steps>

## Where to go next

<CardGroup cols={2}>
  <Card title="AI Assistant" icon="robot" href="/ai-assistant/overview">
    Configure the AI assistant, choose a language model, and manage conversation history.
  </Card>

  <Card title="Authentication" icon="lock" href="/authentication/overview">
    Learn how JWT authentication works and how roles control access across the platform.
  </Card>

  <Card title="Video Conferencing" icon="video" href="/video/overview">
    Set up and join video meetings, and enable recording for your sessions.
  </Card>

  <Card title="Blog & Content" icon="newspaper" href="/blog/overview">
    Publish and manage blog content, and understand role-based access controls.
  </Card>
</CardGroup>
