# Projects **Projects** are organizational containers that group related content based on business context or workflows. Unlike categories (which classify content by its properties), projects organize content by how it's being used—whether that's a research initiative, compliance audit, product launch, or client engagement. ## What is a Project? A project is a named collection of content within a dataspace. Think of it as a folder or workspace that brings together documents relevant to a specific business objective. **Key Characteristics**: - **Business-focused**: Organize by initiative, not by document type - **Many-to-many**: Content can belong to multiple projects simultaneously - **Cross-category**: Projects can contain content from any category **Example Project Structure**: ``` Project: "Loan Application - Smith, John (LA-2024-1547)" ├── Loan Application Form (Category: Application) ├── Credit Report (Category: Financial Document) ├── Employment Verification (Category: Verification Document) ├── Property Appraisal (Category: Appraisal Report) └── Approval Memo (Category: Internal Memo) ``` All these documents have different categories, but they're all part of the same loan application process. ## Creating and Managing Projects Projects support full CRUD operations (Create, Read, Update, Delete) via the Workspace API. You can create projects within a dataspace, list all projects, update project details (name and description), and delete projects when they're no longer needed. **Note**: Deleting a project removes only the project container itself—the content it contains remains in the dataspace. For complete API documentation, see the [Workspace API Reference](/api/workspace-openapi). ## Adding Content to Projects Content can be associated with and dissociated from projects at any time. A single piece of content can belong to multiple projects. ### Associate Content with a Project ```bash POST https://sws-{workspaceId}.cloud.syncdocs.ai/api/projects/{dataspaceId}/{projectId}/content/{contentId} Authorization: Bearer ``` **Example**: Add a credit report to the loan application project: ```bash POST https://sws-{workspaceId}.cloud.syncdocs.ai/api/projects/sds-abc12345/proj-550e8400-uuid/content/cnt-12345678-uuid Authorization: Bearer ``` This creates an association between the project and the content. The content can still be associated with other projects. ### Remove Content from a Project ```bash DELETE https://sws-{workspaceId}.cloud.syncdocs.ai/api/projects/{dataspaceId}/{projectId}/content/{contentId} Authorization: Bearer ``` This removes the association but does **not** delete the content itself. ### Get All Content in a Project ```bash GET https://sws-{workspaceId}.cloud.syncdocs.ai/api/projects/{dataspaceId}/{projectId}/content Authorization: Bearer ``` **Response**: ```json { "contentIds": [ "cnt-12345678-uuid", "cnt-23456789-uuid", "cnt-34567890-uuid" ] } ``` ### Many-to-Many Relationships Because projects use a many-to-many relationship with content, you can organize the same documents in multiple ways: **Example**: ``` Content: "Credit Report - Smith, John" ├── Project: "Loan Application - Smith, John (LA-2024-1547)" (mortgage application) ├── Project: "Credit Review - October 2024" (monthly credit review batch) └── Project: "Compliance Audit Q4 2024" (sample for audit review) ``` This flexibility allows different teams to organize the same content according to their workflows without duplication. ## Querying Project Content Projects become especially powerful when combined with queries. You can scope queries to specific projects to focus AI responses on relevant context. ### Project-Scoped Query ```bash POST https://sws-{workspaceId}.cloud.syncdocs.ai/api/content/{dataspaceId}/query Authorization: Bearer Content-Type: application/json { "query": "What is the applicant's employment status and annual income?", "context": { "contentFilters": { "projectId": "proj-550e8400-uuid" } } } ``` **How This Works**: 1. Query filters content to only those in the specified project 2. Vector search operates on the filtered set 3. AI response is generated using only project-relevant documents 4. Citations reference documents within the project ### Combining Project and Other Filters You can combine project filters with other content filters: ```bash POST https://sws-{workspaceId}.cloud.syncdocs.ai/api/content/{dataspaceId}/query Authorization: Bearer Content-Type: application/json { "query": "What verification documents are still pending?", "context": { "contentFilters": { "projectId": "proj-550e8400-uuid", "categoryId": "cat-verification-uuid", "metadata": { "verificationStatus": "pending" } } } } ``` This query searches only verification documents within the project that have pending status. ### Project-Wide Research Agent ```bash POST https://sws-{workspaceId}.cloud.syncdocs.ai/api/content/{dataspaceId}/query Authorization: Bearer Content-Type: application/json { "query": "Provide a complete summary of this loan application and recommend approval or denial", "agentId": "agent-underwriting-uuid", "context": { "contentFilters": { "projectId": "proj-550e8400-uuid" } } } ``` The underwriting agent analyzes all documents in the loan application project to provide a comprehensive recommendation. ## Next Steps - [Understand Content](/concepts/content) - Learn how content relates to projects - [Explore Queries](/concepts/queries) - Use projects to scope AI queries - [Learn about Categories](/concepts/ontologies) - Compare with category-based organization - [API Reference](/api) - Complete project API documentation