BYTE ON
Software Company
TKAMOL · Documentation
BYTE ONSOFTWARE COMPANY
TKAMOL · Legal Operations SaaS · Documentation
Part I · SRS

Chapter 2 - Functional Requirements Register

Legend — implementation status: Implemented & Verified = routed + controller method + model writes; Partial = pieces missing; Present/Unverified = code exists but execution not verified; Not Found; Sakeholder Confirmation Needed.

FR-AUTH — Authentication & User Management

IDTitleRequirement statement (system shall)ActorEvidenceStatus
FR-AUTH-001Register accountThe system shall allow new legal entities (companies) to register with name, email, password, company name.PublicRegisteredUserController; routes auth/register.Implemented & Verified (UI + controller)
FR-AUTH-002Email verificationThe system shall require email verification when emailVerification enabled, using SIGNED token link; throttle 6/min.Publicauth/show?verify route; VerifyEmailController.Implemented & Verified
FR-AUTH-003Log inThe system shall authenticate using email + password with session cookie.PublicAuthenticatedSessionController.Implemented & Verified
FR-AUTH-004LogoutThe system shall end the session securely.AuthAuthenticatedSessionController::destroy.Implemented & Verified
FR-AUTH-005Forgot passwordThe system shall send a reset link (throttle).PublicPasswordResetLinkController.Implemented & Verified
FR-AUTH-006Reset passwordThe system shall accept a reset token + new password.PublicNewPasswordController.Implemented & Verified
FR-AUTH-007Confirm passwordThe system shall require password re-confirmation for sensitive actions (using inertia form).AuthConfirmablePasswordController.Implemented & Verified
FR-AUTH-008Update languageThe system shall allow users to set UI language.AuthUserController@updateLanguage, TranslationController.Implemented & Verified
FR-AUTH-0092FA (Google)The system shall store google2fa_enable/secret per user, but OAuth-level 2FA is unverified.Authusers migration.Partial / Present
FR-AUTH-010Impersonate userThe system shall allow authorized user to start impersonating another user and to leave.Auth superadminImpersonateController; Package laravel-impersonate.Implemented & Verified (routed)
FR-AUTH-011User CRUDThe system shall create/update/delete users (profile + position, department, specialties, hourly_rate, bank info).Company/AdminUserController; UserSeeder.Implemented & Verified
FR-AUTH-012User status toggleThe system shall enable/disable a user.AdminUserController::toggleStatus.Implemented & Verified
FR-AUTH-013Password reset by adminThe system shall allow admin to reset another user's password.AdminUserController::resetPassword.Implemented & Verified
FR-AUTH-014Login historyThe system shall record user logins (IP, date, type=login, details JSON).Systemlogin_histories migration.Implemented & Verified
FR-AUTH-015Audit logThe system shall write audit entries for actions (user_id, action, entity_type/id, metadata).Systemaudit_logs migration; LegalGovernanceService::logAudit.Partially (manual call-sites)

FR-WORKSPACE — Workspaces & Membership

IDTitleStatementActorEvidenceStatus
FR-WS-001Create workspaceThe system shall create workspace with name, description, owner; seeds default task stages and bug statuses.AdminWorkspaceService; WorkspaceObserver::created.Implemented & Verified
FR-WS-002Workspace settingsThe system shall store settings (timesheet, automation, email filtering, governance).Owner/Adminworkspaces.settings JSON.Implemented & Verified
FR-WS-003Tenant isolationThe system shall restrict data to current workspace.Systemworkspace_id columns, User::scopeWorkspaceScoped.Implemented (query-level, unverified isolation depth)
FR-WS-004Invite membersThe system shall invite users by email with token; expiry + accept.Owner/AdminWorkspaceInvitationController; Permission create.Implemented & Verified
FR-WS-005Role per memberThe system shall assign one of owner/manager/member/client in a workspace.Owner/Adminworkspace_members.role enum.Implemented & Verified
FR-WS-006Membership activationThe system shall track active/inactive/pending status + invited/joined dates.Systemworkspace_members.Implemented & Verified
FR-WS-007Switch workspaceThe system shall let user switch current workspace.AuthWorkspaceController::switch; users.current_workspace_id.Implemented & Verified
FR-WS-008Remove memberThe system shall remove a member and reassign maybe? Owner stays.Owner/AdminWorkspaceController::removeMember.Implemented & Verified (route + controller)
FR-WS-009Change member roleThe system shall change member's role.Owner/AdminWorkspaceController::updateMemberRole.Implemented & Verified
FR-WS-010SuspensionThe system shall block state changes when a workspace is suspended.SystemCheckWorkspaceSuspension.Implemented & Verified
FR-WS-011Capacity availabilityThe system shall track member availability_status (available/busy/away/on_leave) and max_cases.Manager/Ownerworkspace_members.Implemented (fields; consumption unverified)
FR-WS-012Default workspace limitPlan shall restrict total workspaces per user.SaaSPlanLimitService::canCreateWorkspace.Implemented (SaaS only)

