How ahmedmalik07/labsaathi works
Samjho turns a CityLab lab report into cited, rule-based result classifications and a plain-language explanation, with English and Roman Urdu support. The main path is report submission, deterministic parsing (with model extraction only when parsing finds no tests), rules-based classification, explanation checks or template fallback, and a signed report-bound session. Follow-up chat uses that session and a privacy check. The README documents these behaviors; source excerpts show the analyze and chat wiring. UI wiring and several secondary routes were not sampled, so their connections are not inferred.
Main entry points: pipeline.ts Analysis pipeline · explain.ts Explanation writer · chat.ts Follow-up chat · kb.ts Knowledge access
Components 25
Report experience
- Samjho interface
src/components/SamjhoApp.tsx
API entry points
- Analyze endpoint
src/app/api/analyze/route.ts - Chat endpoint
src/app/api/chat/route.ts - Explain endpoint
src/app/api/explain/route.ts - Transcription endpoint
src/app/api/transcribe/route.ts - Reference endpoint
src/app/api/reference/route.ts - Evaluation endpoint
src/app/api/evals/route.ts
Report analysis
- Analysis pipeline
src/lib/pipeline.ts - Report cleaner
src/lib/cleaner.ts - Report parser
src/lib/parser.ts - Fallback extraction
src/lib/extract.ts - Analysis coordinator
src/lib/analyze.ts - Rules engine
src/lib/engine.ts - Reference tables
src/lib/reference.ts - Knowledge access
src/lib/kb.ts - Evaluation logic
src/lib/evals.ts
Explanation and privacy
- Engine facts
src/lib/facts.ts - Explanation writer
src/lib/explain.ts - Text guard
src/lib/guard.ts - Fallback template
src/lib/template.ts - Groq model client
src/lib/llm/groq.ts - Signed sessions
src/lib/session.ts - Follow-up chat
src/lib/chat.ts - Privacy checks
src/lib/privacy.ts
Other components
- Report submitter
Connections 23
- Report submitter → Analyze endpoint: submits report
- Analyze endpoint → Analysis pipeline: runs pipeline
src/app/api/analyze/route.ts - Analysis pipeline → Report parser: parses report
src/lib/pipeline.ts - Analysis pipeline → Fallback extraction: extracts if needed
src/lib/pipeline.ts - Report parser → Report cleaner: cleans text
src/lib/parser.ts - Analysis pipeline → Analysis coordinator: analyzes parsed data
src/lib/pipeline.ts - Analysis coordinator → Rules engine: classifies results
src/lib/analyze.ts - Rules engine → Knowledge access: uses references
src/lib/kb.ts - Knowledge access → Reference tables: exposes tables
src/lib/kb.ts - Analysis pipeline → Engine facts: builds facts
src/lib/pipeline.ts - Analysis pipeline → Explanation writer: requests explanation
src/lib/pipeline.ts - Explanation writer → Groq model client: requests model text
src/lib/explain.ts - Explanation writer → Text guard: checks text
src/lib/explain.ts - Explanation writer → Fallback template: falls back
src/lib/explain.ts - Analysis pipeline → Signed sessions: creates session
src/lib/pipeline.ts - Chat endpoint → Signed sessions: verifies token
src/app/api/chat/route.ts - Chat endpoint → Follow-up chat: requests answer
src/app/api/chat/route.ts - Follow-up chat → Privacy checks: checks message
src/lib/chat.ts - Follow-up chat → Groq model client: requests answer
src/lib/chat.ts - Explain endpoint → Signed sessions: loads facts
src/app/api/explain/route.ts - Explain endpoint → Explanation writer: re-explains
src/app/api/explain/route.ts - Reference endpoint → Knowledge access: reads tables
src/app/api/reference/route.ts - Evaluation endpoint → Evaluation logic: serves evaluations
src/app/api/evals/route.ts