Skip to main content

Journey Overview

1. SCAN Journey (Primary Use Case)

The main workflow for scanning codebases for AI artifacts.

Entry Points

EntryUser GoalTypical User
ai-finder scan .Quick scan, text outputDeveloper exploring
ai-finder scan . -f cyclonedxGenerate SBOM for complianceSecurity team
ai-finder scan . -f spdxGenerate SBOM (SPDX format)Compliance officer
ai-finder scan . -rInclude relationshipsArchitect
ai-finder scan . --no-enrichFast scan, no API callsCI/CD pipeline

Journey Flow

Scan Exit States

ExitEventUser Action
Success - No findingsscan.findings.noneMay run on different path
Success - Few findingsscan.findings.fewReview SBOM
Success - Many findingsscan.findings.manyCompliance review
Error - File not founderror.scan.file_not_foundCheck path
Error - Permission deniederror.scan.permission_deniedFix permissions
Error - Parse errorerror.scan.parse_errorReport bug

2. IDENTIFY Journey

Single file model identification workflow.

Entry Points

EntryUser Goal
ai-finder identify model.ggufIdentify unknown model file
ai-finder identify model.gguf -f jsonGet structured metadata
ai-finder identify model.gguf --no-enrichQuick local-only check

Journey Flow

Identify Exit States

Exit CodeMeaningEvent
0Model recognizedidentify.recognized.yes
1Model not recognizedidentify.recognized.no
2Error occurrederror.identify.*

3. KB Journey

Knowledge Base setup and maintenance workflow.

Entry Points

EntryUser Goal
ai-finder kb initInitialize local KB
ai-finder kb statusCheck KB state
ai-finder kb crawl huggingfacePopulate with HuggingFace models
ai-finder kb crawl allFull KB population
ai-finder kb lookup pkg:huggingface/...Search KB

Journey Flow

4. Error Paths

All possible error scenarios across the application.

5. Funnel Definitions

Pre-built funnels for analytics.

Primary SBOM Generation Funnel

cli.started

command.scan.started

scan.format.cyclonedx  OR  scan.format.spdx

scan.findings.{few|many}

scan.enrich.enabled

enrichment.kb_hit  OR  enrichment.live_fetch

command.scan.completed (success=true)
Drop-off points to monitor:
  • scan.findings.none → No AI found (wrong directory?)
  • enrichment.live_fetch_failed → Network issues
  • error.scan.* → Crashes

Model Identification Funnel

cli.started

command.identify.started

identify.recognized.yes

identify.kb_match.found

command.identify.completed (success=true)
Drop-off points:
  • identify.recognized.no → Unknown format
  • identify.kb_match.not_found → Model not in KB

KB Adoption Funnel

command.kb.init.started

command.kb.init.completed

kb.crawl.source.{huggingface|all}

kb.crawl.result.success

scan.kb_source.local

enrichment.kb_hit
Drop-off points:
  • kb.crawl.result.empty → Crawl failed
  • kb.crawl.*.errors.yes → Partial failure

Error Recovery Funnel

error.{cmd}.{category}

cli.started (same session? retry)

command.{cmd}.completed (success=true)

6. Key Metrics

MetricCalculationTarget
SBOM Success Ratescan.completed(success) / scan.started>95%
Enrichment Hit Rateenrichment.kb_hit / (kb_hit + live_fetch + not_found)>70%
Model Recognition Rateidentify.recognized.yes / identify.started>80%
KB Adoptionscan.kb_source.local / scan.enrich.enabled>50%
Error Rate by Typeerror.*.&#123;category&#125; counts<5% each
Network Failure Rateenrichment.live_fetch_failed / live_fetch<10%

7. User Segments

SegmentIdentifying EventsBehavior
Compliance Userscan.format.cyclonedx OR scan.format.spdxGenerates SBOMs
Developerscan.format.text + identify.*Exploring codebase
CI/CD Pipeline--no-enrich flag, quiet modeAutomated scanning
Power Userkb.crawl.* + scan.kb_source.localLocal KB setup
New Usercli.started without kb.initFirst-time use