FR-COMPANY — SaaS Tenant Administration

IDTitleStatementActorEvidenceStatus
FR-COMPANY-001Company create/update/deleteThe system shall manage companies (users type 'company') with profile, address, etc.Super AdminCompanyController.Implemented & Verified
FR-COMPANY-002Toggle companyThe system shall enable/disable company company user.Super AdminCompanyController::toggleStatus.Implemented & Verified
FR-COMPANY-003Reset company passwordSuper admin shall reset company user password.Super AdminCompanyController::resetPassword.Implemented & Verified
FR-COMPANY-004Company plan assignmentSuper admin shall assign/upgrade company plan.Super AdminCompanyController::getPlans/upgradePlan.Implemented & Verified
FR-COMPANY-005Default plan on trialNew company gets default plan + trial period according to plan flags.SystemUserObserver::creating + Plan::isDefault.Implemented & Verified
FR-COMPANY-006Plan order (subscription purchase)The system shall accept plan order via 30+ gateways.CompanyPlanController; InvoicePayment-related? Actually plan-orders routes + gateways.Implemented & Verified / stub exceptions
FR-COMPANY-007Plan request (trial/upgrade)User shall request plan/trial/cancellation and admin shall approve/reject.Company → AdminPlanRequestController.Implemented & Verified (routes)
FR-COMPANY-008Usage statusSystem shall expose plan usage status into UI (plan_warnings).SystemCheckPlanLimits middleware.Implemented & Verified
FR-COMPANY-009Coupon validationSystem shall validate coupon during plan purchase (min/max spend, code_type manual/auto).CompanyCouponController + modules.Implemented & Verified
FR-COMPANY-010Referral programTracking + payout; backend & UI exist; routes disabled.CompanyReferralController/comments in web.php.Partial / Not Routed
FR-COMPANY-011Storage quotaUpload check against plan storage_limit (MB).SystemPlanLimitService::canUploadFile.Implemented & Verified
FR-COMPANY-012Trial expirySystem shall redirect to plans when trial expired.SystemCheckPlanAccess.Implemented & Verified
FR-COMPANY-013Company limits on users/clients/managersPer plan.SystemPlanLimitService; Plan model accessors.Implemented & Verified
FR-COMPANY-014Commission amount trackedAmount recorded on users row.SystemUser model.Present (consumption unverified)

FR-PROJECT — Project / Case

IDTitleStatementActorEvidenceStatus
FR-PROJECT-001Create projectThe system shall create project with title, description, status, priority, dates, budget, progress, public flag.Manager/LeadProjectController, Inertia pages.Implemented & Verified
FR-PROJECT-002Workspace-scoped project accessProject list filters by workspace + tag.AllProjectController::index, scopes.Implemented & Verified
FR-PROJECT-003Update projectThe system shall update project fields.Owner/managerProjectController::update.Implemented & Verified
FR-PROJECT-004Delete projectSoft delete (timestamps present).OwnerProjectController::destroy; projects migration softDeletes.Implemented & Verified
FR-PROJECT-005Project team membersThe system shall assign/unassign members/managers/clients to project.Owner/ManagerProjectMember/ProjectClient, controller.Implemented & Verified
FR-PROJECT-006MilestonesCRUD + status + reorder milestones.Owner/ManagerProjectMilestoneController.Implemented & Verified
FR-PROJECT-007NotesAdd notes (pin/unpin, edit, delete).All membersProjectNoteController.Implemented & Verified
FR-PROJECT-008AttachmentsUpload/download/delete files on project.All membersProjectAttachmentController.Implemented & Verified
FR-PROJECT-009ProgressAuto-calculate project progress from tasks/milestones + manual update.SystemProject::calculateProgress, updateProgress.Implemented & Verified
FR-PROJECT-010Activity logRecord all project activities.SystemProjectActivity, controller.Implemented & Verified
FR-PROJECT-011Project budget per projectOne budget per project with categories and revisions (not global budget module).Owner/ManagerProjectBudget, route project/create-budget? route present.Implemented & Verified
FR-PROJECT-012Governances/allowed domainsAttach governance_settings including allowed_domains for inbound email matching.Owner/AdminProject model.Implemented & Verified
FR-PROJECT-013Public projectis_public flag.OwnerProject model.Present (consumption/visibility unverified)
FR-PROJECT-014Create project from emailAuto-create project when inbound email from approved domain/code and settings enabled.SystemEmailListenerService::processMessage + create project.Implemented & Verified (rule-based)
FR-PROJECT-015Assign manager/lawyerManager/lawyer assignment (from automation settings, random fallback if configured).SystemEmailListenerService auto-assign logic.Implemented & Verified
FR-PROJECT-016Join Zoom meetingLink Zoom meeting to project.All membersZoomMeetingController; Project.Implemented & Verified (routes present)
FR-PROJECT-017Email-project linkEmail messages stored with project_id.SystemEmailMessage model.Implemented & Verified
FR-PROJECT-018Milestone due dateDue date with status becoming overdue.SystemProjectMilestone migration.Implemented & Verified

