How vineshf1/prova works
Prova turns a user’s PDFs into searchable, page-cited answers and extracted deadlines, then supports tasks, notifications, sharing, and approval-gated actions. The main workflow runs from upload through asynchronous parsing and indexing to chat retrieval and cited responses. The graph also shows account access, task/notification management, and billing and privacy capabilities documented in the README. Some routes and integrations are represented only by their enclosing source directories because their implementations were not sampled; those links are omitted where wiring is uncertain.
Main entry points: api.ts API client · ingestion.py Ingestion pipeline · tools.py Search and tools · page.tsx Dashboard
Components 23
User experience
- Dashboard
frontend/src/app/page.tsx - Chat pane
frontend/src/components/ChatPane.tsx - API client
frontend/src/lib/api.ts - Chat SSE client
frontend/src/lib/sse.ts
Document ingestion
- Document routes
backend/app/routers/documents.py - Ingestion worker
backend/app/tasks/worker.py - Ingestion pipeline
backend/app/tasks/ingestion.py - PDF parsing
backend/app/ingestion.py
Search and answers
- Chat routes
backend/app/routers/chat.py - Agent loop
backend/app/agent/loop.py - Approval graph
backend/app/agent/graph.py - Search and tools
backend/app/agent/tools.py
Tasks and approvals
- Task management
backend/app/routers/tasks.py - Pending actions
backend/app/routers/pending_actions.py - Notifications
backend/app/routers/notifications.py
Account and services
- Authentication
backend/app/routers/auth.py - Billing
backend/app/routers/billing.py - Document sharing
backend/app/routers - Privacy controls
backend/app/routers/privacy.py - Tenant data access
backend/app/database.py
Other components
- User
- NVIDIA NIM
- Postgres and pgvector
Connections 34
- User → Dashboard: uses
- Dashboard → API client: calls API
- Dashboard → Chat pane: opens chat
- Chat pane → Chat SSE client: streams chat
- API client → Authentication: auth requests
- API client → Document routes: document requests
- API client → Chat routes: chat requests
- API client → Task management: task requests
- API client → Pending actions: approval requests
- API client → Notifications: notification requests
- API client → Billing: billing requests
- API client → Privacy controls: privacy requests
- Document routes → Ingestion worker: dispatches async job
- Ingestion worker → Ingestion pipeline: runs pipeline
- Ingestion pipeline → PDF parsing: parses and chunks
- Ingestion pipeline → NVIDIA NIM: embeds and extracts
- Ingestion pipeline → Postgres and pgvector: writes document data
- Ingestion pipeline → Task management: drafts deadline task
- Ingestion pipeline → Notifications: publishes updates
- Chat routes → Approval graph: runs conversation
- Approval graph → Agent loop: dispatches turn
- Agent loop → Search and tools: invokes tools
- Agent loop → NVIDIA NIM: requests answer
- Search and tools → Postgres and pgvector: searches documents
- Search and tools → NVIDIA NIM: embeds queries
- Search and tools → Pending actions: creates pending actions
- Approval graph → Postgres and pgvector: checkpoints state
- Tenant data access → Postgres and pgvector: scopes tenant access
- Task management → Postgres and pgvector: reads and updates tasks
- Pending actions → Postgres and pgvector: stores decisions
- Notifications → Postgres and pgvector: reads notifications
- Document sharing → Postgres and pgvector: stores share access
- Billing → NVIDIA NIM: optional payment integration
- Chat pane → Chat SSE client: renders progress