Interne zoektool bouwen met AI voor mijn projectmap die klopt

Steeds weer raakte ik hetzelfde projectbestand kwijt. Niet omdat ik slordig ben, maar omdat een map met honderden exports, wireframes en losse aantekeningen nu eenmaal op een stortplaats lijkt. Namen als final_v3_nu_echt_def.pdf zeggen weinig. Daarom wilde ik een interne zoektool bouwen die niet alleen op bestandsnamen zoekt, maar ook snapt wat er in mijn projecten gebeurt. De eerste versie draait inmiddels lokaal en ik gebruik hem dagelijks.
Het bouwen zelf was verrassend behapbaar. Geen compleet documentmanagementsysteem, maar een kleine zoeklaag boven mijn bestaande mappen. AI helpt bij het lezen, samenvatten en koppelen van metadata. Het eindresultaat is een simpele webpagina met een zoekveld en een lijst met antwoorden.
Interne zoektool bouwen begint met je eigen mappen
Ik koos voor één projectmap: een lopende opdracht met designs, notulen, screenshots en een stuk of twintig bronbestanden. Het doel was simpel. Ik typ een vraag in mijn eigen woorden. De tool zoekt door de inhoud en geeft een kort antwoord met de juiste bestandsnamen erbij. Geen hemelbestormend systeem, gewoon een wegwijzer.
De eerste keuze was om niet alles te indexeren. Oude backups, exports en dubbele versies zouden alleen maar ruis geven. Ik selecteerde per project de mappen die ik actief gebruik. Dat scheelde meteen een hoop foute treffers.
Bestanden selecteren zonder alles te importeren
Ik begon met een klein script dat door de gekozen map loopt. Alleen de bestanden die ik open, bewerk of deel krijgen voorrang: Markdown-notities, PDF-briefings, ontwerpbestanden en losse CSV’s met feedback. Alles wat op .zip of .bak eindigt, negeert de tool.
Daarna liet ik de bestanden door een eenvoudige AI-stap gaan. Voor elk bestand maakt de tool een korte samenvatting van drie tot vijf zinnen. Ik noem dat liever een contextkaart dan een samenvatting, want het draait om wat dit bestand betekent binnen het project.
Metadata die meer zegt dan de bestandsnaam
Een bestandsnaam is vaak waardeloos. Bij mij stond er scan_final_03.pdf, maar nergens zag je dat het om een feedbackronde van de klant ging. Daarom koppel ik per bestand een paar velden:
- onderwerp
- projectfase
- type bestand
- betrokken personen
- korte context
Die metadata komt niet overal automatisch uit. Bij PDF’s kan de AI de inhoud lezen en het onderwerp eruit halen. Bij ontwerpbestanden zoals Figma-exports moet ik soms zelf een label toevoegen. Ik heb dat bewust simpel gehouden met een losse tekstregel in de bestandsnaam, bijvoorbeeld feedback_ronde2_klant.pdf. Dat is voldoende voor de eerste versie.
Hoe de zoekvragen binnenkomen
De zoekvraag zelf is minstens zo belangrijk als de metadata. Ik test met zinnen die ik echt zou typen, niet met trefwoorden als PDF feedback. Denk aan wat vond de klant van het nieuwe dashboard of welke versie heb ik vrijdag verstuurd. De AI zet die vraag om naar een zoekopdracht en vergelijkt die met de contextkaarten.
Zoekvragen testen alsof je haast hebt
Hier ging de eerste versie de mist in. Ik gebruikte nette testvragen en alles leek te werken. Toen ik later gehaast waar is dat schema van dat scherm intypte, gaf de tool een antwoord over een verkeerd project. Het probleem zat in te algemene contextkaarten. Scherm kwam in bijna elk bestand voor.
Ik heb de testaanpak daarna omgegooid. Ik gebruikte vijf realistische vragen met haast erin, waaronder bewust vage formuleringen. Per vraag controleerde ik of het antwoord klopte, of het juiste bestand bovenaan stond en of de tool aangaf wanneer iets niet gevonden was. Dat laatste greep ik aan om de metadata te verbeteren.
Wat hielp was om projectnamen en fases consequent te benoemen in de contextkaarten. Zodra de tool begrijpt dat vrijdag in mijn team vaak vrijdag 5 september betekent als je er de projectfase bij pakt, worden antwoorden scherper. Dit is geen magie, maar een kwestie van testen en bijschaven. Als een AI-chatbot foute antwoorden geeft, ligt het bijna nooit alleen aan het model. Soms zijn je instructies gewoon te vaag. Daar schreef ik eerder al over in AI-chatbot fouten: 5 dingen die misgaan in je instructies.
Wat ik heb geleerd van de eerste versie
Drie dingen vielen me op. Ten eerste: hoe minder je indexeert, hoe beter de antwoorden. Ten tweede: een korte contextkaart van drie zinnen is genoeg, een lange samenvatting maakt de zoekresultaten juist vager. Ten derde: testen met alleen nette vragen zegt weinig. Juist de rommelige zoekvragen bepalen of je tool bruikbaar is.
De grootste verrassing was dat het visuele overzicht me meer opleverde dan de zoekfunctie zelf. Omdat de AI per bestand een onderwerp en fase koppelt, zie ik in één oogopslag wat in welke fase zit. Die bijvangst ga ik in een volgende ronde verder uitwerken.
Veelgestelde vragen
Heb ik een eigen server nodig om zo’n interne zoektool te draaien?
Nee. Voor een lokale versie is een simpel Python- of Node-script voldoende. De AI-aanroepen verlopen via een API, maar de bestanden en de index blijven op je eigen machine.
Moet ik al mijn bestanden in een database stoppen?
Niet per se. Voor een eerste versie werkt een JSON-bestand met de contextkaarten prima. Pas bij duizenden bestanden wordt een echte database handig.
Wat als de tool een bestand niet kan lezen?
Dan sla je het over of voeg je handmatig een label toe. Dat is geen fout, maar onderdeel van het ontwerp. Sommige bestanden zoals .zip of .sketch bevatten nu eenmaal geen leesbare tekst.
Hoeveel tijd kost het bouwen van een eerste werkende versie?
Met een middag of twee ben je een heel eind. De meeste tijd gaat niet in het script zitten, maar in het kiezen van goede contextkaarten en het testen met echte vragen.
Kan ik dit ook voor een team gebruiken?
Ja, maar begin klein. Deel de tool eerst met één collega en kijk welke vragen mislopen. Daarna kun je rechten en gedeelde projectmappen toevoegen.
De tool is nu geen eindpunt, eerder een maatje dat af en toe een goed antwoord geeft en soms hard mis zit. Dat is precies genoeg om mijn projectmap weer te gebruiken zonder me eraan te ergeren. En elke keer dat ik een bestand sneller vind, win ik een paar minuten voor het echte werk.