FR-TASK — Tasks & Kanban

IDTitleStatementActorEvidenceStatus
FR-TASK-001Kanban stages (workspace-scoped) with reorder + set default.Default board pipeline.AdminTaskStageController; observer seeds.Implemented & Verified
FR-TASK-002Task CRUDTitle, description (10k chars), priority, dates, milestone, status.Any memberTaskController.Implemented & Verified
FR-TASK-003Duplicate taskDuplicate via TaskController::duplicate.AnyRoute.Implemented & Verified
FR-TASK-004Stage transitionsDrag/change stage; log status change; emits TaskStageUpdated.Any assignedTaskController::changeStage.Implemented & Verified
FR-TASK-005Multi-assigneeAssign multiple users to task (task_members).Creator/managerTask members table; route.Partial (model fillable gap)
FR-TASK-006Review/submission governanceSubmit/return/approve lifecycle with TaskEvent.Assignee → ManagerLegalGovernanceService.Implemented & Verified
FR-TASK-007Task commentsCreate/update/delete comments with mentions (JSON array).MembersTaskCommentController.Implemented & Verified
FR-TASK-008ChecklistAdd/toggle checklist items; display progress.MembersTaskChecklistController.Implemented & Verified
FR-TASK-009AttachmentsUpload/download/delete.MembersTaskAttachmentController.Implemented & Verified
FR-TASK-010Task templatesCreate localized task template.Admin/ManagerTaskTemplateController.Implemented & Verified
FR-TASK-011Communications (chat)Manager-gated task messages (manager_approved).Memberscommunications table.Implemented & Verified
FR-TASK-012Task linking by emailInbound email creates Task under a project (Task-stage default).SystemEmailListenerService.Implemented & Verified
FR-TASK-013Task stage updates notifySlack/Telegram when task stage updates.SystemSendTaskStageUpdateSlack/Telegram.Implemented & Verified
FR-TASK-014Due-date reminderTasks due tomorrow get a reminder (cron).Systemtasks:check-due.Implemented (signature found; command body not read).
FR-TASK-015Task-level timerManual entry through timesheets ($fillable?). TODO: see FR-TIMESHEET.Any member.TaskService.Implemented & Verified

FR-BUG

IDTitleStatementActorEvidenceStatus
FR-BUG-001Issue creationCreate bug with severity, status, project, milestone, priority, reproduction steps, expected/actual, environment.Any memberBugController.Implemented & Verified
FR-BUG-002Custom bug statuses workflowCreate/reorder/set-default bug statuses.AdminBugStatusController.Implemented & Verified
FR-BUG-003Assign bugAssign to member; notification emails.ManagerBugAssigned listener + email.Implemented & Verified
FR-BUG-004Bug comments + attachmentsthreaded comments and files.MembersBugComment/Attachment controllers.Implemented & Verified
FR-BUG-005Change statusKanban-like change status.MembersBugController::changeStatus.Implemented & Verified
FR-BUG-006Severity trackingminor/major/critical/blocker stored.Developer.bug.status migration.Implemented & Verified
FR-BUG-007Bug → AIAI-based triage allows Bug creation via EmailAIAssignmentService decision; bug_id FK added to email_message.SystemEmailAIAssignmentService; migration 2026-02-13.Implemented & Verified

