Hugo Fund Formation Platform14 Jun, 03:55 CET

Upload + Parsing

Current intake and review flow used by Hugo today.

Live flow

  1. POST /funds/:fundSlug/upload in src/pages/upload/upload-create.tsx validates request/body and delegates to ingestIslUpload.
  2. ingestIslUpload in src/services/isl-ingest.ts calls ingestUpload in src/services/ingest.ts.
  3. Ingest writes a source row to side_letter_versions (commitment-scoped) with parse_state='queued', stores the file in R2, and sends PARSE_QUEUE.
  4. Parse worker entrypoint src/queues/parse-queue.ts invokes parseDocumentJob.
  5. Parse orchestrator in src/services/parse.ts loads parser inputs, calls classification, resolves context, and writes only draft artifacts:
    • clause_intake_drafts
    • clause_intake_sources
    • document_extracted_paragraphs
    • clause_intake_reuse_suggestions
    • clause_intake_draft_grants (MSL only)
  6. Parsing updates source row parse state and review_state to pending; no operative clause applicability is created yet.
  7. Human review happens at src/pages/upload-review/handlers.tsx and promotes selected drafts through src/services/review.ts.
  8. On confirmation, reviewed clauses are written into clauses and document_clause_occurrences becomes live; source row is marked review_state='reviewed' and set as current.
  9. Retry and status endpoints read the latest parse attempt and draft state from:
    • src/pages/upload/parse-status-handlers.tsx
    • src/pages/upload/inline-status-handler.tsx
    • src/db/documents.ts (state + latest parse error)

Route wiring

  • src/routes/page-upload-routes.tsx wires page upload and upload-review endpoints.
  • src/pages/upload/handlers.tsx exports the route entry points.
  • src/pages/upload/queries.ts provides inbox rows and tab mapping (including the UI alias of reviewed as complete).

Review boundary

Parsing writes only draft artifacts and metadata. The system does not treat parser output as final clause assignments until the review action confirms clauses. That confirmation step is where live records are created or re-used and where commitment_clause_assignments and is_current are updated.

Source files

Canonical current flow implementation is split across:

  • src/services/parse.ts (orchestration + queue/attempt alignment)
  • src/services/parse-persistence.ts (draft persistence)
  • src/services/review.ts (review confirmation/rejection and live promotion)
  • src/services/document-parser.ts / src/services/isl-classifier.ts
  • src/services/isl-parse-context.ts
  • src/services/upload-review-load.ts / src/pages/upload-review/actions.tsx
  • src/services/document-source.ts and src/queues/scheduled-sweep.ts for resilience and recovery.
Ctrl+K to open · ↑↓ navigate · Enter go · Esc close
Copied