Idee 5: Klantportaal

← Alle ideeën

Een plek waar klanten zelf hun zaken regelen: een vraag of storing melden, de status volgen, documenten en facturen vinden en een afspraak aanvragen. Medewerkers zien alles binnenkomen, AI sorteert en stelt een antwoord voor. Voor installateurs, IT-dienstverleners, bureaus, verhuurders, accountants.

Wow-moment

Iemand in de zaal logt in als klant (QR-code naar het portaal) en meldt "de verwarming doet het niet en er is een baby in huis". Op het scherm van de medewerker verschijnt de melding live, al gelabeld als storing, urgent, met een voorgesteld antwoord. Medewerker klikt "versturen" en de klant ziet het antwoord op zijn telefoon verschijnen.

Gegevens

Tabel Kolommen
users (starter) APP_AUTH=demo met rollen Klant, Medewerker, Beheerder; extra kolom customer_id (nullable) voor klanten; zet customer_id ook in #[Fillable([...])] bovenaan app/Models/User.php, anders wordt hij bij User::create() stil genegeerd
customers name, address, city, phone, contract (basis, plus, premium)
tickets customer_id, user_id (melder), subject, body, category (vraag, storing, klacht, bestelling, overig), urgency (laag, middel, hoog), status (nieuw, in behandeling, wacht op klant, opgelost), assigned_to (nullable), ai_summary, ai_reply, photo_path
ticket_messages ticket_id, user_id, body, internal (bool: notitie die de klant niet ziet)
documents customer_id, title, type (factuur, contract, rapport, handleiding), path, amount (nullable), paid (bool)
appointments customer_id, ticket_id (nullable), starts_at, status (aangevraagd, bevestigd)

Pagina's

Klant (ziet alleen zijn eigen gegevens: altijd filteren op Access::user()->customer_id, op de server):

  1. Mijn overzicht: open meldingen, laatste documenten, volgende afspraak.
  2. Nieuwe melding: onderwerp, beschrijving, foto (camera). 3. Melding: tijdlijn met berichten (<x-live>), reageren.
  3. Documenten: lijst met download, onbetaalde facturen bovenaan. 5. Afspraak aanvragen: dag en dagdeel kiezen.

Medewerker: 6. Inbox: <x-live>-tabel van alle meldingen, sorteerbaar op urgentie, filter op status en "mij toegewezen". 7. Melding behandelen: klantgegevens ernaast, AI-samenvatting, voorgesteld antwoord (bewerkbaar), interne notitie, status en toewijzing. 8. Klanten: lijst + detail met alle meldingen en documenten. 9. Dashboard (_live): open meldingen per urgentie, gemiddelde reactietijd, meldingen per dag (grafiek).

Bouwvolgorde

  1. Migraties, seeder: 8 klanten met elk 1 klant-gebruiker, 3 medewerkers, 25 meldingen met berichten, documenten (placeholder-pdf's gemaakt met dompdf of een paar vaste bestanden).
  2. Nep-login aan (APP_AUTH=demo), menu per rol ('roles' => [...] in config/menu.php).
  3. Klant: nieuwe melding + mijn meldingen. 4. Medewerker: inbox + behandelen + reageren.
  4. AI: job TriageTicket bij elke nieuwe melding (patroon app/Jobs/TriageMessage.php): categorie, urgentie, samenvatting en een conceptantwoord in de toon van het bedrijf. Foto erbij? Meegeven als bijlage (vision).
  5. Documenten + afspraken. 7. Dashboard.
  6. Extra's: kennisbank voor klanten (zoeken op betekenis, geen chat) ("hoe ontlucht ik mijn radiator?") met zoeken op betekenis (docs/AI.md 2.9), tevredenheid na oplossen (1-5 sterren), SLA-klok per contract (planner markeert te laat).

Demo (3 minuten)

  1. "Klanten bellen voor elke statusvraag." 2. Live melding vanaf een telefoon in de zaal. 3. Medewerker ziet hem gelabeld binnenkomen, past het AI-antwoord aan, verstuurt. 4. Klant ziet het antwoord. 5. Dashboard.

Let op

  • E-mail of sms naar de klant kan niet (geen externe diensten): het antwoord staat in het portaal. Toon eventueel een lijst "meldingen die we zouden versturen".

Dit idee kiezen? Zeg tegen je AI-agent: "We bouwen Idee 5: Klantportaal".