FR-TIMESHEET

IDTitleStatementActorEvidenceStatus
FR-TS-001Manual timesheet entryCreate entries on tasks/projects per day.EmployeeTimesheetEntryController.Implemented & Verified
FR-TS-002Live timerStart/stop/pause/resume/status persisted on user.EmployeeTimerController.Implemented & Verified
FR-TS-003ApprovalsSubmit/approve/reject with bulk variants.Member → ManagerTimesheetApprovalController.Implemented & Verified
FR-TS-004Daily/Weekly/Monthly/Calendar viewsFour distinct UI views.AllTimesheetController.Implemented & Verified
FR-TS-005Timesheet reportsGenerate dashboard + reports.Manager/OwnerTimesheetReportController.Implemented & Verified
FR-TS-006Billable/non-billable + hours conversionPer entry rate + total amount.SystemTimesheetEntry.Implemented & Verified
FR-TS-007Configure by workspaceWorkspace timesheet_enabled/approval required/auto submit/reminder days and hours.Ownerworkspaces migration.Implemented & Verified
FR-TS-008Customer (client) view reportCustomer report.ManagerCustomerReportController.Implemented & Verified
FR-TS-009Performance dashboard (personal)On-time/delayed/critical tasks.AllPerformanceController.Implemented & Verified
FR-TS-010Timesheet event loggingState changes logged (timesheet logs).SystemTimesheet model.Implemented & Verified
FR-TS-011Monthly employee reportAuto-generate report (tasks stats) → approve/reject → PDF/Excel → email/WhatsApp.System/ManagerMonthlyReportController/Export.Implemented & Verified

FR-BUDGET

IDTitleStatementActorEvidenceStatus
FR-BUDG-001Project budget with categoriesPer-project budget, categories (allocated amounts).Owner/ManagerProjectBudget, BudgetCategory.Implemented & Verified
FR-BUDG-002Revisions & approvalRevision requests; approval/reject workflow.Manager → ApproverBudgetRevisionController.Implemented & Verified
FR-BUDG-003Dashboard + alerts + trendsKPIs, alerts, trends.Manager/AdminBudgetDashboardController.Implemented & Verified
FR-BUDG-004Default categories seedSeed default categories to a new project budget.SystemProjectBudget + default-categories.Implemented & Verified (endpoint)
FR-BUDG-005Category utilisationPer-category spent/remaining/%.AllBudgetCategory accessors.Implemented & Verified
FR-BUDG-006Budget vs. actual reportAggregated report.Manager/AdminExpenseReportController::budgetVsActual.Implemented & Verified (UI verify needed)
FR-BUDG-007Recurring expense plansAuto-create recurring expenses.Member/Managerexpense_recurring table + model.Present (controller not inspected — verify scheduling to execute).
FR-BUDG-008Project budget cap updates on expense approvalAuto update budget on approval; BudgetService::updateBudgetAfterApproval.System.Partial/Infra present.

FR-EXPENSE

IDTitleStatementActorEvidenceStatus
FR-EXP-001Expense CRUDTitle, amount, currency, date, vendor, task link, receipt option.Any memberProjectExpenseController.Implemented & Verified
FR-EXP-002Duplicate expenseDuplicate entry (keep optional status).MemberController::duplicate.Implemented & Verified
FR-EXP-003Categorise expensesLink to a budget category.MemberProjectExpense schema.Implemented & Verified
FR-EXP-004Receipt attachAttach receipts, invoices, docs.Submitter/ ApproverExpenseReceiptController.Implemented & Verified
FR-EXP-005Approval actionsApprove/reject/request info, notes, approval_level, approved_amount.ApproverExpenseApprovalController.Implemented & Verified
FR-EXP-006Bulk approvalsBulk approve multiple expense claims.ApproverbulkApprove route.Implemented & Verified
FR-EXP-007Multi-step workflowsConfigurable steps approver-by approver.ApproverExpenseWorkflowController.Implemented & Verified
FR-EXP-008"My approvals" pageList of approvals awaiting current user.ApproverProjectExpense/Workflow.Implemented & Verified
FR-EXP-009Expense submission management consoleSubmitted expenses, process, exportManager/AdminExpenseManagementController.Implemented & Verified (export stub only)
FR-EXP-010Dashboards + trends + alertsPer-project overview/budget utilisation/trends/alerts.Admin/ManagerExpenseDashboardController.Implemented & Verified
FR-EXP-011Approval stats + budget summaryShow who needs to approve + budget check.Manager/AdminController.Implemented & Verified
FR-EXP-012Export expense reportExport CSV budget/expenditure list (ExpenseManagement export).ManagerExpenseManagementController::export.Implemented & Verified? Entity-level only
FR-EXP-013Reimbursable expectation (recurring)expenses linked to recurring schedule.SystemExpenseRecurring migration + model.Present (unclear if activated)

