How jeremykamber/kynd works
Kynd is an AI user-testing product: users provide a site, screenshot, or interview transcripts; the app runs AI personas through artifact analysis or derives personas from interviews, then presents behavioral findings and persona results. The map highlights analysis, interview-based persona generation, and documented persona chat/debate capabilities. Sampled routes show background runs and polling; unsampled wiring is omitted, and the README describes the broader product rather than detailed implementation.
Main entry points: LlmServiceImpl.ts LLM service · route.ts Interview API · GeneratePersonasFromInterviewsUseCase.ts Interview persona generation · AnalyzeArtifactUseCase.ts Artifact analysis
Components 24
User experience
- Dashboard
src/app/(app)/dashboard - Interview upload
src/ui/interviews/InterviewUploadClient.tsx - Interview pipeline
src/ui/hooks/useInterviewPipeline.ts - Analysis actions
src/actions/analyzeArtifactAction.ts - Interview action
src/actions/generatePersonasFromInterviews.ts
Testing workflows
- Analysis API
src/app/api/vps/analyze/route.ts - Report API
src/app/api/report/route.ts - Interview API
src/app/api/vps/generate-personas-from-interviews/route.ts - Artifact analysis
src/application/usecases/AnalyzeArtifactUseCase.ts - Interview persona generation
src/application/usecases/GeneratePersonasFromInterviewsUseCase.ts - Persona generation
src/application/usecases/GeneratePersonasUseCase.ts - Persona chat
src/application/usecases/ChatWithPersonaUseCase.ts - Persona debate
src/application/usecases/DebateUseCase.ts
AI and domain
- Analysis results
src/domain/entities/ArtifactAnalysis.ts - Persona model
src/domain/entities/Persona.ts - LLM service
src/infrastructure/adapters/LlmServiceImpl.ts - Artifact intake
src/infrastructure/adapters/ArtifactIntakeAdapter.ts - Persona retrieval
src/infrastructure/adapters/IdRagService.ts
Runtime services
- Remote browser
src/infrastructure/adapters/RemotePlaywrightAdapter.ts - Run results
src/infrastructure/AnalysisResultStore.ts - Persona results
src/infrastructure/PersonaGenerationStore.ts
Other components
- User
- OpenRouter
- Website or app
Connections 25
- User → Dashboard: uses
- User → Interview upload: uploads transcripts
- Interview upload → Interview pipeline: submits files
- Interview pipeline → Interview action: starts generation
- Analysis actions → Analysis API: requests analysis
- Interview action → Interview API: submits transcripts
- Analysis API → Artifact analysis: executes
- Report API → Artifact analysis: executes
- Interview API → Interview persona generation: executes
- Interview API → Persona generation: provides generator
- Artifact analysis → Artifact intake: uses intake
- Artifact analysis → LLM service: analyzes artifacts
- Artifact intake → Remote browser: loads pages
- Artifact intake → LLM service: summarizes content
- Remote browser → Website or app: visits
- Analysis API → Run results: stores results
- Interview API → Persona results: stores personas
- Interview persona generation → LLM service: extracts signals
- Interview persona generation → Persona generation: generates personas
- Interview persona generation → Persona retrieval: indexes personas
- Persona generation → LLM service: creates personas
- Persona chat → LLM service: generates replies
- Persona chat → Persona retrieval: retrieves context
- Persona debate → LLM service: runs debate
- LLM service → OpenRouter: sends prompts