Utrecht heeft jou nodig!
GEM is een open source virtuele assistent die als doel heeft de digitale dialoog tussen inwoner en overheid te verbeteren. Door samenwerking tussen gemeenten, VNG en marktpartijen wordt de assistent continu slimmer via AI en machine learning. GEM is bedoeld om herbruikbare, schaalbare dienstverlening te leveren, waarbij total cost of ownership daalt en de kwaliteit stijgt naarmate meer gemeenten deelnemen. GEM is als use-case gedefinieerd door VNG binnen de bredere ontwikkeling common ground. Een landelijke beweging die een fundamentele vernieuwing van het gehele gemeentelijke IT dienstverleningslandschap behelst.
Opdrachtomschrijving
De Technical Lead speelt een sleutelrol in de technische doorontwikkeling van GEM. Je werkt hands-on mee (60–70% van de tijd) aan het bouwen, uitbreiden en verbeteren van het platform. Tegelijk bewaak je de technische koers, stuur je het ontwikkelteam aan en geef je richting aan langetermijnvisie en architectuur. Je fungeert als verbindende schakel tussen techniek, stakeholders en gebruikers.
Kernverantwoordelijkheden
1. Ontwikkeling en Technische Realisatie
- Bouwen en verbeteren van componenten in Python (Django, FastAPI/Sanic), React, Docker.
- Meedenken en implementeren van architectuuroplossingen met aandacht voor schaalbaarheid, veiligheid en performance.
- Implementeren van LLM/RAG-oplossingen op basis van Azure OpenAI en vector databases (zoals Qdrant).
- Actieve inbreng in ontwikkeling van AI-functionaliteiten zoals feedbackloops en machine learning.
- Verantwoordelijk voor veilige DevOps-infrastructuur en on-premise hostingoplossingen.
- Uitwerken en bewaken van de technische visie op doorontwikkeling (generatieve AI, omnichannel integratie).
- Aansturen van een multidisciplinair ontwikkelteam.
- Bewaken van kwaliteit, consistentie en open source-principes in ontwikkelcyclus.
- Prototyping, technische keuzes maken en code review.
- Onderhouden van stakeholdercontacten met gemeenten, VNG, leveranciers (zoals bijvoorbeeld Spotler, Coosto).
- Technisch aanspreekpunt voor product-owner, architecten, leveranciers en gemeenten.
- Vertalen van klantbehoeften naar technische specificaties en werkbare oplossingen.
- Deelname aan roadmap-overleggen en leveren van voortgangsrapportages.
- Presentaties, demo’s en documentatie voor interne en externe belanghebbenden.
Resultaat van de opdracht
De Technical Lead heeft GEM technisch doorontwikkeld met nieuwe en verbeterde functionaliteiten (Python, React, DevOps) en geïntegreerde AI-oplossingen (Azure OpenAI, vector databases). Er ligt een gedragen technische visie voor verdere ontwikkeling (generatieve AI, omnichannel-integratie), het ontwikkelteam is succesvol technisch aangestuurd, en het platform is stabiel, veilig en schaalbaar opgeleverd voor gebruik door deelnemende gemeenten.
Jij hebt
- Afgeronde hbo-opleiding in een relevante richting zoals informatica, software engineering of AI.
- Minimaal 5 jaar ervaring als Technical Lead of Senior Developer.
- Je hebt eerder vergelijkbare rollen gehad en gewerkt voor/bij/in de publieke sector.
- Uitgebreide ervaring met:
- Python, Django, Sanic/FastAPI
- React, TypeScript, HTML/CSS
- Docker, CI/CD, Nginx, Ansible
- Cloud-native architecturen, beveiliging, DPIA, privacy by design
- Ervaring met AI-ontwikkeltrajecten is een pre.
- Ervaring met open source-ecosystemen en microservices-architectuur.
Persoonlijkheid en competenties
- Analytisch, oplossingsgericht en strategisch denker.
- Communicatief vaardig en in staat om technische inhoud helder over te brengen.
- Verbindend leider met oog voor samenwerking en maatschappelijke relevantie.
- Hands-on mentaliteit en plezier in technische uitdagingen.
Goed om te weten
Gesprekken zijn gepland in de week van 21 aug. De manager neemt contact op indien je wordt uitgenodigd voor een gesprek. Dit gesprek kan of fysiek of digitaal plaatsvinden.
Het opvragen van referenties kan in een latere fase onderdeel zijn van de procedure.
De weging van de antwoorden op de vragen in de uitvraag bepaalt de rangorde van de offertes op basis van prijs en kwaliteit. Hierbij hanteren we een weging van circa 25% voor het geoffreerde tarief. De kwaliteit voor circa 75%.
Alleen de 5 hoogst scorende offertes worden nader gewogen op de kwaliteit. Indien het aantal offertes de 10 niet overstijgt kunnen alle offertes nader op de kwaliteit beoordeeld worden.
Bij gebleken geschiktheid bestaat er een kans dat er nog een kandidaat uit deze procedure wordt aangenomen.
Wanneer de hierboven beschreven opdracht door omstandigheden niet binnen de voorziene periode kan worden afgerond behoudt Gemeente Utrecht zich in alle geval het recht voor de opdracht te verlengen tot het moment dat een zorgvuldige afronding en overdracht kan worden gerealiseerd.
Gemeente Utrecht behoudt zich het recht voor om gedurende de eerste 3 maanden na gunning, bij gebleken ongeschiktheid of tussentijdse beëindiging, de opdracht te gunnen aan de nummer 2 aanbieder of opvolgend.
Gemeente Utrecht heeft het voornemen om per mei 2026 gebruik te maken van een broker. Indien dit voornemen wordt gerealiseerd, zullen de overeenkomsten die doorlopen na 1 november 2026 via de broker worden gehercontracteerd. De hercontractering zal in dat geval plaatsvinden in oktober/november 2026. Bij deze hercontractering blijven de inhuurtermijn en het tarief ongewijzigd.
Eisen
- Heeft u bij vraag 2.1.3. 'ZZP Rechtstreeks' ingevuld en heeft u gedurende de afgelopen 12 maanden voor meer dan 70% van de tijd (25 uren per week of 8 maanden per jaar) gewerkt als rechtstreekse zzp’er (zonder bemiddeling en/of detachering door een bureau) bij gemeente Utrecht?
- Is de kandidaat de afgelopen 2 jaar in loondienst geweest bij gemeente Utrecht voor dezelfde/vergelijkbare werkzaamheden?
- Je hebt minimaal een afgeronde Hbo-opleiding in een relevante richting zoals informatica, software engineering of AI.
- Ik bevestig dat ik de bovenstaande vragen naar waarheid heb ingevuld:
Wensen
- Geef aan welke vorm van inhuur van toepassing is op de aangeboden kandidaat.
- Detachering
- ZZP rechtstreeks
- ZZP via tussenkomst/DGA
- Is de aangeboden kandidaat een zzp’er en wordt deze rechtstreeks voorgesteld (zonder bemiddeling en/of detachering door een bureau)? Indien 'JA' wordt ingevuld bij deze vraag, dan ga je akkoord met onderstaande 7 zzp-voorwaarden en ga je akkoord met periodieke controles hierop, die minimaal één keer per 6 maanden door de gemeente zullen worden geïnitieerd.
- De zzp’er werkt maximaal 70% van de gewerkte uren per jaar voor dezelfde klant of opdrachtgever (maximaal 25 uren per week of maximaal 8 maanden per jaar)
- De zzp’er heeft minimaal 3 klanten of opdrachtgevers per jaar
- De zzp’er is zelfstandig wat betreft uitvoering van werk
- De zzp’er maakt gebruik van eigen materiaal (laptop, telefoon etc.)
- De zzp’er is vervangbaar (bijv. in geval van uitval of ziekte)
- De zzp’er factureert (en krijgt geen loonbetaling of anderszins een vergoeding)
- De zzp’er krijgt niet doorbetaald voor niet-gewerkte uren (bijv. in geval van vakantie)
- Je hebt minimaal 5 jaar ervaring als Technical Lead of Senior Developer
- Kun je meer toelichting geven over je rol als Technical Lead of (senior) Developer? Vertel over je opdracht en het resultaat.
- Je hebt eerder vergelijkbare rollen gehad en gewerkt voor/bij/in de publieke sector.
- Uitgebreide ervaring met:
- Python, Django, Sanic/FastAPI
- React, TypeScript, HTML/CSS
- Docker, CI/CD, Nginx, Ansible
- Cloud-native architecturen, beveiliging, DPIA, privacy by design
- Heb je ervaring met AI-ontwikkeltrajecten?
- Heb je ervaring met open source-ecosystemen en microservices-architectuur?
- Voeg hier je CV toe. Je CV is max 3 pagina's enkelzijdig en toont een volledig overzicht van je werkzaamheden tot dusver. Het CV dient ter verificatie van de antwoorden op voorgaande vragen en wordt inhoudelijk beoordeeld op kwaliteit. Daarnaast vermeldt het CV huidige nevenfuncties (bezoldigd en onbezoldigd) zodat de vacaturehouder mogelijke belangenverstrengeling kan uitsluiten. Je CV is in het Nederlands opgesteld en in Pdf-formaat.
- Prijs is exclusief BTW en inclusief alle bijkomende kosten. Let op: het maximum uurtarief is: € 115,-. Het met een hoger tarief offreren dan het aangegeven maximum leidt tot uitsluiting van verdere deelname.