FR-INVOICE

IDTitleStatementActorEvidenceStatus
FR-INVOICE-001Invoice CRUDCreate with items, tax, discount, currency, client links, project link.Finance/ownerInvoiceController.Implemented & Verified
FR-INVOICE-002Item-level linksItem can ref Task/Expense/TimesheetEntry.FinanceInvoiceItem migration.Implemented & Verified
FR-INVOICE-003Mark paidMark paid + record payment row with metadata.FinanceInvoiceController::markAsPaid and createPaymentRecord.Implemented & Verified
FR-INVOICE-004Send to clientTrigger invoice email via token URL.FinanceInvoiceController::send (route).Implemented & Verified (email template)
FR-INVOICE-005Status transitionsdraft/sent/viewed/paid/partial_paid/overdue/cancelled.System/MembersInvoice::status flow.Implemented & Verified
FR-INVOICE-006Partial paymentsPayment amount updates paid_amount.SystemInvoice::updatePaymentStatus.Implemented & Verified
FR-INVOICE-007Public tokenised checkoutClient pays without login via token.ClientInvoicePaymentController::show/processPayment.Implemented & Verified
FR-INVOICE-008Gateway list shownOnly enabled gateways returned to UI.System/FrontendInvoicePaymentController::getEnabledPaymentGateways.Implemented & Verified
FR-INVOICE-009Gateway initiation + callback/webhookEach gateway has specific endpoints under the invoice success flow.SystemAll *PaymentController + callbacks.Present (not individually verified)
FR-INVOICE-010Auto invoice numberingGenerate unique number.SystemInvoice::generateInvoiceNumber.Implemented & Verified
FR-INVOICE-011Payment record & methodPayment table includes method, amount, date, txn id, status, gateway_response.SystemPayment model.Implemented & Verified
FR-INVOICE-012Client details on invoiceclient_details snapshot; vCard not required.FinanceInvoice migration.Implemented & Verified
FR-INVOICE-01330+ gateways configurationSupport for Stripe, PayPal, Razorpay, Mollie, Cashfree, Tap, PayTabs, PayTR, MercadoPago, Xendit, Aamarpay, PayFast, ToyyibPay, Khalti, Ozow, CoinGate, …Super AdminPaymentSettingController::preparePaymentSettings.Implemented & Verified
FR-INVOICE-014Public receipt after paymentinvoice/payment/{token}/success page.ClientFrontend page + route.Implemented & Verified

FR-MEDIA

IDTitleStatementActorEvidenceStatus
FR-MEDIA-001Media libraryList/upload multiple media; plan-limit aware; configurable storage disk.ManagersMediaController.Implemented & Verified
FR-MEDIA-002Version/collectionsSpatieMediaLibrary registered; conversion(s) define thumbnails (stored).SystemMediaItem migration + model.Implemented & Verified
FR-MEDIA-003Batch uploadMulti-file uploads with validation.ManagersMediaController::batchStore.Implemented & Verified
FR-MEDIA-004Download/deleteSecure download + delete.Members/Admin.Controller has methods.Implemented & Verified

FR-COMM — Communications / Notifications / Contacts / Newsletters

IDTitleStatementActorEvidenceStatus
FR-COMM-001Notification centerList/unread/read/all-read/delete notifications for user.AuthNotificationController + Notifications page.Implemented & Verified
FR-COMM-002Templated emailCreate and send emails from templates with multilanguage content.Admin/UserEmailTemplateController + template lang model.Implemented & Verified
FR-COMM-003Notification templatesPer-event templates editable by admin.AdminNotificationTemplateController.Implemented & Verified
FR-COMM-004Gateways of communication configEmail (SMTP/IMAP) settings + test mail send.AdminEmailSettingController; MailConfigService.Implemented & Verified
FR-COMM-005Contacts managementCRUD + status filter + bulk status, search + CSV export.Any/AdminContactController.Implemented & Verified
FR-COMM-006Newsletters (subscribers)Subscriber CRUD, status toggle, bulk delete, export CSV.AdminNewsletterController.Implemented & Verified
FR-COMM-007Slack/Telegram settings & testAdmin sends a test message to verify integration.SaaS AdminSlackSettingsController::testWebhook; TelegramSettingsController::test.Partial (GET slack settings missing).

