De Ontwikkeling van Ubuntu-Appie: Een Innovatieve Stap in AI-Gestuurd Interviewbeheer
Inleiding De opkomst van kunstmatige intelligentie (AI) heeft geleid tot innovatieve toepassingen op verschillende gebieden, waaronder onderwijs, competentieherkenning en organisatiebeheer. Ubuntu-Appie is een baanbrekende WordPress-plugin die AI gebruikt om interactieve interviews te faciliteren, competenties te herkennen en badges toe te kennen op basis van geautomatiseerde analyses. Dit artikel volgt de ontwikkeling van Ubuntu-Appie, van concept tot implementatie, en bespreekt de impact op gebruikers en organisaties.
Concept en Doelstellingen Ubuntu-Appie werd ontwikkeld met als doel een AI-gestuurd interviewsysteem te creëren dat de competenties van deelnemers herkent en hen direct koppelt aan relevante workshops en werkgroepen. De belangrijkste doelstellingen omvatten:
- Het bieden van een interactieve AI-gestuurde interviewervaring.
- Het genereren van PDF-rapporten met geanalyseerde competenties.
- Het toekennen van badges via SureTrigger en GamiPress.
- Een geavanceerd admin-dashboard voor monitoring en beheer.
Technische Ontwikkeling De ontwikkeling van Ubuntu-Appie doorliep verschillende fasen:
- Structuur & Database-opzet
De basis van de plugin werd gelegd door een robuuste database te creëren waarin werkgroepen, workshops en interviewresultaten worden opgeslagen. Custom database-tabellen zorgen ervoor dat gegevens efficiënt kunnen worden opgehaald en geanalyseerd. - Shortcodes & API-koppelingen
Om de plugin flexibel en makkelijk integreerbaar te maken, werden shortcodes ontwikkeld waarmee interviews, werkgroepen en competentieoverzichten eenvoudig in pagina’s kunnen worden ingeladen. API-koppelingen met OpenAI en SureTrigger zorgen voor een soepele verwerking van gegevens. - Implementatie van het Admin-dashboard
Een intuïtief dashboard werd ontwikkeld waarmee beheerders instructies kunnen beheren, workshops kunnen organiseren en de voortgang van deelnemers kunnen volgen. - Integratie van Badgesysteem
Door een koppeling met GamiPress en SureTrigger ontvangen deelnemers automatisch badges op basis van hun interviewresultaten, wat hen toegang geeft tot specifieke werkgroepen en workshops. - PDF-rapportage & Feedbackmodule
Deelnemers krijgen na hun interview een gepersonaliseerd rapport met hun competenties en aanbevelingen voor verdere ontwikkeling. Dit rapport kan worden aangepast en uiteindelijk worden goedgekeurd voor definitieve vastlegging.
Impact en Gebruik Ubuntu-Appie wordt ingezet door educatieve en sociale organisaties zoals De Kamer van Sociale Waarden en UbuntuKids. De plugin heeft meerdere voordelen:
- Voor deelnemers: Persoonlijke ontwikkelingspaden op basis van AI-analyse.
- Voor admins: Efficiënt beheer van workshops en competentieherkenning.
- Voor organisaties: Betere matching van deelnemers aan relevante initiatieven.
Toekomstige Ontwikkelingen De ontwikkelaars van Ubuntu-Appie blijven werken aan verbeteringen, waaronder:
- Uitbreiding van de AI-functionaliteit met een adaptief interviewmodel.
- Real-time statistieken en dashboards voor gedetailleerde data-analyse.
- Integratie met NFT-technologie voor certificering van competenties.
Conclusie Ubuntu-Appie is een innovatief project dat AI, educatie en organisatiebeheer combineert in een toegankelijke WordPress-plugin. De continue ontwikkeling en uitbreiding van de functionaliteiten maken het een waardevol hulpmiddel voor zowel deelnemers als beheerders. De toekomst van AI-gestuurde interviewsystemen zoals Ubuntu-Appie belooft verdere automatisering en personalisatie, wat leidt tot nog effectievere competentieherkenning en talentontwikkeling.
<?php
/*
Plugin Name: Ubuntu Appie Chatbot
Plugin URI: https://ubuntukids.nl/
Description: Een chatbot met een zwarte chatinterface, spraak-naar-tekst en automatische voorlezen functionaliteit.
Version: 1.0
Author: De Kamer van Sociale Waarden
Author URI: https://www.dekvsw.nl/
License: GPLv2 or later
*/
if (!defined('ABSPATH')) exit;
// Voeg shortcode toe voor de chatbot
function ubuntu_appie_chat_interface() {
ob_start();
?>
<style>
#ubuntu-chat-container {
width: 100%;
max-width: 600px;
height: 500px;
background-color: #000;
color: #fff;
font-family: Arial, sans-serif;
display: flex;
flex-direction: column;
border-radius: 10px;
overflow: hidden;
position: relative;
padding: 10px;
box-shadow: 0 4px 8px rgba(255, 255, 255, 0.2);
}
#ubuntu-chat-box {
flex-grow: 1;
overflow-y: auto;
padding: 10px;
}
.ubuntu-chat-message {
background: rgba(255, 255, 255, 0.1);
padding: 10px;
border-radius: 5px;
margin-bottom: 10px;
}
#ubuntu-chat-input {
display: flex;
background: #222;
padding: 10px;
border-top: 2px solid #444;
}
#ubuntu-user-message {
flex-grow: 1;
background: black;
color: white;
border: none;
padding: 10px;
font-size: 16px;
border-radius: 5px;
outline: none;
}
.ubuntu-chat-button {
background: white;
color: black;
border: none;
padding: 10px;
margin-left: 5px;
cursor: pointer;
border-radius: 5px;
font-size: 16px;
}
</style>
<div id="ubuntu-chat-container">
<div id="ubuntu-chat-box">
<div class="ubuntu-chat-message">👋 Welkom! Stel je vragen aan Ubuntu Appie.</div>
</div>
<div id="ubuntu-chat-input">
<button id="ubuntu-voice-btn">🎤</button>
<input type="text" id="ubuntu-user-message" placeholder="Type hier je bericht...">
<button class="ubuntu-chat-button" id="ubuntu-send-btn">➤</button>
</div>
</div>
<script>
document.addEventListener("DOMContentLoaded", function () {
const chatBox = document.getElementById("ubuntu-chat-box");
const userInput = document.getElementById("ubuntu-user-message");
const sendBtn = document.getElementById("ubuntu-send-btn");
const voiceBtn = document.getElementById("ubuntu-voice-btn");
function addMessage(message, isUser = false) {
let msgDiv = document.createElement("div");
msgDiv.classList.add("ubuntu-chat-message");
if (isUser) msgDiv.classList.add("ubuntu-chat-user");
msgDiv.textContent = message;
chatBox.appendChild(msgDiv);
chatBox.scrollTop = chatBox.scrollHeight;
if (!isUser) {
let utterance = new SpeechSynthesisUtterance(message);
utterance.lang = "nl-NL";
window.speechSynthesis.speak(utterance);
}
}
function sendMessage() {
let message = userInput.value.trim();
if (message === "") return;
addMessage("👤 " + message, true);
userInput.value = "";
fetch("https://api.openai.com/v1/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_OPENAI_API_KEY"
},
body: JSON.stringify({
model: "gpt-4",
messages: [{ role: "user", content: message }]
})
})
.then(response => response.json())
.then(data => {
let reply = data.choices[0].message.content;
addMessage("🤖 " + reply);
})
.catch(error => console.error("Fout bij ChatGPT API:", error));
}
sendBtn.addEventListener("click", sendMessage);
userInput.addEventListener("keypress", function (event) {
if (event.key === "Enter") {
event.preventDefault();
sendMessage();
}
});
voiceBtn.addEventListener("click", function () {
let recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
recognition.lang = "nl-NL";
recognition.start();
recognition.onresult = function (event) {
userInput.value = event.results[0][0].transcript;
};
});
});
</script>
<?php
return ob_get_clean();
}
add_shortcode('ubuntu_appie', 'ubuntu_appie_chat_interface');
?>
De vragen, antwoorden, toegewezen badges, het gegenereerde rapport en de geadviseerde workshops.
Hier is een overzicht van de vragen, antwoorden, toegewezen badges, het gegenereerde rapport en de geadviseerde workshops uit het prototype interview:
1. Vragen en Antwoorden uit het Testprotocol
| Vraag ID | Vraag | Antwoord |
|---|---|---|
| 1 | Wat is je volledige naam? | Sample Answer |
| 2 | Wat is je geboortedatum? (DD/MM/YYYY) | Sample Answer |
| 3 | Welke taal heeft je voorkeur? | English |
| 4 | Welke categorie beschrijft jou het beste? | Entrepreneur |
| 5 | Zie jij jezelf als een leider? | Yes |
| 6 | Heb je ooit leiding genomen in een team? | Yes |
| 7 | Wil je deelnemen aan een werkgroep of forum? | Yes |
| 8 | Wil je AI-hulp bij het verwoorden van je vaardigheden? | Yes |
2. Toegewezen Badges
Op basis van de antwoorden zijn de volgende badges toegekend:
- Leeftijdsbadge (op basis van geboortedatum):
- Kan niet worden vastgesteld zonder geboortedatum
- Opties: Onder 16, 16-18 jaar, 18+
- Taalbadge:
- Engels (op basis van vraag 3)
- Rolbadge:
- Ondernemer (Entrepreneur) (op basis van vraag 4)
- Leiderschapsbadge:
- Leiderschap (op basis van vraag 5 en 6)
- Werkgroepdeelname-badge:
- Actieve deelnemer in werkgroepen (op basis van vraag 7)
- AI-gebruik-badge:
- Gebruiker van AI-assistentie (op basis van vraag 8)
3. Rapportage van het Interview
Het volgende rapport is gegenereerd voor de admin:
Kandidatenprofiel
- Naam: Sample Answer
- Geboortedatum: Sample Answer
- Leeftijdscategorie: Niet vastgesteld (moet worden toegevoegd)
- Taalvoorkeur: Engels
- Categorie: Ondernemer
- Leiderschapspotentieel: Ja
- Ervaring met teamleiderschap: Ja
- Bereidheid om bij te dragen aan werkgroepen: Ja
- Voorkeur voor AI-ondersteuning bij competentieverkenning: Ja
Advies voor Positie Binnen De Kamer van Sociale Waarden
- Aanbevolen functie: Bestuurslid Werkgroep Ondernemerschap
- Alternatief: Lid Werkgroep Competentieontwikkeling
- Indien geen bestuursfunctie gewenst: Actieve deelnemer in een werkgroep
Aanbevolen Badges (automatisch toegekend via SureTrigger)
- 🏷️ Engels
- 🏷️ Ondernemer
- 🏷️ Leiderschap
- 🏷️ Actieve deelnemer
- 🏷️ AI-gebruik
4. Advies voor Workshops
Gebaseerd op het interview worden de volgende workshops aanbevolen:
- Workshop: Leiderschap en Organisatie binnen Werkgroepen
- Doel: Vaardigheden in teammanagement en besluitvorming ontwikkelen
- Vereisten: Interesse in leiderschap
- Workshop: Ondernemerschap en Sociale Innovatie
- Workshop: AI in Competentieontwikkeling
- Doel: Hoe AI kan helpen bij het formuleren en ontwikkelen van competenties
- Vereisten: Interesse in AI-gebruik
5. Hoe de Badges in SureTrigger Koppelen aan een SSI-Wallet
Om de badges automatisch toe te wijzen in de SSI-wallet, moet SureTrigger de volgende parameters ontvangen:
- Gebruikers-ID (WordPress)
- Taalvoorkeur → Badge: 🏷️ Engels, Nederlands, Frans, etc.
- Leeftijdscategorie → Badge: 🏷️ Onder 16, 🏷️ 16-18, 🏷️ 18+
- Gekozen Categorie → Badge: 🏷️ Ondernemer, Educator, Zorgprofessional, etc.
- Leiderschap → Badge: 🏷️ Leiderschap (indien Ja)
- Werkgroepdeelname → Badge: 🏷️ Actieve deelnemer (indien Ja)
- AI-gebruik → Badge: 🏷️ AI-gebruiker (indien Ja)
SureTrigger zal de badges vervolgens toewijzen aan de gebruiker en versturen naar de SSI-wallet van de admin met een melding.
Voor NFT-certificaten:
- Als de deelnemer betaalt, ontvangt de admin een melding en wordt het certificaat handmatig overgedragen.
- Als de deelnemer niet betaalt, wordt het certificaat alleen opgeslagen bij de admin, zonder overdracht.
6. Landing Page Voorstel
De landing page moet:
- De gebruiker verwelkomen en de bedoeling uitleggen.
- Een keuze bieden voor sectoren (Business, Onderwijs, Zorg, etc.).
- De taal detecteren en vragen of de gebruiker een andere taal wil kiezen.
- De API voeden met de voorkeuren voordat het interview start.
🔹 Vraag: Kan de API browsertaal uitlezen? ✅ Ja, dit kan worden meegegeven bij de aanvraag naar de API.
Conclusie en Vervolgstappen
✅ Prototype werkt en geeft:
- Een volledig profiel van de gebruiker
- Automatische badge-toewijzing
- Workshopaanbevelingen
- Adviesrapportage voor de admin
📌 Vervolgstappen:
- Integratie als Shortcode op de WordPress-pagina (om interview uit te voeren).
- Automatiseren van badge-koppeling aan de SSI-wallet via SureTrigger.
- Testen met echte gebruikers en optimaliseren.
Admin Menu in WordPress Dashboard
Na installatie van de plugin verschijnt in het WordPress Admin Dashboard een nieuw menu genaamd Ubuntu Appie met de volgende submenu’s:
| Menu-item | Beschrijving |
|---|---|
| 📌 Dashboard | Overzicht van statistieken, recente activiteiten en snelkoppelingen naar andere onderdelen. |
| 🔹Werkgroepen | Beheer en overzicht van alle gevraagde werkgroepen. Mogelijkheid om ze als “aangemaakt” te markeren. |
| 📋 Workshops | Beheer van workshops gekoppeld aan werkgroepen. Workshops kunnen gemarkeerd worden als ‘actief’ of ‘nog niet geïmplementeerd’. |
| 📌 Projecten | Overzicht van actieve projecten binnen werkgroepen. Hier wordt aangegeven welke workshops nodig zijn voor deelname aan deze projecten. |
| 📄 PDF Rapporten | Overzicht van gegenereerde rapporten uit interviews. Mogelijkheid om ze naar de groepsadmin te sturen of als NFT aan te bieden. |
| 📊 Statistieken | Grafieken en tabellen met inzichten over meest gevraagde workshops, werkgroepen en toegekende badges. |
| ⚙️ Instellingen | Configuratie van OpenAI API-sleutel, GamiPress webhook, interview-instructies en notificatie-instellingen. |
🔹 Overzicht van Functionaliteiten per Admin Panel
📌 Dashboard
- Snel overzicht van de belangrijkste statistieken.
- Lijst met de meest gevraagde workshops en werkgroepen.
- Aantal gegenereerde PDF-rapporten en toegekende badges.
- Snelkoppelingen naar werkgroepen, workshops en instellingen.
🔹 Werkgroepen Beheer
- Overzicht van alle gevraagde werkgroepen uit interviews.
- Status aanpassen: Gevraagd ➝ Aangemaakt.
- Mogelijkheid om een beschrijving en doel per werkgroep toe te voegen.
- Koppeling met workshops binnen de werkgroep.
📋 Workshops Beheer
- Overzicht van gevraagde workshops (op basis van interviews).
- Mogelijkheid om workshops als actief of nog niet geïmplementeerd te markeren.
- Badge-toekenning per workshop (via GamiPress & SureTrigger).
- Statistieken: welke workshops zijn het meest gevraagd?
- Mogelijkheid om een workshop te koppelen aan werkgroepen.
📌 Projecten Beheer
- Overzicht van actieve projecten binnen de werkgroepen.
- Projecten kunnen open worden gesteld voor participanten.
- Workshop-koppelingen: welke workshops zijn nodig om deel te nemen?
- Toegangsbadges: welke badges geven toegang tot het project?
📄 PDF Rapporten Overzicht
- Lijst van alle gegenereerde PDF-rapporten vanuit de interviews.
- Status van rapporten bekijken: verzonden naar groepsadmin, NFT-conversie, etc.
- Mogelijkheid om PDF’s te verzenden naar groepsadmins op SSO.UbuntuKids.nl.
- Optie om een PDF om te zetten naar een NFT (handmatige actie door groepsadmin).
📊 Statistieken Dashboard
- Meest gevraagde werkgroepen & workshops (op basis van interviews).
- Aantal aangemaakte vs. gevraagde werkgroepen & workshops.
- Aantal interviews uitgevoerd per periode (dag/week/maand).
- Totaal aantal toegekende badges.
- Statistieken over PDF-rapporten (gegenereerd, verzonden, als NFT verwerkt).
- Filteropties per dag/week/maand/jaar.
- Downloadoptie voor statistieken (CSV/PDF).
⚙️ Instellingen
- 🔑 OpenAI API-sleutel invoeren & testen.
- 🔗 GamiPress Webhook instellen (voor badge-verwerking).
- 📝 Interview-instructies beheren.
- Admin kan verschillende instructies aanmaken voor [ubuntu_appie instructie=”X”] shortcodes.
- 🔔 Notificatie-instellingen:
- Waarschuwing wanneer een workshop vaak wordt gevraagd.
- Optie om e-mailnotificaties in te schakelen voor admins.







