planning
Case-study
ISKEAY
ISKEAY is mijn eigen OSINT-platform voor onderzoek in openbare bronnen. Het is geen simpele zoekmachine: de scan moet ook laten zien waar informatie vandaan komt, wat nog onzeker is en welke signalen elkaar tegenspreken.
59
tools voor openbare bronnen
36
extra adapters
FastAPI + Next.js
backend en frontend
Mistral
agent die tools kiest
Hoe ISKEAY is opgebouwd
agent, bewijslaag, bronchecks en dashboard
controle
Bewijslaag
voortgang
Werkqueue
dekking
Extra bronnen
mogelijkheden
Toolcatalogus
frontend
Dashboard
Product flow
Van een losse aanwijzing naar een controleerbaar onderzoek.
Ik heb ISKEAY gebouwd rond een simpele regel: veel vinden is niet genoeg. Je moet ook kunnen uitleggen waarom iets relevant is, welke bronnen zijn gebruikt en waar de twijfel zit.
Input
Een onderzoek kan beginnen met iets kleins: een naam, username, mailadres, telefoonnummer, profiel-URL of afbeelding. Als de input te vaag is, kan de chat eerst doorvragen.
Live scan
Tijdens de scan zie je welke tools lopen, wat al gevonden is en waar de scan nog mee bezig is. Je hoeft dus niet te wachten op een zwart-wit eindrapport.
Rapport
Na afloop staat alles in duidelijke tabs: accounts, mogelijke matches, e-mails, identifiers, risico-signalen, timeline, graph, bewijs, open vragen en exports.
System map
Onder de UI draait een complete onderzoeksmachine.
De waarde zit vooral onder de oppervlakte: ISKEAY plant werk, bewaart bewijs, remt te snelle conclusies af en laat live zien welke onderdelen nog open staan.
stap 1
Input
naam, username, mail, telefoon, url of afbeelding
stap 2
Plan
de agent kiest uit bekende tools en houdt providerstatus bij
stap 3
Tools
bronnen, betrouwbaarheid en twijfel worden apart bewaard
stap 4
Bewijs
graph, open vragen, voortgang en exports blijven zichtbaar
Backend
FastAPI houdt de scan bij elkaar.
De backend combineert routes, job state, live status, vaste resultaatstructuren en exports. Aan de buitenkant is het modulair, maar de scan zelf blijft traceerbaar omdat state en resultaten centraal worden bijgehouden.
FastAPI als centrale backend
Search, assistant, ALLES, health, admin en cases hebben eigen routes, maar scanstatus, jobs en resultaten blijven op een vaste plek bij elkaar.
Een vast resultaatmodel
Welke route je ook gebruikt, de output wordt teruggebracht naar dezelfde structuur: accounts, e-mails, usernames, telefoons, domeinen, graph data, fases en bewijsstatus.
Async scans
Scans draaien als jobs. De UI krijgt live updates via SSE, kan terugvallen op polling en kan later exports maken zonder de hele trace onnodig groot op te slaan.
Persistence
SQLite is de standaard job store. Er is ook een MySQL-pad, plus aparte opslag voor graph data, bewijsregels en cases.
Agent engine
De agent kiest stappen, onthoudt context en wacht met conclusies.
Mistral function-calling
De agent krijgt een lijst met beschikbare tools en laat Mistral kiezen welke stap op dat moment logisch is.
AgentMemory
Memory bewaart wat al bekend is: entiteiten, accounts, bewijsregels, tegenstrijdigheden, timeline, pivots, geprobeerd inputmateriaal en graph data.
Taakplanning
Werk wordt verdeeld over snelle API-calls, web fetches, archieven, graph-taken en critic feedback. Checks voorkomen dat een scan te vroeg klaar wordt gemeld.
GraphActionQueue
Onderzoeksacties blijven traceerbaar met statussen zoals queued, running, succeeded, no-hit, failed en rate-limited.
Parallel werk
Onafhankelijke tool calls kunnen tegelijk draaien, met dedupe en limieten, zonder dat resultaten buiten de normale verwerking vallen.
Critic-laag
Een aparte supervisor kijkt naar de scanstatus en geeft gerichte vervolgacties terug, maar voert zelf geen tools uit.
Evidence
Een hoge score telt pas als het bewijs klopt.
De sterkste technische keuze is dat onzekerheid zichtbaar blijft. Ruwe hits, no-hits, tegenstrijdigheden en ontbrekende bronnen krijgen allemaal een plek in het model.
Evidence Court
Een score krijgt een plafond als bewijs zwak, tegenstrijdig of niet onafhankelijk genoeg is. Veel ruwe hits worden dus niet automatisch zekerheid.
Tegenstrijdigheden
Conflicterende signalen worden zichtbaar gemaakt in plaats van weggemiddeld. De UI kan ernst, bewijs en aanbevolen vervolgacties tonen.
StopPolicy
Afronden wordt geblokkeerd als belangrijke acties, bronnen, tegenstrijdigheden of expliciete anchors nog open staan.
Extra checks
False-positive review, negative evidence, temporal footprint, media provenance, query generation en pivot budgeting helpen om minder snel te veel te concluderen.
Tools
59 tools, maar niet als losse trucjes.
De tools zitten achter een registry, hebben duidelijke schemas en worden genormaliseerd voordat ze in het rapport komen. Sommige werken alleen als de juiste provider keys, lokale services of veiligheidschecks klaarstaan.
Dorking en search
Gerichte zoekqueries via lokale en optionele providers, met extractie van URLs, snippets, usernames, e-mails, telefoons en domeinen.
Username en account discovery
Brede username coverage en directe platformchecks, met expliciete waarschuwing dat raw account hits verificatie nodig hebben.
Externe runners
Wrappers rond externe OSINT runners en CLIs. Output wordt genormaliseerd, gereduceerd en waar nodig geredact.
Profiel en context
Publieke profielpagina's en expliciete websites worden gescrapet voor links, bio, contactpunten, context en vervolgankers.
Social graph en posts
Publieke activiteit, posts, mentions, links en gerelateerde profielen worden gebruikt als context, niet als harde identiteit zonder corroboratie.
Analyse zonder nieuwe bronnen
Analyse-tools voegen geen nieuwe externe data toe, maar wegen bestaande findings, patronen, correlaties en confidence.
E-mail en identiteit
E-mail discovery, MX/SMTP-achtige checks, Holehe, Gravatar, EmailRep, Hunter en GHunt-achtige verrijking wanneer providers zijn geconfigureerd.
Telefoon
Telefoonnummers worden geparsed en verrijkt met regio, carrier, type en optionele PhoneInfoga of NumVerify signalen.
Breach, paste, dark web en leaks
Exposure-lanes zoeken publieke breach, paste, stealer, dark-web index en high-noise leak signalen die altijd geverifieerd moeten worden voordat ze als zekerheid worden beschouwd.
Domeinen en organisaties
Passieve domain, DNS, certificate, ASN, archive, registry en corporate intelligence voor scoped domeinen, organisaties en publieke records.
Image en metadata
Afbeeldingen en bestanden kunnen worden onderzocht via perceptual hashes, EXIF/OCR/GPS metadata en optionele reverse-image providers.
Platformactiviteit
Platform-specifieke publieke activity tools halen alleen beschikbare publieke metadata op en blijven gevoelig voor platformwijzigingen.
Veilige terminal-fallback
Een allowlisted terminal executor kan bekende CLIs draaien, met private-host protections en zonder ongecontroleerde shell-toegang.
Extra bronnen
36 adapters voor bronnen die anders blijven liggen.
Deze laag vervangt de core tools niet. Hij vult gaten met publieke datasets, webstandaarden, archieven, developer-ecosystemen, metadata en identity hints. Een deel is bewust opt-in of alleen geschikt voor self-audit.
ALLES
Naast de agent is er ook een brede scanroute.
ALLES is de oudere, brede achtergrondpipeline. Hij doorloopt meerdere fasen en brengt de resultaten daarna terug naar dezelfde structuur. Niet de enige route in ISKEAY, maar wel belangrijk voor de breedte van het project.
Frontend
De UI laat zien wat er tijdens de scan gebeurt.
Chat als startpunt
De UI bewaart sessie, berichten en search id lokaal. Je kunt tekst, profieldata, URLs en afbeeldingen meegeven en daarna live meekijken.
Live dashboard
SSE streaming met fallback polling toont voortgang, actieve taken, tool calls, extra bronchecks, critic feedback, memory snapshot en fouten tijdens de scan.
Graph view
Cytoscape toont nodes, filters, layouts, opgeslagen posities, selectie-acties, analyst flags, notes en PNG/JSON exports.
Bewijsdetails
Bewijsregels kunnen bron-URL, redirect chain, hash, excerpt, betrouwbaarheid en raw properties tonen zonder de context te verbergen.
Safety
Publieke bronnen, duidelijke grenzen.
Deze case-study publiceert geen echte scanresultaten en zet ISKEAY niet neer als surveillanceproduct. Het project hoort bij legaal, afgesproken en proportioneel onderzoek in openbare bronnen.
De code is te bekijken, maar niet bedoeld als vrij te misbruiken surveillance-tool.
De juiste use-case is legaal, afgesproken en proportioneel onderzoek in openbare bronnen.
Deze portfolio bevat geen echte scan-output, secrets of gevoelige persoonsgegevens.
Resultaten hangen af van lokale services, API keys, quota en veranderingen op platformen.
Platform scraping kan weinig opleveren door loginmuren, rate limits of anti-scrape maatregelen.
Leak-, adult- en dark-web signalen zijn ruisgevoelig en worden niet automatisch vertrouwd.
Sommige adapters zijn bewust opt-in, handmatig, kandidaat of alleen bedoeld voor self-audit.
Wat dit bewijst
Wat dit project over mijn manier van bouwen laat zien.
Een backend die langlopende scans, live updates, status polling en exports bij elkaar houdt.
Een frontend die niet alleen resultaten toont, maar ook voortgang, graph data en bewijsdetails begrijpelijk maakt.
Een agentlaag met tool schemas, memory, scheduling, graph actions, critic feedback en afrondchecks.
Een bewijsmodel dat bronnen, twijfel, tegenstrijdigheden en confidence caps serieus neemt.
Provider hygiene: configuratiechecks, ontbrekende dependencies, rate limits en guarded terminal execution.
Bewuste veiligheidskeuzes: geen echte persoonsdata in de portfolio en geen claims die de techniek niet kan dragen.