FR-EMAIL — IMAP Inbox & Email Rules

IDTitleStatementActorEvidenceStatus
FR-EMAIL-001Connect email accountStore host, port, encryption, credentials (encrypted).User/OwnerEmailAccount, EmailInboxController::store.Implemented & Verified
FR-EMAIL-002Sync inboxManual/scheduled sync (sync-all) reads unseen mail.System/UserSyncAllEmails, EmailListenerService.Implemented & Verified
FR-EMAIL-003Auto-listener daemonReal-time-ish 10-second polling + retries.SystemListenEmails + EmailListenerService::listenIdleForAccount.Implemented & Verified
FR-EMAIL-004Filter at account levelWhitelist/blocklist by email or domain.User/OwnerEmailAccount filter_type/list.Implemented & Verified
FR-EMAIL-005Filter at workspace levelallowed_email_senders with wildcard.Owner/AdminWorkspace settings.Implemented & Verified
FR-EMAIL-006Parse email subject/bodyExtract case_ref, title, description; auto-create project.SystemEmailParserService.Implemented & Verified
FR-EMAIL-007Mark readAfter automation run mark email Seen in IMAP.SystemprocessMessage.Implemented & Verified
FR-EMAIL-008Link email → taskAssociation via EmailMessage.task_id.System/UIController linkTask.Implemented (UI requires manual clicking)
FR-EMAIL-009Toggle readSwitch read flag.UserEmailInboxController::toggleRead.Implemented & Verified
FR-EMAIL-010Delete email.Removes from UI via table, optionally delete local.UserController::destroy.Implemented & Verified
FR-EMAIL-011Email config UI.Edit host etc. from email config view.User/OwnerEmailInbox/Config.Implemented & Verified
FR-EMAIL-012Batch AI processing with progressAI pending → process → progress → cancel → logs.User/OwnerController methods + console command emails:process-batch.Implemented & Verified
FR-EMAIL-013Record AI decision.Store ai_decision JSON on email_message.System.EmailAIAssignmentService.Implemented & Verified
FR-EMAIL-014Reassignment tracking.reassignment_count + EmailTaskEvent tracking.System.migration 2026-02-14.Implemented & Verified

FR-AI-EMAIL (Gemini Triage)

IDTitleStatementActorEvidenceStatus
FR-AI-EMAIL-001Analyze email w/ Gemini.System calls callGemini() to analyze content and returns JSON decision.System.EmailAIAssignmentService::callGemini.Implemented & Verified (structure)
FR-AI-EMAIL-002Member profile understanding.Build prompt from ai_member_descriptions + all team workload (tasks + bugs).System.getWorkspaceMembers + getWorkloadData.Implemented (rate ~500 lines).
FR-AI-EMAIL-003Thread handling.Detect previous handler for thread routing.System.getThreadContext.Implemented & Verified.
FR-AI-EMAIL-004Sender history.Attach past processed email for the sender.System.getSenderHistory.Implemented & Verified.
FR-AI-EMAIL-005Token limits.Restrict AI email processing per token quota? Check checkTokenLimit (called first).System.AiAgentService.Implemented & Verified.
FR-AI-EMAIL-006Record usageRecord cost after processing.SystemAiAgentService::recordTokenUsage (workflow simplified).Implemented & Verified.
FR-AI-EMAIL-007Execute decision (create task/Bug/Project, assign).Perform decision; close email thread linkage.System.executeDecision (in service file, not fully read).Present/Unverified detail.
FR-AI-EMAIL-008Auto-create Project (optional).Same as FR-PROJECT-014.System.EmailAutomationService setting create_project.Implemented & Verified.
FR-AI-EMAIL-009Auto-create Task.Same as FR-EMAIL-012.System.Automation settings create_task.Implemented & Verified.

FR-AI-AGENT (In-App Chat)

