Technical PRD
Feature overview
Thomas's list. What's missing from Dean's standpoint:
- onboarding flow, getting people to understand prompts and core primatives
- nav changes per designs
- updated design system for more modern interface
- select multiple files in UI
- manually expose an empower source and dataset in the UI
- UI work around "document library"
- document sharing
Priority 0 - Most important
Goal: customer can manually upload a file and allow them to specify them as a dataset in the UI. This will upload to our file storage. We will assess our threat model since this v1 will not include file encryption or antivirus on file uploadwill only include limited antivirus on file upload, and no encryption. We might choose to only expose this feature to a select group of customers to limit attack surface.
-
FEATURE: Improved Chat context and Memory (allowing infinite conversation sessions)
-
FEATURE: Query a Document (limited file types initially)
- Upload to Blob Storage, trigger virus scan with storage service, plumb to document AI service, embed
- Process async with Celery?
-
FEATURE: Document Collections (user defined indices by aggregating documents into single index)
-
TECH DEBT: Refactor the API and UI for Consistency and Clarity (to include basic navigation changes)
-
QOL FEATURE: "Continue" Detection (finish_reason=length) and UI
-
QOL FEATURE: Edit and Continue from Previous Message in a Session
Don's suggestions:
-
- Enable Azure Defender for cloud on the storage accounts that host customer data.
- Disable sensitive data scanning, enable virus scanning @ .15 / gb for up to 5 TiB / month
Deploy a EventGrid to use for this.
- Disable sensitive data scanning, enable virus scanning @ .15 / gb for up to 5 TiB / month
- Wire the virus scans back to a web hook or similar on our side.
- Enable attribute based access policy:
- Enable Azure Defender for cloud on the storage accounts that host customer data.
-
\- NEVER allow download after uploaded.
- When a detection occurs, delete the file.

Priority 1
-
FEATURE: Support multiple documents by transitioning API to Async (Daphne) -> NEEDS AN ADR
-
FEATURE: AntiVirus on File Uploads (via AV API? AV DaemonSet?) -> NEEDS AN ADR
- Basic mitigation (https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html)
- Image Processing/Manipulation
- ClamAV Daemonset? API?
-
FEATURE: Encryption (messages and document text) -> NEEDS AN ADR
Chat:- Single Key w/ rotation (90 days) -> will require an async task to update periodically (or automatically if loading the conversation)
- Unique Key per User w/ rotation -> same as above
- Unique Keys per Shared Sessions (with the introduction of shared sessions) -> same as above
Documents:
- Single Key w/ rotation
- User Key by creator
- Key per document
-
This means users can have access to documents inside of a session context without needing to have the cipher key shared with them
** User password as key
1. Not saved? Means less liability for us, but also no aid in recovery (they lose the password, they're SOL)
2. Saved in DB but encrypted with Master Key? Means one key to rule them all, but allows admins of companies to decrypt conversations
3. Individal keys stored in keyvault (access validated with password via hash)? Losing one doesn't mean losing all, but tricky to maintain*** User choice in PROTECTED session vs. not? PROTECTED documents can only be queried in PROTECTED sessions? Allows for more user agency in managing their own protection, but adds a bit of complexity to the encrypting/decrypting logic (Can a user turn on protection mid-session? Are all previous messages then encrypted or only from the activation point on? Can they exit protection (this one seems like it adds unnecessary complexity without clear use-case?)
Priority 2
-
FEATURE: Document Ingestion Engine 1.0 (maybe a Ray cluster?)
-
FEATURE: Document Ingestion Engine 2.0 (Advanced: Databricks? Spark? Selected data sources/connector--much like Empower) -> NEEDS AN ADR
-
FEATURE: Custom Indexing Patterns and Dynamic Query Engine Initialization from DSL/Structured Metadata (Think: Model-Building for Unstructured Data)
-
FEATURE: Data Migration from C# to Python
Priority 3
-
FEATURE: Websockets for improved chat and data querying (with more complex/dynamic query engines due to stateful sessions)
-
FEATURE: Microsoft AD Authentication (for Berkshire)
-
FEATURE: Plugin / Adapter Architecture and Specs (for integrating 3rd party tools, query engines, models, etc.--internal & external)
-
FEATURE: Add RUM to the UI (Datadog/OpenTelemetry)
-
FEATURE: Accessibility (via TTS, Whisper, etc.)