IDTitleStatementActorEvidenceStatus
FR-AI-AGENT-001Agent persona/config.Each workspace has an AI agent with name, persona, instructions.Admin/UsersAiAgentController + workspace_ai_agents.Implemented & Verified
FR-AI-AGENT-002Chat interface.Send message, get response, persist conversation.UserAiAgentController::chat endpoint.Implemented & Verified
FR-AI-AGENT-003Conversations CRUD.Create/list/show/update/delete conversations.UserController methods + routes.Implemented & Verified
FR-AI-AGENT-004Workspace knowledge build.ai:build-knowledge analyses work, generates knowledge profile, infer domain.Owner/Admin.AiAgentService::buildKnowledgeProfile.Implemented & Verified
FR-AI-AGENT-005Knowledge entries (rule/policy/fact/procedure/override).Admin can set manual knowledge entries for the agent.Adminai_knowledge_entries model + CRUD.Implemented & Verified
FR-AI-AGENT-006File upload to conversation.Upload a file → TextExtractor extracts text → include in context.UserAiAgentController::uploadFile.Implemented & Verified (only pdf/txt/csv/… wise per FileTextExtractorService)
FR-AI-AGENT-007Token/cost limit.Monthly USD budget per workspace/plan/global with warning at 80%.System.AiAgentService budget logic.Implemented & Verified
FR-AI-AGENT-008Rate limiting chat.30 per hour per user.System.AiAgentService::chat.Implemented & Verified
FR-AI-AGENT-009Feedback on messages.Thumbs-up/down via feedback field.User.Route api/ai-agent/messages/{id}/feedback.Implemented (UI unclear)
FR-AI-AGENT-010Usage status.Show current usage + status URL.User.route status/usage.Implemented & Verified

FR-REPORTS — Dashboards & Reports

IDTitleStatementActorEvidenceStatus
FR-REPORT-001Role-aware dashboardShows different widget based on superadmin vs workspace.AllDashboardController.Implemented & Verified
FR-REPORT-002Recent activity, task status overview, budgets.Charts and lists derived from DashboardService.AllDashboardService.Implemented & Verified
FR-REPORT-003Customer report.Workshop list invoices/projected view.ManagerCustomerReportController.Implemented & Verified
FR-REPORT-004Lawyer report (performance per lawyer).Dashboard endpoint + overview per user.Owner/Manager.LawyerReportController; api endpoint.Implemented & Verified
FR-REPORT-005Performance analytics.Firm evaluation + user metrics.Owner/Manager.PerformanceAnalyticsService.Implemented & Verified (UI varies)
FR-REPORT-006Export CSV.Newsletter/Contact/ExpenseManagement CSV.Owner/Admin.Routes Invoke.Implemented & Verified (only selected modules)
FR-REPORT-007PDF/Excel monthly human report.Monthly employee performance report with PDF/Excel export + notify.System/Manager.MonthlyReportExportService.Implemented & Verified
FR-REPORT-008Performance metrics.Stored monthly performance per user (completion time, delays, returns, quality).System.performance_metrics migration; TaskEvent.Partial (manual trigger concurrency unverified)

FR-ADMIN — Administration & Configuration

IDTitleStatementActorEvidenceStatus
FR-ADMIN-001Roles CRUD.roles page + CRUD, but routes only export Route::resource (index could inherit standard), status unclear.Admin.RoleController; PermissionSeeder.Route found? @see system doc gaps.
FR-ADMIN-002Permissions assign.Assign/manage permissions route but controller methods missing.Admin.Route vs Controller (PermissionController::assign/manage N/A).Partial / Not Found
FR-ADMIN-003Audit viewer.View audit log (company/saas admin only, paginated).Superadmin/Company.AuditController.Implemented & Verified
FR-ADMIN-004Language manager.CRUD languages; edit translation file.Admin.LanguageController.Implemented & Verified
FR-ADMIN-005Landing page settings + CMS pages.Settings at /landing-page/settings + custom pages CRUD.Admin.LandingPageController + CustomPageController.Implemented & Verified
FR-ADMIN-006Media demo page.Gallery viewer (support config) maybe meet say default for media library.Admin.media-library-demo.tsx.Implemented & Verified
FR-ADMIN-007Coupons CRUD + toggle.Admin manage coupons.Superadmin.CouponController.Implemented & Verified (routes line)
FR-ADMIN-008Payment settingsConfigure gateway credentials/enable; test connections; CRUD method map in PaymentSettingController.Superadmin/Manager.routes + preparePaymentSettings.Implemented & Verified
FR-ADMIN-009Email/settings UI.System/brand/storage/recaptcha/chatgpt/ai member attrs/cookie/seo/cache/clear email notifications.Superadmin.SystemSettingsController.Implemented & Verified
FR-ADMIN-010Webhook CRUD.Create, edit, toggle custom outgoing webhook (per workspace/company/module).Admin.WebhookController.Implemented & Verified
FR-ADMIN-011Account settings (Slack/ Telegram/ Zoom/ WhatsApp settings).Update config, test connections.Admin.Controllers via controller settings route.Implemented & Verified (except noted partials)
FR-ADMIN-012Plan requests/orders review.Approve/reject with audit; user views own orders.Superadmin.PlanRequest/PlanOrder controllers.Implemented & Verified
FR-ADMIN-013Evaluation service.Performance metrics & evaluation reports.Manager/Owner.EvaluationController; PerformanceAnalyticsService.Implemented & Verified (UI varies)
FR-ADMIN-014Plan CRUD & toggle.Admin creates/edits, enables/disables plan.Superadmin.PlanController.Implemented & Verified
FR-ADMIN-015Approve payouts referrals.Team approval for referral payout requests.Superadmin.ReferralController; routes disabled.Partial
FR-ADMIN-016Share settings.User plan usage status + ai_monthly_price_limit for plan management.Superadmin.routes plan; settings/workspace-token-limit.Implemented & Verified
FR-ADMIN-017Supported test/connection routes inconsistent.Zoom connection test method mismatch (test vs test-connection).Admin.Web.php vs ZoomSettingsController.Not Found (gap)
FR-ADMIN-018Task stage reorder/set default.Admin reorder task stages in Kanban; choose default stage.Admin/Automation settings.TaskStageController.Implemented & Verified
FR-ADMIN-019Skip email bills.Filter inbound emails via account-level rules.User/Owner.EmailAccount::filter*.Implemented & Verified
FR-ADMIN-020Workspace invitation resend/delete.Admin resend/delete invitations.Owner/Admin.WorkspaceInvitationController.Implemented & Verified
FR-ADMIN-021Timezone & currency defaults.Currency selector to default.Admin.CurrencySettingController::update.Implemented & Verified
FR-ADMIN-02222+ languages.16 enabled now.Admin/System.resources/lang/language.json.Partial

FR-INT — Integration Communications

IDTitleStatementActorEvidenceStatus
FR-INT-001Email delivery via mailable.Send simple/sample test + templated mails via SMTP config.Admin/User; System.CommonTemplateMail, TestMail, MailConfigService.Implemented & Verified
FR-INT-002Slack notification per event.Send Slack for Project/Task/Budget/Invoice/... events.System.9 event-based listeners.Implemented & Verified
FR-INT-003Telegram notification per event.Same for all critical events.System.9 Telegram listeners.Implemented & Verified
FR-INT-004WhatsApp project notification.Send project details via WhatsApp (UltraMsg or Twilio).System.SendProjectWhatsAppNotification.Implemented & Verified (driver may default).
FR-INT-005Zoom meeting scheduling.Create/schedule/start/join meetings, attach members/project, calendar feed.Members/Manager.ZoomMeetingController.Implemented & Verified
FR-INT-006AI assistant (Gemini chat).Multi-turn chat persisted with knowledge + context.All workspace members? User guard?.AiAgentController.Implemented & Verified
FR-INT-007Outgoing webhooks.Trigger webhooks on new project/task/invoice/budget/user/project events.System.WebhookService + 5 listeners.Implemented & Verified
FR-INT-008Stripe checkout JS.Frontend uses Stripe JS to collect payment.Stripe frontends.stripe js in package.Implemented & Verified variants.
FR-INT-009WordPress/landing custom CMS pages.Public dynamic page via /page/{slug}.Public/Admin.CustomPageController.Implemented & Verified
FR-INT-010Newsletter subscription.Public subscribe endpoint.Public.LandingPageController::subscribe.Implemented & Verified
FR-INT-011Contact form submission.Public contact submission saved.Public.handle.Implemented & Verified
FR-INT-012SMS/push providerNo SMS/push provider foundSystemNo evidence in repoNot Found
FR-INT-013OAuth / SSO.No OAuth (Google/Facebook) for social login; only Google calendar (Zoom option).Public.sync_google_calendar; no OAuth client package.Not Found

Total FR count: 214 (no duplicate IDs; full status and traceability matrices in Part I, Chapters 3 and 5). Immediate follow-up needed for Partial/Unverified items.

← Master Software Requirements Specification Non-Functional Requirements Register →