feat: L'Ami Fiduciaire V1.0.0 — full codebase with Story 0.1 complete
Initial commit of the L'Ami Fiduciaire SaaS platform built on Laravel 12, Vue 3, Inertia.js 2, and Tailwind CSS 4. Story 0.1 (rename folders to declarations in database) is implemented and code-reviewed: migration, rollback, and 6 Pest tests all passing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,281 @@
|
||||
---
|
||||
stepsCompleted: [1, 2, 3, 4]
|
||||
inputDocuments: []
|
||||
session_topic: 'SaaS dashboard separation + UX improvements + per-workspace archiving system'
|
||||
session_goals: 'Clean multi-layer dashboard architecture, intuitive UX, robust archiving per workspace'
|
||||
selected_approach: 'ai-recommended'
|
||||
techniques_used: ['Role Playing', 'First Principles Thinking', 'SCAMPER Method', 'Morphological Analysis']
|
||||
ideas_generated: 39
|
||||
context_file: ''
|
||||
session_active: false
|
||||
workflow_completed: true
|
||||
---
|
||||
|
||||
# Brainstorming Session Results
|
||||
|
||||
**Facilitator:** Saad
|
||||
**Date:** 2026-03-10
|
||||
|
||||
## Session Overview
|
||||
|
||||
**Topic:** SaaS dashboard separation (owner vs tenant) + UX improvements + per-workspace archiving system
|
||||
**Goals:** Generate ideas for a well-structured, intuitive platform with clear role boundaries and a robust archiving layer per workspace
|
||||
|
||||
### Session Setup
|
||||
|
||||
- Platform: L'Ami Fiduciaire — client management SaaS for accounting/fiduciary firms
|
||||
- Current state: Mature brownfield app (Laravel 12 + Vue 3 + Inertia.js) with mixed admin/tenant dashboards
|
||||
- Pain points: Role boundaries blurred, UX feels cluttered, no archiving system yet
|
||||
- User types: SaaS owner (L'Ami Fiduciaire staff), firm admin, firm employee, external client
|
||||
|
||||
### Design Philosophy
|
||||
|
||||
- **عملي (practical) first, beauty second** — every UI decision must make the task faster, not slower
|
||||
- Tables over cards for data views — accountants think in rows and columns
|
||||
- One app, role-driven views — no separate admin app needed
|
||||
|
||||
## Technique Selection
|
||||
|
||||
**Approach:** AI-Recommended Techniques (Suggested Flow)
|
||||
**Analysis Context:** Multi-layered SaaS UX problem requiring role clarity, interface refinement, and new feature design
|
||||
|
||||
**Technique Flow:**
|
||||
|
||||
1. **Role Playing** — Clarify what each user type actually needs to see and do
|
||||
2. **First Principles Thinking** — Define the right dashboard structure from fundamental truths
|
||||
3. **SCAMPER Method** — Refine and improve existing UX systematically
|
||||
4. **Morphological Analysis** — Design the archiving system thoroughly across all dimensions
|
||||
|
||||
---
|
||||
|
||||
## Technique Execution Results
|
||||
|
||||
### Phase 1: Role Playing — User Persona Analysis
|
||||
|
||||
Four distinct user layers identified with clear separation of needs:
|
||||
|
||||
| Layer | Sees | Key Need |
|
||||
|-------|------|----------|
|
||||
| **SaaS Owner** (L'Ami Fiduciaire staff) | All workspaces, platform metrics, issues | "Is my platform healthy?" |
|
||||
| **Firm Admin/Owner** | Their workspace — all clients, all declarations, alerts | "Is my firm on track? Who needs a nudge?" |
|
||||
| **Firm Employee (Worker)** | Only assigned clients/declarations + notifications | "What do I need to do right now?" |
|
||||
| **External Client** | Single declaration action via token link | "Upload this, confirm that, done." |
|
||||
|
||||
**Key Insight:** The current problem is that layers 1, 2, and 3 share the same interface. The fix is role-driven visibility within a single app shell.
|
||||
|
||||
### Phase 2: First Principles Thinking — Structure & Permissions
|
||||
|
||||
**Core Decision: Fixed Roles + Permission Overrides**
|
||||
|
||||
- Three preset roles: **Owner, Manager, Worker**
|
||||
- Sensible defaults that work for 90% of firms out of the box
|
||||
- Firm owner can toggle specific permissions on/off per role
|
||||
- Permissions stored at workspace level — each cabinet customizes independently
|
||||
|
||||
**Navigation Structure:**
|
||||
|
||||
**SaaS Owner:**
|
||||
- Platform Dashboard (metrics, health)
|
||||
- Workspaces (manage all cabinets)
|
||||
- Reported Issues
|
||||
|
||||
**Firm Owner/Manager:**
|
||||
- Dashboard (command center — alerts + stats combined)
|
||||
- Clients
|
||||
- Declarations
|
||||
- Archive
|
||||
- Team (users + permissions)
|
||||
|
||||
**Worker:**
|
||||
- My Dashboard (assigned work + nudges)
|
||||
- My Clients
|
||||
- My Declarations
|
||||
|
||||
### Phase 3: SCAMPER — UX Refinements
|
||||
|
||||
- **Substitute:** Nothing needed — current component choices are solid
|
||||
- **Combine:** Dashboard + Alerts into one unified command center view
|
||||
- **Adapt:** Advanced filtering system consistent across all views + search bars
|
||||
- **Modify:** Inline tag/nudge on declaration rows — micro-interaction, no page navigation
|
||||
- **Eliminate:** Separate admin routes — merge user management into workspace Team page
|
||||
- **Reverse:** Client-initiated declarations — clients can request a declaration through portal (future)
|
||||
|
||||
**Breakthrough:** Bulk Declaration Creation — select multiple clients, choose type, create all at once with scheduled notifications.
|
||||
|
||||
### Phase 4: Morphological Analysis — Archive System Design
|
||||
|
||||
| Dimension | Decision |
|
||||
|-----------|----------|
|
||||
| **What gets archived** | Declaration metadata, status history, all documents, messages, client portal actions |
|
||||
| **Organization** | Hybrid — flat list with powerful filters (fiscal year, client, type, date range) + search bar |
|
||||
| **Access** | Owner and Manager only — Worker excluded |
|
||||
| **Mutability** | Read-only, but Owner/Manager can re-open (moves back to active) |
|
||||
| **Audit** | Re-open logged with who, when, and why |
|
||||
| **Retention** | 10 years from closing date, warning before cleanup |
|
||||
| **Export** | Bulk download as ZIP + in-app document preview |
|
||||
| **Search** | Metadata search first (client, type, year, date). Full-text document search in future phase |
|
||||
| **Navigation** | Top-level sidebar item — first-class feature, not hidden |
|
||||
| **Visual** | Muted styling / archive badge to distinguish from active declarations |
|
||||
|
||||
---
|
||||
|
||||
## Complete Idea Inventory
|
||||
|
||||
### Theme 1: Platform Architecture — Role Separation
|
||||
|
||||
| # | Idea | Description |
|
||||
|---|------|-------------|
|
||||
| 1 | Platform Health Dashboard | SaaS owner dedicated view: workspace count, active users, storage, signups, system health |
|
||||
| 2 | Issue/Support Inbox | Lightweight issue reporting — firm users flag problems, SaaS owner sees aggregated |
|
||||
| 10 | Client Portal — Keep As-Is | External client one-shot token experience is solid, no changes needed |
|
||||
| 11 | Single Shell, Role-Driven Views | One app, one sidebar, content determined by role — no separate admin app |
|
||||
| 14 | Fixed Roles + Permission Matrix | Owner/Manager/Worker with sensible defaults + toggle overrides per workspace |
|
||||
| 15 | Sensible Defaults That Just Work | 90% of firms never touch permissions — it just works out of the box |
|
||||
| 16 | Per-Workspace Permission Storage | Each cabinet customizes permissions independently — true multi-tenancy |
|
||||
| 28 | Eliminate Separate Admin Routes | Team management inside workspace, not through a separate admin panel |
|
||||
|
||||
### Theme 2: Dashboard & Command Center
|
||||
|
||||
| # | Idea | Description |
|
||||
|---|------|-------------|
|
||||
| 3 | Command Center Home | Single screen: active clients, declarations by status, activity feed, priority alerts |
|
||||
| 4 | Priority Alert System | Visual alerts for overdue declarations, unanswered uploads, unsigned confirmations |
|
||||
| 7 | Scoped Employee Dashboard | Workers see only assigned clients/declarations — "here's what you need to do today" |
|
||||
| 8 | Notification Center for Nudges | Employee notification area where admin tags/alerts land with direct links to declarations |
|
||||
| 19 | Dashboard = Alerts Combined | No separate alerts page — dashboard IS the alert system, one unified view |
|
||||
|
||||
### Theme 3: Firm Management & Collaboration
|
||||
|
||||
| # | Idea | Description |
|
||||
|---|------|-------------|
|
||||
| 6 | Quick Tag & Nudge | One-click alert from admin to employee on any declaration — tap on the shoulder, not a ticket |
|
||||
| 12 | Firm-Level Role Management Page | Dedicated "Team" page to create users with roles (Owner, Manager, Worker) |
|
||||
| 13 | Permission Builder per Role | Simple toggle grid: rows = permissions, columns = roles. Flip switches on/off |
|
||||
| 22 | Inline Tag/Nudge on Declaration Row | Small icon button on table row — click, pick employee, done. No modal needed |
|
||||
|
||||
### Theme 4: UX & Workflow Efficiency
|
||||
|
||||
| # | Idea | Description |
|
||||
|---|------|-------------|
|
||||
| 17 | Practicality-First Philosophy | Every UI decision passes: "Does this make the task faster or slower?" |
|
||||
| 18 | Tables Over Cards for Data | Dense, scannable, sortable tables — accountants think in rows and columns |
|
||||
| 20 | Bulk Declaration Creation | Select multiple clients → choose type (TVA Mensuel) → set date → create all at once |
|
||||
| 21 | Bulk Notification Scheduling | Set notification date during bulk creation — all clients notified on same day |
|
||||
| 23 | Advanced Filtering System | Consistent filter bar across Clients, Declarations, Archive — persistent until cleared |
|
||||
| 24 | Archive-Specific Filters | Extra dimensions: fiscal year, declaration type, client, date range, document type |
|
||||
| 25 | Quick Search | Search bar with instant text lookup — no page reload |
|
||||
| 29 | Client-Initiated Declarations | Clients request declarations through portal — reverses the flow (future enhancement) |
|
||||
|
||||
### Theme 5: Archive System
|
||||
|
||||
| # | Idea | Description |
|
||||
|---|------|-------------|
|
||||
| 26 | Auto-Archive on Close | Declaration moves to archive automatically when status becomes Closed |
|
||||
| 27 | Archive ≠ Delete | Full history preserved — documents, messages, actions. Filing cabinet, not trash |
|
||||
| 30 | Hybrid Filters + Search | Flat list with fiscal year/client/type/date filters + search bar |
|
||||
| 31 | Read-Only + Re-Open | Archive locked, but Owner/Manager can re-open → moves back to active Declarations |
|
||||
| 32 | Re-Open Audit Trail | Who, when, why logged — legal protection for the firm |
|
||||
| 33 | 10-Year Retention Policy | Automated lifecycle with warning notification before cleanup |
|
||||
| 34 | Bulk Download as ZIP | Filter a set → download structured ZIP with all documents organized by declaration |
|
||||
| 35 | In-App Document Preview | Preview button (PDF/image viewer) + separate download button |
|
||||
| 36 | Metadata Search First | Search by client, type, year, date. Full-text document search in future phase |
|
||||
| 37 | Archive as Main Nav Item | Top-level sidebar — first-class feature, not hidden in settings |
|
||||
| 38 | Archive Detail Page | Read-only full snapshot: declaration info, timeline, documents, messages, portal actions |
|
||||
| 39 | Visual Distinction | Muted color scheme / archive badge — clear boundary between active and archived |
|
||||
|
||||
### Future Enhancements
|
||||
|
||||
| # | Idea | Description |
|
||||
|---|------|-------------|
|
||||
| 5 | Archive as First-Class Feature | Accountants' institutional memory — organized by fiscal years and dossiers |
|
||||
| 9 | Kanban View | Optional drag-and-drop board for declarations by status — visual pipeline management |
|
||||
|
||||
---
|
||||
|
||||
## Implementation Roadmap
|
||||
|
||||
### Phase 1: Role System Foundation
|
||||
*Everything else depends on this*
|
||||
|
||||
- #14 Fixed Roles (Owner, Manager, Worker) + Permission Matrix
|
||||
- #15 Sensible Defaults
|
||||
- #16 Per-Workspace Permission Storage
|
||||
- #12 Team Management Page
|
||||
- #13 Permission toggles per role
|
||||
- #28 Move user management inside workspace
|
||||
|
||||
### Phase 2: Dashboard Separation
|
||||
*Now that roles exist, build the right view for each*
|
||||
|
||||
- #11 Single Shell, Role-Driven Sidebar
|
||||
- #3 Firm Admin Command Center
|
||||
- #7 Scoped Employee Dashboard
|
||||
- #1 SaaS Owner Platform Dashboard
|
||||
- #4 Priority Alert System
|
||||
- #19 Dashboard + Alerts combined
|
||||
- #2 Issue/Support Inbox
|
||||
|
||||
### Phase 3: Collaboration Features
|
||||
*The nudge/notification layer*
|
||||
|
||||
- #6 Quick Tag & Nudge
|
||||
- #22 Inline Nudge on Declaration Row
|
||||
- #8 Employee Notification Center
|
||||
|
||||
### Phase 4: Workflow Efficiency
|
||||
*The عملي features that save time*
|
||||
|
||||
- #20 Bulk Declaration Creation
|
||||
- #21 Bulk Notification Scheduling
|
||||
- #23 Advanced Filtering across all views
|
||||
- #25 Quick Search
|
||||
- #17 Practicality-first UI pass
|
||||
- #18 Tables for data views
|
||||
|
||||
### Phase 5: Archive System
|
||||
*Needs closed declarations to exist — builds on everything above*
|
||||
|
||||
- #26 Auto-Archive on Close
|
||||
- #27 Archive ≠ Delete (preservation)
|
||||
- #37 Archive as Main Nav Item
|
||||
- #30 Hybrid Filters + Search Bar
|
||||
- #38 Archive Detail Page (read-only)
|
||||
- #35 In-App Preview + Download buttons
|
||||
- #31 Read-Only + Re-Open capability
|
||||
- #32 Re-Open Audit Trail
|
||||
- #34 Bulk Download as ZIP
|
||||
- #39 Visual Distinction for archived items
|
||||
- #33 10-Year Retention Policy
|
||||
- #36 Metadata Search (full-text later)
|
||||
|
||||
### Phase 6: Future Enhancements
|
||||
|
||||
- #9 Kanban View
|
||||
- #29 Client-Initiated Declarations
|
||||
- #24 Archive-specific advanced filters
|
||||
|
||||
---
|
||||
|
||||
## Session Summary and Insights
|
||||
|
||||
**Key Achievements:**
|
||||
|
||||
- 39 breakthrough ideas generated across 5 themes
|
||||
- Clear 4-layer user model defined (SaaS Owner → Firm Admin → Worker → External Client)
|
||||
- Core architectural decision made: Fixed Roles + Permission Overrides per workspace
|
||||
- Complete archive system designed across 6 dimensions
|
||||
- Practical implementation roadmap with dependency-ordered phases
|
||||
|
||||
**Key Design Decisions Made:**
|
||||
|
||||
1. **Single app, role-driven views** — no separate admin application
|
||||
2. **Fixed roles (Owner/Manager/Worker)** with toggleable permission overrides per workspace
|
||||
3. **Folders renamed to Declarations** — domain-specific language
|
||||
4. **عملي-first UX** — practicality over beauty, tables over cards
|
||||
5. **Archive = auto on close** — read-only with re-open capability
|
||||
6. **10-year retention** — matching Moroccan legal requirements
|
||||
7. **Metadata search first** — full-text document search deferred to future phase
|
||||
|
||||
**Creative Facilitation Narrative:**
|
||||
|
||||
This session moved efficiently from understanding (who are the users?) to structure (what do they need?) to refinement (how do we improve?) to design (build the archive). Saad's practical mindset — عملي first — anchored every decision in real-world accountant workflows. The bulk declaration creation idea emerged as a standout competitive feature, born from understanding that accountants work in batches by deadline, not individually by client. The archive system was designed with input from a real accountant, ensuring it serves actual needs rather than theoretical ones.
|
||||
@@ -0,0 +1,284 @@
|
||||
# Story 0.1: Rename Folders to Declarations in Database
|
||||
|
||||
Status: done
|
||||
|
||||
<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
|
||||
|
||||
## Story
|
||||
|
||||
As a developer,
|
||||
I want the database tables and columns to use "declaration" terminology instead of "folder",
|
||||
so that the data layer reflects the correct professional terminology before building new features.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
1. **Given** the existing `folders` table exists with data, **When** the migration runs, **Then** the `folders` table is renamed to `declarations`
|
||||
2. **And** all `folder_id` foreign key columns across related tables are renamed to `declaration_id`
|
||||
3. **And** the `folder_invitations` table is renamed to `declaration_invitations`
|
||||
4. **And** all indexes referencing "folder" are renamed to reference "declaration"
|
||||
5. **And** the migration is reversible (rollback renames back to "folder")
|
||||
6. **And** existing data is preserved with zero data loss
|
||||
|
||||
## Tasks / Subtasks
|
||||
|
||||
- [x] Task 1: Create the rename migration file (AC: #1, #2, #3, #4, #5, #6)
|
||||
- [x] 1.1: Create migration `xxxx_rename_folders_to_declarations.php`
|
||||
- [x] 1.2: In `up()` — Drop foreign key constraints: `messages_folder_id_foreign` and `folder_invitations_folder_id_foreign`
|
||||
- [x] 1.3: In `up()` — Rename column `folder_id` → `declaration_id` in `messages` table
|
||||
- [x] 1.4: In `up()` — Drop index `messages_folder_id_created_at_index`, recreate as `[declaration_id, created_at]`
|
||||
- [x] 1.5: In `up()` — Rename column `folder_id` → `declaration_id` in `folder_invitations` table
|
||||
- [x] 1.6: In `up()` — Rename table `folders` → `declarations`
|
||||
- [x] 1.7: In `up()` — Rename table `folder_invitations` → `declaration_invitations`
|
||||
- [x] 1.8: In `up()` — Re-add FK constraints using explicit `->constrained('declarations')->cascadeOnDelete()` on both tables
|
||||
- [x] 1.9: Implement `down()` with explicit reverse steps (see Dev Notes)
|
||||
- [x] Task 2: Verify migration executes successfully (AC: #1, #2, #3, #4, #6)
|
||||
- [x] 2.1: Run `php artisan migrate` — confirm zero errors
|
||||
- [x] 2.2: Verify tables: `php artisan tinker --execute="echo Schema::hasTable('declarations') ? 'OK' : 'FAIL';"`
|
||||
- [x] 2.3: Verify columns: `php artisan tinker --execute="echo Schema::hasColumn('messages', 'declaration_id') ? 'OK' : 'FAIL';"`
|
||||
- [x] 2.4: Verify composite index exists on `messages(declaration_id, created_at)`
|
||||
- [x] 2.5: Verify existing seed/test data is intact after migration
|
||||
- [x] Task 3: Verify rollback works (AC: #5)
|
||||
- [x] 3.1: Run `php artisan migrate:rollback` — confirm tables revert to `folders`, `folder_invitations`
|
||||
- [x] 3.2: Verify foreign key columns revert to `folder_id`
|
||||
- [x] 3.3: Re-run `php artisan migrate` to confirm re-apply also works
|
||||
|
||||
## Dev Notes
|
||||
|
||||
### Critical Architecture Constraints
|
||||
|
||||
- **Database engine:** MySQL 8.4 (production) / SQLite for local dev (check `.env`)
|
||||
- **Multi-tenant:** All tables are workspace-scoped. The migration is schema-only (rename), no data transformation needed
|
||||
- **Spatie media_library:** The `media` table has a polymorphic `model_type` column storing `App\Models\Folder` (FQCN, no morph map registered). NOT addressed in this story — handled in Story 0.2 when the model class is renamed
|
||||
- **Spatie activity_log:** The `activity_log` table has `subject_type` storing `App\Models\Folder`. Same as above — handled in Story 0.2
|
||||
- **No morph map:** The codebase has no `Relation::morphMap()` registration — polymorphic types store FQCN directly. Data updates for these columns are a Story 0.2 concern
|
||||
- **Notifications table:** Has `notifiable_type` morphs — not folder-related, no action needed
|
||||
|
||||
### Migration Strategy — Order of Operations
|
||||
|
||||
The order matters to avoid foreign key constraint violations:
|
||||
|
||||
**`up()` method:**
|
||||
1. Drop FK constraints: `$table->dropForeign('messages_folder_id_foreign')` and `$table->dropForeign('folder_invitations_folder_id_foreign')`
|
||||
2. Rename columns `folder_id` → `declaration_id` via `$table->renameColumn('folder_id', 'declaration_id')` in `messages` and `folder_invitations`
|
||||
3. Drop index `messages_folder_id_created_at_index`, create new `$table->index(['declaration_id', 'created_at'])`
|
||||
4. `Schema::rename('folders', 'declarations')`
|
||||
5. `Schema::rename('folder_invitations', 'declaration_invitations')`
|
||||
6. Re-add FKs: `$table->foreign('declaration_id')->references('id')->on('declarations')->cascadeOnDelete()` on both `messages` and `declaration_invitations`
|
||||
|
||||
**`down()` method (explicit reverse):**
|
||||
1. Drop FK constraints: `$table->dropForeign('messages_declaration_id_foreign')` and `$table->dropForeign('declaration_invitations_declaration_id_foreign')`
|
||||
2. `Schema::rename('declaration_invitations', 'folder_invitations')`
|
||||
3. `Schema::rename('declarations', 'folders')`
|
||||
4. Drop index on `messages(declaration_id, created_at)`, recreate as `$table->index(['folder_id', 'created_at'])`
|
||||
5. Rename columns `declaration_id` → `folder_id` in `messages` and `folder_invitations`
|
||||
6. Re-add FKs: `$table->foreign('folder_id')->references('id')->on('folders')->cascadeOnDelete()` on both tables
|
||||
|
||||
**Critical FK rule:** Always use explicit `->on('declarations')` (or `->on('folders')` in down) — never bare `->constrained()` which infers table from column name and can cause errors during rename transitions.
|
||||
|
||||
### Tables and Columns Affected
|
||||
|
||||
| Table | Column/Index/Constraint | Action |
|
||||
|---|---|---|
|
||||
| `folders` | (entire table) | Rename → `declarations` |
|
||||
| `folder_invitations` | (entire table) | Rename → `declaration_invitations` |
|
||||
| `folder_invitations` | `folder_id` column | Rename → `declaration_id` |
|
||||
| `folder_invitations` | FK `folder_invitations_folder_id_foreign` | Drop, re-add as `declaration_invitations_declaration_id_foreign` |
|
||||
| `messages` | `folder_id` column | Rename → `declaration_id` |
|
||||
| `messages` | FK `messages_folder_id_foreign` | Drop, re-add as `messages_declaration_id_foreign` |
|
||||
| `messages` | Index `messages_folder_id_created_at_index` | Drop, recreate with `declaration_id` |
|
||||
|
||||
### SQLite vs MySQL Considerations
|
||||
|
||||
- **Laravel 12 handles `renameColumn()` natively** without doctrine/dbal. No additional package installation is needed
|
||||
- **SQLite** (local dev): `Schema::rename()` and `renameColumn()` work natively. Laravel handles SQLite's limited `ALTER TABLE` via internal table recreation
|
||||
- **MySQL 8.4** (production): Native `RENAME TABLE` and `ALTER TABLE ... RENAME COLUMN` are well-supported
|
||||
- **Recommendation:** Use Laravel's `Schema` facade methods exclusively — never raw SQL — for cross-driver compatibility
|
||||
|
||||
### Warning: Application Will Break After This Migration
|
||||
|
||||
After running this migration, the application will be non-functional until Story 0.2 (backend rename) is completed. **Stories 0.1 and 0.2 should be implemented in the same development session.**
|
||||
|
||||
**Why it breaks:** The `Folder` model has no explicit `$table` property — it relies on Laravel convention to infer `folders`. After rename, Laravel looks for `folders` which no longer exists.
|
||||
|
||||
**Specific breakage points (all fixed in Story 0.2):**
|
||||
- `Folder` model → table `folders` not found
|
||||
- `FolderInvitation` model → table `folder_invitations` not found, `$fillable` contains `folder_id` (column is now `declaration_id`)
|
||||
- `Message` model → `$fillable` contains `folder_id`, `folder()` relationship references wrong column
|
||||
- Middleware alias `folder.invitation` in `bootstrap/app.php` and route reference in `web.php` → Story 0.2 scope
|
||||
|
||||
### Existing Migration Files for Reference
|
||||
|
||||
These are the original migration files that created the tables being renamed:
|
||||
|
||||
- `database/migrations/2026_02_27_103316_create_folders_table.php` — Creates `folders` table with all columns
|
||||
- `database/migrations/2026_03_01_144731_create_folder_invitations_table.php` — Creates `folder_invitations` with `folder_id` FK
|
||||
- `database/migrations/2026_03_01_144730_create_messages_table.php` — Creates `messages` with `folder_id` FK and composite index
|
||||
- `database/migrations/2026_03_01_144736_add_confirmation_fields_to_folders_table.php` — Adds confirmation columns to `folders`
|
||||
- `database/migrations/2026_03_09_000003_split_vat_folder_type.php` — Data migration on `folders` table
|
||||
|
||||
### Testing Standards
|
||||
|
||||
- Use **Pest** syntax (`test()` closures), never PHPUnit class-based tests
|
||||
- `RefreshDatabase` is auto-applied via `Pest.php` — don't add it manually
|
||||
- Run tests: `composer test`
|
||||
- After migration, existing tests WILL fail (they reference `Folder` model). This is expected — Story 0.2 fixes them
|
||||
|
||||
### Project Structure Notes
|
||||
|
||||
- Migration file goes in: `database/migrations/`
|
||||
- Naming convention: `YYYY_MM_DD_HHMMSS_rename_folders_to_declarations.php`
|
||||
- **Migration timestamp MUST be after `2026_03_09_000005`** (latest existing migration). Use e.g. `2026_03_11_000001_rename_folders_to_declarations.php`
|
||||
- This ensures the rename runs after `split_vat_folder_type.php` (which references `DB::table('folders')`) on both `migrate` and `migrate:fresh`
|
||||
- Laravel 12 handles column renames natively — no doctrine/dbal needed
|
||||
|
||||
### Migration Code Skeleton
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
// 1. Drop FK constraints
|
||||
Schema::table('messages', function (Blueprint $table) {
|
||||
$table->dropForeign('messages_folder_id_foreign');
|
||||
});
|
||||
Schema::table('folder_invitations', function (Blueprint $table) {
|
||||
$table->dropForeign('folder_invitations_folder_id_foreign');
|
||||
});
|
||||
|
||||
// 2. Rename columns
|
||||
Schema::table('messages', function (Blueprint $table) {
|
||||
$table->renameColumn('folder_id', 'declaration_id');
|
||||
});
|
||||
Schema::table('folder_invitations', function (Blueprint $table) {
|
||||
$table->renameColumn('folder_id', 'declaration_id');
|
||||
});
|
||||
|
||||
// 3. Drop old index, create new
|
||||
Schema::table('messages', function (Blueprint $table) {
|
||||
$table->dropIndex('messages_folder_id_created_at_index');
|
||||
$table->index(['declaration_id', 'created_at']);
|
||||
});
|
||||
|
||||
// 4-5. Rename tables
|
||||
Schema::rename('folders', 'declarations');
|
||||
Schema::rename('folder_invitations', 'declaration_invitations');
|
||||
|
||||
// 6. Re-add FK constraints
|
||||
Schema::table('messages', function (Blueprint $table) {
|
||||
$table->foreign('declaration_id')->references('id')->on('declarations')->cascadeOnDelete();
|
||||
});
|
||||
Schema::table('declaration_invitations', function (Blueprint $table) {
|
||||
$table->foreign('declaration_id')->references('id')->on('declarations')->cascadeOnDelete();
|
||||
});
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
// 1. Drop FK constraints
|
||||
Schema::table('messages', function (Blueprint $table) {
|
||||
$table->dropForeign('messages_declaration_id_foreign');
|
||||
});
|
||||
Schema::table('declaration_invitations', function (Blueprint $table) {
|
||||
$table->dropForeign('declaration_invitations_declaration_id_foreign');
|
||||
});
|
||||
|
||||
// 2-3. Rename tables back
|
||||
Schema::rename('declaration_invitations', 'folder_invitations');
|
||||
Schema::rename('declarations', 'folders');
|
||||
|
||||
// 4. Drop new index, recreate old
|
||||
Schema::table('messages', function (Blueprint $table) {
|
||||
$table->dropIndex('messages_declaration_id_created_at_index');
|
||||
$table->index(['folder_id', 'created_at']);
|
||||
});
|
||||
|
||||
// 5. Rename columns back
|
||||
Schema::table('messages', function (Blueprint $table) {
|
||||
$table->renameColumn('declaration_id', 'folder_id');
|
||||
});
|
||||
Schema::table('folder_invitations', function (Blueprint $table) {
|
||||
$table->renameColumn('declaration_id', 'folder_id');
|
||||
});
|
||||
|
||||
// 6. Re-add FK constraints
|
||||
Schema::table('messages', function (Blueprint $table) {
|
||||
$table->foreign('folder_id')->references('id')->on('folders')->cascadeOnDelete();
|
||||
});
|
||||
Schema::table('folder_invitations', function (Blueprint $table) {
|
||||
$table->foreign('folder_id')->references('id')->on('folders')->cascadeOnDelete();
|
||||
});
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### References
|
||||
|
||||
- [Source: _bmad-output/planning-artifacts/epics.md#Story 0.1]
|
||||
- [Source: _bmad-output/planning-artifacts/architecture.md#Pre-Phase Migration]
|
||||
- [Source: _bmad-output/planning-artifacts/architecture.md#Declaration Status Flow (lines 453-479)]
|
||||
- [Source: _bmad-output/project-context.md#Technology Stack]
|
||||
- [Source: database/migrations/2026_02_27_103316_create_folders_table.php]
|
||||
- [Source: database/migrations/2026_03_01_144731_create_folder_invitations_table.php]
|
||||
- [Source: database/migrations/2026_03_01_144730_create_messages_table.php]
|
||||
|
||||
## Dev Agent Record
|
||||
|
||||
### Agent Model Used
|
||||
|
||||
Claude Opus 4.6
|
||||
|
||||
### Debug Log References
|
||||
|
||||
- SQLite does not support `dropForeign('constraint_name')` — switched to column array syntax `dropForeign(['column_name'])` for cross-driver compatibility
|
||||
- `down()` method required reordering: must drop index before renaming columns, then recreate index after rename (SQLite validates indexes during column rename)
|
||||
- Upgraded Docker Sail container from PHP 8.2 to PHP 8.4 to resolve PHPUnit 12.5 / sebastian/environment 8.0 incompatibility (typed class constants require PHP 8.3+)
|
||||
- Fixed `phpunit.xml` to use `DB_CONNECTION=sqlite` and `DB_DATABASE=:memory:` for test isolation
|
||||
|
||||
### Completion Notes List
|
||||
|
||||
- Created migration `2026_03_11_000001_rename_folders_to_declarations.php` implementing full rename of tables, columns, indexes, and FK constraints
|
||||
- Migration uses column array syntax for `dropForeign()` ensuring SQLite (dev) and MySQL (prod) compatibility
|
||||
- `up()` follows exact order: drop FKs → drop index → rename columns → recreate index → rename tables → re-add FKs
|
||||
- `down()` fully reverses all changes: drop FKs → rename tables → drop index → rename columns → recreate index → re-add FKs
|
||||
- Added 6 Pest tests verifying table renames, column renames, composite index, and rollback in `tests/Feature/Database/RenameFoldersToDeclarationsTest.php`
|
||||
- All 6 migration tests pass; all non-Folder-related tests pass (40+ tests)
|
||||
- Folder-related tests (FolderTypeTest, MediaDownloadTest, FolderMentionTest, NotificationControllerTest) fail as expected — documented in Dev Notes, fixed in Story 0.2
|
||||
- Infrastructure fixes: PHP 8.2→8.4 in compose.yaml, WWWGROUP/WWWUSER in .env, phpunit.xml DB config
|
||||
|
||||
### Senior Developer Review (AI)
|
||||
|
||||
**Reviewer:** Saad (via Claude Opus 4.6) on 2026-03-11
|
||||
|
||||
**Findings (8 total):** 3 High, 3 Medium, 2 Low
|
||||
|
||||
| # | Severity | Issue | Resolution |
|
||||
|---|----------|-------|------------|
|
||||
| H1 | HIGH | `up()` dropIndex after column rename — fragile on SQLite | Fixed: moved dropIndex before renameColumn |
|
||||
| H2 | HIGH | Missing tests for AC #4 (indexes), AC #5 (reversibility) | Fixed: added 2 new Pest tests |
|
||||
| H3 | HIGH | Task 2.4 marked complete but no index test | Fixed: composite index test added |
|
||||
| M1 | MEDIUM | Infrastructure changes (compose.yaml, phpunit.xml) bundled in rename story | Noted: these are prerequisites for running tests — documented as infra scope in File List |
|
||||
| M2 | MEDIUM | `.env` modified but not in File List | Fixed: added to File List |
|
||||
| M3 | MEDIUM | Inconsistent FK drop/create approach between up() and down() | Re-evaluated: both up() and down() use identical pattern (column array drops, explicit references for creates) — actually consistent, no fix needed |
|
||||
| L1 | LOW | split_vat_folder_type.php has implicit dependency on migration order | Fixed: added dependency comment to rename migration file |
|
||||
| L2 | LOW | Test directory `tests/Feature/Migration/` doesn't mirror controller structure | Fixed: renamed to `tests/Feature/Database/` |
|
||||
|
||||
### Change Log
|
||||
|
||||
- 2026-03-11: Code review follow-up — added migration dependency comment (L1), renamed test dir Migration/ → Database/ (L2), re-evaluated M3 as non-issue. All actionable findings resolved.
|
||||
- 2026-03-11: Code review — fixed migration step ordering (H1), added index and rollback tests (H2/H3), updated File List (M2). 3 HIGH and 1 MEDIUM fixed, 2 MEDIUM and 2 LOW noted.
|
||||
- 2026-03-11: Implemented Story 0.1 — database rename from folders to declarations terminology. Migration created, verified forward/backward, tests added. Infrastructure upgraded to PHP 8.4.
|
||||
|
||||
### File List
|
||||
|
||||
- database/migrations/2026_03_11_000001_rename_folders_to_declarations.php (new)
|
||||
- tests/Feature/Database/RenameFoldersToDeclarationsTest.php (new)
|
||||
- compose.yaml (modified — PHP 8.2 → 8.4)
|
||||
- phpunit.xml (modified — DB_CONNECTION=sqlite, DB_DATABASE=:memory:)
|
||||
- .env (modified — added WWWGROUP=1000, WWWUSER=1000)
|
||||
113
_bmad-output/implementation-artifacts/sprint-status.yaml
Normal file
113
_bmad-output/implementation-artifacts/sprint-status.yaml
Normal file
@@ -0,0 +1,113 @@
|
||||
# generated: 2026-03-11
|
||||
# project: l'ami fiduciaire
|
||||
# project_key: NOKEY
|
||||
# tracking_system: file-system
|
||||
# story_location: _bmad-output/implementation-artifacts
|
||||
|
||||
# STATUS DEFINITIONS:
|
||||
# ==================
|
||||
# Epic Status:
|
||||
# - backlog: Epic not yet started
|
||||
# - in-progress: Epic actively being worked on
|
||||
# - done: All stories in epic completed
|
||||
#
|
||||
# Epic Status Transitions:
|
||||
# - backlog → in-progress: Automatically when first story is created (via create-story)
|
||||
# - in-progress → done: Manually when all stories reach 'done' status
|
||||
#
|
||||
# Story Status:
|
||||
# - backlog: Story only exists in epic file
|
||||
# - ready-for-dev: Story file created in stories folder
|
||||
# - in-progress: Developer actively working on implementation
|
||||
# - review: Ready for code review (via Dev's code-review workflow)
|
||||
# - done: Story completed
|
||||
#
|
||||
# Retrospective Status:
|
||||
# - optional: Can be completed but not required
|
||||
# - done: Retrospective has been completed
|
||||
#
|
||||
# WORKFLOW NOTES:
|
||||
# ===============
|
||||
# - Epic transitions to 'in-progress' automatically when first story is created
|
||||
# - Stories can be worked in parallel if team capacity allows
|
||||
# - SM typically creates next story after previous one is 'done' to incorporate learnings
|
||||
# - Dev moves story to 'review', then runs code-review (fresh context, different LLM recommended)
|
||||
|
||||
generated: 2026-03-11
|
||||
project: "l'ami fiduciaire"
|
||||
project_key: NOKEY
|
||||
tracking_system: file-system
|
||||
story_location: "_bmad-output/implementation-artifacts"
|
||||
|
||||
development_status:
|
||||
# Epic 0: Foundation Migration & Infrastructure Setup
|
||||
epic-0: in-progress
|
||||
0-1-rename-folders-to-declarations-in-database: done
|
||||
0-2-rename-folders-to-declarations-in-backend: backlog
|
||||
0-3-rename-folders-to-declarations-in-frontend: backlog
|
||||
0-4-configure-redis-for-cache-queue-and-sessions: backlog
|
||||
0-5-add-foundation-database-migrations-and-declaration-status-flow: backlog
|
||||
epic-0-retrospective: optional
|
||||
|
||||
# Epic 1: Team Management & Permission System
|
||||
epic-1: backlog
|
||||
1-1-permission-configuration-and-controller-traits: backlog
|
||||
1-2-team-management-page-view-and-invite-members: backlog
|
||||
1-3-role-assignment-and-member-removal: backlog
|
||||
1-4-manager-permission-toggle-matrix: backlog
|
||||
1-5-role-based-access-enforcement-across-views: backlog
|
||||
1-6-workspace-switching-for-multi-workspace-owners: backlog
|
||||
epic-1-retrospective: optional
|
||||
|
||||
# Epic 2: Role-Driven Dashboard & Command Center
|
||||
epic-2: backlog
|
||||
2-1-owner-manager-command-center-dashboard: backlog
|
||||
2-2-priority-alerts-panel: backlog
|
||||
2-3-worker-scoped-dashboard: backlog
|
||||
2-4-dashboard-activity-feed: backlog
|
||||
epic-2-retrospective: optional
|
||||
|
||||
# Epic 3: Collaboration, Nudge System & Notifications
|
||||
epic-3: backlog
|
||||
3-1-notification-infrastructure-setup: backlog
|
||||
3-2-one-click-nudge-system: backlog
|
||||
3-3-notification-center-and-bell: backlog
|
||||
3-4-bulk-client-notification-scheduling: backlog
|
||||
3-5-email-notification-enhancement-for-key-events: backlog
|
||||
epic-3-retrospective: optional
|
||||
|
||||
# Epic 4: Bulk Operations, Search & Advanced Filtering
|
||||
epic-4: backlog
|
||||
4-1-filterbar-component-and-usefilters-composable: backlog
|
||||
4-2-apply-filterbar-to-declarations-and-clients-pages: backlog
|
||||
4-3-quick-search-with-mysql-fulltext: backlog
|
||||
4-4-bulk-declaration-creation: backlog
|
||||
4-5-archive-navigation-with-dedicated-filters: backlog
|
||||
epic-4-retrospective: optional
|
||||
|
||||
# Epic 5: Archive System & Document Preview
|
||||
epic-5: backlog
|
||||
5-1-auto-archive-on-close-and-history-preservation: backlog
|
||||
5-2-archive-detail-page-read-only-snapshot: backlog
|
||||
5-3-in-app-document-preview: backlog
|
||||
5-4-re-open-archived-declaration: backlog
|
||||
5-5-bulk-zip-download-and-retention-policy: backlog
|
||||
epic-5-retrospective: optional
|
||||
|
||||
# Epic 6: Platform Administration & Subscription Enforcement
|
||||
epic-6: backlog
|
||||
6-1-saas-admin-role-and-admin-guard: backlog
|
||||
6-2-platform-dashboard-and-workspace-overview: backlog
|
||||
6-3-support-ticket-inbox: backlog
|
||||
6-4-platform-configuration-management: backlog
|
||||
6-5-subscription-tier-limit-enforcement: backlog
|
||||
epic-6-retrospective: optional
|
||||
|
||||
# Epic 7: Production Infrastructure & Deployment
|
||||
epic-7: backlog
|
||||
7-1-encrypted-file-storage-with-s3-compatible-backend: backlog
|
||||
7-2-email-delivery-via-amazon-ses: backlog
|
||||
7-3-laravel-forge-deployment-and-ci-pipeline: backlog
|
||||
7-4-monitoring-alerting-and-error-tracking: backlog
|
||||
7-5-automated-backups-and-disaster-recovery: backlog
|
||||
epic-7-retrospective: optional
|
||||
1264
_bmad-output/planning-artifacts/architecture.md
Normal file
1264
_bmad-output/planning-artifacts/architecture.md
Normal file
File diff suppressed because it is too large
Load Diff
1534
_bmad-output/planning-artifacts/epics.md
Normal file
1534
_bmad-output/planning-artifacts/epics.md
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,458 @@
|
||||
---
|
||||
stepsCompleted:
|
||||
- step-01-document-discovery
|
||||
- step-02-prd-analysis
|
||||
- step-03-epic-coverage-validation
|
||||
- step-04-ux-alignment
|
||||
- step-05-epic-quality-review
|
||||
- step-06-final-assessment
|
||||
filesIncluded:
|
||||
prd: prd.md
|
||||
architecture: architecture.md
|
||||
epics: epics.md
|
||||
ux: ux-design-specification.md
|
||||
---
|
||||
|
||||
# Implementation Readiness Assessment Report
|
||||
|
||||
**Date:** 2026-03-11
|
||||
**Project:** l'ami fiduciaire
|
||||
|
||||
## Document Inventory
|
||||
|
||||
### PRD
|
||||
- **File:** prd.md
|
||||
- **Format:** Whole document
|
||||
- **Supporting:** prd-validation-report.md (validation report)
|
||||
|
||||
### Architecture
|
||||
- **File:** architecture.md
|
||||
- **Format:** Whole document
|
||||
|
||||
### Epics & Stories
|
||||
- **File:** epics.md
|
||||
- **Format:** Whole document
|
||||
|
||||
### UX Design
|
||||
- **File:** ux-design-specification.md
|
||||
- **Format:** Whole document
|
||||
|
||||
### Discovery Notes
|
||||
- No duplicate documents found
|
||||
- No missing required documents
|
||||
- All 4 document types present and accounted for
|
||||
|
||||
## PRD Analysis
|
||||
|
||||
### Functional Requirements
|
||||
|
||||
| ID | Requirement |
|
||||
|---|---|
|
||||
| FR1 | Owner can create a new workspace with firm name and basic configuration |
|
||||
| FR2 | Owner can invite team members to the workspace via email |
|
||||
| FR3 | Owner can assign roles (Manager/Chef de Mission, Worker) to team members |
|
||||
| FR4 | Owner can configure per-workspace permission toggles for Manager roles |
|
||||
| FR5 | Owner can manage workspace settings (firm details, firm logo, display name) |
|
||||
| FR6 | New users can sign up for a 14-day trial without credit card |
|
||||
| FR7 | Owner can view, add, and remove team members from the workspace |
|
||||
| FR8 | Owner can change a team member's role within the workspace |
|
||||
| FR9 | Manager can invite, remove, and change roles of team members when permission is granted by Owner |
|
||||
| FR10 | System enforces role-based access -- Workers see only assigned items, Managers/Owners see all |
|
||||
| FR11 | Owner can switch between multiple owned workspaces |
|
||||
| FR12 | Owner/Manager can create, view, edit, and deactivate client records |
|
||||
| FR13 | Owner/Manager can import clients in bulk |
|
||||
| FR14 | Worker can view and interact with their assigned clients only |
|
||||
| FR15 | System associates each client with a workspace and enforces tenant isolation |
|
||||
| FR16 | Owner/Manager can create individual declarations for a client (type, deadline, assignment) |
|
||||
| FR17 | Owner/Manager can bulk-create declarations across multiple clients with type and deadline selection |
|
||||
| FR18 | Owner/Manager/Worker can update declaration status through its lifecycle |
|
||||
| FR19 | Owner/Manager can reassign a declaration to a different team member |
|
||||
| FR20 | Worker can edit declarations assigned to them (type correction, deadline adjustment) |
|
||||
| FR21 | System auto-archives declarations when marked as closed |
|
||||
| FR22 | Owner/Manager can re-open an archived declaration with audit trail |
|
||||
| FR23 | Users can view archived declarations in read-only mode with full history |
|
||||
| FR24 | Owner/Manager can view a command center dashboard showing all clients, declaration statuses, and priority alerts |
|
||||
| FR25 | Worker can view a scoped dashboard showing only their assigned clients and declarations |
|
||||
| FR26 | Dashboard surfaces priority alerts (overdue declarations, approaching deadlines, missing client documents) |
|
||||
| FR27 | SaaS Admin can view a platform-level dashboard (workspace count, user count, storage, system health) |
|
||||
| FR28 | SaaS Admin can view and respond to support tickets via an issue/support inbox |
|
||||
| FR29 | Owner/Manager can nudge a team member on a specific declaration with one action |
|
||||
| FR30 | Team members receive notifications with direct links to the relevant declaration |
|
||||
| FR31 | Users can view a notification center showing all received nudges and system alerts |
|
||||
| FR32 | Owner/Manager can schedule bulk notifications to clients for document requests |
|
||||
| FR33 | System sends email notifications for key events (document requests, nudges, status changes) |
|
||||
| FR34 | System generates unique token-based links for client interactions (no account required) |
|
||||
| FR35 | External clients can upload documents via token link from any device including mobile |
|
||||
| FR36 | External clients receive confirmation after successful document upload |
|
||||
| FR37 | Team members can download client-uploaded documents from the declaration detail page |
|
||||
| FR38 | Team members can send messages to clients within a declaration context |
|
||||
| FR39 | External clients can view messages from their fiduciary firm via the portal |
|
||||
| FR40 | Token links expire according to configurable security policies |
|
||||
| FR41 | Users can filter declarations by status, client, assignee, type, and deadline range |
|
||||
| FR42 | Filter selections persist across views within a session |
|
||||
| FR43 | Users can perform quick search across clients and declarations |
|
||||
| FR44 | Archive section is accessible as a top-level navigation item with its own filters and search |
|
||||
| FR45 | System preserves full declaration history upon archiving (documents, messages, status changes, activity log) |
|
||||
| FR46 | Users can browse archived declarations with hybrid filters and search |
|
||||
| FR47 | Users can view an archive detail page as a read-only snapshot of the complete declaration |
|
||||
| FR48 | Users can preview documents in-app from archived declarations |
|
||||
| FR49 | Users can bulk-download archived declaration documents as ZIP |
|
||||
| FR50 | System visually distinguishes archived declarations from active ones |
|
||||
| FR51 | System enforces 10-year retention policy for archived data |
|
||||
| FR52 | System logs all data modifications with actor, timestamp, and change details |
|
||||
| FR53 | Owner can view the full activity log for the workspace |
|
||||
| FR54 | Manager can view activity logs when permission is granted |
|
||||
| FR55 | Worker can view activity logs for their own actions only |
|
||||
| FR56 | SaaS Admin can view all workspaces and their usage metrics |
|
||||
| FR57 | SaaS Admin can manage platform-level configuration (global settings, feature flags, storage limits, email templates) |
|
||||
| FR58 | System enforces subscription tier limits (team members, clients, storage, features) |
|
||||
|
||||
**Total FRs: 58**
|
||||
|
||||
### Non-Functional Requirements
|
||||
|
||||
| ID | Category | Requirement |
|
||||
|---|---|---|
|
||||
| NFR1 | Performance | Page loads and common user actions complete within 2 seconds on standard Moroccan internet (ADSL/4G) |
|
||||
| NFR2 | Performance | Bulk declaration creation (up to 50) completes within 10 seconds |
|
||||
| NFR3 | Performance | Bulk notification scheduling (up to 50 clients) completes within 10 seconds |
|
||||
| NFR4 | Performance | File uploads up to 10 MB complete within 60 seconds on 4G |
|
||||
| NFR5 | Performance | Dashboard data renders within 3 seconds for workspaces with up to 200 active clients |
|
||||
| NFR6 | Performance | Quick search returns results within 1 second |
|
||||
| NFR7 | Security | All data encrypted in transit (TLS 1.2+) and at rest (AES-256 for stored documents) |
|
||||
| NFR8 | Security | Multi-tenant data isolation enforced at every query |
|
||||
| NFR9 | Security | Authorization boundary violations return 404 (not 403) to prevent tenant existence leakage |
|
||||
| NFR10 | Security | Token-based client portal links are cryptographically secure, single-purpose, and expire after configurable duration |
|
||||
| NFR11 | Security | Two-factor authentication available for all firm users (TOTP-based) |
|
||||
| NFR12 | Security | All data modifications logged with actor, timestamp, and change details (audit trail) |
|
||||
| NFR13 | Security | CNDP (Law 09-08) compliant data handling -- EU-hosted infrastructure |
|
||||
| NFR14 | Security | Client financial documents accessible only to authorized workspace members and specific client via token link |
|
||||
| NFR15 | Security | Session management with secure cookie handling, CSRF protection, and session timeout after inactivity |
|
||||
| NFR16 | Scalability | System supports up to 200 concurrent workspaces maintaining performance targets |
|
||||
| NFR17 | Scalability | System supports up to 1,000 total users across all workspaces |
|
||||
| NFR18 | Scalability | Individual workspace supports up to 500 active clients and 5,000 active declarations |
|
||||
| NFR19 | Scalability | File storage architecture supports growth to 1 TB total platform storage |
|
||||
| NFR20 | Scalability | System handles seasonal peak loads (bilan season Jan-Mar: 2-3x normal usage) |
|
||||
| NFR21 | Reliability | Platform targets 99.5% uptime (max ~3.6 hours unplanned downtime per month) |
|
||||
| NFR22 | Reliability | Automated hourly database backups with 1-hour RPO |
|
||||
| NFR23 | Reliability | Database binary/transaction logging enabled for point-in-time recovery |
|
||||
| NFR24 | Reliability | Backup restore procedure documented and tested -- full restore within 1 hour (RTO) |
|
||||
| NFR25 | Reliability | Backup retention: daily backups 30 days, weekly backups 6 months |
|
||||
| NFR26 | Reliability | Email notification delivery >99% success rate with retry logic (up to 3 retries within 5 minutes) |
|
||||
| NFR27 | Reliability | Monitoring and alerting configured for system health, error rates, and resource utilization |
|
||||
| NFR28 | Reliability | Zero data loss tolerance for completed transactions |
|
||||
|
||||
**Total NFRs: 28**
|
||||
|
||||
### Additional Requirements
|
||||
|
||||
- **CNDP Compliance (Law 09-08):** Personal client data must comply with Morocco's CNDP framework; EU hosting required; 10-year data retention per Moroccan law; user consent mechanisms required
|
||||
- **AML Context (Law 43-05):** Platform should not impede firms' AML compliance obligations; activity logging supports AML record-keeping
|
||||
- **Morocco-specific infrastructure:** Standard ADSL/4G baseline; peak usage during fiscal deadlines (15th-20th monthly, end of month, Jan-Mar bilan season); email delivery is mission-critical during peaks
|
||||
- **Integration (MVP):** Email delivery service, Spatie Media Library file storage; no direct government API integrations
|
||||
- **Subscription tier enforcement:** Starter (199 MAD/mo), Professional (499 MAD/mo), Enterprise (999 MAD/mo) with specific limits per tier
|
||||
- **RBAC:** 3 fixed roles (Owner, Manager/Chef de Mission, Worker) with per-workspace toggle-based permission matrix
|
||||
- **Multi-tenancy:** Session-based workspace resolution via current_workspace_id; absolute workspace isolation
|
||||
- **Terminology:** "Folders" renamed to "Declarations" across entire codebase (Pre-Phase foundation change)
|
||||
|
||||
### PRD Completeness Assessment
|
||||
|
||||
The PRD is comprehensive and well-structured. It includes:
|
||||
- Clear executive summary with market positioning
|
||||
- 6 detailed user journeys covering all 5 user types
|
||||
- 58 functional requirements with clear ownership (who can do what)
|
||||
- 28 non-functional requirements with measurable targets
|
||||
- Domain-specific compliance and regulatory context
|
||||
- Subscription tier model with specific limits
|
||||
- Risk mitigations identified
|
||||
- MVP phasing with clear scope boundaries
|
||||
|
||||
## Epic Coverage Validation
|
||||
|
||||
### Coverage Matrix
|
||||
|
||||
| FR | Requirement | Coverage | Status |
|
||||
|---|---|---|---|
|
||||
| FR1 | Owner can create workspace | Already Built | Covered |
|
||||
| FR2 | Owner can invite team members | Already Built (enhanced by Epic 1) | Covered |
|
||||
| FR3 | Owner can assign roles | Epic 1 - Story 1.2, 1.3 | Covered |
|
||||
| FR4 | Owner configures Manager permission toggles | Epic 1 - Story 1.4 | Covered |
|
||||
| FR5 | Owner manages workspace settings | Already Built | Covered |
|
||||
| FR6 | 14-day trial signup | Already Built | Covered |
|
||||
| FR7 | Owner view/add/remove team members | Epic 1 - Story 1.2, 1.3 | Covered |
|
||||
| FR8 | Owner change team member role | Epic 1 - Story 1.3 | Covered |
|
||||
| FR9 | Manager manages team when permitted | Epic 1 - Story 1.2, 1.3, 1.4 | Covered |
|
||||
| FR10 | System enforces role-based access | Epic 1 - Story 1.5 | Covered |
|
||||
| FR11 | Owner switches workspaces | Epic 1 - Story 1.6 | Covered |
|
||||
| FR12 | Owner/Manager CRUD clients | Already Built (enhanced by Epic 1, Epic 4) | Covered |
|
||||
| FR13 | Bulk client import | Already Built | Covered |
|
||||
| FR14 | Worker sees assigned clients only | Already Built (enhanced by Epic 1) | Covered |
|
||||
| FR15 | Client workspace isolation | Already Built | Covered |
|
||||
| FR16 | Create individual declarations | Epic 0 (terminology migration) | Covered |
|
||||
| FR17 | Bulk declaration creation | Epic 4 - Story 4.4 | Covered |
|
||||
| FR18 | Update declaration status | Epic 0 (terminology migration) | Covered |
|
||||
| FR19 | Reassign declarations | Epic 0 (terminology migration) | Covered |
|
||||
| FR20 | Worker edit assigned declarations | Epic 0 (terminology migration) | Covered |
|
||||
| FR21 | Auto-archive on close | Epic 5 - Story 5.1 | Covered |
|
||||
| FR22 | Re-open archived declaration | Epic 5 - Story 5.4 | Covered |
|
||||
| FR23 | View archived declarations read-only | Epic 5 - Story 5.2 | Covered |
|
||||
| FR24 | Owner/Manager command center dashboard | Epic 2 - Story 2.1 | Covered |
|
||||
| FR25 | Worker scoped dashboard | Epic 2 - Story 2.3 | Covered |
|
||||
| FR26 | Priority alerts on dashboard | Epic 2 - Story 2.2 | Covered |
|
||||
| FR27 | SaaS Admin platform dashboard | Epic 6 - Story 6.2 | Covered |
|
||||
| FR28 | SaaS Admin support inbox | Epic 6 - Story 6.3 | Covered |
|
||||
| FR29 | One-click nudge on declarations | Epic 3 - Story 3.2 | Covered |
|
||||
| FR30 | Notifications with direct links | Epic 3 - Story 3.3 | Covered |
|
||||
| FR31 | Notification center | Epic 3 - Story 3.3 | Covered |
|
||||
| FR32 | Bulk notification scheduling | Epic 3 - Story 3.4 | Covered |
|
||||
| FR33 | Email notifications for key events | Epic 3 - Story 3.5 | Covered |
|
||||
| FR34 | Token-based portal links | Already Built | Covered |
|
||||
| FR35 | Client upload via token link | Already Built | Covered |
|
||||
| FR36 | Upload confirmation | Already Built | Covered |
|
||||
| FR37 | Team document download | Already Built | Covered |
|
||||
| FR38 | In-declaration messaging | Already Built | Covered |
|
||||
| FR39 | Client message viewing | Already Built | Covered |
|
||||
| FR40 | Token link expiry | Already Built | Covered |
|
||||
| FR41 | Filter declarations by status/client/assignee/type/deadline | Epic 4 - Story 4.1, 4.2 | Covered |
|
||||
| FR42 | Filter persistence across views | Epic 4 - Story 4.1 | Covered |
|
||||
| FR43 | Quick search | Epic 4 - Story 4.3 | Covered |
|
||||
| FR44 | Archive as top-level nav | Epic 4 - Story 4.5 | Covered |
|
||||
| FR45 | Full history preservation on archive | Epic 5 - Story 5.1 | Covered |
|
||||
| FR46 | Browse archived with filters/search | Epic 5 (via Epic 4 Story 4.5) | Covered |
|
||||
| FR47 | Archive detail page read-only | Epic 5 - Story 5.2 | Covered |
|
||||
| FR48 | In-app document preview | Epic 5 - Story 5.3 | Covered |
|
||||
| FR49 | Bulk ZIP download | Epic 5 - Story 5.5 | Covered |
|
||||
| FR50 | Visual distinction for archived items | Epic 5 - Story 5.2, 4.5 | Covered |
|
||||
| FR51 | 10-year retention policy | Epic 5 - Story 5.5 | Covered |
|
||||
| FR52 | Activity logging | Already Built | Covered |
|
||||
| FR53 | Owner activity log viewing | Already Built (enhanced by Epic 1) | Covered |
|
||||
| FR54 | Manager activity log viewing | Already Built (enhanced by Epic 1) | Covered |
|
||||
| FR55 | Worker own-action log viewing | Already Built (enhanced by Epic 1) | Covered |
|
||||
| FR56 | Admin view all workspaces | Epic 6 - Story 6.2 | Covered |
|
||||
| FR57 | Admin platform configuration | Epic 6 - Story 6.4 | Covered |
|
||||
| FR58 | Subscription tier enforcement | Epic 6 - Story 6.5 | Covered |
|
||||
|
||||
### Missing Requirements
|
||||
|
||||
No missing FRs identified. All 58 functional requirements from the PRD have a traceable implementation path.
|
||||
|
||||
### Coverage Statistics
|
||||
|
||||
- **Total PRD FRs:** 58
|
||||
- **FRs covered in epics (new development):** 39
|
||||
- **FRs already built (existing foundation):** 19
|
||||
- **FRs missing:** 0
|
||||
- **Coverage percentage:** 100%
|
||||
|
||||
## UX Alignment Assessment
|
||||
|
||||
### UX Document Status
|
||||
|
||||
**Found:** `ux-design-specification.md` -- Comprehensive UX design specification (86KB, 14 steps completed). Covers executive summary, core user experience, emotional design, UX pattern analysis, design system foundation, visual design, user journey flows, component strategy, UX consistency patterns, responsive design, and accessibility.
|
||||
|
||||
### UX <-> PRD Alignment
|
||||
|
||||
**Strong alignment across all areas:**
|
||||
|
||||
| PRD Element | UX Coverage | Status |
|
||||
|---|---|---|
|
||||
| 5 user personas (Karim, Rachid, Fatima, Hassan, Saad) | All 5 mapped with detailed usage patterns, tech level, primary device | Aligned |
|
||||
| 6 user journeys | 4 detailed flow diagrams with mermaid; cross-role declaration lifecycle covered | Aligned |
|
||||
| Role-driven dashboards (FR24-FR26) | Detailed Owner/Manager command center + Worker scoped dashboard UX specifications | Aligned |
|
||||
| Client portal zero-friction (FR34-FR40) | Mobile-first, token-based, single-action page design specified | Aligned |
|
||||
| Bulk operations (FR17, FR32) | Multi-step form pattern, BulkActionBar component, Gmail-style selection | Aligned |
|
||||
| Filter persistence (FR42) | URL query params via Inertia router.get(), useFilters composable specified | Aligned |
|
||||
| Archive system (FR44-FR51) | Visual distinction (muted styling), read-only detail page, DeclarationStatusStepper | Aligned |
|
||||
| French-native UI | DD/MM/YYYY dates, MAD currency, relative French timestamps ("il y a 2 heures") | Aligned |
|
||||
| Subscription tiers | Not explicitly detailed in UX (LimitReachedModal is in epics but not detailed in UX spec) | Minor gap |
|
||||
|
||||
### UX <-> Architecture Alignment
|
||||
|
||||
**Strong alignment on technical patterns:**
|
||||
|
||||
| UX Pattern | Architecture Support | Status |
|
||||
|---|---|---|
|
||||
| Server-side filtering + URL params | D11: Inertia router.get() + Eloquent scopes in controllers | Aligned |
|
||||
| Dashboard caching for 200 clients (NFR5) | D4/D5: Redis Cache::remember() with 5-minute TTL | Aligned |
|
||||
| Document preview (PDF.js, images) | D12: Client-side PDF.js, native img, shadcn Dialog wrapper | Aligned |
|
||||
| Real-time activity feed | D10: Deferred for MVP -- no WebSocket. Server-rendered via Inertia | Aligned (noted limitation) |
|
||||
| Notification system (bell, email) | D8: Laravel DatabaseNotification, database + mail channels | Aligned |
|
||||
| Bulk operations (50 items, 10s) | D9: DB::transaction() + individual Redis-queued emails | Aligned |
|
||||
| Quick search (1s response) | D3: MySQL FULLTEXT with MATCH...AGAINST | Aligned |
|
||||
| Mobile-first client portal | Token-based auth, Spatie Media Library, responsive Tailwind | Aligned |
|
||||
| TanStack Table v8 for DataTable | Not explicitly mentioned in architecture but compatible with Vue 3 frontend stack | Compatible |
|
||||
|
||||
### Alignment Issues
|
||||
|
||||
1. **Declaration status flow mismatch (Minor):** The UX Journey 4 shows a status flow: `CREATED → WAITING_FOR_CLIENT → DOCUMENTS_RECEIVED → IN_PROGRESS → FILED → ARCHIVED` with additional states `DOCUMENTS_INCOMPLETE` and `CLIENT_NOTIFIED`. However, the Architecture specifies: `created → en_cours → en_attente_client → en_cours → termine → ferme → [auto-archive]`. The PRD aligns with the Architecture version. The UX document uses different status names (English vs. French) and includes states (`DOCUMENTS_RECEIVED`, `DOCUMENTS_INCOMPLETE`, `FILED`) not present in the Architecture or PRD. **Recommendation:** Align UX to use the Architecture/PRD status flow. The extra UX states may represent visual sub-states rather than database states, but this should be clarified to avoid confusion during implementation.
|
||||
|
||||
2. **Sidebar navigation items (Minor):** The UX spec lists sidebar items as "Dashboard, Clients, Dossiers, Fiscal Calendar, Declarations, Settings" in some places, while the PRD/Architecture/Epics use "Dashboard, Clients, Declarations, Archive, Team, Settings." "Fiscal Calendar" and "Dossiers" appear to be UX concepts that don't map to built features. **Recommendation:** Align UX sidebar to match PRD/Epics: Dashboard, Clients, Declarations, Archive, Team, Settings.
|
||||
|
||||
3. **LimitReachedModal UX specification (Gap):** The epics (Story 6.5) reference a `LimitReachedModal` component for subscription enforcement, but the UX spec does not detail this component's design. **Recommendation:** Add LimitReachedModal to UX component strategy.
|
||||
|
||||
### Warnings
|
||||
|
||||
- **No critical misalignments.** The UX, PRD, and Architecture are well-synchronized. The UX was clearly built from the PRD and references Architecture decisions.
|
||||
- The two minor status flow discrepancies should be resolved before implementation to ensure developers build the correct states.
|
||||
- The UX document uses "folders/dossiers" terminology in a few legacy references (e.g., component list mentions "FolderForm") which should be updated to "declarations" post-rename.
|
||||
|
||||
## Epic Quality Review
|
||||
|
||||
### Epic Structure Assessment
|
||||
|
||||
**8 epics, 36 stories total. Overall quality: Strong.**
|
||||
|
||||
| Epic | Stories | User Value | Independent | ACs Quality | FR Traced |
|
||||
|---|---|---|---|---|---|
|
||||
| Epic 0: Foundation Migration | 5 | Technical (justified) | Pre-phase | Good | Pass |
|
||||
| Epic 1: Team Management | 6 | Yes | Yes | Strong | FR3,4,7-11 |
|
||||
| Epic 2: Dashboard & Command Center | 4 | Yes | Needs Epic 1 | Strong | FR24-26 |
|
||||
| Epic 3: Collaboration & Notifications | 5 | Yes | Needs Epic 1 | Strong | FR29-33 |
|
||||
| Epic 4: Bulk Ops, Search, Filtering | 5 | Yes | Yes | Strong | FR17,41-44 |
|
||||
| Epic 5: Archive & Document Preview | 5 | Yes | Needs Epic 4.5 | Good (minor issue) | FR21-23,45-51 |
|
||||
| Epic 6: Platform Admin | 5 | Yes | Yes | Strong | FR27-28,56-58 |
|
||||
| Epic 7: Production Infrastructure | 5 | Operational (justified) | Yes | Strong | NFR-driven |
|
||||
|
||||
### Critical Violations
|
||||
|
||||
**1. Epic 0 and Epic 7 are technical milestone epics (no direct user value)**
|
||||
- Epic 0: Terminology migration + Redis setup -- purely technical
|
||||
- Epic 7: Production infrastructure, deployment, backups -- operational
|
||||
- **Assessment:** Both are justifiable exceptions. Epic 0 prevents compounding rename debt. Epic 7 addresses mandatory NFRs for production.
|
||||
- **Recommendation:** Accept as "enabler epics" and document them as such. Not a blocking issue.
|
||||
|
||||
### Major Issues
|
||||
|
||||
**2. HTTP 403 vs 404 inconsistency in Epic 5 (Stories 5.1, 5.2, 5.4)**
|
||||
- Stories use `abort(403)` for archived declaration edit attempts and Worker access restrictions
|
||||
- Architecture mandates `abort(404)` for ALL authorization violations (NFR9)
|
||||
- **Recommendation:** Update acceptance criteria to use `abort(404)` consistently. If 403 is intentionally desired for archived-edit rejection (user IS authorized to view but NOT edit), document this as a deliberate exception.
|
||||
|
||||
**3. Story 0.5 creates database columns prematurely**
|
||||
- `permissions` JSON column (needed Epic 1) and `archived_at` (needed Epic 5) created in Epic 0
|
||||
- Violates just-in-time database creation principle
|
||||
- **Recommendation:** Acceptable for "foundation pre-phase" design intent. Alternatively, move to Story 1.1 and Story 5.1 respectively.
|
||||
|
||||
### Minor Concerns
|
||||
|
||||
**4. Infrastructure-first stories within user-value epics**
|
||||
- Stories 1.1, 3.1, 4.1, and 6.1 are developer-facing infrastructure stories
|
||||
- They create technical foundations (traits, notification tables, FilterBar component, admin guard) that subsequent stories build upon
|
||||
- **Assessment:** Common and pragmatic pattern. Each "X.1" story enables clear user value in X.2+ stories.
|
||||
|
||||
**5. BulkActionBar pattern coupling between Epic 3 and Epic 4**
|
||||
- Story 3.4 introduces BulkActionBar for client notifications
|
||||
- Story 4.4 uses similar bulk UI pattern for declaration creation
|
||||
- **Assessment:** Minor. Both can implement independently. The component can be built in whichever epic is implemented first.
|
||||
|
||||
**6. Acceptance criteria completeness**
|
||||
- All 36 stories use proper Given/When/Then BDD format
|
||||
- Stories reference specific NFR targets (e.g., "within 10 seconds NFR2", "within 3 seconds NFR5")
|
||||
- Error conditions are generally well-covered
|
||||
- **One gap:** Story 4.4 does not specify what happens if bulk creation partially fails (e.g., 48 of 50 succeed due to a validation error on 2 clients). The `DB::transaction()` means all-or-nothing, but this should be explicitly stated in the ACs.
|
||||
|
||||
### Story Dependency Map
|
||||
|
||||
```
|
||||
Epic 0: 0.1 → 0.2 → 0.3 (sequential rename)
|
||||
0.4 (independent - Redis)
|
||||
0.5 → depends on 0.1
|
||||
|
||||
Epic 1: 1.1 (foundation) → 1.2, 1.3, 1.4, 1.5 (parallel possible)
|
||||
1.6 (independent)
|
||||
|
||||
Epic 2: 2.1 (dashboard base) → 2.2, 2.3, 2.4 (parallel after 2.1)
|
||||
|
||||
Epic 3: 3.1 (notification infra) → 3.2, 3.3, 3.4, 3.5 (parallel after 3.1)
|
||||
|
||||
Epic 4: 4.1 (FilterBar) → 4.2, 4.3, 4.5 (parallel after 4.1)
|
||||
4.4 (independent of 4.1)
|
||||
|
||||
Epic 5: 5.1 (auto-archive) → 5.2, 5.4, 5.5 (parallel after 5.1)
|
||||
5.3 (independent)
|
||||
|
||||
Epic 6: 6.1 (admin guard) → 6.2, 6.3, 6.4 (parallel after 6.1)
|
||||
6.5 (independent)
|
||||
|
||||
Epic 7: 7.1-7.5 (mostly independent, can parallelize)
|
||||
```
|
||||
|
||||
### Remediation Summary
|
||||
|
||||
| # | Issue | Severity | Action Required |
|
||||
|---|---|---|---|
|
||||
| 1 | Epic 0 + Epic 7 no user value | Critical (by standard), Low (in context) | Document as "enabler epics" -- no rework needed |
|
||||
| 2 | 403 vs 404 in Epic 5 stories | Major | Update ACs in Stories 5.1, 5.2, 5.4 |
|
||||
| 3 | Early column creation in Story 0.5 | Major (by standard), Low (in context) | Accept or move to relevant epics |
|
||||
| 4 | Infrastructure-first stories | Minor | No action -- pragmatic pattern |
|
||||
| 5 | BulkActionBar coupling | Minor | No action -- independent implementation possible |
|
||||
| 6 | Partial bulk failure not specified | Minor | Add explicit all-or-nothing AC to Story 4.4 |
|
||||
|
||||
## Summary and Recommendations
|
||||
|
||||
### Overall Readiness Status
|
||||
|
||||
**READY** -- with minor corrections recommended before implementation begins.
|
||||
|
||||
The planning artifacts for L'Ami Fiduciaire are comprehensive, well-aligned, and implementation-ready. The PRD, Architecture, UX Design, and Epics documents form a cohesive set with strong traceability between requirements and implementation stories.
|
||||
|
||||
### Findings Summary
|
||||
|
||||
| Category | Finding | Verdict |
|
||||
|---|---|---|
|
||||
| **Document Completeness** | All 4 required documents present (PRD, Architecture, UX, Epics) | Pass |
|
||||
| **FR Coverage** | 58/58 FRs mapped to epics or existing features (100%) | Pass |
|
||||
| **NFR Coverage** | 28/28 NFRs addressed across epics (particularly Epic 7) | Pass |
|
||||
| **UX-PRD Alignment** | Strong alignment across all areas; 3 minor discrepancies | Pass (with notes) |
|
||||
| **UX-Architecture Alignment** | Strong alignment; all UX patterns supported by architecture decisions | Pass |
|
||||
| **Epic User Value** | 6/8 epics deliver direct user value; 2 are justified enabler epics | Pass (with caveat) |
|
||||
| **Epic Independence** | Sequential dependencies are logical and documented | Pass |
|
||||
| **Story Quality** | 36 stories with proper BDD acceptance criteria | Pass |
|
||||
| **Story Dependencies** | No circular or forward dependencies; clear parallelization opportunities | Pass |
|
||||
|
||||
### Critical Issues Requiring Immediate Action
|
||||
|
||||
**None.** No blocking issues were identified. The artifacts are ready for implementation.
|
||||
|
||||
### Recommended Corrections Before Implementation
|
||||
|
||||
These are quick fixes that will prevent confusion during development:
|
||||
|
||||
1. **Fix 403 vs 404 in Epic 5 stories (Stories 5.1, 5.2, 5.4)** -- Update acceptance criteria to use `abort(404)` consistently per Architecture NFR9 convention. If 403 is intentional for archived-edit rejection, document as explicit exception. **Effort: 5 minutes.**
|
||||
|
||||
2. **Align UX status flow naming with Architecture/PRD** -- The UX spec uses English status names (CREATED, FILED, DOCUMENTS_RECEIVED) while the Architecture uses French (created, en_cours, en_attente_client, termine, ferme). Also clarify whether UX-only states (DOCUMENTS_INCOMPLETE, CLIENT_NOTIFIED) are visual sub-states or need database representation. **Effort: 15 minutes.**
|
||||
|
||||
3. **Align UX sidebar navigation items** -- Update UX spec sidebar from "Dashboard, Clients, Dossiers, Fiscal Calendar, Declarations, Settings" to match PRD/Epics: "Dashboard, Clients, Declarations, Archive, Team, Settings." **Effort: 5 minutes.**
|
||||
|
||||
4. **Add all-or-nothing clarification to Story 4.4** -- Explicitly state in acceptance criteria that `DB::transaction()` means all declarations succeed or all fail (no partial creation). **Effort: 2 minutes.**
|
||||
|
||||
### Strengths Noted
|
||||
|
||||
1. **Exceptional FR traceability** -- Every FR has a clear path from PRD → Epic → Story with explicit FR references in each epic and a complete coverage map in the epics document.
|
||||
|
||||
2. **Strong brownfield awareness** -- Stories correctly reference existing codebase patterns (Spatie Activity Log, Spatie Media Library, Fortify 2FA, Inertia.js, shadcn-vue) and build on them rather than replacing them.
|
||||
|
||||
3. **Measurable NFR targets in stories** -- Stories directly reference NFR benchmarks (e.g., "renders within 3 seconds NFR5", "within 10 seconds NFR2") making them testable during implementation.
|
||||
|
||||
4. **Parallelization opportunities** -- Within each epic, Story X.1 is the only blocker; subsequent stories (X.2, X.3, X.4) can often be developed in parallel by the 2-developer team.
|
||||
|
||||
5. **Comprehensive UX specification** -- The UX document provides component-level detail (10 custom components with variants, states, accessibility notes), consistent design patterns, and responsive strategy -- reducing design ambiguity during development.
|
||||
|
||||
6. **Architecture decision documentation** -- 16+ architecture decisions (D1-D16) with rationale, making it clear WHY specific technical choices were made, not just WHAT was chosen.
|
||||
|
||||
### Recommended Next Steps
|
||||
|
||||
1. Apply the 4 recommended corrections above (~30 minutes total)
|
||||
2. Begin sprint planning to sequence epics and assign stories to developers
|
||||
3. Start implementation with Epic 0 (Foundation Migration) as the required first epic
|
||||
4. Epic 7 (Production Infrastructure) can be started in parallel with Epics 1-5 since it's independent
|
||||
|
||||
### Final Note
|
||||
|
||||
This assessment identified **9 issues** across **3 categories** (UX alignment, epic quality, story quality). Of these, **0 are blocking**, **2 are major** (by strict standards but low impact in context), and **7 are minor**. The planning artifacts are production-quality and ready for implementation. The L'Ami Fiduciaire project has strong traceability from requirements through architecture to implementation stories -- a solid foundation for the 2-developer team to execute against.
|
||||
|
||||
---
|
||||
|
||||
**Assessment completed:** 2026-03-11
|
||||
**Assessor:** Implementation Readiness Workflow (PM/SM Expert)
|
||||
**Project:** L'Ami Fiduciaire
|
||||
524
_bmad-output/planning-artifacts/prd-validation-report.md
Normal file
524
_bmad-output/planning-artifacts/prd-validation-report.md
Normal file
@@ -0,0 +1,524 @@
|
||||
---
|
||||
validationTarget: '_bmad-output/planning-artifacts/prd.md'
|
||||
validationDate: '2026-03-11'
|
||||
inputDocuments:
|
||||
- '_bmad-output/planning-artifacts/product-brief-l-ami-fiduciaire-2026-03-10.md'
|
||||
- '_bmad-output/planning-artifacts/research/market-fiduciary-saas-morocco-research-2026-03-10.md'
|
||||
- '_bmad-output/planning-artifacts/research/domain-moroccan-fiduciary-operations-research-2026-03-10.md'
|
||||
- '_bmad-output/planning-artifacts/research/ecosystem-partners-morocco-fiduciary-research-2026-03-10.md'
|
||||
- '_bmad-output/planning-artifacts/research/cloud-adoption-saas-trends-future-outlook-research-2026-03-11.md'
|
||||
- '_bmad-output/planning-artifacts/research/domain-moroccan-tax-regulation-digital-compliance-research-2026-03-10.md'
|
||||
- '_bmad-output/project-context.md'
|
||||
validationStepsCompleted: ['step-v-01-discovery', 'step-v-02-format-detection', 'step-v-03-density-validation', 'step-v-04-brief-coverage-validation', 'step-v-05-measurability-validation', 'step-v-06-traceability-validation', 'step-v-07-implementation-leakage-validation', 'step-v-08-domain-compliance-validation', 'step-v-09-project-type-validation', 'step-v-10-smart-validation', 'step-v-11-holistic-quality-validation', 'step-v-12-completeness-validation']
|
||||
validationStatus: COMPLETE
|
||||
holisticQualityRating: '4/5 - Good'
|
||||
overallStatus: 'Warning'
|
||||
---
|
||||
|
||||
# PRD Validation Report
|
||||
|
||||
**PRD Being Validated:** _bmad-output/planning-artifacts/prd.md
|
||||
**Validation Date:** 2026-03-11
|
||||
|
||||
## Input Documents
|
||||
|
||||
- **Product Brief:** product-brief-l-ami-fiduciaire-2026-03-10.md
|
||||
- **Market Research:** market-fiduciary-saas-morocco-research-2026-03-10.md
|
||||
- **Domain Research:** domain-moroccan-fiduciary-operations-research-2026-03-10.md
|
||||
- **Ecosystem Partners Research:** ecosystem-partners-morocco-fiduciary-research-2026-03-10.md
|
||||
- **Cloud/SaaS Trends Research:** cloud-adoption-saas-trends-future-outlook-research-2026-03-11.md
|
||||
- **Tax Regulation Research:** domain-moroccan-tax-regulation-digital-compliance-research-2026-03-10.md
|
||||
- **Project Context:** project-context.md
|
||||
|
||||
## Validation Findings
|
||||
|
||||
## Format Detection
|
||||
|
||||
**PRD Structure (## Level 2 Headers):**
|
||||
1. Executive Summary
|
||||
2. Project Classification
|
||||
3. Success Criteria
|
||||
4. Product Scope & Development Strategy
|
||||
5. User Journeys
|
||||
6. Domain-Specific Requirements
|
||||
7. SaaS B2B Specific Requirements
|
||||
8. Functional Requirements
|
||||
9. Non-Functional Requirements
|
||||
|
||||
**BMAD Core Sections Present:**
|
||||
- Executive Summary: Present
|
||||
- Success Criteria: Present
|
||||
- Product Scope: Present (as "Product Scope & Development Strategy")
|
||||
- User Journeys: Present
|
||||
- Functional Requirements: Present
|
||||
- Non-Functional Requirements: Present
|
||||
|
||||
**Format Classification:** BMAD Standard
|
||||
**Core Sections Present:** 6/6
|
||||
|
||||
**Additional Sections (beyond core 6):**
|
||||
- Project Classification -- provides domain/complexity/project-type metadata
|
||||
- Domain-Specific Requirements -- industry compliance and regulatory context
|
||||
- SaaS B2B Specific Requirements -- multi-tenancy, RBAC, subscription tiers, billing
|
||||
|
||||
## Information Density Validation
|
||||
|
||||
**Anti-Pattern Violations:**
|
||||
|
||||
**Conversational Filler:** 0 occurrences
|
||||
|
||||
**Wordy Phrases:** 0 occurrences
|
||||
|
||||
**Redundant Phrases:** 0 occurrences
|
||||
|
||||
**Total Violations:** 0
|
||||
|
||||
**Severity Assessment:** Pass
|
||||
|
||||
**Recommendation:** PRD demonstrates excellent information density with zero violations. Language is direct, concise, and every sentence carries information weight. No filler phrases, no wordy constructions, no redundant expressions detected.
|
||||
|
||||
## Product Brief Coverage
|
||||
|
||||
**Product Brief:** product-brief-l-ami-fiduciaire-2026-03-10.md
|
||||
|
||||
### Coverage Map
|
||||
|
||||
**Vision Statement:** Fully Covered
|
||||
Brief's "practice management orchestration platform for Moroccan fiduciary firms" is fully articulated in PRD Executive Summary with additional strategic depth (juridique layer vision, Experio strategic split).
|
||||
|
||||
**Target Users:** Fully Covered
|
||||
Brief defines 5 personas (Karim/Owner, Fatima/Worker, Hassan/Client, Saad/Admin, Experio/Future). PRD covers all 5 and adds Rachid (Manager/Chef de Mission) as a dedicated persona with full user journey -- an enhancement over the brief.
|
||||
|
||||
**Problem Statement:** Fully Covered
|
||||
Brief's fragmented workflow problem (Sage + SIMPL + WhatsApp + Excel, missed deadlines, no visibility) is fully covered in PRD Executive Summary and reinforced through user journey narratives.
|
||||
|
||||
**Key Features:** Fully Covered
|
||||
All 5 MVP phases from brief are present in PRD "Product Scope & Development Strategy" with identical scope. Pre-Phase (terminology migration), Phase 1-5 all mapped correctly. "Already Built" foundation accurately reflected.
|
||||
|
||||
**Goals/Objectives:** Fully Covered
|
||||
Brief's success metrics (100-150 firms Y1, >30% trial conversion, <5% churn, MRR targets) are all present in PRD Success Criteria with identical targets. PRD adds leading indicators section.
|
||||
|
||||
**Differentiators:** Fully Covered
|
||||
Brief's 5 differentiators are covered in PRD's "What Makes This Special" section with 6 items (adds "positioned for profession's transformation" point informed by research).
|
||||
|
||||
**Pricing Model:** Fully Covered
|
||||
Brief's 3-tier pricing (199/499/999 MAD) with per-workspace model is fully present. PRD enhances with Morocco-specific payment methods (CMI, bank transfer, CashPlus) replacing brief's Stripe-focused approach.
|
||||
|
||||
**Out of Scope:** Fully Covered
|
||||
Brief's 9 out-of-scope items all appear in PRD Growth Features table with consistent rationale and timing.
|
||||
|
||||
### Coverage Summary
|
||||
|
||||
**Overall Coverage:** 100% -- All Product Brief content is fully covered in PRD
|
||||
**Critical Gaps:** 0
|
||||
**Moderate Gaps:** 0
|
||||
**Informational Gaps:** 0
|
||||
|
||||
**PRD Enhancements Beyond Brief:**
|
||||
- Added Rachid (Manager) persona with dedicated user journey
|
||||
- Expanded payment methods from Stripe to Morocco-specific infrastructure (CMI, bank transfer, CashPlus)
|
||||
- Added juridique layer as long-term strategic vision
|
||||
- Added "profession's transformation" differentiator informed by research
|
||||
- Added Domain-Specific Requirements section (CNDP, AML, fiscal compliance context)
|
||||
- Added SaaS B2B Specific Requirements section (multi-tenancy model, RBAC matrix, subscription details)
|
||||
|
||||
**Recommendation:** PRD provides excellent coverage of Product Brief content with meaningful enhancements informed by research documents.
|
||||
|
||||
## Measurability Validation
|
||||
|
||||
### Functional Requirements
|
||||
|
||||
**Total FRs Analyzed:** 58 (FR1-FR58)
|
||||
|
||||
**Format Violations:** 0
|
||||
All FRs follow proper "[Actor] can [capability]" or "System [enforces/generates/preserves]" patterns. Actors are clearly defined (Owner, Manager, Worker, External clients, System, SaaS Admin, Users).
|
||||
|
||||
**Subjective Adjectives Found:** 0
|
||||
No subjective adjectives (easy, fast, simple, intuitive, etc.) found in any FR.
|
||||
|
||||
**Vague Quantifiers Found:** 0
|
||||
"Multiple" appears in FR11 and FR17 but is used correctly -- FR11 refers to Owners who by definition may have multiple workspaces; FR17 refers to a bulk-select action (more than one client). Both are testable.
|
||||
|
||||
**Implementation Leakage:** 0
|
||||
No technology names, library names, or implementation details found in FRs. Clean separation of capability from implementation.
|
||||
|
||||
**FR Violations Total:** 0
|
||||
|
||||
### Non-Functional Requirements
|
||||
|
||||
**Total NFRs Analyzed:** 28 (NFR1-NFR28)
|
||||
|
||||
**Missing Metrics:** 2
|
||||
- **NFR4** (line 512): "File uploads up to 10 MB complete without timeout on 4G connections" -- "without timeout" lacks a specific max time threshold. Suggest: "complete within 60 seconds on 4G connections"
|
||||
- **NFR26** (line 543): "Email notification delivery must be reliable with retry logic" -- "reliable" is subjective. Suggest: "Email notification delivery must achieve >99% delivery success rate with retry logic (up to 3 retries within 5 minutes)"
|
||||
|
||||
**Incomplete Template:** 3
|
||||
- **NFR16** (line 530): "without performance degradation" -- lacks threshold definition. Should reference specific metrics (e.g., "while maintaining NFR1 page load targets")
|
||||
- **NFR18** (line 532): "without degradation" -- same issue as NFR16. Should specify what "degradation" means in measurable terms
|
||||
- **NFR20** (line 534): "without service degradation" -- same pattern. Should specify thresholds for peak load performance
|
||||
|
||||
**Missing Context:** 0
|
||||
|
||||
**Implementation Detail in NFRs:** 1 (minor)
|
||||
- **NFR11** (line 522): "TOTP via Fortify" -- Fortify is a specific Laravel package. Suggest: "Two-factor authentication available for all firm users (TOTP-based)" -- implementation choice belongs in architecture, not PRD
|
||||
|
||||
**NFR Violations Total:** 6
|
||||
|
||||
### Overall Assessment
|
||||
|
||||
**Total Requirements:** 86 (58 FRs + 28 NFRs)
|
||||
**Total Violations:** 6 (0 FR + 6 NFR)
|
||||
|
||||
**Severity:** Warning (5-10 violations)
|
||||
|
||||
**Recommendation:** FRs are excellent -- clean, testable, properly formatted with zero violations. NFRs need minor refinement: 3 instances of "without degradation" should reference specific thresholds, 2 NFRs need measurable metrics instead of subjective terms ("reliable", "without timeout"), and 1 NFR leaks implementation detail (Fortify). These are all low-effort fixes that would make the NFR section fully testable.
|
||||
|
||||
## Traceability Validation
|
||||
|
||||
### Chain Validation
|
||||
|
||||
**Executive Summary → Success Criteria:** Intact
|
||||
Vision (practice orchestration, zero missed deadlines, firm visibility) directly maps to Success Criteria (Karim: zero missed deadlines, full visibility; Fatima: no declarations falling through; Hassan: frictionless submission). Business targets (100-150 firms, Experio channel, MRR) align with Business Success metrics. No misalignments.
|
||||
|
||||
**Success Criteria → User Journeys:** Intact
|
||||
Every success criterion has a corresponding user journey that demonstrates achieving it:
|
||||
- Karim's "zero missed deadlines" → Journey 1 (command center, priority alerts, nudge system)
|
||||
- Karim's "full visibility" → Journey 1 (Monday morning dashboard scene)
|
||||
- Fatima's "no declarations falling through" → Journey 3 (scoped dashboard, bulk notifications)
|
||||
- Fatima's "reduced chasing" → Journey 3 (portal document receipt replaces WhatsApp)
|
||||
- Hassan's "fast submission" → Journey 5 (3-minute upload, token link)
|
||||
- Business "trial-to-paid" → Journey 1 (Karim converts on day 11)
|
||||
- Technical success → Journey 6 (Saad monitors platform health)
|
||||
|
||||
**User Journeys → Functional Requirements:** Intact
|
||||
All capabilities revealed in user journeys have corresponding FRs:
|
||||
|
||||
| Journey | Capabilities | Supporting FRs |
|
||||
|---|---|---|
|
||||
| J1: Karim (Setup) | Workspace, team, roles, bulk create, dashboard, alerts, nudge | FR1-FR6, FR17, FR24, FR26, FR29 |
|
||||
| J2: Rachid (Coordination) | Manager dashboard, reassignment, nudge | FR19, FR24, FR30-FR31 |
|
||||
| J3: Fatima (Daily Grind) | Scoped dashboard, status, bulk notify, portal docs, messaging | FR18, FR25, FR32-FR33, FR37-FR38 |
|
||||
| J4: Fatima (Edge Case) | Edit declaration, audit trail, messaging | FR20, FR38, FR52 |
|
||||
| J5: Hassan (Upload) | Token link, mobile upload, confirmation | FR33-FR36 |
|
||||
| J6: Saad (Platform) | Admin dashboard, support inbox, monitoring | FR27-FR28, FR56-FR57 |
|
||||
|
||||
**Scope → FR Alignment:** Intact
|
||||
All 5 MVP phases map to FR groups:
|
||||
- Phase 1 (Roles) → FR3-FR4, FR7-FR11
|
||||
- Phase 2 (Dashboards) → FR24-FR28
|
||||
- Phase 3 (Collaboration) → FR29-FR33
|
||||
- Phase 4 (Efficiency) → FR17, FR32, FR41-FR44
|
||||
- Phase 5 (Archive) → FR21-FR23, FR45-FR51
|
||||
- Already Built → FR1-FR2, FR5-FR6, FR12-FR16, FR34-FR40, FR52-FR55
|
||||
|
||||
### Orphan Elements
|
||||
|
||||
**Orphan Functional Requirements:** 0
|
||||
All 58 FRs trace to at least one user journey or business requirement. FR57 (platform config) and FR58 (tier limits) trace to Journey 6 and the SaaS business model respectively.
|
||||
|
||||
**Unsupported Success Criteria:** 0
|
||||
All success criteria have supporting journeys and FRs.
|
||||
|
||||
**User Journeys Without FRs:** 0
|
||||
All journey capabilities are supported by corresponding FRs.
|
||||
|
||||
### Traceability Summary
|
||||
|
||||
**Total Traceability Issues:** 0
|
||||
|
||||
**Severity:** Pass
|
||||
|
||||
**Recommendation:** Traceability chain is intact. All requirements trace from Executive Summary vision through Success Criteria to User Journeys to Functional Requirements. No orphan FRs, no unsupported success criteria, no journeys without FR coverage. The PRD demonstrates strong end-to-end traceability.
|
||||
|
||||
## Implementation Leakage Validation
|
||||
|
||||
### Leakage by Category
|
||||
|
||||
**Frontend Frameworks:** 0 violations
|
||||
|
||||
**Backend Frameworks:** 1 violation
|
||||
- **NFR11** (line 522): "TOTP via Fortify" -- Fortify is a Laravel authentication package. Suggest: "Two-factor authentication available for all firm users (TOTP-based)"
|
||||
|
||||
**Databases:** 1 violation
|
||||
- **NFR23** (line 540): "MySQL binary logging enabled for point-in-time recovery" -- specifies MySQL as the database technology. Suggest: "Database binary/transaction logging enabled for point-in-time recovery up to last committed transaction"
|
||||
|
||||
**Cloud Platforms:** 0 violations
|
||||
|
||||
**Infrastructure:** 0 violations
|
||||
|
||||
**Libraries:** 0 violations
|
||||
|
||||
**Other Implementation Details:** 0 violations
|
||||
|
||||
**Note on contextual sections:** Technology terms (Laravel 12, Vue 3, Inertia.js, Spatie Media Library, Spatie Activity Log, Eloquent) appear in Executive Summary, Project Classification, and Product Scope sections as brownfield context. These are appropriate context for a brownfield PRD -- they describe what exists, not what to build. No violation.
|
||||
|
||||
**Note on security standards:** TLS 1.2+ and AES-256 (NFR7) are industry security standards specifying capability thresholds, not implementation choices. HTTP 404/403 (NFR9) specifies protocol behavior. CSRF (NFR15) is a security concept. All capability-relevant, not leakage.
|
||||
|
||||
### Summary
|
||||
|
||||
**Total Implementation Leakage Violations:** 2
|
||||
|
||||
**Severity:** Warning (2-5 violations)
|
||||
|
||||
**Recommendation:** Minor leakage detected in 2 NFRs. Both are low-effort fixes: remove "Fortify" from NFR11 (replace with "TOTP-based") and remove "MySQL" from NFR23 (replace with "Database binary/transaction logging"). Implementation technology choices belong in the architecture document, not in PRD requirements.
|
||||
|
||||
## Domain Compliance Validation
|
||||
|
||||
**Domain:** Fintech (fiduciary/accounting practice management)
|
||||
**Complexity:** High (regulated)
|
||||
|
||||
### Required Special Sections (Fintech)
|
||||
|
||||
**Compliance Matrix:** Present (Adequate)
|
||||
PRD "Domain-Specific Requirements" → "Compliance & Regulatory" section covers:
|
||||
- CNDP (Law 09-08) data protection with specific requirements (EU hosting, consent mechanisms, retention policies)
|
||||
- Tax & Fiscal compliance context (declaration types, Moroccan fiscal calendar, penalty awareness)
|
||||
- AML context (Law 43-05) with note on indirect applicability and audit trail support
|
||||
- Risk mitigations table with specific regulatory risks and mitigation strategies
|
||||
|
||||
**Security Architecture:** Present (Adequate)
|
||||
PRD covers security across two locations:
|
||||
- "Domain-Specific Requirements" → "Technical Constraints" → "Domain-Specific Security Context" (encryption context, tenant isolation rationale, token portal security)
|
||||
- NFR7-NFR15 provide specific security requirements (TLS 1.2+, AES-256, tenant isolation, token security, 2FA, audit logging, CNDP compliance, session management)
|
||||
|
||||
**Audit Requirements:** Present (Adequate)
|
||||
- FR52-FR55 define audit logging capabilities (all modifications, workspace-level view, role-scoped access)
|
||||
- NFR12 specifies audit trail requirements (actor, timestamp, change details)
|
||||
- AML section references audit trail support for firms' compliance obligations
|
||||
- Archive system (FR45-FR51) preserves full history including audit trails
|
||||
|
||||
**Fraud Prevention:** Partially Present
|
||||
- The PRD does not include an explicit fraud prevention section
|
||||
- Risk mitigations table covers data breaches, data leakage, and document loss -- but not fraud scenarios specific to a SaaS billing context (e.g., workspace abuse, billing fraud, account manipulation)
|
||||
- **Mitigating context:** L'Ami Fiduciaire is a practice management tool, not a financial transaction processor. It does not handle payments directly (billing is manual initially), does not move money, and does not process financial instruments. The fraud surface is significantly lower than a typical fintech product.
|
||||
|
||||
### Compliance Matrix
|
||||
|
||||
| Requirement | Status | Notes |
|
||||
|---|---|---|
|
||||
| Data Protection (CNDP/Law 09-08) | Met | EU hosting, consent mechanisms, retention policies documented |
|
||||
| Tax/Fiscal Compliance Context | Met | Declaration types, fiscal calendar, penalty awareness covered |
|
||||
| AML Context (Law 43-05) | Met | Indirect applicability noted, audit trails support compliance |
|
||||
| Security Standards (encryption, isolation) | Met | NFR7-NFR15 cover encryption, tenant isolation, 2FA, CSRF |
|
||||
| Audit Requirements | Met | FR52-FR55 + NFR12 cover comprehensive audit logging |
|
||||
| Fraud Prevention | Partial | No explicit section; low fraud surface due to non-transactional nature |
|
||||
| Data Residency | Met | EU hosting explicitly chosen for CNDP compliance |
|
||||
| Financial Transaction Handling | N/A | Platform does not process financial transactions |
|
||||
|
||||
### Summary
|
||||
|
||||
**Required Sections Present:** 3.5/4 (Compliance Matrix, Security Architecture, Audit Requirements fully present; Fraud Prevention partially present)
|
||||
**Compliance Gaps:** 1 (minor)
|
||||
|
||||
**Severity:** Pass (with note)
|
||||
|
||||
**Recommendation:** Domain compliance is strong for a fintech-classified product. The one gap (fraud prevention) is mitigated by the product's nature -- it's a practice management orchestration tool, not a financial transaction platform. Consider adding a brief note on SaaS-level fraud prevention (e.g., workspace abuse detection, subscription fraud) if billing automation is added post-MVP. No critical compliance gaps.
|
||||
|
||||
## Project-Type Compliance Validation
|
||||
|
||||
**Project Type:** saas_b2b
|
||||
|
||||
### Required Sections
|
||||
|
||||
**Tenant Model (tenant_model):** Present
|
||||
"SaaS B2B Specific Requirements" → "Multi-Tenancy Model" section provides detailed tenant model: session-based workspace resolution via `current_workspace_id`, role-dependent workspace access (Worker=single, Manager=single, Owner=multiple), absolute workspace isolation with 404 responses for boundary violations.
|
||||
|
||||
**RBAC Matrix (rbac_matrix):** Present
|
||||
"SaaS B2B Specific Requirements" → "RBAC Permission Matrix" section provides comprehensive 3-role permission matrix table (Owner, Manager/Chef de Mission, Worker) across 12 permission areas. Includes configurable Manager permissions and fixed Worker scope.
|
||||
|
||||
**Subscription Tiers (subscription_tiers):** Present
|
||||
"SaaS B2B Specific Requirements" → "Subscription Tiers" section provides 3-tier pricing table (Starter 199 MAD, Professional 499 MAD, Enterprise 999 MAD) with per-workspace model, feature/limit breakdown, and 14-day trial details.
|
||||
|
||||
**Integration List (integration_list):** Present
|
||||
"Domain-Specific Requirements" → "Integration Requirements" section covers MVP integrations (email, file storage) and future integrations (DGI e-invoicing, Experio sync, WhatsApp API, bank statement import).
|
||||
|
||||
**Compliance Requirements (compliance_reqs):** Present
|
||||
"Domain-Specific Requirements" → "Compliance & Regulatory" section covers CNDP, Tax/Fiscal, AML compliance. "SaaS B2B Specific Requirements" → "Billing & Payment Methods" covers Morocco-specific payment compliance.
|
||||
|
||||
### Excluded Sections (Should Not Be Present)
|
||||
|
||||
**CLI Interface (cli_interface):** Absent ✓
|
||||
**Mobile First (mobile_first):** Absent ✓ (Mobile is mentioned as future vision, not as primary design approach. Web-first with responsive design is the stated approach.)
|
||||
|
||||
### Compliance Summary
|
||||
|
||||
**Required Sections:** 5/5 present
|
||||
**Excluded Sections Present:** 0 (should be 0)
|
||||
**Compliance Score:** 100%
|
||||
|
||||
**Severity:** Pass
|
||||
|
||||
**Recommendation:** All required sections for saas_b2b project type are present and well-documented. No excluded sections found. The PRD correctly addresses multi-tenancy, RBAC, subscriptions, integrations, and compliance -- all essential for a B2B SaaS product.
|
||||
|
||||
## SMART Requirements Validation
|
||||
|
||||
**Total Functional Requirements:** 58
|
||||
|
||||
### Scoring Summary
|
||||
|
||||
**All scores >= 3:** 100% (58/58)
|
||||
**All scores >= 4:** 94.8% (55/58)
|
||||
**Overall Average Score:** 4.8/5.0
|
||||
|
||||
### Scoring Table (Flagged and Notable FRs Only)
|
||||
|
||||
55 of 58 FRs scored 5/5/5/5/5 (perfect SMART). The 3 FRs below have minor specificity/measurability gaps:
|
||||
|
||||
| FR # | S | M | A | R | T | Avg | Issue |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| FR5 | 4 | 4 | 5 | 5 | 5 | 4.6 | "branding basics" is slightly vague |
|
||||
| FR9 | 4 | 4 | 5 | 5 | 5 | 4.6 | "team management actions" is broad |
|
||||
| FR57 | 3 | 3 | 5 | 5 | 4 | 4.0 | "platform-level configuration" is unspecified |
|
||||
|
||||
**Legend:** S=Specific, M=Measurable, A=Attainable, R=Relevant, T=Traceable (1=Poor, 3=Acceptable, 5=Excellent)
|
||||
|
||||
### Improvement Suggestions
|
||||
|
||||
**FR5:** "Owner can manage workspace settings (firm details, branding basics)" → Specify what "branding basics" includes (e.g., "firm logo, display name" or remove if not MVP)
|
||||
|
||||
**FR9:** "Manager can perform team management actions when permission is granted by Owner" → Specify which team management actions (e.g., "invite, remove, and change roles of team members")
|
||||
|
||||
**FR57:** "SaaS Admin can manage platform-level configuration" → Specify what configuration is manageable (e.g., "global settings, feature flags, storage limits, email templates")
|
||||
|
||||
### Overall Assessment
|
||||
|
||||
**Severity:** Pass (< 10% flagged FRs -- only 3/58 = 5.2%)
|
||||
|
||||
**Recommendation:** Functional Requirements demonstrate excellent SMART quality. 55/58 FRs score perfectly across all criteria. The 3 flagged FRs have minor specificity gaps (no score below 3) that could be addressed by listing specific items within each capability. This is an optional refinement -- the FRs are functional as-is.
|
||||
|
||||
## Holistic Quality Assessment
|
||||
|
||||
### Document Flow & Coherence
|
||||
|
||||
**Rating:** Excellent
|
||||
|
||||
The PRD follows a logical narrative arc: Executive Summary establishes context and vision → Project Classification anchors domain/complexity → Success Criteria defines measurable targets → Product Scope maps the build plan → User Journeys bring requirements to life through personas → Domain and SaaS sections provide specialized context → Functional Requirements enumerate capabilities → Non-Functional Requirements set quality bars.
|
||||
|
||||
Section transitions are natural and non-redundant. Each section builds on prior context without restating it. The brownfield context (what exists vs. what to build) is cleanly separated and consistently referenced.
|
||||
|
||||
### Dual Audience Effectiveness
|
||||
|
||||
**Score:** 5/5
|
||||
|
||||
**For Humans:**
|
||||
- User journeys are vivid and scenario-driven (Karim's Monday morning, Fatima's WhatsApp escape, Hassan's 3-minute upload)
|
||||
- Success criteria use persona names and real-world language
|
||||
- Pricing and business model are immediately clear
|
||||
- Phase roadmap provides strategic context
|
||||
|
||||
**For LLM Agents:**
|
||||
- Frontmatter provides structured metadata (classification, input documents, dates)
|
||||
- FRs follow consistent "[Actor] can [capability]" pattern -- highly parseable
|
||||
- NFRs use numbered IDs with consistent formatting
|
||||
- RBAC matrix is tabular and unambiguous
|
||||
- Traceability is implicit through consistent naming (personas, phases, FR numbering)
|
||||
- No conversational filler -- every sentence is actionable
|
||||
|
||||
### BMAD Principles Compliance
|
||||
|
||||
| Principle | Score | Notes |
|
||||
|---|---|---|
|
||||
| Information Density | Pass | Zero anti-pattern violations |
|
||||
| Measurability | Partial | 6 NFR violations (vague terms, missing thresholds) |
|
||||
| Traceability | Pass | Complete chain from vision to FRs, zero orphans |
|
||||
| Implementation Independence | Pass (with note) | 2 minor NFR leakages (Fortify, MySQL) |
|
||||
| Dual Audience | Pass | Excellent human readability + LLM parseability |
|
||||
| Scope Discipline | Pass | Clear in/out scope, growth features deferred with rationale |
|
||||
| Completeness | Pass | 6/6 core sections + 3 domain/project-type sections |
|
||||
|
||||
**BMAD Principles Score:** 6.5/7 (Measurability partial due to 6 NFR violations)
|
||||
|
||||
### Overall Quality Rating
|
||||
|
||||
**Rating:** 4/5 -- Good (Strong PRD with minor improvements needed)
|
||||
|
||||
**Justification:**
|
||||
- Exceptional FR quality (55/58 perfect SMART scores, zero violations)
|
||||
- Complete traceability chain with zero orphans
|
||||
- 100% Product Brief coverage with meaningful research-informed enhancements
|
||||
- Zero information density violations
|
||||
- Excellent dual-audience optimization
|
||||
- Minor weaknesses confined to NFRs (6 measurability + 2 implementation leakage issues)
|
||||
- All issues are low-effort fixes that would elevate this to a 5/5
|
||||
|
||||
### Top 3 Improvements
|
||||
|
||||
1. **Fix NFR measurability (6 items):** Replace "without timeout" (NFR4), "without degradation" (NFR16/18/20), and "reliable" (NFR26) with specific thresholds. Add cross-references to existing metrics where applicable (e.g., "while maintaining NFR1 page load targets").
|
||||
|
||||
2. **Remove implementation leakage from NFRs (2 items):** Replace "TOTP via Fortify" (NFR11) with "TOTP-based" and "MySQL binary logging" (NFR23) with "Database binary/transaction logging". Implementation choices belong in the architecture document.
|
||||
|
||||
3. **Specify FR5, FR9, FR57 capabilities:** List the specific items within "branding basics" (FR5), "team management actions" (FR9), and "platform-level configuration" (FR57) to achieve perfect SMART scores across all 58 FRs.
|
||||
|
||||
## Completeness Validation
|
||||
|
||||
### Template Completeness
|
||||
|
||||
**Template Variables Found:** 0
|
||||
No template variables remaining. Full PRD scan found zero instances of `{variable}`, `{{variable}}`, `[placeholder]`, or other template patterns. All content is authored.
|
||||
|
||||
### Content Completeness by Section
|
||||
|
||||
**Executive Summary:** Complete
|
||||
Vision statement present, problem context articulated, brownfield foundation described, revenue model defined, 6 differentiators listed.
|
||||
|
||||
**Success Criteria:** Complete
|
||||
4 categories (User, Business, Technical, Measurable Outcomes) with tabular metrics, specific targets, and leading indicators.
|
||||
|
||||
**Product Scope:** Complete
|
||||
In-scope (5 MVP phases + pre-phase) and out-of-scope (8 growth features in priority table) both defined. Brownfield foundation documented. Risk mitigation table included.
|
||||
|
||||
**User Journeys:** Complete
|
||||
6 journeys covering all 5 user types. Each journey follows narrative structure with capabilities summary. Journey requirements summary table included.
|
||||
|
||||
**Functional Requirements:** Complete
|
||||
58 FRs organized into 10 functional groups. Proper "[Actor] can [capability]" or "System [verb]" format throughout.
|
||||
|
||||
**Non-Functional Requirements:** Complete
|
||||
28 NFRs organized into 4 categories (Performance, Security, Scalability, Reliability & Data Protection). Metrics present for most items (6 measurability issues noted in Step V-05).
|
||||
|
||||
**Project Classification:** Complete
|
||||
Domain, project type, complexity, and brownfield context all specified.
|
||||
|
||||
**Domain-Specific Requirements:** Complete
|
||||
Compliance & Regulatory (CNDP, Tax/Fiscal, AML), Technical Constraints, Integration Requirements, and Risk Mitigations all covered.
|
||||
|
||||
**SaaS B2B Specific Requirements:** Complete
|
||||
Multi-Tenancy Model, RBAC Permission Matrix, Subscription Tiers, and Billing & Payment Methods all covered with tabular detail.
|
||||
|
||||
### Section-Specific Completeness
|
||||
|
||||
**Success Criteria Measurability:** All measurable
|
||||
Every criterion has a specific metric/target in tabular format. Leading indicators defined separately.
|
||||
|
||||
**User Journeys Coverage:** Yes - covers all user types
|
||||
Owner (Karim), Manager (Rachid), Worker (Fatima x2 including edge case), Client (Hassan), Platform Admin (Saad). All 5 user types covered with 6 total journeys.
|
||||
|
||||
**FRs Cover MVP Scope:** Yes
|
||||
All 5 MVP phases map to FR groups (verified in Traceability step V-06). Pre-phase (terminology migration) is a development task, not a functional requirement -- correctly excluded. Brownfield features (already built) are included as FRs for completeness.
|
||||
|
||||
**NFRs Have Specific Criteria:** Some
|
||||
22/28 NFRs have fully specific, measurable criteria. 6 NFRs have vague terms noted in Step V-05 (NFR4, NFR11, NFR16, NFR18, NFR20, NFR26). No NFR is missing criteria entirely -- all 6 have partial specificity.
|
||||
|
||||
### Frontmatter Completeness
|
||||
|
||||
**stepsCompleted:** Present (11 steps listed)
|
||||
**classification:** Present (projectType, domain, complexity, projectContext)
|
||||
**inputDocuments:** Present (12 documents listed -- 1 brief, 5 research, 1 project context, 5 project docs)
|
||||
**date:** Present (2026-03-11)
|
||||
|
||||
**Additional frontmatter fields present:**
|
||||
- workflowType: Present
|
||||
- documentCounts: Present (briefs, research, brainstorming, projectDocs, projectContext)
|
||||
|
||||
**Frontmatter Completeness:** 4/4 (plus 2 additional fields)
|
||||
|
||||
### Completeness Summary
|
||||
|
||||
**Overall Completeness:** 100% (9/9 sections complete)
|
||||
|
||||
**Critical Gaps:** 0
|
||||
**Minor Gaps:** 0 (NFR measurability issues are quality concerns, not completeness gaps -- all 28 NFRs exist with content)
|
||||
|
||||
**Severity:** Pass
|
||||
|
||||
**Recommendation:** PRD is complete with all required sections and content present. No template variables remain. All 9 sections have substantive content. Frontmatter is fully populated. The 6 NFR measurability issues identified in earlier validation steps are quality refinements, not completeness gaps.
|
||||
545
_bmad-output/planning-artifacts/prd.md
Normal file
545
_bmad-output/planning-artifacts/prd.md
Normal file
@@ -0,0 +1,545 @@
|
||||
---
|
||||
stepsCompleted: ['step-01-init', 'step-02-discovery', 'step-02b-vision', 'step-02c-executive-summary', 'step-03-success', 'step-04-journeys', 'step-05-domain', 'step-06-innovation', 'step-07-project-type', 'step-08-scoping', 'step-09-functional', 'step-10-nonfunctional', 'step-11-polish']
|
||||
classification:
|
||||
projectType: saas_b2b
|
||||
domain: fintech
|
||||
complexity: high
|
||||
projectContext: brownfield
|
||||
inputDocuments:
|
||||
- '_bmad-output/planning-artifacts/product-brief-l-ami-fiduciaire-2026-03-10.md'
|
||||
- '_bmad-output/planning-artifacts/research/market-fiduciary-saas-morocco-research-2026-03-10.md'
|
||||
- '_bmad-output/planning-artifacts/research/domain-moroccan-fiduciary-operations-research-2026-03-10.md'
|
||||
- '_bmad-output/planning-artifacts/research/ecosystem-partners-morocco-fiduciary-research-2026-03-10.md'
|
||||
- '_bmad-output/planning-artifacts/research/cloud-adoption-saas-trends-future-outlook-research-2026-03-11.md'
|
||||
- '_bmad-output/planning-artifacts/research/domain-moroccan-tax-regulation-digital-compliance-research-2026-03-10.md'
|
||||
- '_bmad-output/project-context.md'
|
||||
- 'docs/index.md'
|
||||
- 'docs/project-overview.md'
|
||||
- 'docs/architecture.md'
|
||||
- 'docs/development-guide.md'
|
||||
- 'docs/source-tree-analysis.md'
|
||||
workflowType: 'prd'
|
||||
documentCounts:
|
||||
briefs: 1
|
||||
research: 5
|
||||
brainstorming: 0
|
||||
projectDocs: 5
|
||||
projectContext: 1
|
||||
---
|
||||
|
||||
# Product Requirements Document - L'Ami Fiduciaire
|
||||
|
||||
**Author:** Saad
|
||||
**Date:** 2026-03-11
|
||||
|
||||
## Executive Summary
|
||||
|
||||
L'Ami Fiduciaire is a cloud-native practice management SaaS platform purpose-built for Moroccan fiduciary and accounting firms. It fills a critical gap in a fragmented market: while firms rely on Sage/JBS for accounting, SIMPL/Damancom for government filings, and WhatsApp/Excel for everything else, no tool orchestrates the day-to-day practice -- tracking deadlines across dozens of clients, coordinating team workload, managing client document exchange, and ensuring nothing falls through the cracks.
|
||||
|
||||
The platform targets Morocco's ~20,000+ small-to-mid-size fiduciary firms (majority under 10 staff) that cannot afford custom solutions but desperately need structured workflow management. A confirmed partnership with Experio (AI-powered pre-accounting automation) provides a distribution channel into 500 firms already modernizing their operations, with a target of 100-150 paying firms in Year 1.
|
||||
|
||||
The product is actively in development (pre-production) with a Laravel 12 + Vue 3 + Inertia.js stack. The existing foundation includes multi-tenant workspaces, client management, a folder/dossier system, client portal with token-based access, document exchange, messaging, email notifications, 2FA, and activity logging. The MVP roadmap adds 5 phases: role system foundation, dashboard separation (command center for owners, scoped views for workers), collaboration/nudge features, workflow efficiency (bulk operations, advanced filtering), and a full archive system.
|
||||
|
||||
The long-term vision extends beyond practice management. As Experio owns the accounting automation layer, L'Ami Fiduciaire will evolve to own the **juridique layer** -- becoming the single portal where firms handle company creation, modifications statutaires, AGO preparation, and all legal/administrative workflows for their clients. The strategic split: Experio = comptabilite, L'Ami Fiduciaire = juridique + practice orchestration.
|
||||
|
||||
Revenue model is B2B SaaS subscription (per-workspace, not per-user): Starter at 199 MAD/month, Professional at 499 MAD/month, Enterprise at 999 MAD/month. No free tier -- 14-day full-feature trial instead.
|
||||
|
||||
### What Makes This Special
|
||||
|
||||
1. **Only practice management SaaS built for Moroccan fiduciaries.** French-native, Moroccan fiscal calendar (TVA by 20th, CNSS by 10th, IS quarterly), local compliance understanding. No global competitor (TaxDome, Karbon, Financial Cents) serves this market -- they're English-only, built for US/UK tax systems, and priced in USD.
|
||||
|
||||
2. **Complement, don't replace.** The "use alongside Sage" positioning eliminates adoption friction. Firms keep their existing accounting tools; L'Ami Fiduciaire orchestrates the practice around them.
|
||||
|
||||
3. **Zero-friction client portal.** External clients interact via token links without creating accounts -- matching the low-tech reality of Moroccan TPE/PME clients who run their businesses from their phones.
|
||||
|
||||
4. **The "aha moment" is structural clarity.** A firm owner opens the platform and sees, for the first time, that zero deadlines were missed and every client dossier is accounted for in one place. Not a single tool did everything; but one tool finally orchestrated everything.
|
||||
|
||||
5. **Experio partnership creates a moat.** Together they form a complete modernization stack (pre-accounting + practice orchestration) that no single competitor provides, with a path toward deep product integration.
|
||||
|
||||
6. **Positioned for the profession's transformation.** As AI eliminates 60-80% of manual bookkeeping by 2028-2030 and e-invoicing becomes mandatory in 2026, fiduciaries must evolve from data-entry shops to advisory practices. L'Ami Fiduciaire is the platform that enables that transition.
|
||||
|
||||
## Project Classification
|
||||
|
||||
- **Project Type:** SaaS B2B -- multi-tenant platform with role-based access, subscription tiers, and dashboard-driven workflows
|
||||
- **Domain:** Fintech (fiduciary/accounting practice management) -- regulated industry with Moroccan tax law, CNSS/CIMR obligations, CNDP data protection, and upcoming e-invoicing mandate
|
||||
- **Complexity:** High -- multiple user types (firm owner, worker, external client, platform admin), regulatory compliance requirements, integration with government platforms (SIMPL, Damancom), data sovereignty under Law 09-08
|
||||
- **Project Context:** Brownfield -- active codebase with 7 Eloquent models, 16 migrations, 31 Vue pages, and core features already operational
|
||||
|
||||
## Success Criteria
|
||||
|
||||
### User Success
|
||||
|
||||
| Persona | Success Indicator | Measurement |
|
||||
|---|---|---|
|
||||
| **Karim (Owner/Manager)** | Zero missed deadlines across all clients in a month | % of declarations filed before deadline across workspace |
|
||||
| **Karim (Owner/Manager)** | Full visibility into firm operations from a single screen | Daily login to command center dashboard |
|
||||
| **Karim (Owner/Manager)** | No surprises -- problems surfaced proactively via alerts | Priority alerts acted on before deadline escalation |
|
||||
| **Fatima (Worker)** | No declarations falling through the cracks | % of assigned dossiers with up-to-date status |
|
||||
| **Fatima (Worker)** | Reduced time chasing clients for documents | Document requests sent via portal vs. WhatsApp |
|
||||
| **Fatima (Worker)** | Clear daily task prioritization without mental overhead | Scoped dashboard used as primary work driver |
|
||||
| **Hassan (Client)** | Fast, frictionless document submission | Time from receiving token link to completing action (target: < 5 minutes) |
|
||||
| **Hassan (Client)** | No account creation friction | 100% of client interactions via token-based links |
|
||||
|
||||
### Business Success
|
||||
|
||||
| Timeframe | Metric | Target |
|
||||
|---|---|---|
|
||||
| **Pre-launch** | All 5 MVP phases complete + landing page live | Feature-complete, production-deployed |
|
||||
| **Month 1-3** | New workspace registrations | 10-20 firms/month |
|
||||
| **Month 1-3** | Trial-to-paid conversion rate | > 30% |
|
||||
| **Month 1-3** | Onboarding completion rate | > 70% of signups complete setup |
|
||||
| **Month 3-12** | Monthly Recurring Revenue (MRR) | 30,000 - 60,000 MAD/month |
|
||||
| **Month 3-12** | Workspace churn rate | < 5%/month |
|
||||
| **Year 1** | Total paying firms | 100-150 |
|
||||
| **Year 1** | Primary acquisition via Experio channel | 20-30% conversion of Experio's 500 clients |
|
||||
|
||||
**Leading indicators (predict future success):**
|
||||
- Daily active users per workspace (real adoption vs. shelfware)
|
||||
- Number of dossiers managed per workspace (depth of usage)
|
||||
- Client portal actions completed per month (end-client value delivery)
|
||||
|
||||
### Technical Success
|
||||
|
||||
- Platform runs in production with real firm data without critical bugs
|
||||
- Reliable uptime -- no data loss, no failed critical operations (document uploads, status changes, email notifications)
|
||||
- Page loads feel responsive for users on standard Moroccan internet connections
|
||||
- Multi-tenant isolation -- no workspace data leakage between firms
|
||||
- CNDP-compliant data handling (EU-hosted to avoid cross-border transfer authorization)
|
||||
|
||||
### Measurable Outcomes
|
||||
|
||||
The MVP is successful when:
|
||||
1. **Deployable:** Production environment operational with zero critical bugs
|
||||
2. **Adoptable:** A firm can sign up, create a workspace, add team, import clients, and start managing declarations within 1 hour
|
||||
3. **Valuable:** Owner sees all clients' declaration statuses on one dashboard; workers see their scoped task list
|
||||
4. **Functional:** Full declaration lifecycle works end-to-end: create -> assign -> notify client -> receive documents -> update status -> close -> auto-archive
|
||||
5. **Collaborative:** Nudge system works -- Owner tags Worker, Worker gets notification with direct link
|
||||
6. **Efficient:** Bulk creation lets firms create 20+ declarations in one action
|
||||
|
||||
## Product Scope & Development Strategy
|
||||
|
||||
### MVP Approach
|
||||
|
||||
**Philosophy:** Complete-product MVP -- all 5 phases are non-negotiable before first paying customer. The fiduciary market expects tools that work reliably from day one; a half-built practice management tool would damage credibility with the Experio channel and the OEC professional community.
|
||||
|
||||
**Resources:** 2 developers (Saad + Ilyas Benhsine) augmented by AI coding agents. Timeline: under 1 month to MVP completion.
|
||||
|
||||
**Brownfield Foundation (~40% already built):**
|
||||
- Multi-tenant workspace model with session-based resolution
|
||||
- User authentication with 2FA (Fortify)
|
||||
- Client management (CRUD, import)
|
||||
- Declaration (folder/dossier) system with statuses
|
||||
- Client portal with token-based access
|
||||
- Document upload/download via Spatie Media Library
|
||||
- In-declaration messaging
|
||||
- Email notifications (5 types)
|
||||
- Activity logging (Spatie Activity Log)
|
||||
- Basic workspace settings
|
||||
|
||||
### MVP Phases
|
||||
|
||||
**Pre-Phase: Foundation Change**
|
||||
- "Folders" → "Declarations" terminology migration across UI, codebase, and database -- tackled first to avoid compounding rename debt across all 5 phases
|
||||
|
||||
**Phase 1: Role System Foundation** -- Fixed roles (Owner, Manager/Chef de Mission, Worker), per-workspace permission toggle matrix, team management page
|
||||
|
||||
**Phase 2: Dashboard Separation** -- Single shell with role-driven sidebar, Owner/Manager command center (active clients, declarations by status, priority alerts), scoped worker dashboard, SaaS owner platform dashboard, issue/support inbox
|
||||
|
||||
**Phase 3: Collaboration Features** -- Quick tag & nudge system, inline nudge on declaration rows, employee notification center with direct links
|
||||
|
||||
**Phase 4: Workflow Efficiency** -- Bulk declaration creation (multi-client, type selection, date setting), bulk notification scheduling, advanced filtering system (persistent across views), quick search, practicality-first UI pass
|
||||
|
||||
**Phase 5: Archive System** -- Auto-archive on close, full history preservation, archive as top-level nav item, hybrid filters + search, archive detail page (read-only snapshot), in-app document preview, re-open with audit trail, bulk ZIP download, visual distinction, 10-year retention policy
|
||||
|
||||
All 6 documented user journeys are fully supported by MVP -- no journey is deferred.
|
||||
|
||||
### Growth Features (Post-MVP)
|
||||
|
||||
| Priority | Feature | Impact |
|
||||
|---|---|---|
|
||||
| High | Landing page with pricing, feature overview, and signup flow | Public acquisition channel (soft launch via Experio doesn't require it) |
|
||||
| High | Experio integration (referral flow + potential data sync) | Distribution channel activation |
|
||||
| High | Billing automation (CMI, bank transfer, CashPlus) | Automate revenue collection (manual billing acceptable for first 10-20 firms) |
|
||||
| Medium | WhatsApp document intake | Meets clients where they communicate |
|
||||
| Medium | Deadline calendar with Moroccan fiscal calendar pre-loaded | Automatic deadline awareness per client type |
|
||||
| Medium | E-invoicing readiness (DGI platform API when available) | Compliance positioning |
|
||||
| Low | Kanban view for declaration pipeline | Visual workflow option |
|
||||
| Low | Client-initiated declarations | Reverse-flow for proactive clients |
|
||||
|
||||
### Vision (Future)
|
||||
|
||||
- **Juridique portal:** Company creation, modifications statutaires, AGO preparation, depot legal -- the single platform for all legal/administrative workflows
|
||||
- **Deep Experio integration:** Bi-directional data flow between pre-accounting automation and practice orchestration
|
||||
- **Mobile app:** Native mobile experience for firm users and clients
|
||||
- **Arabic UI support:** Broader market accessibility
|
||||
- **AI features:** Document classification, anomaly detection, auto-categorization
|
||||
- **E-invoicing integration:** Direct connection with DGI e-invoicing platform
|
||||
|
||||
### Risk Mitigation
|
||||
|
||||
| Category | Risk | Mitigation |
|
||||
|---|---|---|
|
||||
| **Technical** | Declaration rename touches entire codebase | Tackle first before building new features -- prevents compounding changes |
|
||||
| **Technical** | 5 phases in <1 month is aggressive | Brownfield foundation covers ~40%; AI agents accelerate; 2-dev parallel workstreams |
|
||||
| **Technical** | Archive system (Phase 5) is most complex new feature | Well-scoped requirements; can parallelize with Phase 4 |
|
||||
| **Market** | First firms need hand-holding during onboarding | Saad available for direct support; small initial cohort via Experio |
|
||||
| **Market** | Billing not automated at launch | Manual billing acceptable for first 10-20 firms |
|
||||
| **Resource** | 2-person team, tight timeline | AI agent augmentation; well-defined phases prevent scope creep |
|
||||
| **Resource** | One developer unavailable | Both devs have full codebase context; phases can be worked independently |
|
||||
|
||||
## User Journeys
|
||||
|
||||
### Journey 1: Karim (Owner) -- First Setup & The Morning Dashboard
|
||||
|
||||
**Opening Scene:** Karim runs a 7-person cabinet in Casablanca. It's Sunday evening and he's dreading Monday morning -- 120+ client dossiers tracked across Excel sheets, WhatsApp threads, and verbal updates from his team. Last month, two TVA declarations were filed late because Fatima was sick and nobody picked up her clients. The 5% penalty notices arrived at his desk. He heard about L'Ami Fiduciaire through Experio's newsletter.
|
||||
|
||||
**Rising Action:** Karim signs up for the 14-day trial from the landing page. He creates his workspace, sets up the firm name, and lands on the Team page. He invites his 3 collaborateurs and his chef de mission Rachid as Manager. He assigns roles -- Rachid gets Manager permissions (can see all clients, assign work, nudge workers), the collaborateurs get Worker roles. He imports his client list and creates the first batch of TVA declarations using bulk creation -- 45 clients, all TVA Mensuel, deadline March 20th. What used to take an afternoon takes 10 minutes.
|
||||
|
||||
**Climax:** Monday morning, 8:15 AM. Karim opens L'Ami Fiduciaire and sees his command center. Three red alerts: Client Benani hasn't uploaded bank statements (due in 2 days), Client Tazi's TVA is overdue by Fatima (she's on leave), and 12 declarations are on track. He nudges Rachid on the Tazi dossier with one click. Rachid reassigns it to another worker within minutes. For the first time in 12 years, Karim sees his entire firm's status on one screen. Nothing will surprise him this month.
|
||||
|
||||
**Resolution:** End of month -- zero missed deadlines. Karim didn't work a single 12-hour day. He converts to the Professional plan on day 11 of the trial. He tells two firm owners at the OEC networking event: "You need to try this."
|
||||
|
||||
**Capabilities revealed:** Workspace creation, team management, role assignment, bulk declaration creation, command center dashboard, priority alerts, nudge system, trial-to-paid conversion flow.
|
||||
|
||||
---
|
||||
|
||||
### Journey 2: Rachid (Manager/Chef de Mission) -- Team Coordination
|
||||
|
||||
**Opening Scene:** Rachid is Karim's chef de mission. He supervises 3 collaborateurs who collectively manage 90 client dossiers. His current coordination method: a daily WhatsApp group message asking "where are you on X client?" and a shared Google Sheet that's always out of date. During bilan season, he spends more time coordinating than doing actual work.
|
||||
|
||||
**Rising Action:** Karim sets Rachid up as Manager in L'Ami Fiduciaire. Rachid sees the same command center as Karim -- all clients, all declarations, all statuses. But his daily focus is different: he checks which workers are overloaded, which clients are behind on document submissions, and which deadlines are approaching this week. He notices that Amina has 18 active declarations while Youssef only has 9. He reassigns 4 of Amina's clients to Youssef directly from the dashboard.
|
||||
|
||||
**Climax:** Karim nudges Rachid about the Tazi TVA dossier (Fatima is on leave). Rachid gets the notification, clicks the direct link, sees the dossier status, and reassigns it to Youssef -- all in under 2 minutes. No WhatsApp thread, no phone call, no "did you see my message?"
|
||||
|
||||
**Resolution:** Rachid stops being a message relay and becomes an actual team lead. Coordination time drops dramatically. He can manage 90 dossiers across his team because the platform shows him exactly where attention is needed, instead of him having to ask.
|
||||
|
||||
**Capabilities revealed:** Manager dashboard (same as owner view), worker workload visibility, client/declaration reassignment, nudge receiving and acting, declaration detail view with quick actions.
|
||||
|
||||
---
|
||||
|
||||
### Journey 3: Fatima (Worker) -- The Daily Grind
|
||||
|
||||
**Opening Scene:** Fatima manages 45 client dossiers. It's the 12th of the month -- TVA declarations are due on the 20th, and she still hasn't received bank statements from 8 clients. She used to scroll through WhatsApp looking for which clients responded and which didn't, then manually text each one again. Her Excel tracker says "relance envoyee" for Client Mounir, but she can't remember if that was this month or last month.
|
||||
|
||||
**Rising Action:** Fatima logs into L'Ami Fiduciaire and sees her scoped worker dashboard. It shows only her 45 assigned clients. The dashboard is clear: 8 declarations are flagged "waiting for client documents" with days remaining until deadline. She selects all 8 and triggers a bulk notification -- each client gets an email with their personal token link to upload documents. She moves on to the 5 declarations that have documents ready and starts updating statuses as she works through them in Sage.
|
||||
|
||||
**Climax:** By 3 PM, 3 of the 8 clients have uploaded documents via the portal. She didn't chase anyone on WhatsApp. Client Mounir uploaded his bank statement directly from his phone -- she can see the upload timestamp and download the file from the declaration detail page. She sends Mounir a message through the in-declaration messaging system confirming receipt. Full audit trail, no WhatsApp screenshot needed.
|
||||
|
||||
**Resolution:** By the 19th, Fatima has filed all 45 TVA declarations. Zero missed. During bilan season, she manages 60 dossiers instead of 45 because the platform handles the coordination she used to do manually. She gets home by 7 PM even in March.
|
||||
|
||||
**Capabilities revealed:** Scoped worker dashboard, declaration status tracking, bulk notification sending, client portal document receipt, in-declaration messaging, declaration status updates, document download.
|
||||
|
||||
---
|
||||
|
||||
### Journey 4: Fatima (Worker) -- Edge Case: Declaration Goes Wrong
|
||||
|
||||
**Opening Scene:** Fatima created a TVA declaration for Client Bouzidi, but realized she selected the wrong type -- it should have been TVA Trimestrielle, not TVA Mensuelle. The client has already been notified and uploaded a document to the wrong declaration.
|
||||
|
||||
**Rising Action:** Fatima edits the declaration type from the declaration detail page. The uploaded document is still attached -- nothing is lost. She updates the deadline date to reflect the quarterly schedule. She sends a message to Client Bouzidi through the portal explaining the correction.
|
||||
|
||||
**Climax:** Later, Rachid notices the declaration was modified and sees the edit in the activity log -- who changed what, when. No mystery, no finger-pointing.
|
||||
|
||||
**Resolution:** The declaration proceeds correctly. The audit trail captured every change. When Karim reviews the workspace activity feed, he sees the correction logged transparently.
|
||||
|
||||
**Capabilities revealed:** Declaration editing, activity logging/audit trail, document persistence across edits, in-declaration messaging for corrections, manager visibility into changes.
|
||||
|
||||
---
|
||||
|
||||
### Journey 5: Hassan (Client) -- The 3-Minute Upload
|
||||
|
||||
**Opening Scene:** Hassan owns a small SARL in Ain Sebaa. He's driving back from a supplier meeting when his phone buzzes -- an email from his fiduciary firm. Subject: "Documents requis -- Declaration TVA Janvier." He used to ignore these until his accountant called him three times, but this email has a blue button that says "Voir la demande."
|
||||
|
||||
**Rising Action:** Hassan taps the button from his phone. A clean, mobile-friendly page opens -- no login, no account creation. It shows exactly what's needed: "Veuillez telecharger votre releve bancaire de janvier 2026." There's one upload button. Hassan takes a photo of the bank statement from his glove compartment, uploads it. The page confirms: "Document recu. Merci."
|
||||
|
||||
**Climax:** 30 seconds later, Fatima sees the upload notification in her dashboard. She downloads the file, it's legible, and she begins the saisie. No WhatsApp back-and-forth. No "did you get my message?" No lost document in a group chat.
|
||||
|
||||
**Resolution:** Hassan never thinks about it again -- which is exactly what he wants. At the end of the quarter, zero penalty notices arrive. He tells his friend who runs a restaurant: "Switch to my fiduciary, they have this system where you just click and upload, it's amazing."
|
||||
|
||||
**Capabilities revealed:** Email notification with token link, mobile-friendly client portal, single-action upload page, no-account-required interaction, upload confirmation, real-time notification to firm worker.
|
||||
|
||||
---
|
||||
|
||||
### Journey 6: Saad (Platform Admin) -- Monitoring the SaaS
|
||||
|
||||
**Opening Scene:** Saad is the L'Ami Fiduciaire platform owner. It's been 2 months since launch. 35 workspaces have been created. He needs to understand platform health, identify support issues, and ensure no workspace is experiencing problems.
|
||||
|
||||
**Rising Action:** Saad logs into the SaaS owner dashboard. He sees platform metrics: 35 active workspaces, 142 total users, 2,847 declarations created, 12.4 GB storage used. He checks the issue/support inbox -- 3 tickets this week. One firm reports they can't upload files larger than 10 MB. Another asks how to re-open an archived declaration. A third reports a display issue on Safari.
|
||||
|
||||
**Climax:** Saad resolves the upload limit issue (configuration change), responds to the archive question with instructions, and logs the Safari bug for the development backlog. He notices one workspace has 0 active declarations after 3 weeks -- a churn risk. He makes a note to reach out personally.
|
||||
|
||||
**Resolution:** Saad uses the platform dashboard as his operational command center. He can monitor health, identify at-risk workspaces, and handle support without needing external tools. As the platform grows to 100+ workspaces, the dashboard scales with him.
|
||||
|
||||
**Capabilities revealed:** SaaS admin dashboard (workspace count, user count, storage, system health), issue/support inbox, workspace-level activity monitoring, user management.
|
||||
|
||||
---
|
||||
|
||||
### Journey Requirements Summary
|
||||
|
||||
| Journey | Key Capabilities Revealed |
|
||||
|---|---|
|
||||
| **Karim (Owner - Setup & Dashboard)** | Workspace creation, team management, role assignment, bulk declaration creation, command center, priority alerts, nudge system |
|
||||
| **Rachid (Manager - Coordination)** | Manager dashboard, workload visibility, reassignment, nudge receiving/acting, declaration detail |
|
||||
| **Fatima (Worker - Daily Grind)** | Scoped dashboard, status tracking, bulk notifications, portal document receipt, messaging, document download |
|
||||
| **Fatima (Worker - Edge Case)** | Declaration editing, activity logging, document persistence, audit trail, correction messaging |
|
||||
| **Hassan (Client - Upload)** | Email notifications, token-based portal, mobile-friendly upload, no-account interaction, upload confirmation |
|
||||
| **Saad (Admin - Platform Monitoring)** | SaaS dashboard, support inbox, workspace monitoring, user management |
|
||||
|
||||
**Coverage:** All 5 user types covered (Owner, Manager, Worker, Client, Platform Admin). Happy paths and edge cases included. Onboarding covered within Karim's journey.
|
||||
|
||||
## Domain-Specific Requirements
|
||||
|
||||
### Compliance & Regulatory
|
||||
|
||||
**Data Protection (CNDP -- Law 09-08):**
|
||||
- Personal client data (CIN numbers, financial information, company details) must comply with Morocco's CNDP data protection framework
|
||||
- EU hosting is the pragmatic choice -- avoids the cross-border transfer authorization process required for US data centers
|
||||
- Data retention policies must align with legal minimums (10-year accounting record retention per Moroccan law)
|
||||
- User consent mechanisms for data processing
|
||||
|
||||
**Tax & Fiscal Compliance Context:**
|
||||
- The platform manages declaration workflows but does NOT perform accounting calculations or file declarations directly -- it orchestrates the process
|
||||
- Declaration types tracked must align with Moroccan fiscal calendar: TVA (monthly/quarterly), IS (annual + quarterly acomptes), IR (monthly withholding + annual Etat 9421), CNSS (monthly via Damancom)
|
||||
- Penalty awareness: the platform's value proposition is directly tied to avoiding 5-20% late filing penalties
|
||||
|
||||
**AML Context (Law 43-05):**
|
||||
- L'Ami Fiduciaire itself is not directly subject to AML as a SaaS tool, but fiduciary firms using it are -- the platform should not impede their compliance obligations
|
||||
- Activity logging and audit trails support firms' AML record-keeping requirements
|
||||
|
||||
### Technical Constraints
|
||||
|
||||
**Domain-Specific Security Context:**
|
||||
- Client financial data (CIN numbers, bank statements, tax documents) requires encryption at rest -- these are not generic user files
|
||||
- Multi-tenant isolation is existential: a firm seeing another firm's client data would be a business-ending event
|
||||
- Token-based client portal serves non-technical users (TPE/PME owners) -- security must be invisible to them
|
||||
|
||||
**Morocco-Specific Infrastructure Context:**
|
||||
- Standard Moroccan internet (ADSL in offices, 4G on mobile) is the baseline -- not fiber or US/EU broadband
|
||||
- Peak platform usage aligns with Moroccan fiscal deadlines: 15th-20th monthly (TVA), end of month (CNSS), Jan-Mar (bilan season)
|
||||
- Email delivery during these peaks is mission-critical -- a failed notification directly causes a missed filing
|
||||
|
||||
See Non-Functional Requirements for specific measurable targets.
|
||||
|
||||
### Integration Requirements
|
||||
|
||||
**Current (MVP):**
|
||||
- Email delivery service (transactional emails for 5 notification types)
|
||||
- File storage (Spatie Media Library -- already implemented)
|
||||
- No direct API integrations with government platforms for MVP (SIMPL, Damancom, CIMR have no public APIs)
|
||||
|
||||
**Future:**
|
||||
- DGI e-invoicing platform API (when available -- 2026-2027)
|
||||
- Experio data sync (post-MVP partnership deepening)
|
||||
- Potential WhatsApp Business API for document intake
|
||||
- Bank statement import/parsing (when open banking matures in Morocco)
|
||||
|
||||
### Risk Mitigations
|
||||
|
||||
| Risk | Impact | Mitigation |
|
||||
|---|---|---|
|
||||
| **Data breach exposing client financial data** | Catastrophic -- regulatory penalties, trust destruction | EU hosting, encryption at rest, strict tenant isolation, 2FA, regular security audits |
|
||||
| **Email delivery failure during deadline period** | High -- missed client notifications lead to missed deadlines | Reliable email provider (SES/Postmark), delivery monitoring, retry logic |
|
||||
| **Workspace data leakage between tenants** | Catastrophic -- legal liability, immediate churn | Session-based workspace resolution (already implemented), authorization at every data access point, automated testing for tenant isolation |
|
||||
| **Document loss or corruption** | High -- client financial records are irreplaceable | Reliable storage with backups, upload confirmation flow, document versioning |
|
||||
| **Platform unavailable during bilan season (Jan-Mar)** | High -- peak usage period, firms depend on platform | Infrastructure scaling, monitoring, incident response plan |
|
||||
| **CNDP non-compliance discovery** | Medium-High -- potential fines up to 600K MAD | EU hosting from day one, privacy policy, data processing agreements, retention policy enforcement |
|
||||
|
||||
## SaaS B2B Specific Requirements
|
||||
|
||||
### Multi-Tenancy Model
|
||||
|
||||
L'Ami Fiduciaire uses session-based workspace resolution via `current_workspace_id`. The tenancy model is role-dependent:
|
||||
|
||||
| Role | Workspace Access | Rationale |
|
||||
|---|---|---|
|
||||
| **Worker** | Single workspace only | A collaborateur works for one firm. No cross-workspace scenarios. |
|
||||
| **Manager (Chef de Mission)** | Single workspace only | A chef de mission manages one firm's team. They don't span multiple cabinets. |
|
||||
| **Owner** | May have multiple workspaces | An expert-comptable may own more than one cabinet (e.g., separate entities for audit vs. fiduciary, or franchise locations). Workspace switcher available for Owners only. |
|
||||
|
||||
**Workspace isolation is absolute:** Every database query is scoped to `current_workspace_id`. Authorization violations return 404 (not 403) to prevent information leakage about other tenants' existence.
|
||||
|
||||
### RBAC Permission Matrix
|
||||
|
||||
Three fixed roles with a per-workspace toggle-based permission matrix:
|
||||
|
||||
| Permission Area | Owner | Manager (Chef de Mission) | Worker |
|
||||
|---|---|---|---|
|
||||
| View all clients & declarations | Always | Yes | Own assigned only |
|
||||
| Create/edit declarations | Yes | Yes | Own assigned only |
|
||||
| Bulk declaration creation | Yes | Yes | No |
|
||||
| Assign/reassign declarations | Yes | Yes | No |
|
||||
| Nudge team members | Yes | Yes | No |
|
||||
| Manage team (invite/remove) | Yes | Configurable | No |
|
||||
| View command center dashboard | Yes | Yes | No (scoped dashboard) |
|
||||
| Manage workspace settings | Yes | No | No |
|
||||
| Manage billing/subscription | Yes | No | No |
|
||||
| View activity logs | Yes | Configurable | Own actions only |
|
||||
| Archive access | Yes | Yes | Own archived items |
|
||||
| Client portal configuration | Yes | Configurable | No |
|
||||
|
||||
**Permission toggles:** Owners can grant/revoke specific Manager permissions per workspace (e.g., allow or disallow team management for a specific Chef de Mission). Worker permissions are fixed and scoped.
|
||||
|
||||
### Subscription Tiers
|
||||
|
||||
Per-workspace pricing (not per-user):
|
||||
|
||||
| Feature / Limit | Starter (199 MAD/mo) | Professional (499 MAD/mo) | Enterprise (999 MAD/mo) |
|
||||
|---|---|---|---|
|
||||
| Team members | Up to 3 | Up to 10 | Unlimited |
|
||||
| Active clients | Up to 30 | Up to 100 | Unlimited |
|
||||
| Storage | 5 GB | 20 GB | 100 GB |
|
||||
| Client portal | Basic (upload only) | Full (messaging + upload) | Full + branded portal |
|
||||
| Archive retention | 3 years | 10 years | 10 years + export |
|
||||
| Bulk operations | Limited (10 at once) | Full | Full |
|
||||
| Priority support | Email only | Email + chat | Dedicated support |
|
||||
| API access | No | No | Yes (future) |
|
||||
|
||||
**Trial:** 14-day full-feature trial (Professional tier equivalent). No free tier. No credit card required for trial.
|
||||
|
||||
### Billing & Payment Methods
|
||||
|
||||
Morocco-specific payment infrastructure -- Stripe is not the primary channel:
|
||||
|
||||
| Payment Method | Priority | Implementation |
|
||||
|---|---|---|
|
||||
| **CMI (Centre Monetique Interbancaire)** | Primary | Moroccan card payment gateway -- supports local Visa/Mastercard issued by Moroccan banks |
|
||||
| **Bank transfer (virement bancaire)** | Primary | Manual reconciliation initially, automated matching later |
|
||||
| **CashPlus / Wafacash** | Secondary | Cash-based payment for firms that prefer it -- common in smaller cities |
|
||||
| **Stripe** | Future/International | Only if expanding beyond Morocco or for international cards |
|
||||
|
||||
**Billing cycle:** Monthly billing with annual discount option (2 months free). Invoices generated in MAD with Moroccan tax compliance.
|
||||
|
||||
|
||||
## Functional Requirements
|
||||
|
||||
### Workspace & Onboarding
|
||||
|
||||
- **FR1:** Owner can create a new workspace with firm name and basic configuration
|
||||
- **FR2:** Owner can invite team members to the workspace via email
|
||||
- **FR3:** Owner can assign roles (Manager/Chef de Mission, Worker) to team members
|
||||
- **FR4:** Owner can configure per-workspace permission toggles for Manager roles
|
||||
- **FR5:** Owner can manage workspace settings (firm details, firm logo, display name)
|
||||
- **FR6:** New users can sign up for a 14-day trial without credit card
|
||||
|
||||
### Team & Role Management
|
||||
|
||||
- **FR7:** Owner can view, add, and remove team members from the workspace
|
||||
- **FR8:** Owner can change a team member's role within the workspace
|
||||
- **FR9:** Manager can invite, remove, and change roles of team members when permission is granted by Owner
|
||||
- **FR10:** System enforces role-based access -- Workers see only assigned items, Managers/Owners see all
|
||||
- **FR11:** Owner can switch between multiple owned workspaces
|
||||
|
||||
### Client Management
|
||||
|
||||
- **FR12:** Owner/Manager can create, view, edit, and deactivate client records
|
||||
- **FR13:** Owner/Manager can import clients in bulk
|
||||
- **FR14:** Worker can view and interact with their assigned clients only
|
||||
- **FR15:** System associates each client with a workspace and enforces tenant isolation
|
||||
|
||||
### Declaration Lifecycle
|
||||
|
||||
- **FR16:** Owner/Manager can create individual declarations for a client (type, deadline, assignment)
|
||||
- **FR17:** Owner/Manager can bulk-create declarations across multiple clients with type and deadline selection
|
||||
- **FR18:** Owner/Manager/Worker can update declaration status through its lifecycle
|
||||
- **FR19:** Owner/Manager can reassign a declaration to a different team member
|
||||
- **FR20:** Worker can edit declarations assigned to them (type correction, deadline adjustment)
|
||||
- **FR21:** System auto-archives declarations when marked as closed
|
||||
- **FR22:** Owner/Manager can re-open an archived declaration with audit trail
|
||||
- **FR23:** Users can view archived declarations in read-only mode with full history
|
||||
|
||||
### Dashboard & Visibility
|
||||
|
||||
- **FR24:** Owner/Manager can view a command center dashboard showing all clients, declaration statuses, and priority alerts
|
||||
- **FR25:** Worker can view a scoped dashboard showing only their assigned clients and declarations
|
||||
- **FR26:** Dashboard surfaces priority alerts (overdue declarations, approaching deadlines, missing client documents)
|
||||
- **FR27:** SaaS Admin can view a platform-level dashboard (workspace count, user count, storage, system health)
|
||||
- **FR28:** SaaS Admin can view and respond to support tickets via an issue/support inbox
|
||||
|
||||
### Collaboration & Notifications
|
||||
|
||||
- **FR29:** Owner/Manager can nudge a team member on a specific declaration with one action
|
||||
- **FR30:** Team members receive notifications with direct links to the relevant declaration
|
||||
- **FR31:** Users can view a notification center showing all received nudges and system alerts
|
||||
- **FR32:** Owner/Manager can schedule bulk notifications to clients for document requests
|
||||
- **FR33:** System sends email notifications for key events (document requests, nudges, status changes)
|
||||
|
||||
### Client Portal & Document Exchange
|
||||
|
||||
- **FR34:** System generates unique token-based links for client interactions (no account required)
|
||||
- **FR35:** External clients can upload documents via token link from any device including mobile
|
||||
- **FR36:** External clients receive confirmation after successful document upload
|
||||
- **FR37:** Team members can download client-uploaded documents from the declaration detail page
|
||||
- **FR38:** Team members can send messages to clients within a declaration context
|
||||
- **FR39:** External clients can view messages from their fiduciary firm via the portal
|
||||
- **FR40:** Token links expire according to configurable security policies
|
||||
|
||||
### Search, Filtering & Navigation
|
||||
|
||||
- **FR41:** Users can filter declarations by status, client, assignee, type, and deadline range
|
||||
- **FR42:** Filter selections persist across views within a session
|
||||
- **FR43:** Users can perform quick search across clients and declarations
|
||||
- **FR44:** Archive section is accessible as a top-level navigation item with its own filters and search
|
||||
|
||||
### Archive System
|
||||
|
||||
- **FR45:** System preserves full declaration history upon archiving (documents, messages, status changes, activity log)
|
||||
- **FR46:** Users can browse archived declarations with hybrid filters and search
|
||||
- **FR47:** Users can view an archive detail page as a read-only snapshot of the complete declaration
|
||||
- **FR48:** Users can preview documents in-app from archived declarations
|
||||
- **FR49:** Users can bulk-download archived declaration documents as ZIP
|
||||
- **FR50:** System visually distinguishes archived declarations from active ones
|
||||
- **FR51:** System enforces 10-year retention policy for archived data
|
||||
|
||||
### Activity & Audit
|
||||
|
||||
- **FR52:** System logs all data modifications with actor, timestamp, and change details
|
||||
- **FR53:** Owner can view the full activity log for the workspace
|
||||
- **FR54:** Manager can view activity logs when permission is granted
|
||||
- **FR55:** Worker can view activity logs for their own actions only
|
||||
|
||||
### Platform Administration
|
||||
|
||||
- **FR56:** SaaS Admin can view all workspaces and their usage metrics
|
||||
- **FR57:** SaaS Admin can manage platform-level configuration (global settings, feature flags, storage limits, email templates)
|
||||
- **FR58:** System enforces subscription tier limits (team members, clients, storage, features)
|
||||
|
||||
## Non-Functional Requirements
|
||||
|
||||
### Performance
|
||||
|
||||
- **NFR1:** Page loads and common user actions (navigation, status updates, filtering) complete within 2 seconds on standard Moroccan internet connections (ADSL/4G)
|
||||
- **NFR2:** Bulk declaration creation (up to 50 declarations) completes within 10 seconds
|
||||
- **NFR3:** Bulk notification scheduling (up to 50 clients) completes within 10 seconds
|
||||
- **NFR4:** File uploads up to 10 MB complete within 60 seconds on 4G connections
|
||||
- **NFR5:** Dashboard data (command center, worker view) renders within 3 seconds for workspaces with up to 200 active clients
|
||||
- **NFR6:** Quick search returns results within 1 second
|
||||
|
||||
### Security
|
||||
|
||||
- **NFR7:** All data encrypted in transit (TLS 1.2+) and at rest (AES-256 for stored documents)
|
||||
- **NFR8:** Multi-tenant data isolation enforced at every query -- no workspace can access another workspace's data under any circumstance
|
||||
- **NFR9:** Authorization boundary violations return 404 (not 403) to prevent tenant existence leakage
|
||||
- **NFR10:** Token-based client portal links are cryptographically secure, single-purpose, and expire after configurable duration
|
||||
- **NFR11:** Two-factor authentication available for all firm users (TOTP-based)
|
||||
- **NFR12:** All data modifications logged with actor, timestamp, and change details (audit trail)
|
||||
- **NFR13:** CNDP (Law 09-08) compliant data handling -- EU-hosted infrastructure to avoid cross-border transfer authorization
|
||||
- **NFR14:** Client financial documents accessible only to authorized workspace members and the specific client via their token link
|
||||
- **NFR15:** Session management with secure cookie handling, CSRF protection, and session timeout after inactivity
|
||||
|
||||
### Scalability
|
||||
|
||||
- **NFR16:** System supports up to 200 concurrent workspaces while maintaining NFR1 page load targets and NFR5 dashboard render targets
|
||||
- **NFR17:** System supports up to 1,000 total users across all workspaces
|
||||
- **NFR18:** Individual workspace supports up to 500 active clients and 5,000 active declarations while maintaining NFR1 page load targets and NFR6 search response targets
|
||||
- **NFR19:** File storage architecture supports growth to 1 TB total platform storage
|
||||
- **NFR20:** System handles seasonal peak loads (bilan season Jan-Mar: 2-3x normal usage) while maintaining NFR1 page load targets, NFR5 dashboard render targets, and NFR21 uptime targets
|
||||
|
||||
### Reliability & Data Protection
|
||||
|
||||
- **NFR21:** Platform targets 99.5% uptime (max ~3.6 hours unplanned downtime per month)
|
||||
- **NFR22:** Automated hourly database backups with 1-hour RPO (Recovery Point Objective)
|
||||
- **NFR23:** Database binary/transaction logging enabled for point-in-time recovery up to last committed transaction
|
||||
- **NFR24:** Backup restore procedure documented and tested -- full database restore achievable within 1 hour (RTO)
|
||||
- **NFR25:** Backup retention: daily backups kept for 30 days, weekly backups kept for 6 months
|
||||
- **NFR26:** Email notification delivery must achieve >99% delivery success rate with retry logic (up to 3 retries within 5 minutes) -- failed deliveries during deadline periods directly cause missed filings
|
||||
- **NFR27:** Monitoring and alerting configured for system health, error rates, and resource utilization
|
||||
- **NFR28:** Zero data loss tolerance for completed transactions (documents uploaded, status changes saved, messages sent)
|
||||
@@ -0,0 +1,359 @@
|
||||
---
|
||||
stepsCompleted: [1, 2, 3, 4, 5, 6]
|
||||
inputDocuments:
|
||||
- '_bmad-output/brainstorming/brainstorming-session-2026-03-10-120000.md'
|
||||
- '_bmad-output/planning-artifacts/research/market-fiduciary-saas-morocco-research-2026-03-10.md'
|
||||
- '_bmad-output/planning-artifacts/research/domain-moroccan-fiduciary-operations-research-2026-03-10.md'
|
||||
- '_bmad-output/planning-artifacts/research/ecosystem-partners-morocco-fiduciary-research-2026-03-10.md'
|
||||
- '_bmad-output/planning-artifacts/research/cloud-adoption-saas-trends-future-outlook-research-2026-03-11.md'
|
||||
- '_bmad-output/planning-artifacts/research/domain-moroccan-tax-regulation-digital-compliance-research-2026-03-10.md'
|
||||
- '_bmad-output/project-context.md'
|
||||
- 'docs/index.md'
|
||||
- 'docs/project-overview.md'
|
||||
- 'docs/architecture.md'
|
||||
- 'docs/development-guide.md'
|
||||
- 'docs/source-tree-analysis.md'
|
||||
date: 2026-03-10
|
||||
author: Saad
|
||||
---
|
||||
|
||||
# Product Brief: L'Ami Fiduciaire
|
||||
|
||||
## Executive Summary
|
||||
|
||||
L'Ami Fiduciaire is a cloud-native practice management SaaS platform purpose-built for Moroccan fiduciary and accounting firms. It fills a critical market gap: while firms use Sage/JBS for accounting and SIMPL/Damancom for government filings, no tool orchestrates the day-to-day practice -- tracking deadlines across dozens of clients, coordinating team workload, managing client document exchange, and ensuring nothing falls through the cracks. L'Ami Fiduciaire is that orchestration layer.
|
||||
|
||||
The platform targets the ~20,000+ small-to-mid-size fiduciary firms in Morocco (majority under 10 staff) that cannot afford custom-built solutions but desperately need structured workflow management. A confirmed partnership with Experio (AI-powered pre-accounting automation) provides a distribution channel into firms already modernizing their operations.
|
||||
|
||||
The revenue model is B2B SaaS subscription. The product is currently in active development (pre-production) with a Laravel 12 + Vue 3 + Inertia.js stack, and already features multi-tenant workspaces, client management, a folder/dossier system, client portal with token-based access, document exchange, messaging, and activity logging.
|
||||
|
||||
---
|
||||
|
||||
## Core Vision
|
||||
|
||||
### Problem Statement
|
||||
|
||||
Moroccan fiduciary firms operate in a fragmented, high-pressure environment with no unified practice management layer. A typical collaborateur comptable manages 30-80 client dossiers simultaneously, juggling relentless deadlines (TVA by the 20th, CNSS by the 10th, IS quarterly, bilan season Jan-Mar) across multiple disconnected systems -- Sage for accounting, Damancom for CNSS, SIMPL for tax filings, WhatsApp for client communication, and Excel for tracking. The result: missed deadlines that trigger penalties (5-20% of tax due), damaged firm reputation, and client churn.
|
||||
|
||||
### Problem Impact
|
||||
|
||||
- **For firm owners:** No visibility into whether the firm is on track across all clients. Problems surface only when deadlines are missed and penalties arrive.
|
||||
- **For collaborateurs:** Drowning in manual coordination. Each deadline across each client is a mental note or an Excel row -- nothing actively orchestrates, alerts, or prioritizes their work.
|
||||
- **For clients:** Poor communication experience. Documents sent via WhatsApp get lost. Status updates require phone calls. No self-service visibility into their dossier's progress.
|
||||
- **For the industry:** ~19,000+ unregulated fiduciaries competing on price with no standardized workflows, creating quality gaps that damage client trust in the profession.
|
||||
|
||||
### Why Existing Solutions Fall Short
|
||||
|
||||
| Solution Layer | What It Does | What It Doesn't Do |
|
||||
|---|---|---|
|
||||
| **Sage / JBS / CIEL** | Accounting data entry, ledger, liasse fiscale | No workflow management, no client portal, no deadline tracking |
|
||||
| **SIMPL / Damancom** | Government filing portals | No practice orchestration, no team coordination |
|
||||
| **Experio** | AI pre-accounting automation (OCR, bank reconciliation) | No deadline management, no multi-client workload view |
|
||||
| **TaxDome / Karbon / Financial Cents** | Practice management (global) | English-only, US/UK tax systems, no Moroccan compliance, pricing in USD |
|
||||
| **WhatsApp / Excel / Phone** | Ad-hoc communication and tracking | No structure, no audit trail, no automation, nothing scales |
|
||||
|
||||
**The gap:** No tool orchestrates the fiduciary's complete practice -- the "what needs to happen, for which client, by when, and who's doing it" layer. L'Ami Fiduciaire fills this gap.
|
||||
|
||||
### Proposed Solution
|
||||
|
||||
L'Ami Fiduciaire is the **practice management orchestration platform** for Moroccan fiduciary firms. It sits above accounting software and government portals to provide:
|
||||
|
||||
- **Workspace-based multi-tenancy** -- each firm operates its own workspace with role-based access (Owner, Manager, Worker)
|
||||
- **Client & dossier management** -- structured tracking of every client's declarations, documents, and status
|
||||
- **Client portal** -- external clients upload documents, confirm actions, and view status via secure token-based links (no account needed)
|
||||
- **Document exchange** -- centralized, organized file management replacing WhatsApp chaos
|
||||
- **Team coordination** -- assign clients to collaborateurs, track workload distribution, nudge system
|
||||
- **Messaging** -- in-dossier communication between firm and client with full audit trail
|
||||
|
||||
The platform complements (not replaces) existing accounting tools. Firms keep Sage/JBS for saisie comptable, use Experio for AI-powered document capture, and use L'Ami Fiduciaire to orchestrate the practice around them.
|
||||
|
||||
### Key Differentiators
|
||||
|
||||
1. **Only practice management SaaS built for Moroccan fiduciaries** -- French-native, Moroccan fiscal calendar, local compliance understanding. No global competitor serves this market.
|
||||
2. **Complement, not replace** -- "use alongside Sage" positioning removes adoption friction. Firms don't have to rip out existing tools.
|
||||
3. **Experio partnership** -- confirmed distribution channel into modernizing firms. Experio handles pre-accounting automation; L'Ami Fiduciaire handles practice orchestration. Together they cover what no single tool does.
|
||||
4. **Cloud-native from day one** -- while 60-70% of firms still use desktop software, L'Ami Fiduciaire is built for the inevitable cloud shift, positioned ahead of the market.
|
||||
5. **Client portal with zero-friction access** -- external clients interact via token links without creating accounts, matching the low-tech reality of Moroccan TPE/PME clients.
|
||||
|
||||
---
|
||||
|
||||
## Target Users
|
||||
|
||||
### Primary Users
|
||||
|
||||
#### 1. Firm Owner / Manager — "Karim"
|
||||
|
||||
**Profile:** Karim, 42, expert-comptable and gerant of a 7-person cabinet in Casablanca. Manages 120+ client dossiers across his team. Has been running his firm for 12 years using Sage 100 and Excel spreadsheets to track everything.
|
||||
|
||||
**Day-to-day:** Splits time between reviewing bilans, handling key client relationships, and trying to stay on top of what his team is doing. During bilan season (Jan-Mar), he works 12-hour days and still things slip.
|
||||
|
||||
**Current pain:**
|
||||
- No single view of "which clients are at risk of missed deadlines this week"
|
||||
- Relies on verbal updates from collaborateurs to know if work is progressing
|
||||
- Discovers missed deadlines only when penalty notices arrive
|
||||
- Manages permissions and team assignments in his head or on paper
|
||||
|
||||
**What success looks like:** Opens L'Ami Fiduciaire in the morning and sees a command center -- which declarations are due this week, which clients haven't submitted documents, which collaborateurs are overloaded. Nothing surprises him.
|
||||
|
||||
**In smaller firms:** Karim is also the Manager and Worker -- he does everything himself for 30-50 clients. The platform must work for a solo operator just as well as a team lead.
|
||||
|
||||
#### 2. Collaborateur Comptable — "Fatima"
|
||||
|
||||
**Profile:** Fatima, 28, collaborateur comptable with 4 years of experience. Manages 45 client dossiers. Earns 6,000 MAD/month. Uses Sage for saisie comptable, SIMPL-TVA and Damancom for declarations, WhatsApp for client communication.
|
||||
|
||||
**Day-to-day:** The bulk of her work is the monthly cycle -- collecting documents (1st-10th), saisie comptable (5th-15th), rapprochement bancaire (10th-18th), declarations (15th-20th), payroll (20th-end). Every client is at a different stage.
|
||||
|
||||
**Current pain:**
|
||||
- Tracks 45 clients' deadlines in her head and an Excel sheet
|
||||
- Chases clients on WhatsApp for documents -- some respond, most don't until she calls
|
||||
- Gets tagged by Karim for urgent items but has no way to prioritize across her portfolio
|
||||
- During peak season, things inevitably fall through the cracks
|
||||
|
||||
**What success looks like:** Logs into L'Ami Fiduciaire and sees her personal dashboard -- "3 clients haven't submitted TVA documents and deadline is in 5 days, 2 declarations are ready to file, 1 client confirmed their dossier via portal." She works the list, not her memory.
|
||||
|
||||
**Heaviest daily user of the platform.**
|
||||
|
||||
#### 3. External Client — "Hassan"
|
||||
|
||||
**Profile:** Hassan, 35, owner of a small SARL (import/export, 3 employees). Pays his fiduciary 2,500 MAD/month. Communicates mostly via WhatsApp and occasional office visits. Not tech-savvy -- uses his phone for everything.
|
||||
|
||||
**Day-to-day:** Running his business. Accounting is something he outsources and doesn't want to think about. When his fiduciary needs something, he wants it to be quick and obvious.
|
||||
|
||||
**Current pain:**
|
||||
- Gets WhatsApp messages asking for documents but forgets or delays
|
||||
- Doesn't understand what's urgent vs. what can wait
|
||||
- Has no visibility into whether his declarations are being filed on time
|
||||
- Occasionally gets penalty notices and blames his fiduciary
|
||||
|
||||
**What success looks like:** Receives an email with a link. Clicks it. Sees exactly what's needed ("Upload your January bank statement"). Uploads from his phone. Done. No account to create, no password to remember.
|
||||
|
||||
**Interaction model:** Token-based, task-specific. Comes in, does the action, leaves. Not a recurring platform user.
|
||||
|
||||
### Secondary Users
|
||||
|
||||
#### 4. SaaS Platform Admin — "Saad"
|
||||
|
||||
**Profile:** L'Ami Fiduciaire platform owner. Manages the SaaS infrastructure, monitors workspace health, handles support issues.
|
||||
|
||||
**Needs:** Platform-level dashboard showing workspace count, active users, storage usage, reported issues. Admin CRUD for users and workspaces.
|
||||
|
||||
**Already built:** Admin panel with user and workspace management exists in the current codebase.
|
||||
|
||||
#### 5. Experio Users (Future)
|
||||
|
||||
**Profile:** Fiduciary firms already using Experio for AI-powered pre-accounting automation. They represent a warm lead channel for L'Ami Fiduciaire adoption.
|
||||
|
||||
**Integration model:** TBD. The partnership is confirmed but the product integration concept is not yet defined. This is a future opportunity to design a referral flow or deeper data integration between Experio's pre-accounting layer and L'Ami Fiduciaire's practice management layer.
|
||||
|
||||
### User Journey
|
||||
|
||||
#### Discovery → Onboarding → Daily Use
|
||||
|
||||
| Stage | Karim (Owner) | Fatima (Worker) | Hassan (Client) |
|
||||
|---|---|---|---|
|
||||
| **Discovery** | Referral from Experio partnership, word-of-mouth from other firm owners, or online search for fiduciary management tools | Introduced by Karim when the firm adopts the platform | Receives first email invitation from fiduciary with token link |
|
||||
| **Onboarding** | Creates workspace, adds team members, imports client list, configures roles/permissions | Gets invited to workspace, sees assigned client portfolio | Clicks link, lands on a clear single-action page. No signup. |
|
||||
| **First value ("aha!")** | First time he sees all clients' declaration statuses on one screen | First time her daily task list surfaces a deadline she would have missed | First time he uploads a document in 30 seconds instead of a WhatsApp back-and-forth |
|
||||
| **Daily use** | Morning check of command center dashboard, reviews team progress, handles escalations | Works through prioritized task list, sends document requests via portal, updates dossier statuses | Occasional -- only when fiduciary sends a token link for upload/confirmation |
|
||||
| **Long-term value** | Zero missed deadlines across all clients. Can take on more clients without hiring. Firm reputation grows. | Manages 60+ dossiers without stress. Gets home on time during bilan season. | Stops getting penalty notices. Trusts his fiduciary more. Stays as a client. |
|
||||
|
||||
---
|
||||
|
||||
## Success Metrics
|
||||
|
||||
### User Success Metrics
|
||||
|
||||
| Persona | Success Indicator | How We Measure It |
|
||||
|---|---|---|
|
||||
| **Karim (Owner)** | Zero missed deadlines across all clients | % of declarations filed before deadline across workspace |
|
||||
| **Karim (Owner)** | Full visibility into firm operations | Daily login to command center dashboard |
|
||||
| **Fatima (Worker)** | No declarations falling through the cracks | % of assigned dossiers with up-to-date status |
|
||||
| **Fatima (Worker)** | Reduced time chasing clients for documents | Document requests sent via portal vs. WhatsApp |
|
||||
| **Hassan (Client)** | Fast, frictionless document submission | Time from receiving token link to completing action (target: < 5 minutes) |
|
||||
| **Hassan (Client)** | Fewer penalty notices | Client-reported satisfaction with fiduciary service |
|
||||
|
||||
### Business Objectives
|
||||
|
||||
**Primary objective:** Generate recurring SaaS subscription revenue from Moroccan fiduciary firms.
|
||||
|
||||
**Milestone 0 (Pre-revenue): Production Launch**
|
||||
- Deploy L'Ami Fiduciaire to production with core features operational
|
||||
- This is the foundational milestone -- everything else depends on it
|
||||
|
||||
**Year 1 Target: 100-150 paying firms**
|
||||
- Primary acquisition channel: Experio partnership (500 existing fiduciary clients)
|
||||
- Target conversion rate: 20-30% of Experio's client base
|
||||
- Secondary channels: word-of-mouth, online presence
|
||||
|
||||
**Revenue Projections (Year 1):**
|
||||
|
||||
| Scenario | Firms | Avg. Revenue/Firm | MRR | ARR |
|
||||
|---|---|---|---|---|
|
||||
| Conservative | 100 | 300 MAD/month | 30,000 MAD | 360,000 MAD (~€33K) |
|
||||
| Target | 125 | 350 MAD/month | 43,750 MAD | 525,000 MAD (~€48K) |
|
||||
| Optimistic | 150 | 400 MAD/month | 60,000 MAD | 720,000 MAD (~€66K) |
|
||||
|
||||
### Pricing Model
|
||||
|
||||
**Per-workspace subscription (not per-user)** -- encourages team adoption without penalizing firm growth.
|
||||
|
||||
| Tier | Target | Price (MAD/month) | Includes |
|
||||
|---|---|---|---|
|
||||
| **Starter** | Solo practitioner / new firm | 199 MAD (~€18) | 1 workspace, up to 3 users, 50 clients, 100 folders, 5GB storage, client portal, email notifications |
|
||||
| **Professional** | Growing firm (primary target) | 499 MAD (~€46) | 1 workspace, up to 10 users, unlimited clients/folders, 25GB storage, all features, priority support |
|
||||
| **Enterprise** | Large cabinet / multi-office | 999 MAD (~€92) | Multiple workspaces, unlimited users, unlimited everything, 100GB storage, dedicated support, custom onboarding |
|
||||
|
||||
**No free tier** -- 14-day free trial with full features instead. Annual billing discount: 2 months free (~17% off).
|
||||
|
||||
### Key Performance Indicators
|
||||
|
||||
**Pre-Launch KPIs:**
|
||||
- Feature completion rate against MVP scope
|
||||
- Successful deployment to production environment
|
||||
|
||||
**Post-Launch KPIs (Month 1-3):**
|
||||
- New workspace registrations (target: 10-20 firms/month)
|
||||
- Trial-to-paid conversion rate (target: > 30%)
|
||||
- Onboarding completion rate (target: > 70% of signups complete setup)
|
||||
|
||||
**Growth KPIs (Month 3-12):**
|
||||
- Monthly Recurring Revenue (MRR) growth rate
|
||||
- Workspace churn rate (target: < 5%/month)
|
||||
- Net Promoter Score from firm owners
|
||||
- Client portal usage rate (% of firms actively using client-facing features)
|
||||
|
||||
**Leading Indicators (predict future success):**
|
||||
- Daily active users per workspace (signals real adoption vs. shelfware)
|
||||
- Number of dossiers managed per workspace (signals depth of usage)
|
||||
- Client portal actions completed per month (signals end-client value delivery)
|
||||
|
||||
---
|
||||
|
||||
## MVP Scope
|
||||
|
||||
### Terminology Change
|
||||
|
||||
**"Folders" renamed to "Declarations"** throughout the entire platform (UI, codebase, database references). This is a domain-language decision -- Moroccan fiduciary professionals think in terms of declarations (TVA, IS, CNSS), not generic folders. This change improves immediate comprehension for every user.
|
||||
|
||||
### Core Features (Phases 1-5 -- All Required for Launch)
|
||||
|
||||
#### Phase 1: Role System Foundation
|
||||
*Everything else depends on this.*
|
||||
|
||||
| Feature | Description | Status |
|
||||
|---|---|---|
|
||||
| Fixed roles (Owner, Manager, Worker) | Three preset roles with sensible defaults that work for 90% of firms | To build |
|
||||
| Permission matrix with toggles | Simple toggle grid: rows = permissions, columns = roles | To build |
|
||||
| Per-workspace permission storage | Each cabinet customizes permissions independently | To build |
|
||||
| Team management page | Dedicated "Team" page inside workspace to manage users and roles | To build |
|
||||
| Move user management inside workspace | No separate admin routes for team -- everything in workspace Team page | To build |
|
||||
|
||||
#### Phase 2: Dashboard Separation
|
||||
*Now that roles exist, build the right view for each.*
|
||||
|
||||
| Feature | Description | Status |
|
||||
|---|---|---|
|
||||
| Single shell, role-driven sidebar | One app, one sidebar, content determined by role | To build |
|
||||
| Firm Owner/Manager command center | Combined dashboard + alerts: active clients, declarations by status, activity feed, priority alerts | To build |
|
||||
| Scoped Worker dashboard | "Here's what you need to do today" -- only assigned clients/declarations | To build |
|
||||
| SaaS Owner platform dashboard | Platform metrics: workspace count, active users, storage, system health | To build |
|
||||
| Priority alert system | Visual alerts for overdue declarations, unanswered uploads, unsigned confirmations | To build |
|
||||
| Dashboard = alerts combined | No separate alerts page -- dashboard IS the alert system | To build |
|
||||
| Issue/support inbox | Lightweight issue reporting from firm users to SaaS owner | To build |
|
||||
|
||||
#### Phase 3: Collaboration Features
|
||||
*The nudge/notification layer.*
|
||||
|
||||
| Feature | Description | Status |
|
||||
|---|---|---|
|
||||
| Quick tag & nudge | One-click alert from Owner/Manager to Worker on any declaration | To build |
|
||||
| Inline nudge on declaration row | Small icon button on table row -- click, pick employee, done | To build |
|
||||
| Employee notification center | Notification area where nudges/alerts land with direct links to declarations | To build |
|
||||
|
||||
#### Phase 4: Workflow Efficiency
|
||||
*The عملي features that save time.*
|
||||
|
||||
| Feature | Description | Status |
|
||||
|---|---|---|
|
||||
| Bulk declaration creation | Select multiple clients, choose type (e.g., TVA Mensuel), set date, create all at once | To build |
|
||||
| Bulk notification scheduling | Set notification date during bulk creation -- all clients notified on same day | To build |
|
||||
| Advanced filtering system | Consistent filter bar across Clients, Declarations, Archive -- persistent until cleared | To build |
|
||||
| Quick search | Search bar with instant text lookup across views | To build |
|
||||
| Practicality-first UI pass | Every UI decision passes: "Does this make the task faster or slower?" Tables over cards. | To build |
|
||||
|
||||
#### Phase 5: Archive System
|
||||
*Needs closed declarations to exist -- builds on everything above.*
|
||||
|
||||
| Feature | Description | Status |
|
||||
|---|---|---|
|
||||
| Auto-archive on close | Declaration moves to archive automatically when status becomes Closed | To build |
|
||||
| Archive ≠ Delete | Full history preserved -- documents, messages, actions. Filing cabinet, not trash. | To build |
|
||||
| Archive as main nav item | Top-level sidebar -- first-class feature, not hidden | To build |
|
||||
| Hybrid filters + search | Flat list with fiscal year/client/type/date filters + search bar | To build |
|
||||
| Archive detail page | Read-only full snapshot: declaration info, timeline, documents, messages, portal actions | To build |
|
||||
| In-app document preview | Preview button (PDF/image viewer) + separate download button | To build |
|
||||
| Read-only + re-open | Archive locked, but Owner/Manager can re-open (moves back to active) | To build |
|
||||
| Re-open audit trail | Who, when, why logged -- legal protection for the firm | To build |
|
||||
| Bulk download as ZIP | Filter a set, download structured ZIP with all documents organized by declaration | To build |
|
||||
| Visual distinction | Muted color scheme / archive badge -- clear boundary between active and archived | To build |
|
||||
| 10-year retention policy | Automated lifecycle with warning notification before cleanup | To build |
|
||||
| Metadata search | Search by client, type, year, date. Full-text document search deferred. | To build |
|
||||
|
||||
#### Already Built (Foundation)
|
||||
|
||||
| Feature | Status |
|
||||
|---|---|
|
||||
| Multi-tenant workspaces | Done |
|
||||
| Client CRUD with status, legal form, responsable/suivi | Done |
|
||||
| Declaration (folder) system with priority, status, type, confirmation | Done |
|
||||
| Client portal (token-based: upload, confirm, refuse) | Done |
|
||||
| Document exchange (Spatie Media Library) | Done |
|
||||
| In-declaration messaging | Done |
|
||||
| Email notifications (5 types) | Done |
|
||||
| 2FA authentication (TOTP via Fortify) | Done |
|
||||
| Activity logging (Spatie) | Done |
|
||||
| Admin panel (users, workspaces) | Done |
|
||||
| Workspace switching | Done |
|
||||
|
||||
### Out of Scope for MVP
|
||||
|
||||
| Feature | Rationale | When |
|
||||
|---|---|---|
|
||||
| Kanban view for declarations | Nice-to-have visual pipeline -- tables-first approach is more practical for accountants | Post-launch |
|
||||
| Client-initiated declarations | Reverses the flow (clients request declarations) -- requires mature platform first | Post-launch |
|
||||
| Archive-specific advanced filters | Extra filter dimensions beyond basic MVP archive filters | Post-launch |
|
||||
| Experio product integration | Partnership is confirmed but integration concept is TBD | Post-launch |
|
||||
| E-invoicing integration | DGI platform still rolling out; future opportunity | Post-launch |
|
||||
| WhatsApp integration | High-value but complex; email-based portal is sufficient for MVP | Post-launch |
|
||||
| Mobile app | Web-first; responsive design covers mobile use cases initially | Post-launch |
|
||||
| Billing/subscription management | Handle manually or via third-party (Stripe) at launch | Post-launch |
|
||||
| Multi-language support (Arabic) | French-first; Arabic UI deferred | Post-launch |
|
||||
|
||||
### MVP Success Criteria
|
||||
|
||||
The MVP is successful when:
|
||||
|
||||
1. **Deployable:** Platform runs in production with real firm data without critical bugs
|
||||
2. **Adoptable:** A fiduciary firm can sign up, create a workspace, add team members, import clients, and start managing declarations within 1 hour
|
||||
3. **Valuable:** Firm owner can see all clients' declaration statuses on one dashboard and workers see their scoped task list
|
||||
4. **Functional:** The full declaration lifecycle works end-to-end: create → assign → notify client → receive documents → update status → close → auto-archive
|
||||
5. **Collaborative:** Nudge system works -- Owner tags Worker, Worker gets notification with direct link
|
||||
6. **Efficient:** Bulk creation lets firms create 20+ declarations in one action instead of one-by-one
|
||||
|
||||
### Future Vision
|
||||
|
||||
**Post-MVP Roadmap (Year 1-2):**
|
||||
|
||||
| Priority | Feature | Impact |
|
||||
|---|---|---|
|
||||
| High | Experio integration (referral flow + potential data sync) | Distribution channel activation |
|
||||
| High | Billing/subscription management (Stripe integration) | Automate revenue collection |
|
||||
| Medium | WhatsApp document intake | Meets clients where they already communicate |
|
||||
| Medium | Deadline calendar with Moroccan fiscal calendar pre-loaded | Automatic deadline awareness per client type |
|
||||
| Medium | E-invoicing readiness (DGI platform API when available) | Compliance positioning |
|
||||
| Low | Kanban view for declaration pipeline | Visual workflow management option |
|
||||
| Low | Client-initiated declarations | Reverse-flow for proactive clients |
|
||||
| Low | Mobile app | Native mobile experience |
|
||||
| Low | Arabic UI support | Broader market accessibility |
|
||||
|
||||
**Long-term vision (2-3 years):** L'Ami Fiduciaire becomes the operating system for Moroccan fiduciary firms -- the central hub that connects accounting software (Sage/JBS), pre-accounting automation (Experio), government portals (SIMPL/Damancom), and client communication into one orchestrated workflow. As AI disrupts basic bookkeeping, the platform positions fiduciaries to evolve from data-entry shops to advisory practices, with L'Ami Fiduciaire powering the practice management layer that makes that transition possible.
|
||||
@@ -0,0 +1,353 @@
|
||||
# Research: Cloud Adoption, SaaS Practice Management & Future Technology Trends for Accounting/Fiduciary Firms
|
||||
|
||||
**Date**: 2026-03-11
|
||||
**Research Type**: Technology & Market Trends
|
||||
**Scope**: Morocco, Africa, and global best-in-class platforms
|
||||
|
||||
---
|
||||
|
||||
## 1. Cloud Accounting Adoption in Morocco/Africa
|
||||
|
||||
### 1.1 Adoption Rates
|
||||
|
||||
**Africa-wide:**
|
||||
- 86% of African organisations reported medium or high cloud maturity in 2025, up from 61% in 2023 (PwC Africa Cloud Survey 2025).
|
||||
- Middle East & Africa cloud accounting software adoption stands at ~38% of enterprises, with government-backed digital economy strategies boosting adoption by 33%.
|
||||
- The global cloud accounting software market is projected to reach USD 50.79 billion by 2035 (Precedence Research).
|
||||
|
||||
**Morocco-specific (estimated):**
|
||||
- No precise percentage is publicly available for cloud accounting adoption among Moroccan fiduciary firms. Based on the existing market research (see market-fiduciary-saas-morocco-research-2026-03-10.md), an estimated 60-70% of firms remain on desktop software (Sage, CIEL, EBP), with cloud adoption still in the minority (likely 15-25% of firms actively using cloud tools).
|
||||
- The dominant tool remains **Sage desktop**, followed by CIEL Compta and EBP Compta.
|
||||
- Cloud-native entrants in Morocco: **Sahih** (AWS-hosted), **Bleez** (AI features), **ComptaCom** (online accounting), **Banqup** (collaborative document platform).
|
||||
|
||||
### 1.2 Barriers to Cloud Adoption in Morocco
|
||||
|
||||
**Data Sovereignty and Legal Constraints:**
|
||||
- Morocco's **Law 09-08** (personal data protection) and **Law 05-20** (cybersecurity) impose strict requirements on where and how sensitive data is stored.
|
||||
- Data residency laws require regulated data to be localized within Morocco's borders, effectively restricting use of foreign public cloud for many organizations.
|
||||
- Morocco unveiled a **"Cloud First" national roadmap for 2025-2030**, positioning cloud as the backbone of digital transformation while reinforcing digital sovereignty. Cloud computing will become the default for public-sector digital platforms.
|
||||
|
||||
**Trust Deficit:**
|
||||
- 60-70% of practitioners are "Traditional Practitioners" (age 45+) with a "if it works, don't change it" mindset. Their biggest fear: losing data or breaking workflows.
|
||||
- Extremely high switching costs (data migration, training, habits). Firms typically stay with a tool for 5-10+ years.
|
||||
- Creating trust in data transactions requires a robust, enforced legal framework for personal data protection, e-commerce, and cybersecurity -- still maturing in Morocco.
|
||||
|
||||
**Internet Reliability:**
|
||||
- Significant digital divide: rural areas and low-income populations have limited internet access.
|
||||
- Urban areas (Casablanca-Rabat corridor where 85% of experts-comptables are based) have adequate connectivity, but reliability concerns persist for always-online cloud tools.
|
||||
|
||||
**Skills Gap:**
|
||||
- Shortage of skilled professionals in cybersecurity, data science, and software development.
|
||||
- Most fiduciary professionals have limited digital literacy beyond their existing desktop tools.
|
||||
|
||||
_Sources:_
|
||||
- [Morocco Cloud First Roadmap](https://www.moroccoworldnews.com/2025/12/270343/morocco-outlines-cloud-first-roadmap-to-strengthen-digital-sovereignty/)
|
||||
- [PwC Africa Cloud Survey 2025](https://tech.africa/pwc-africa-cloud-survey-2025/)
|
||||
- [Morocco Digital Economy - Trade.gov](https://www.trade.gov/country-commercial-guides/morocco-digital-economy)
|
||||
- [McKinsey - Africa Cloud Opportunities and Barriers](https://www.mckinsey.com/capabilities/mckinsey-digital/our-insights/africas-leap-ahead-into-cloud-opportunities-and-barriers)
|
||||
|
||||
### 1.3 Cloud-Native Accounting Tools in Francophone Africa/Markets
|
||||
|
||||
**French-origin platforms expanding internationally:**
|
||||
- **Pennylane** — Fastest-growing accounting software in France, 500,000 companies on platform (Sept 2025). European expansion starting with Germany (2025). Not yet in Africa but a potential future entrant.
|
||||
- **Indy** — Online accounting for freelancers and liberal professions, free tier for small structures.
|
||||
- **Dext** — Cloud-based automation of accounting data entry and expense management via document recognition.
|
||||
- **Axonaut** — French CRM + accounting for TPE/PME.
|
||||
|
||||
**Morocco-specific cloud tools:**
|
||||
- **Sahih** (sahih.ma) — Moroccan cloud-native accounting platform, AWS-hosted
|
||||
- **Bleez** (bleez.com) — Full web accounting suite with AI features
|
||||
- **ComptaCom** (comptacom.ma) — Online accounting with invoicing, storage, tax declarations
|
||||
- **Banqup** (banqup.ma) — Collaborative digitization of document exchange between firms and clients
|
||||
|
||||
**Africa-wide mobile/fintech accounting:**
|
||||
- **Moniepoint's Moniebook** — POS + bookkeeping platform combining payments, inventory, and staff management for micro/small enterprises in Nigeria
|
||||
- **Flutterwave** — Acquired Mono (open banking), launching treasury management tool for African businesses in 2026
|
||||
- **Wave** (Wave Apps) — Free accounting software popular with micro-enterprises
|
||||
|
||||
### 1.4 Sage Cloud Migration Path for Moroccan Users
|
||||
|
||||
- Sage offers **Sage Business Cloud Accounting** in Africa (South Africa, Kenya, Nigeria), with pricing from USD 11/month (Nigeria) to R185/month (South Africa).
|
||||
- Sage provides migration support for **Pastel Partner** and **Xpress** users moving to cloud.
|
||||
- For Morocco specifically, Sage maintains a local presence (sage.com/fr-ma) with solutions for experts-comptables, but the cloud migration path for Moroccan Sage desktop users (Sage 50, Sage 100) is not as clearly defined as in anglophone Africa.
|
||||
- The Sage reseller network is deeply embedded in the Moroccan market, making them a formidable incumbent.
|
||||
|
||||
_Sources:_
|
||||
- [Sage Africa Cloud Accounting](https://www.sage.com/africa/sage-business-cloud/accounting/)
|
||||
- [Pennylane](https://www.pennylane.com/fr)
|
||||
- [Indy Comparatif](https://www.indy.fr/guide/comptabilite-en-ligne/logiciel/comparatif/)
|
||||
|
||||
---
|
||||
|
||||
## 2. Practice Management SaaS for Accounting Firms (Global Best-in-Class)
|
||||
|
||||
### 2.1 Leading Platforms Comparison
|
||||
|
||||
| Platform | Best For | Client Portal | Task Mgmt | Deadline Tracking | Doc Mgmt | Billing | E-Signatures | Starting Price |
|
||||
|----------|----------|:---:|:---:|:---:|:---:|:---:|:---:|---|
|
||||
| **Karbon** | Mid-large firms, team collaboration | Limited | Excellent (Kanban) | Excellent | Good | Basic | No | $1,068/user/year |
|
||||
| **TaxDome** | Solo/small firms, all-in-one | Excellent | Good | Good | Excellent (AI-powered) | Excellent | Unlimited (all tiers) | $800/user/year |
|
||||
| **Canopy** | Mid-size tax firms, tax resolution | Good | Good (recurring templates) | Good | Good | Good (modular) | Add-on | ~$1,704/user/year |
|
||||
| **Financial Cents** | US/Canadian firms, ease of use | Good | Good | Good | Good | Good | Yes | $69/user/month (~$828/yr) |
|
||||
| **Jetpack Workflow** | Budget-conscious, recurring work | No | Good (70+ templates) | Excellent | No | No (QuickBooks integration) | No | $40/user/month (~$480/yr) |
|
||||
|
||||
### 2.2 Detailed Feature Analysis
|
||||
|
||||
**Karbon** ($89/user/month, popular plan):
|
||||
- Strongest internal collaboration: @mentions, email visibility, shared comments
|
||||
- Kanban dashboards for workflow visualization
|
||||
- Email-centric design (email integrated into task context)
|
||||
- Custom reporting available as add-on ($6,000)
|
||||
- Contact migration: $299 add-on
|
||||
- Weakness: No built-in client portal, no e-signatures, no billing
|
||||
|
||||
**TaxDome** ($800-$1,200/user/year):
|
||||
- Most complete all-in-one platform: client portal, CRM, workflow, billing, e-signatures, document management
|
||||
- Unlimited document storage with AI-powered organization at every tier
|
||||
- Built-in website builder
|
||||
- Flat annual per-user pricing (no module add-ons)
|
||||
- 4.7/5 G2 rating
|
||||
- Weakness: Less robust for very large multi-office firms
|
||||
|
||||
**Canopy** (~$1,704/user/year for 5-person firm):
|
||||
- Modular pricing (buy only what you need: time & billing, document management, workflow, client portal)
|
||||
- Strong for tax resolution case management
|
||||
- Built-in timer and manual time entries, time budgets
|
||||
- Customizable invoices
|
||||
- Weakness: Modular pricing adds up quickly; separate purchases needed for features bundled elsewhere
|
||||
|
||||
**Financial Cents** ($69/user/month):
|
||||
- Highest ease-of-use rating in the industry: 4.9/5.0
|
||||
- All-in-one: workflow, client requests, document sharing, time tracking, billing, reporting
|
||||
- Purpose-built for accounting firms
|
||||
- Weakness: US/Canada only, billing in USD, no multilingual support
|
||||
|
||||
**Jetpack Workflow** ($40/user/month):
|
||||
- 70+ pre-built accounting-specific templates (free)
|
||||
- Purpose-built for recurring, cyclical accounting work
|
||||
- Most budget-friendly option
|
||||
- Weakness: No client portal, no invoicing, no document management, relies on email for client communication
|
||||
|
||||
### 2.3 How These Compare to L'Ami Fiduciaire
|
||||
|
||||
Based on the existing project research, L'Ami Fiduciaire is building a practice management platform specifically for Moroccan fiduciary firms. Key differentiators vs. global platforms:
|
||||
|
||||
| Dimension | Global Platforms | L'Ami Fiduciaire Advantage |
|
||||
|-----------|-----------------|---------------------------|
|
||||
| **Language** | English-only (most) | French-native, Arabic support potential |
|
||||
| **Regulatory Compliance** | US/UK tax systems | Moroccan DGI, CNSS/DAMANCOM, CIMR compliance |
|
||||
| **Chart of Accounts** | GAAP/IFRS-centric | Plan Comptable Marocain (PCM) native |
|
||||
| **Tax Calendar** | US/UK deadlines | Moroccan fiscal calendar (TVA, IS, IR deadlines) |
|
||||
| **E-Invoicing** | Not Morocco-specific | Can integrate with DGI SIMPL / upcoming e-invoicing platform |
|
||||
| **Pricing** | $40-89/user/month (USD) | Can be priced for Moroccan purchasing power |
|
||||
| **Local Support** | English, US timezone | French, Moroccan timezone, local understanding |
|
||||
| **Client Base** | TPE/PME not a focus | Built for Moroccan TPE/PME fiduciary workflows |
|
||||
|
||||
**Gap Analysis -- Features L'Ami Fiduciaire should consider from global leaders:**
|
||||
1. **Client portal** (TaxDome model) -- clients upload documents, sign, pay
|
||||
2. **E-signatures** (TaxDome includes unlimited) -- critical for remote client management
|
||||
3. **Kanban workflow boards** (Karbon model) -- visual task management
|
||||
4. **Recurring task templates** (Jetpack Workflow model) -- 70+ pre-built for accounting cycles
|
||||
5. **AI document classification** (TaxDome model) -- auto-categorize uploaded documents
|
||||
6. **Time tracking + billing** (Financial Cents model) -- track hours per client per task
|
||||
7. **Mobile app** -- none of the global leaders have strong mobile presence; opportunity to lead
|
||||
|
||||
### 2.4 Pricing Models and Market Positioning
|
||||
|
||||
| Platform | Model | Entry Point | Mid-Tier | Enterprise |
|
||||
|----------|-------|------------|----------|-----------|
|
||||
| TaxDome | Per-user, annual | $800/yr | $1,000/yr | $1,200/yr |
|
||||
| Karbon | Per-user, annual | $540/yr | $1,068/yr | Custom |
|
||||
| Financial Cents | Per-user, monthly | $828/yr | $756/yr (Scale) | N/A |
|
||||
| Jetpack Workflow | Per-user, monthly | $480/yr | $588/yr | N/A |
|
||||
| Canopy | Modular + per-user | ~$1,700/yr/user | Higher | Custom |
|
||||
|
||||
_Sources:_
|
||||
- [TaxDome Blog - Practice Management Software 2026](https://blog.taxdome.com/accounting-practice-management-software/)
|
||||
- [Karbon Magazine - TaxDome vs Canopy](https://karbonhq.com/resources/taxdome-vs-canopy/)
|
||||
- [Uku - Canopy vs TaxDome 2026](https://getuku.com/articles/canopy-vs-taxdome)
|
||||
- [Financial Cents Pricing](https://financial-cents.com/pricing/)
|
||||
- [Uku - Financial Cents vs Jetpack Workflow 2026](https://getuku.com/articles/financial-cents-vs-jetpack-workflow)
|
||||
|
||||
---
|
||||
|
||||
## 3. API-First and Open Banking Trends
|
||||
|
||||
### 3.1 Government Platform API Availability
|
||||
|
||||
**DGI SIMPL Platform:**
|
||||
- Morocco's online tax services portal (SIMPL) now processes over 90% of tax declarations and payments digitally.
|
||||
- The DGI has adopted a **microservices-based architecture** ensuring agility and scalability.
|
||||
- E-invoicing platform (under development by **xHub**, a Moroccan tech firm) will use standard formats: **UBL** (Universal Business Language) and **CII** (Cross-Industry Invoice).
|
||||
- API availability for third-party integration: not publicly documented as open APIs, but the microservices architecture suggests future API exposure is architecturally feasible.
|
||||
|
||||
**DAMANCOM (CNSS):**
|
||||
- Digital platform for managing social security contributions.
|
||||
- 2025 update: new authentication via DGSN digital identity (e-ID) or SMS OTP.
|
||||
- No public API documented for third-party software integration. Employers interact via the web portal.
|
||||
- Integration opportunity: screen-scraping or future API partnerships.
|
||||
|
||||
**CIMR:**
|
||||
- CIMR DIALCOM mobile app available (iOS/Android) for beneficiaries.
|
||||
- No public API for employer/fiduciary integration documented.
|
||||
- A private pension provider, so API development depends on commercial incentives.
|
||||
|
||||
**Key Insight:** All three platforms (DGI, CNSS, CIMR) are digitizing rapidly but remain portal-based rather than API-first. This creates an opportunity for L'Ami Fiduciaire to build integration layers (even if initially via automated web interactions) that competitors lack.
|
||||
|
||||
### 3.2 Bank Feed Integrations
|
||||
|
||||
- Bank feed integration (automatic import of bank transactions) is standard in global platforms (Xero, QuickBooks, Sage Cloud).
|
||||
- In Morocco, no standardized bank feed API framework exists yet.
|
||||
- Some Moroccan banks (Attijariwafa bank, BMCI) already expose APIs for select partners.
|
||||
- Flutterwave's acquisition of **Mono** (open banking startup) signals growing API-first banking infrastructure in Africa, though initially focused on Nigeria/West Africa.
|
||||
|
||||
### 3.3 Open Banking Regulations in Morocco
|
||||
|
||||
- **Bank Al-Maghrib** (central bank) is studying Open Banking regulation but has not published a formal framework.
|
||||
- Gradual adoption expected 2025-2026 with individual bank API programs.
|
||||
- No PSD2-equivalent legislation exists in Morocco or North Africa.
|
||||
- Morocco's approach is evolving on a bank-by-bank basis rather than through a top-down regulatory mandate.
|
||||
|
||||
### 3.4 PSD2-Equivalent Frameworks for North Africa
|
||||
|
||||
- **No unified PSD2-equivalent exists** for North Africa or MENA.
|
||||
- Saudi Arabia and Bahrain are the most advanced in MENA for open banking frameworks.
|
||||
- Nigeria is the most advanced in Africa (published an open banking framework).
|
||||
- North African countries (Morocco, Tunisia, Algeria, Egypt) are developing individual national approaches.
|
||||
- The OECD has published guidance on open finance in sub-Saharan Africa, but North Africa is not yet covered by equivalent frameworks.
|
||||
|
||||
_Sources:_
|
||||
- [Open Banking Morocco - VOID](https://void.ma/en/publications/open-banking-maroc-enjeux-opportunites/)
|
||||
- [Open Banking Tracker - Morocco](https://www.openbankingtracker.com/country/morocco)
|
||||
- [Morocco E-Invoicing 2026 - EDICOM](https://edicomgroup.com/blog/morocco-electronic-invoicing)
|
||||
- [Morocco Tax Administration - IMF/Morocco World News](https://www.moroccoworldnews.com/2025/12/273037/moroccos-tax-administration-advances-yet-faces-key-hurdles-imf-finds)
|
||||
- [CNSS Digital Login System - North Africa Post](https://northafricapost.com/88635-moroccos-social-security-portal-introduces-digital-login-system.html)
|
||||
- [Payments Association - Open Banking Worldwide 2025](https://thepaymentsassociation.org/article/the-state-open-banking-regulation-worldwide-in-2025/)
|
||||
|
||||
---
|
||||
|
||||
## 4. Future Outlook 2026-2030
|
||||
|
||||
### 4.1 E-Invoicing Impact on Fiduciary Workflow
|
||||
|
||||
**Morocco's E-Invoicing Timeline:**
|
||||
- **October 2024:** First e-invoicing proposals, public consultation launched.
|
||||
- **October 2025:** Pilot phase with volunteer companies testing the platform (developed by xHub).
|
||||
- **Early 2026:** Mandatory phase begins -- phased rollout, larger companies first, then medium/small businesses under staggered deadlines.
|
||||
- **Legal basis:** Article 145-9 of the Moroccan tax code (from 2018 finance reforms).
|
||||
|
||||
**Two potential implementation models under evaluation by DGI:**
|
||||
1. **Post-audit model** -- companies freely exchange invoices, tax validation occurs afterward.
|
||||
2. **Continuous Transaction Control (CTC)** -- each invoice validated by tax authority before issuance. If adopted, Morocco may use a decentralized system with authorized service providers.
|
||||
|
||||
**Technical standards:** UBL and CII formats for international interoperability.
|
||||
|
||||
**Impact on fiduciary workflow:**
|
||||
- **Massive disruption for traditional fiduciaires:** Manual invoice entry will be eliminated. The primary value proposition of many unregulated fiduciaires (data entry and bookkeeping) will be severely diminished.
|
||||
- **Shift from data entry to advisory:** Fiduciaires must evolve from "saisie comptable" to advisory, analysis, and compliance oversight.
|
||||
- **Software requirement:** Only DGI-certified software will be able to issue compliant e-invoices. This is the #1 forcing function for technology adoption.
|
||||
- **Opportunity for L'Ami Fiduciaire:** Being an early integrator with the DGI e-invoicing platform is a critical competitive advantage.
|
||||
|
||||
### 4.2 AI Impact on Bookkeeping and Unregulated Fiduciaires
|
||||
|
||||
**Current State (2026):**
|
||||
- AI is shifting from optional add-on to **native layer inside core accounting systems**.
|
||||
- "Ambient AI" handles document classification, task creation, data consistency checks, and client follow-up.
|
||||
- ~75% of small/midsize businesses investing in AI; adopters report up to 45% efficiency gains.
|
||||
- Only ~20% of small businesses currently utilize AI in finance (significant room for growth).
|
||||
|
||||
**Impact on Unregulated Fiduciaires (2026-2030):**
|
||||
|
||||
This is an existential threat. Unregulated Moroccan fiduciaires primarily offer:
|
||||
1. Bookkeeping / saisie comptable -- **highly automatable by AI**
|
||||
2. Tax declaration preparation -- **partially automatable**
|
||||
3. Social security declarations -- **partially automatable**
|
||||
4. Basic payroll -- **highly automatable**
|
||||
|
||||
**Prediction:** By 2028-2030, AI + e-invoicing will eliminate 60-80% of manual bookkeeping work. Unregulated fiduciaires who do not evolve to advisory services, practice management, or specialized compliance will face severe competitive pressure from:
|
||||
- Self-service AI accounting tools (clients do it themselves)
|
||||
- Larger regulated firms that can serve more clients with fewer staff
|
||||
- Platform-based accounting (Pennylane model) where AI does the work and the expert-comptable reviews
|
||||
|
||||
**Expert consensus (Accounting Today, 2026):**
|
||||
- "2026 is the year AI meaningfully increases firm capacity, realization rates and partner-level revenue, without increasing partner or admin hours."
|
||||
- In finance functions, AI agents handle invoice processing, purchase order matching, reconciliation, and anomaly detection, freeing humans for revenue growth and scenario planning.
|
||||
|
||||
### 4.3 Blockchain for Audit Trails and Compliance
|
||||
|
||||
**Current Research (2026):**
|
||||
- A 2026 study across Ghana, Egypt, and Kenya investigates blockchain audit readiness in emerging economies (297 financial professionals surveyed).
|
||||
- Blockchain-enabled audit trails provide continuous access to verified transactional data, improving early fraud detection, reducing data manipulation, and enhancing financial reporting reliability.
|
||||
- Permissioned blockchain + smart contracts can support real-time audit logging and procedural compliance.
|
||||
|
||||
**Practical Reality for Morocco (2026-2030):**
|
||||
- Blockchain for audit trails remains largely **research-phase** in emerging markets.
|
||||
- Implementation challenges: interoperability, scalability, regulatory uncertainty, organizational resistance.
|
||||
- **More likely near-term impact:** DGI's e-invoicing platform with digital signatures and immutable transaction logs will provide many of the same benefits as blockchain without requiring blockchain infrastructure.
|
||||
- **Recommendation for L'Ami Fiduciaire:** Do not invest in blockchain features now. Monitor developments, but focus on e-invoicing integration and traditional audit trail mechanisms (immutable logs, digital signatures, timestamping).
|
||||
|
||||
### 4.4 Mobile-First Accounting for Micro-Enterprises
|
||||
|
||||
**Africa-specific developments:**
|
||||
- **Moniepoint's Moniebook** (Nigeria) -- combines POS, bookkeeping, inventory, and staff management for micro/small enterprises. Strategy: own the payment relationship, then expand to accounting and credit.
|
||||
- **Flutterwave Mobile** -- turns any smartphone into a mobile POS accepting cards, bank transfers, mobile money, and USSD.
|
||||
- **Wave Apps** -- free accounting used by micro-enterprises globally.
|
||||
|
||||
**Opportunity for Morocco:**
|
||||
- Morocco has ~500,000+ TPE (tres petites entreprises) and auto-entrepreneurs.
|
||||
- Most use no accounting software at all, relying on paper or basic Excel.
|
||||
- A mobile-first, Arabic/French bilingual micro-accounting app could capture a massive underserved market.
|
||||
- Integration with Morocco's upcoming e-invoicing platform would make such an app mandatory infrastructure.
|
||||
|
||||
**Key trend:** The operating system for African micro-enterprises is converging around payments + bookkeeping + lending on mobile. Flutterwave, Moniepoint, and others are building this in West Africa. Morocco lacks an equivalent player.
|
||||
|
||||
### 4.5 Expert Predictions for the Profession's Evolution
|
||||
|
||||
**Accounting Today (2026 predictions):**
|
||||
1. AI will shift from optional to native -- "ambient AI" inside daily workflows.
|
||||
2. Vendors will apply AI to end-to-end use cases in tax prep and bookkeeping.
|
||||
3. The accountant's role evolves from scorekeeper/compliance specialist to **trusted advisor, business partner, and strategic thinker**.
|
||||
4. Real-time workflows pushed by mandatory e-invoicing globally.
|
||||
5. E-invoicing becomes a strategic business advantage, not just a compliance burden.
|
||||
|
||||
**Rightworks (Top Accounting Trends 2026):**
|
||||
- Firms continue leveraging automation for reconciliation, compliance, invoice processing, financial forecasting, and data collection.
|
||||
- The profession's staffing crisis (talent shortage) accelerates AI adoption as a necessity, not a choice.
|
||||
|
||||
**CFO Dive (Audit Profession 2026):**
|
||||
- 5 ways AI redefines audit: continuous monitoring, real-time anomaly detection, automated sampling, predictive risk assessment, and natural language reporting.
|
||||
|
||||
**Implications for L'Ami Fiduciaire:**
|
||||
1. **Build for the advisory-era fiduciaire**, not the data-entry-era fiduciaire.
|
||||
2. **E-invoicing integration is non-negotiable** -- must be ready for the 2026 mandate.
|
||||
3. **AI features** (document classification, anomaly detection, auto-categorization) will be table-stakes within 2-3 years.
|
||||
4. **Mobile access** is increasingly expected, especially for client-facing features.
|
||||
5. **The platform that owns the fiduciaire-client relationship** (documents, communication, billing, compliance) wins.
|
||||
|
||||
_Sources:_
|
||||
- [Accounting Today - AI Predictions 2026](https://www.accountingtoday.com/list/ai-thought-leaders-survey-2026-process-predictions)
|
||||
- [Accounting Today - Technology Trends 2026](https://www.accountingtoday.com/news/how-will-technology-shape-accounting-trends-in-2026)
|
||||
- [Accounting Today - 16 Predictions 2026](https://www.accountingtoday.com/list/16-predictions-for-accounting-technology-for-2026)
|
||||
- [CFO Dive - AI Redefines Audit 2026](https://www.cfodive.com/news/5-ways-ai-will-redefine-the-audit-profession-in-2026/812136/)
|
||||
- [Rightworks - Accounting Trends 2026](https://www.rightworks.com/blog/accounting-technology-trends/)
|
||||
- [Morocco E-Invoicing - Hisab](https://hisab.ma/en/docs/mandate-2026)
|
||||
- [Morocco E-Invoicing - VATCalc](https://www.vatcalc.com/morocco/morocco-e-invoicing-2026/)
|
||||
- [Morocco E-Invoicing - Eezi Blog](https://blog.eezi.io/morocco-e-invoicing-2026-from-dunes-to-digital-understanding-the-mandatory-e-invoicing-requirements/)
|
||||
- [1-800Accountant - Agentic AI 2026](https://1800accountant.com/blog/how-to-use-agentic-ai-for-small-businesses)
|
||||
- [Blockchain Audit Readiness - Wiley](https://onlinelibrary.wiley.com/doi/10.1002/isd2.70061)
|
||||
- [Flutterwave/Mono - Techpoint Africa](https://techpoint.africa/insight/mono-treasury-management-platform/)
|
||||
|
||||
---
|
||||
|
||||
## Summary: Strategic Implications for L'Ami Fiduciaire
|
||||
|
||||
| Trend | Timeframe | Impact | Action |
|
||||
|-------|-----------|--------|--------|
|
||||
| Morocco e-invoicing mandate | 2026 (now) | Critical | Must integrate with DGI platform ASAP |
|
||||
| AI-powered bookkeeping | 2026-2028 | High | Build AI features (doc classification, auto-categorization) |
|
||||
| Cloud adoption acceleration | 2025-2027 | High | Cloud-native is the right bet; data sovereignty compliance essential |
|
||||
| Open banking APIs | 2027-2030 | Medium | Monitor Bank Al-Maghrib; prepare architecture for bank feeds |
|
||||
| Practice management consolidation | 2026-2028 | High | Build TaxDome-level all-in-one (portal, billing, docs, workflow) |
|
||||
| Mobile-first micro-enterprise | 2026-2030 | Medium-High | Consider mobile app for client-facing features |
|
||||
| Blockchain audit trails | 2028-2032 | Low (near-term) | Do not invest now; DGI e-invoicing provides similar benefits |
|
||||
| Unregulated fiduciaire disruption | 2027-2030 | Very High | Position as the tool that helps fiduciaires evolve to advisory |
|
||||
@@ -0,0 +1,563 @@
|
||||
---
|
||||
stepsCompleted: [1, 2, 3, 4, 5]
|
||||
inputDocuments: []
|
||||
workflowType: 'research'
|
||||
lastStep: 1
|
||||
research_type: 'domain'
|
||||
research_topic: 'Day-to-day operations and workflows of Moroccan fiduciary/accounting firms'
|
||||
research_goals: 'Understand the complete operational lifecycle of a Moroccan fiduciary firm - from client onboarding through monthly workflows, services, pricing, team structure, and pain points'
|
||||
user_name: 'Saad'
|
||||
date: '2026-03-10'
|
||||
web_research_enabled: true
|
||||
source_verification: true
|
||||
---
|
||||
|
||||
# Domain Research: Day-to-Day Operations of Moroccan Fiduciary Firms
|
||||
|
||||
## Research Summary
|
||||
|
||||
This document synthesizes findings from extensive web research (French and English sources) on how Moroccan fiduciary/accounting firms operate on a daily, monthly, and annual basis. It covers client onboarding, workflow cycles, service offerings, pricing, team structure, pain points, and communication patterns.
|
||||
|
||||
---
|
||||
|
||||
## 1. Client Onboarding
|
||||
|
||||
### When a New Client Arrives
|
||||
|
||||
**Confidence: HIGH** (well-documented across multiple sources)
|
||||
|
||||
The onboarding process varies by client type (SARL, SA, auto-entrepreneur, existing business vs. creation):
|
||||
|
||||
#### Scenario A: Company Creation (Creation d'entreprise) - SARL
|
||||
|
||||
This is one of the most common entry points. The fiduciary handles the entire creation process:
|
||||
|
||||
1. **Initial consultation** - Understand the client's business, advise on legal form (SARL, SARL AU, SA, SNC, etc.)
|
||||
2. **Certificat negatif** - Request from OMPIC (Office Marocain de la Propriete Industrielle et Commerciale) to confirm company name availability. Cost: ~230 MAD (210 MAD + 20 MAD timbre). Can be done online via DirectInfo portal.
|
||||
3. **Drafting statuts (bylaws)** - The fiduciary or a notaire drafts the articles of incorporation. Fiduciary-drafted statuts are "sous seing prive" (private deed) vs. notarized "acte notarie."
|
||||
4. **Capital deposit (blocage des fonds)** - Client deposits capital at a bank, receives attestation de blocage.
|
||||
5. **Registration at CRI (Centre Regional d'Investissement)** - The CRI serves as a guichet unique (one-stop shop), centralizing multiple formalities:
|
||||
- Enregistrement des statuts: ~200 DH
|
||||
- Inscription au Registre du Commerce: ~350 DH
|
||||
- Publication au Bulletin Officiel
|
||||
- Inscription a la patente/identifiant fiscal
|
||||
- Affiliation CNSS
|
||||
6. **ICE (Identifiant Commun de l'Entreprise)** - Obtained automatically through the process.
|
||||
|
||||
**Total cost for SARL creation**: 2,500 - 5,000 DH (fiduciary fees + administrative costs)
|
||||
**Typical fiduciary fee for creation service**: 2,450 - 10,000 DH depending on complexity and legal form
|
||||
**Timeline**: 5-10 business days when all documents are ready
|
||||
|
||||
**Documents required from client:**
|
||||
- Copy of CIN (Carte d'Identite Nationale) for each associate/partner
|
||||
- Copy of CIN for management organs (gerant)
|
||||
- Proof of registered office (contrat de bail or contrat de domiciliation)
|
||||
- Bank attestation of capital deposit
|
||||
- Evaluation report (if capital contributed in kind)
|
||||
|
||||
Sources:
|
||||
- [CRI Casablanca - 10 Steps to Create a Company](https://cri-casablanca.com/)
|
||||
- [LEC.ma - Creation societe SARL](https://www.lec.ma/en/creation-societe-maroc)
|
||||
- [Fidutraco - Creation entreprise Casablanca](https://fidutraco.com/creation-entreprise-casablanca/)
|
||||
- [EKC Consulting - Creer SARL 2025](https://ekc-consulting.ma/creer-une-sarl-au-maroc-demarches-delais-et-couts-en-2025/)
|
||||
- [AMDE - Etapes creation entreprise](https://amde.ma/les-etapes-de-la-creation-dentreprise-au-maroc/)
|
||||
|
||||
#### Scenario B: Existing Business Onboarding
|
||||
|
||||
When an existing business transfers to a new fiduciary:
|
||||
|
||||
1. **Diagnostic meeting** - Review current accounting state, fiscal situation, pending obligations
|
||||
2. **Document collection** - Prior financial statements, grand livre, balance, prior tax declarations, CNSS history, employee records
|
||||
3. **Software setup** - Enter the client's chart of accounts, opening balances
|
||||
4. **Engagement letter** - Define scope, fees, responsibilities
|
||||
|
||||
#### Scenario C: Auto-entrepreneur
|
||||
|
||||
Simpler onboarding as auto-entrepreneurs have minimal accounting obligations:
|
||||
- No bilan comptable required
|
||||
- Simple quarterly declaration of chiffre d'affaires
|
||||
- Tax rate: 0.5% for commercial/industrial/artisanal activities, 1% for services
|
||||
- Declaration done online via the registre national des auto-entrepreneurs or at Barid Al-Maghrib
|
||||
|
||||
Source: [AE.gov.ma - Fiscalite](https://ae.gov.ma/je-suis-auto-entrepreneur/fiscalite/)
|
||||
|
||||
---
|
||||
|
||||
## 2. Monthly Workflow
|
||||
|
||||
### The Monthly Cycle of a Fiduciary Firm
|
||||
|
||||
**Confidence: HIGH** (corroborated across multiple professional sources)
|
||||
|
||||
#### Phase 1: Document Collection (1st-10th of month)
|
||||
|
||||
- Collect piecces justificatives (supporting documents) from clients: invoices (achat/vente), releves bancaires, notes de frais, bons de caisse
|
||||
- This is consistently cited as the **biggest bottleneck** - clients are frequently late delivering documents
|
||||
- Documents arrive via: physical drop-off, email, sometimes WhatsApp photos of documents
|
||||
- Modern firms are beginning to offer client portals for document upload, but adoption is low
|
||||
|
||||
#### Phase 2: Saisie Comptable (Data Entry) (5th-15th of month)
|
||||
|
||||
- Enter all transactions into accounting software (Sage 50, Sage 100, JBS, EBP, or CIEL)
|
||||
- Classification by journal: journal des achats, journal des ventes, journal de banque, journal de caisse, journal des operations diverses
|
||||
- Each transaction matched with its justificatif (supporting document)
|
||||
|
||||
#### Phase 3: Rapprochement Bancaire (Bank Reconciliation) (10th-18th)
|
||||
|
||||
- Compare accounting entries in the banque journal against the actual releve bancaire from the bank
|
||||
- Identify discrepancies: missing entries, timing differences, bank charges not yet recorded
|
||||
- This is essential for ensuring accuracy of financial statements
|
||||
|
||||
#### Phase 4: Tax Declarations (15th-20th of month)
|
||||
|
||||
**TVA (VAT) Declaration:**
|
||||
- Monthly regime: mandatory for companies with CA >= 1,000,000 DH/year. Due before the 20th of the following month.
|
||||
- Quarterly regime: for companies with CA < 1,000,000 DH. Due before the 20th of the month following each quarter.
|
||||
- Filed electronically via SIMPL-TVA portal (tele-declaration is mandatory for all non-forfaitaire businesses)
|
||||
|
||||
**CNSS Declaration (DMS - Declaration Mensuelle des Salaires):**
|
||||
- Monthly declaration of salaries and social contributions
|
||||
- Due by the 10th of the following month
|
||||
- Filed via Damancom platform
|
||||
- Two methods: manual form entry (PME/PMI) or file upload (large companies)
|
||||
- Payment via BPC (Bordereau de Paiement des Cotisations) - bank transfer order
|
||||
|
||||
**IS (Impot sur les Societes) Acomptes:**
|
||||
- 4 quarterly installments based on prior year's tax
|
||||
- Due dates: end of March, June, September, December
|
||||
|
||||
**IR (Impot sur le Revenu):**
|
||||
- Monthly withholding on salaries
|
||||
- Annual declaration
|
||||
|
||||
Sources:
|
||||
- [INDICAC - Periodicite TVA Maroc](https://www.indicac.ma/articles/periodicit%C3%A9-tva-maroc)
|
||||
- [CNSS.ma - Declaration et paiement](https://cnss.ma/fr/content/declaration-et-paiement-des-cotisations)
|
||||
- [EKC Consulting - Paie et declarations sociales 2025](https://ekc-consulting.ma/paie-et-declarations-sociales-au-maroc-vos-obligations-en-2025/)
|
||||
- [Maroc Paie - Declaration CNSS](https://maroc.paie.org/la-declaration-a-la-caisse-nationale-de-securite-sociale-cnss/)
|
||||
- [CDAC - Agenda Fiscal](https://cdac.ma/agenda-fiscal/)
|
||||
|
||||
#### Phase 5: Paie / Payroll (20th-end of month)
|
||||
|
||||
- Calculate salaries, deductions (CNSS, CIMR, AMO, IR)
|
||||
- Produce bulletins de paie (pay slips)
|
||||
- Prepare CNSS declarations
|
||||
- Prepare IR salarial withholding
|
||||
|
||||
#### Ongoing: Client Support and Conseil
|
||||
|
||||
- Answer client questions on fiscal matters
|
||||
- Advise on cash management, structuring
|
||||
- Handle ad hoc requests (attestations, letters, etc.)
|
||||
|
||||
### Annual Cycle (Key Deadlines)
|
||||
|
||||
| Period | Task |
|
||||
|--------|------|
|
||||
| Jan-Mar | Preparation of bilan (annual financial statements) for Dec 31 fiscal year close |
|
||||
| Before March 31 | IS annual declaration (within 3 months of fiscal year close) |
|
||||
| Before March 31 | Liasse fiscale (tax package) submission |
|
||||
| Before June 30 | AGO (Assemblee Generale Ordinaire) must approve accounts (within 6 months of close) |
|
||||
| Quarterly | IS acomptes provisionnels |
|
||||
| Monthly | TVA, CNSS, payroll |
|
||||
|
||||
---
|
||||
|
||||
## 3. Client Types
|
||||
|
||||
**Confidence: HIGH**
|
||||
|
||||
### Breakdown of Business Types Served
|
||||
|
||||
| Legal Form | Description | Accounting Complexity | Typical Monthly Fee Range |
|
||||
|------------|-------------|----------------------|--------------------------|
|
||||
| **SARL** (Societe a Responsabilite Limitee) | Most common form. 1+ associates, min capital 1 DH (since reforms). | Medium | 1,500 - 5,000 DH |
|
||||
| **SARL AU** (Associe Unique) | Single-person SARL. Very popular for solo entrepreneurs. | Medium | 1,000 - 3,000 DH |
|
||||
| **SA** (Societe Anonyme) | For larger companies. Min capital 300,000 DH (3M for public offering). Requires commissaire aux comptes. | High | 5,000 - 15,000+ DH |
|
||||
| **SNC** (Societe en Nom Collectif) | Partnership. Partners have unlimited liability. | Medium | 1,500 - 4,000 DH |
|
||||
| **Auto-entrepreneur** | Simplified regime. CA cap: 500,000 DH (commercial) / 200,000 DH (services). | Low | 500 - 1,500 DH |
|
||||
| **SCI** (Societe Civile Immobiliere) | Real estate holding company. | Low-Medium | 1,000 - 3,000 DH |
|
||||
| **Association** | Non-profit. Specific accounting rules. | Low-Medium | 1,000 - 3,000 DH |
|
||||
| **Profession liberale** | Doctors, lawyers, architects, etc. | Medium | 1,500 - 4,000 DH |
|
||||
|
||||
**Note on fee ranges**: These are estimated market ranges compiled from multiple sources. Actual fees vary significantly by city (Casablanca is most expensive), volume of transactions, number of employees, and complexity.
|
||||
|
||||
Sources:
|
||||
- [LEC.ma - Honoraires expert-comptable Casablanca](https://www.lec.ma/en/honoraires-expert-comptable-casablanca)
|
||||
- [AFC Conseil - Honoraires](https://www.afc-conseil.ma/honoraires)
|
||||
- [4Gestion Academy - Fiduciaire au Maroc](https://4gestionacademy.com/fiduciaire-au-maroc/)
|
||||
|
||||
---
|
||||
|
||||
## 4. Services Offered
|
||||
|
||||
**Confidence: HIGH**
|
||||
|
||||
### Core Services (Recurring/Monthly)
|
||||
|
||||
1. **Tenue de comptabilite** (Bookkeeping)
|
||||
- Saisie comptable (data entry)
|
||||
- Classement des documents par journal
|
||||
- Rapprochement bancaire
|
||||
- Etablissement du grand livre et balance
|
||||
|
||||
2. **Declarations fiscales** (Tax Filings)
|
||||
- TVA (monthly or quarterly)
|
||||
- IS (annual + quarterly acomptes)
|
||||
- IR (annual + monthly withholding)
|
||||
- Cotisation minimale
|
||||
- Taxe professionnelle
|
||||
|
||||
3. **Paie et declarations sociales** (Payroll)
|
||||
- Bulletins de paie
|
||||
- CNSS declarations (Damancom)
|
||||
- CIMR (complementary retirement) declarations
|
||||
- AMO (Assurance Maladie Obligatoire)
|
||||
- IR salarial withholding
|
||||
|
||||
4. **Etablissement du bilan** (Annual Financial Statements)
|
||||
- Bilan, CPC (Compte de Produits et Charges), ESG, Tableau de Financement
|
||||
- Liasse fiscale
|
||||
- Notes annexes
|
||||
|
||||
### Periodic/Annual Services
|
||||
|
||||
5. **Juridique annuel** (Annual Legal Work)
|
||||
- Preparation of AGO (Assemblee Generale Ordinaire)
|
||||
- Drafting PV (Proces-Verbal) of AGO
|
||||
- Approbation des comptes
|
||||
- Affectation du resultat
|
||||
- Depot au tribunal de commerce
|
||||
- Must be done within 6 months of fiscal year close
|
||||
|
||||
6. **Commissariat aux comptes** (Statutory Audit)
|
||||
- Mandatory for all SA companies
|
||||
- Mandatory for any company with CA > 50 million DH
|
||||
- Mandatory when bylaws require it or 10% of partners request it
|
||||
- 3-year renewable mandate
|
||||
- OEC minimum hourly rate: 500 DH HT
|
||||
- Only expert-comptable members of OEC can perform this
|
||||
|
||||
### One-Time / Project Services
|
||||
|
||||
7. **Creation d'entreprise** (Company Formation)
|
||||
- Full service from name search to RC inscription
|
||||
- Pricing: 2,450 - 10,000 DH depending on legal form
|
||||
|
||||
8. **Modification statutaire** (Corporate Changes)
|
||||
- Change of gerant, transfer of parts sociales
|
||||
- Capital increase/decrease
|
||||
- Change of registered office
|
||||
- Change of business activity
|
||||
|
||||
9. **Conseil fiscal** (Tax Advisory)
|
||||
- Tax optimization strategies
|
||||
- Regime selection (IR vs IS option)
|
||||
- Assistance during controle fiscal (tax audit): 800 - 2,000 DH/hour
|
||||
|
||||
10. **Montage de dossier de financement** (Financing Dossier)
|
||||
- Business plans for bank loans
|
||||
- Fee: 2-5% of amount obtained
|
||||
|
||||
11. **Audit d'acquisition** (Due Diligence)
|
||||
- Fee: 10,000 - 50,000 DH depending on target size
|
||||
|
||||
12. **Domiciliation** (Registered Office Services)
|
||||
- Some fiduciary firms offer their address as the company's siege social
|
||||
- Often bundled with creation packages
|
||||
|
||||
Sources:
|
||||
- [LEC.ma - Honoraires](https://www.lec.ma/en/honoraires-expert-comptable-casablanca)
|
||||
- [Lembra Conseil - Honoraires expert-comptable](https://lembra-conseil.com/honoraires-dun-expert-comptable-a-casablanca-combien-coute-une-prestation/)
|
||||
- [Jura.ma - Commissaire aux comptes obligatoire](https://jura.ma/quand-le-commissaire-aux-comptes-est-obligatoire-au-maroc/)
|
||||
- [Upsilon Consulting - Commissariat aux comptes](https://www.upsilon-consulting.com/commissariat-aux-comptes-au-maroc/)
|
||||
- [NSE-MA - Approbation des comptes SARL](https://www.nse-ma.com/fr/approbation-des-comptes-annuels-dune-sarl-au-maroc/)
|
||||
|
||||
---
|
||||
|
||||
## 5. Fee Structures
|
||||
|
||||
**Confidence: MEDIUM-HIGH** (specific numbers are harder to verify; ranges are estimated from multiple sources and may vary significantly)
|
||||
|
||||
### Pricing Models
|
||||
|
||||
Three main models used by Moroccan fiduciary firms:
|
||||
|
||||
1. **Forfait mensuel** (Monthly flat fee) - Most common for ongoing accounting. Fixed amount per month covering standard services.
|
||||
2. **Temps passe** (Time-based) - Hourly billing, more common for advisory/project work.
|
||||
3. **Abonnement annuel** (Annual subscription) - Flat annual fee, sometimes with quarterly payments.
|
||||
|
||||
### Estimated Monthly Accounting Fees (Tenue de Comptabilite)
|
||||
|
||||
| Client Type | Monthly Fee Range | What's Typically Included |
|
||||
|-------------|-------------------|--------------------------|
|
||||
| Auto-entrepreneur | 500 - 1,500 DH | Basic declarations, quarterly CA declaration |
|
||||
| SARL AU (no employees, low volume) | 1,000 - 2,000 DH | Saisie comptable, TVA, basic declarations |
|
||||
| SARL (small, 1-5 employees) | 1,500 - 3,500 DH | Comptabilite, TVA, paie, CNSS |
|
||||
| SARL (medium, 5-20 employees) | 3,000 - 6,000 DH | Full service including paie, fiscal, conseil |
|
||||
| SA / Large companies | 5,000 - 15,000+ DH | Comprehensive service, reporting, conseil |
|
||||
| Profession liberale | 1,500 - 4,000 DH | Comptabilite, declarations, conseil fiscal |
|
||||
|
||||
### One-Time Service Fees
|
||||
|
||||
| Service | Fee Range |
|
||||
|---------|-----------|
|
||||
| Creation SARL | 2,450 - 5,000 DH |
|
||||
| Creation SA | 5,000 - 10,000 DH |
|
||||
| Bilan annuel (if not in forfait) | 3,000 - 8,000 DH |
|
||||
| Juridique annuel (AGO, PV) | 1,500 - 4,000 DH |
|
||||
| Controle fiscal assistance | 800 - 2,000 DH/hour |
|
||||
| Montage dossier financement | 2-5% of amount obtained |
|
||||
| Audit d'acquisition | 10,000 - 50,000 DH |
|
||||
|
||||
### OEC Official Minimum Rate
|
||||
|
||||
The Ordre des Experts-Comptables has set a minimum average hourly rate of **500 DH HT** for audit missions (commissariat aux comptes), in effect since January 2020. The expert-comptable signataire must personally perform at least 10-15% of the budget-temps.
|
||||
|
||||
Sources:
|
||||
- [EcoActu - Taux moyen horaire minimum 500 DH](https://ecoactu.ma/experts-comptables-le-taux-moyen-horaire-minimum-fixe-a-500-dh-ht/)
|
||||
- [OEC Casablanca - Norme Budget-Temps](https://www.oec-casablanca.ma/img/uploads/NORME_BUDGET_TEMPS_HONORAIRE.pdf)
|
||||
- [LEC.ma - Honoraires expert-comptable](https://www.lec.ma/en/honoraires-expert-comptable-casablanca)
|
||||
- [AFC Conseil - Honoraires](https://www.afc-conseil.ma/honoraires)
|
||||
- [Centre Chorfi - Tarifs & Packs](https://centre-chorfi.ma/tarifs-packs/)
|
||||
|
||||
---
|
||||
|
||||
## 6. Pain Points and Operational Challenges
|
||||
|
||||
**Confidence: HIGH** (consistently reported across industry sources)
|
||||
|
||||
### 1. Client Document Collection (Top Pain Point)
|
||||
|
||||
- Clients are **chronically late** delivering supporting documents (factures, releves bancaires, bons de caisse)
|
||||
- Documents often arrive as **disorganized physical papers** or blurry WhatsApp photos
|
||||
- Missing documents create cascading delays in saisie comptable and declarations
|
||||
- Fiduciary staff spend significant time **chasing clients** for documents
|
||||
- Some clients deliver all documents at year-end in bulk, making the bilan period extremely stressful
|
||||
|
||||
### 2. Tight Regulatory Deadlines
|
||||
|
||||
- TVA due by the 20th monthly; CNSS by the 10th; IS acomptes quarterly
|
||||
- Missing deadlines results in **penalties and majoration** for the client, which damages the fiduciary's reputation
|
||||
- Multiple clients with different deadlines create a constant crunch
|
||||
|
||||
### 3. Price Pressure and Competition
|
||||
|
||||
- Large number of unregulated fiduciary firms creates intense price competition
|
||||
- Important distinction: "fiduciaire" is NOT a regulated term in Morocco (anyone can open one), while "expert-comptable" requires OEC membership
|
||||
- Race to the bottom on fees, especially for small SARL and auto-entrepreneur clients
|
||||
- Clients often switch firms for marginal price differences
|
||||
|
||||
### 4. Digitalization Gaps
|
||||
|
||||
- 83% of experts-comptables say digitalization forces them to invest quickly in new solutions
|
||||
- Many smaller fiduciary firms still rely on **paper-based workflows** and manual data entry
|
||||
- Tele-declaration (SIMPL-TVA, Damancom) is now mandatory, but internal processes remain manual
|
||||
- Client resistance to digital tools (portals, online document sharing)
|
||||
- Data security concerns when moving to cloud-based solutions
|
||||
|
||||
### 5. Unreliable Financial Information from Clients
|
||||
|
||||
- Many Moroccan companies provide **understated financial statements** and minimize reported revenue/profit
|
||||
- This creates legal and ethical risks for the fiduciary
|
||||
- DSO (Days Sales Outstanding) in Morocco averages 90-120 days, meaning clients also pay the fiduciary late
|
||||
|
||||
### 6. Seasonal Workload Imbalance
|
||||
|
||||
- Extreme concentration of work during bilan season (Jan-Mar for Dec 31 closings)
|
||||
- AGO season (Jan-Jun) adds juridique annuel work
|
||||
- Staff burnout is common during peak periods
|
||||
- Difficult to maintain quality across all client dossiers simultaneously
|
||||
|
||||
### 7. Staff Recruitment and Retention
|
||||
|
||||
- Shortage of qualified collaborateurs comptables
|
||||
- Junior staff require significant training
|
||||
- High turnover when collaborateurs gain experience and either join industry or open their own fiduciary
|
||||
|
||||
### 8. Software Fragmentation
|
||||
|
||||
- Different software for comptabilite (Sage, JBS, EBP, CIEL), paie, fiscal declarations
|
||||
- No single integrated platform for all fiduciary workflows
|
||||
- Manual re-entry between systems
|
||||
- Government portals (SIMPL, Damancom) not integrated with accounting software
|
||||
|
||||
Sources:
|
||||
- [Revue ISG - Digitalisation experts-comptables](https://revue-isg.com/index.php/home/article/download/1240/1008/4351)
|
||||
- [Allianz Trade - Morocco Collection Complexity](https://www.allianz-trade.com/en_global/economic-research/collection-complexity/morocco.html)
|
||||
- [4Gestion Academy - Fiduciaire au Maroc](https://4gestionacademy.com/fiduciaire-au-maroc/)
|
||||
|
||||
---
|
||||
|
||||
## 7. Staff Roles and Team Structure
|
||||
|
||||
**Confidence: MEDIUM-HIGH** (based on French/Moroccan accounting profession standards; specific to Morocco staffing ratios are estimated)
|
||||
|
||||
### Typical Team Structure
|
||||
|
||||
#### Small Fiduciary (< 10 staff, majority of firms)
|
||||
|
||||
| Role | Count | Responsibilities |
|
||||
|------|-------|-----------------|
|
||||
| **Expert-Comptable / Gerant** | 1 | Firm owner. Signs reports, reviews bilans, handles key client relationships, strategic decisions. OEC member. |
|
||||
| **Chef de Mission** | 1-2 | Manages a portfolio of clients. Supervises collaborateurs. Reviews work quality. Intermediate between expert-comptable and team. |
|
||||
| **Collaborateur Comptable** | 3-5 | Handles day-to-day saisie comptable, rapprochement bancaire, preparation of declarations. Each manages a portfolio of 30-80 client dossiers. |
|
||||
| **Assistant Comptable** | 1-2 | Junior role. Data entry, document classification, filing. Learning the trade. |
|
||||
| **Secretaire / Accueil** | 1 | Client reception, phone, document intake, administrative tasks. |
|
||||
|
||||
#### Medium Cabinet (10-50 staff)
|
||||
|
||||
Adds:
|
||||
- **Responsable Paie** - Dedicated payroll specialist
|
||||
- **Responsable Juridique** - Handles corporate legal work (AGO, modifications statutaires)
|
||||
- **Responsable Fiscal** - Tax specialist
|
||||
- **Auditeurs** - For commissariat aux comptes missions
|
||||
- Multiple chefs de mission, each with their team
|
||||
|
||||
#### Large Cabinet (50+ staff, Big 4 affiliates)
|
||||
|
||||
Full departmental structure with audit, tax, advisory, and accounting divisions.
|
||||
|
||||
### Salary Ranges (Monthly, Gross)
|
||||
|
||||
**Confidence: MEDIUM** (salaries vary significantly by city, firm size, and experience)
|
||||
|
||||
| Role | Monthly Salary Range |
|
||||
|------|---------------------|
|
||||
| Expert-Comptable (salaried, senior) | 20,000 - 25,000+ DH |
|
||||
| Expert-Comptable (junior/early career) | 8,000 - 12,000 DH |
|
||||
| Chef de Mission | 8,000 - 15,000 DH |
|
||||
| Collaborateur Comptable (experienced) | 5,000 - 8,000 DH |
|
||||
| Collaborateur Comptable (junior) | 3,500 - 5,000 DH |
|
||||
| Assistant Comptable | 3,000 - 4,500 DH |
|
||||
| Comptable (general average per Glassdoor) | ~6,238 DH |
|
||||
|
||||
Sources:
|
||||
- [Glassdoor - Salaire Comptable Maroc](https://www.glassdoor.fr/Salaires/maroc-comptable-salaire-SRCH_IL.0,5_IN162_KO6,15.htm)
|
||||
- [Efficience - Salaire Expert-Comptable Maroc](https://efficienceexpertise.com/en/salary-of-an-accountant-in-morocco/)
|
||||
- [Guide-Metiers.ma - Expert Comptable](https://www.guide-metiers.ma/metier/expert-comptable/)
|
||||
- [IGEFI - Chef de Mission](https://www.igefi.net/fiches-metiers/chef-de-mission-comptable)
|
||||
- [Actual Talent - Chef de Mission](https://www.actual-talent.com/ressources/fiches-metiers/chef-mission-comptable)
|
||||
|
||||
---
|
||||
|
||||
## 8. Client Communication Patterns
|
||||
|
||||
**Confidence: MEDIUM** (limited direct data; inferred from firm websites, industry practice, and general Morocco business culture)
|
||||
|
||||
### Communication Channels (in order of prevalence)
|
||||
|
||||
1. **Phone calls** - Still the dominant channel. Clients call for questions, status updates, urgent matters.
|
||||
2. **WhatsApp** - Extremely prevalent in Morocco for business communication. Used to send photos of documents, quick questions, reminders. Often the de facto communication tool between collaborateur and client.
|
||||
3. **In-person visits** - Clients physically drop off documents at the fiduciary office. Common for small businesses. Some fiduciary firms send couriers or have clients drop off document envelopes monthly.
|
||||
4. **Email** - Used for more formal communications, sending bilans, declarations, formal correspondence. Less used by small/informal clients.
|
||||
5. **Client portals** - Emerging but low adoption. Modern firms like FITACOM, ComptaCom, and others offer online portals for document exchange and access to accounting data. Most clients prefer WhatsApp/phone over portals.
|
||||
|
||||
### Communication Frequency
|
||||
|
||||
| Client Type | Typical Frequency |
|
||||
|-------------|-------------------|
|
||||
| Active SARL/SA (with employees) | Weekly to bi-weekly contact |
|
||||
| Small SARL AU (solo, low activity) | Monthly, mainly around declarations |
|
||||
| Auto-entrepreneur | Quarterly (around CA declaration) |
|
||||
| During bilan season | Daily contact with active clients |
|
||||
| During creation | Daily until process complete |
|
||||
|
||||
### Key Communication Pain Points
|
||||
|
||||
1. **Responsiveness gap** - Clients expect instant answers (especially via WhatsApp) but fiduciary staff are managing 30-80 dossiers simultaneously
|
||||
2. **Informal communication** - Critical information shared via WhatsApp voice notes or casual phone calls, not documented
|
||||
3. **Document quality** - Photos of receipts sent via WhatsApp are often blurry, cropped, or illegible
|
||||
4. **Lack of paper trail** - Verbal instructions without written confirmation lead to disputes
|
||||
5. **Client financial literacy** - Many small business owners don't understand fiscal obligations, requiring repeated explanation
|
||||
6. **Language mix** - Communication happens in a mix of Darija (Moroccan Arabic), French, and occasionally Standard Arabic, making standardized documentation challenging
|
||||
|
||||
Sources:
|
||||
- [FITACOM](https://fitacom.ma/)
|
||||
- [ComptaCom Maroc](https://comptacom.ma/)
|
||||
- [4Gestion Academy - Fiduciaire au Maroc](https://4gestionacademy.com/fiduciaire-au-maroc/)
|
||||
|
||||
---
|
||||
|
||||
## 9. Software and Tools Landscape
|
||||
|
||||
**Confidence: HIGH**
|
||||
|
||||
### Accounting Software Used in Morocco
|
||||
|
||||
| Software | Market Position | Notes |
|
||||
|----------|----------------|-------|
|
||||
| **Sage 100 Comptabilite** | Market leader for PME | Most widely used by Moroccan SMEs and fiduciary firms |
|
||||
| **Sage 50 (ex-CIEL)** | Popular for small firms | 100% compliant with Moroccan law |
|
||||
| **JBS** | Strong local player | Moroccan-developed. Includes comptabilite generale, liasse fiscale, gestion des immobilisations, TVA declaration, teledeclarations |
|
||||
| **EBP** | Growing presence | Edition Maroc available with bank reconciliation features |
|
||||
| **Excel** | Still widely used | Many small fiduciary firms supplement or even rely primarily on spreadsheets |
|
||||
|
||||
### Government Platforms (Mandatory)
|
||||
|
||||
| Platform | Purpose |
|
||||
|----------|---------|
|
||||
| **SIMPL (Systeme Integre de la Taxation)** | TVA tele-declaration, IS, IR filing |
|
||||
| **Damancom** | CNSS salary declarations and contribution payments |
|
||||
| **DirectInfo (OMPIC)** | Certificat negatif requests, company name searches |
|
||||
| **CRI portals** | Company creation registration |
|
||||
|
||||
Sources:
|
||||
- [Sage Maroc](https://www.sage.com/en-us/)
|
||||
- [Ciel Informatique Maroc](https://www.cielmaroc.ma/)
|
||||
- [JBS Logiciels](http://www.jbs.ma/presentation.html)
|
||||
- [EBP Support Maroc](https://support-ma.ebp.com/)
|
||||
|
||||
---
|
||||
|
||||
## 10. Regulatory Context
|
||||
|
||||
**Confidence: HIGH**
|
||||
|
||||
### Key Distinction: Expert-Comptable vs. Fiduciaire
|
||||
|
||||
- **Expert-Comptable**: Regulated profession. Requires state diploma (5 years study + 3 years professional internship), membership in the OEC (Ordre des Experts-Comptables). Has monopoly on audit/commissariat aux comptes services.
|
||||
- **Comptable agree**: Certified accountant, less regulated than expert-comptable.
|
||||
- **Fiduciaire**: NOT a regulated term. Any entity can call itself a fiduciaire. This creates a broad spectrum of quality in the market.
|
||||
|
||||
### Key Laws
|
||||
|
||||
- **Law 17-95**: Regulates Societes Anonymes (SA), including commissariat aux comptes
|
||||
- **Law 5-96**: Regulates SARL, SNC, and other commercial companies
|
||||
- **Code General des Impots**: Governs all tax obligations (IS, IR, TVA)
|
||||
- **Code du Travail**: Governs employment law, relevant to payroll services
|
||||
|
||||
### Tele-declaration Mandate
|
||||
|
||||
All businesses (except forfaitaires) must file declarations and make payments electronically. This has been a major driver of modernization in fiduciary firms.
|
||||
|
||||
Sources:
|
||||
- [OEC Maroc](https://oec.ma/)
|
||||
- [Synergieexperts - Accounting Casablanca](https://synergieexperts.com/en/accounting-casablanca/)
|
||||
- [Finances.gov.ma - Vos impots en bref](https://www.finances.gov.ma/fr/vous-orientez/Pages/vos-impots-en-bref.aspx)
|
||||
|
||||
---
|
||||
|
||||
## Key Takeaways for Product Development
|
||||
|
||||
Based on this research, the critical workflows and pain points that a software product for Moroccan fiduciary firms should address:
|
||||
|
||||
1. **Document collection automation** - The single biggest operational pain point. A system that streamlines client document submission (mobile-friendly, WhatsApp integration potential) would have immediate value.
|
||||
|
||||
2. **Deadline management** - Multiple overlapping deadlines (TVA by 20th, CNSS by 10th, IS quarterly, AGO within 6 months) across dozens of clients. Calendar/alert system is essential.
|
||||
|
||||
3. **Client portfolio management** - Each collaborateur manages 30-80 dossiers. Need dashboard view of all clients' status (documents received, declarations filed, payments pending).
|
||||
|
||||
4. **Multi-entity workflows** - Must handle SARL, SA, SNC, auto-entrepreneur, associations with their different obligations and declaration cycles.
|
||||
|
||||
5. **Integration with government platforms** - SIMPL-TVA, Damancom, OMPIC DirectInfo. Even if direct API integration isn't possible, workflow guidance and data preparation for these portals adds value.
|
||||
|
||||
6. **Paie module** - Payroll with CNSS/CIMR/AMO calculations, bulletin de paie generation, and Damancom export is a high-value feature.
|
||||
|
||||
7. **Juridique annuel tracking** - AGO preparation, PV generation, tracking of 6-month deadline for each client.
|
||||
|
||||
8. **Bilingual support** - French is the language of accounting in Morocco, but client communication often happens in Darija/Arabic.
|
||||
|
||||
9. **Mobile accessibility** - Given WhatsApp prevalence, a mobile-first approach for client-facing features would match existing behavior patterns.
|
||||
|
||||
10. **Pricing model alignment** - Software should support the forfait mensuel model that most fiduciary firms use, with ability to track one-time services separately.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,345 @@
|
||||
# Moroccan Fiduciary Ecosystem: Partners & Integrations Research
|
||||
**Date:** 2026-03-10
|
||||
|
||||
---
|
||||
|
||||
## 1. Banking Ecosystem Partners
|
||||
|
||||
### Major Banks Fiduciaries Interact With
|
||||
|
||||
| Bank | Role in Fiduciary Ecosystem | Notes |
|
||||
|------|---------------------------|-------|
|
||||
| **Attijariwafa Bank** | Largest bank in Morocco (~$67B assets). Primary banking partner for many enterprises. DGI SIMPL payment partner. | Most fiduciaries manage client accounts here |
|
||||
| **Banque Centrale Populaire (BCP)** | Second largest. DGI SIMPL partner. Strong SME network. | Regional presence via Banques Populaires Regionales |
|
||||
| **Bank of Africa (ex-BMCE)** | Third largest. DGI SIMPL partner. Advanced in digital innovation. | International focus, Africa-wide operations |
|
||||
| **CIH Bank** | Fast-growing (+7.9% annually). DGI SIMPL partner. Most advanced in digital innovation. | Originally housing-focused, now fully universal bank |
|
||||
| **Credit du Maroc** | Growing at +10.3% annually. DGI SIMPL partner. | Subsidiary of Credit Agricole France |
|
||||
| **Societe Generale Maroc** | DGI SIMPL partner. Strong corporate banking. | French parent provides int'l capabilities |
|
||||
| **Credit Agricole du Maroc** | DGI SIMPL partner. Agricultural sector focus. | Key for rural enterprises |
|
||||
| **Al Barid Bank** | DGI SIMPL/Fawatir payment partner. Financial inclusion. | Postal bank, widest physical network |
|
||||
|
||||
### Integration Points
|
||||
|
||||
1. **DGI SIMPL Tax Payments**: All major banks are connected to the DGI's SIMPL system for telepayment of IS, IR, and TVA. Fiduciaries file declarations via SIMPL and payments are debited from client bank accounts via banking authorization (form ADC940F/15I).
|
||||
2. **Banking Authorization Forms**: To connect a company to SIMPL telepayment, fiduciaries must obtain form ADC920F/15I (adhesion to e-declaration/e-payment), ADC930F/15I (user creation), and ADC940F/15I (banking authorization -- 2 originals required).
|
||||
3. **Account Opening**: Fiduciaries guide clients through account opening during company creation. Bank certificates are required for RC registration.
|
||||
4. **Fawatir Operator**: Payment processing for tax obligations handled via the Fawatir network connected to banks.
|
||||
|
||||
**Sources:**
|
||||
- [Les meilleures banques au Maroc](https://blog.fid-ec.com/2026/02/les-meilleures-banques-au-maroc-va.html)
|
||||
- [SIMPL TVA Portal](https://mihfada.com/blog/simpl-tva/)
|
||||
- [DGI SIMPL Portal](https://www.tax.gov.ma/wps/portal/DGI/Accueil)
|
||||
- [Teledeclaration Fiscale Maroc](https://teledeclaration-maroc.blogspot.com/)
|
||||
- [DGI Transformation Digitale - NSE](https://www.nse-ma.com/fr/transformation-digitale-de-la-dgi/)
|
||||
|
||||
---
|
||||
|
||||
## 2. Insurance & Pension Ecosystem
|
||||
|
||||
### CNSS (Caisse Nationale de Securite Sociale)
|
||||
|
||||
- **Role**: Mandatory social security. Fiduciaries handle CNSS declarations for all client employees.
|
||||
- **Platform**: **DAMANCOM** -- online portal for salary e-filing (teledeclaration des salaires).
|
||||
- **Integration**: EDI mode allows payroll software to generate formatted files for DAMANCOM. The process involves 5 phases: personnel file audit, reconciliation, preliminary data generation, revision/validation, and file production.
|
||||
- **Delegation**: Companies can formally delegate DAMANCOM account management to a third-party declarant (fiduciary, accountant).
|
||||
- **Mandatory for**: Companies with 50+ employees must use e-filing. Smaller companies may still file manually.
|
||||
|
||||
### CIMR (Caisse Interprofessionnelle Marocaine de Retraite)
|
||||
|
||||
- **Role**: Complementary (optional) retirement fund. Many employers subscribe for employee retention.
|
||||
- **Platform**: CIMR teledeclaration portal at cimr.ma.
|
||||
- **Integration**: Payroll software (e.g., OJRA) includes a CIMR e-filing module with automatic file generation from calculated payroll.
|
||||
|
||||
### Social Contribution Rates (2025)
|
||||
|
||||
| Contribution | Employer Rate | Employee Rate |
|
||||
|-------------|--------------|---------------|
|
||||
| CNSS (base) | 8.98% | 4.48% |
|
||||
| AMO (health) | 4.11% | 2.26% |
|
||||
| CIMR (optional) | Variable (3-6%) | Variable (3-6%) |
|
||||
|
||||
### Insurance Providers Fiduciaries Work With
|
||||
|
||||
| Insurer | Connection to Fiduciaries |
|
||||
|---------|--------------------------|
|
||||
| **Wafa Assurance** (Attijariwafa group) | Largest insurer. RC Pro, health insurance for client employees |
|
||||
| **RMA** (Finance.com group) | Major insurer. Professional liability, group health plans |
|
||||
| **CNIA Saada** (Saham group) | Auto, professional, health insurance products for SMEs |
|
||||
| **Allianz Maroc** | International insurer. Group insurance products |
|
||||
| **AXA Assurance Maroc** | Multi-line insurer. Common partner for enterprise insurance |
|
||||
|
||||
Fiduciaries interact with insurers by: managing insurance expense accounting, advising on mandatory insurance (RC Pro, accident du travail), processing claims documentation, and sometimes acting as intermediaries for group insurance plans.
|
||||
|
||||
**Sources:**
|
||||
- [Charges Sociales Maroc 2025 Guide](https://comptable-tanger.com/blog/charges-sociales-maroc-2025-cnss-cimr-guide)
|
||||
- [CNSS Maroc 2026](https://mafactu.com/cnss/)
|
||||
- [DAMANCOM Teledeclaration CNSS - NSE](https://www.nse-ma.com/fr/damancom-teledeclaration-cnss-ebds/)
|
||||
- [CIMR Teledeclaration](https://www.cimr.ma/univers-entreprise/enterprise-adherente/teledeclaration/)
|
||||
- [CNSS Delegation to Third Party](https://www.cnss.ma/fr/content/comment-d%C3%A9l%C3%A9guer-la-gestion-de-mon-compte-damancom-%C3%A0-un-tiers-d%C3%A9clarant)
|
||||
- [Fiduciaire Talbi - DAMANCOM](https://fidutalbi.ma/damancom-cnss/)
|
||||
|
||||
---
|
||||
|
||||
## 3. Legal & Administrative Entities
|
||||
|
||||
### OMPIC (Office Marocain de la Propriete Industrielle et Commerciale)
|
||||
|
||||
- **Role**: Manages the Central Commercial Register (RCC), business name reservations (certificat negatif), and trademark registration.
|
||||
- **Platform**: **DirectEntreprise** (directentreprise.ma) -- unified electronic business creation platform.
|
||||
- **Key milestone**: Generalized nationwide in March 2025. Over 12,000 companies created electronically, 2,400+ professionals registered.
|
||||
- **Professional access**: Pilot launched February 2023 in Rabat for notaries, lawyers, chartered accountants, and certified accountants. Extended to major cities in 2024, then nationwide.
|
||||
- **Legal framework**: Laws 87.17, 88.17, and 89.17 enable electronic company creation.
|
||||
- **Services**: The platform acts as a single interface for OMPIC, Ministry of Justice (courts/RC), Official Printing Office, DGI, and CNSS.
|
||||
|
||||
### CRI (Centre Regional d'Investissement)
|
||||
|
||||
- **Role**: Regional investment centers that serve as a one-stop shop for business creation. Represent OMPIC locally for obtaining certificats negatifs.
|
||||
- **Interaction**: Fiduciaries accompany clients to CRI for company formation, modification, and dissolution procedures. CRI coordinates between multiple administrations.
|
||||
|
||||
### Notaires
|
||||
|
||||
- **Role**: Draft company statutes as notarial acts (required for SA and some SAS forms). Handle property transactions, capital contributions in kind.
|
||||
- **Interaction**: Fiduciaries and notaires work in tandem -- fiduciaries handle accounting/tax, notaires handle legal formalities. Both are registered on the OMPIC DirectEntreprise platform.
|
||||
- **Digital**: Notaires now registered on OMPIC electronic platform for online company creation.
|
||||
|
||||
### Tribunaux de Commerce (Commercial Courts)
|
||||
|
||||
- **Role**: Maintain local commercial registers (registre de commerce local). Handle RC inscriptions, modifications, radiations.
|
||||
- **Platform**: servicesenligne.justice.gov.ma for online registry services.
|
||||
- **Integration with OMPIC**: Local registers feed into the Central Register managed by OMPIC.
|
||||
- **Fiduciary interaction**: Filing annual accounts, modifications to statutes, registering new establishments.
|
||||
- **DirectInfo** (directinfo.ma): Public access to company information from the commercial register.
|
||||
|
||||
### DGI (Direction Generale des Impots)
|
||||
|
||||
- **Platform**: SIMPL (Systeme Informatise de Liaison avec les Professions)
|
||||
- SIMPL-IS: Corporate tax declarations
|
||||
- SIMPL-IR: Income tax declarations
|
||||
- SIMPL-TVA: VAT declarations
|
||||
- Etat 9421: Annual salary declarations
|
||||
- **Tools**: eSimplx by third parties enables EDI XML file generation for SIMPL compliance.
|
||||
- **Proxy system**: Fiduciaries can be designated as official proxies to handle all tax filings.
|
||||
|
||||
**Sources:**
|
||||
- [OMPIC Electronic Platform Generalization](http://www.ompic.ma/fr/actualites/ompic-generalisation-de-la-plateforme-de-creation-dentreprises-par-voie-electronique-sur)
|
||||
- [Medias24 - Platform Generalized](https://medias24.com/2025/03/14/la-plateforme-de-creation-dentreprises-en-ligne-enfin-generalisee/)
|
||||
- [OMPIC - Creation et Vie de l'Entreprise](http://www.ompic.ma/fr/content/creation-et-vie-de-lentreprise)
|
||||
- [Creation d'Entreprise 2025 - Fido](https://fido.ma/fr/guide/creation-dentreprise-2025-au-maroc/)
|
||||
- [Etapes Creation Entreprise 2026 - AMDE](https://amde.ma/les-etapes-de-la-creation-dentreprise-au-maroc/)
|
||||
- [DirectInfo - OMPIC](https://www.directinfo.ma/)
|
||||
- [eSimplx Platform](http://www.esimplx.com/)
|
||||
|
||||
---
|
||||
|
||||
## 4. Technology Vendors
|
||||
|
||||
### Accounting & ERP Software
|
||||
|
||||
#### Sage Maroc
|
||||
- **Products**: Sage 50 (TPE), Sage 100 Comptabilite (PME), Sage 100 Entreprise, Sage Generation Experts Connect (for accountants).
|
||||
- **Sage Generation Experts Connect**: Dedicated platform for expert-comptables to manage client files, produce balance sheets, monitor tax/social obligations.
|
||||
- **Sage 50**: Positioned for fiduciary clients with basic/moderate management needs.
|
||||
- **Reseller network**:
|
||||
- **M2ASOFT**: Certified Sage integrator, 200+ clients, 12 years experience. Integrates Sage for accounting firms.
|
||||
- **MS.MA**: Official Sage partner for SMEs/ETIs, digitalization specialist.
|
||||
- **CR&SG (Casablanca)**: Sage reseller offering modular accounting solutions.
|
||||
- **Omegasoft**: Sage products distributor.
|
||||
- **Partner search**: sage.com/fr-ma/trouvez-un-partenaire-sage/
|
||||
|
||||
#### JBS Informatique
|
||||
- **Products**: Compta JBS (one of the most used accounting software in Morocco), JBS Paie, GestCom JBS.
|
||||
- **Key features**: Developed with collaboration of expert-comptables. Moroccan legislation compliant. Liasse fiscale, TVA declarations, XML generation for SIMPL, immobilisations management.
|
||||
- **Pack Compta + XML**: No manual entry needed, one-click liasse generation in XML format.
|
||||
- **Target**: Primarily fiduciaries and SMEs. Very popular in traditional fiduciary market.
|
||||
- **Website**: jbs.ma
|
||||
|
||||
#### NSE Maroc (OJRA & KHABIR)
|
||||
- **Products**: OJRA (payroll -- most widely used in Morocco), KHABIR (accounting).
|
||||
- **Integration**: OJRA interfaces with DGI SIMPL for tax declarations and DAMANCOM for CNSS filings. Special pricing for fiduciaries and certified accountants.
|
||||
- **Partners**: FIDUBAC, Fiduciaire Benyacoub, Fiduciaire El Bakkouri, Fiduciaire Lamkadem, Fiduciaire Wislane.
|
||||
- **Version 2026**: Updated for latest Labor Code and Finance Law provisions.
|
||||
- **Website**: nse-ma.com
|
||||
|
||||
#### Cegid
|
||||
- **Position**: French-origin, strong in mid/large enterprises. Cloud-based business management (ERP, payroll, finance, tax, retail).
|
||||
- **Strengths**: Multi-establishment, multi-currency management. Growing cloud/SaaS adoption.
|
||||
- **Morocco presence**: Through resellers and partners, less direct than Sage.
|
||||
|
||||
#### EBP Maroc
|
||||
- **Products**: Accounting, commercial management, construction industry solutions.
|
||||
- **Website**: ebp-maroc.com
|
||||
- **Target**: TPE/PME segment.
|
||||
|
||||
### Cloud/SaaS Entrants
|
||||
|
||||
| Platform | Description | Target |
|
||||
|----------|-------------|--------|
|
||||
| **Hisab.ma** | Leading Moroccan e-invoicing platform. DGI 2026 compliance ready. UBL 2.1 export, SHA-256 archiving. Multi-client dashboard for accountants. | SMEs, fiduciaries preparing for e-invoicing mandate |
|
||||
| **eFacturation.ma** | SaaS invoicing solution for Morocco | SMEs |
|
||||
| **Facturis.ma** | Online invoicing software | SMEs, auto-entrepreneurs |
|
||||
| **JBManager** (by JBS) | First online invoicing software for TPE-PME in Morocco | TPE-PME, extension of JBS ecosystem |
|
||||
| **Paie365.com** | Online payroll solution with CNSS DAMANCOM and SIMPL-IR integration | SMEs, fiduciaries |
|
||||
| **Beegma** (paie.beegma.com) | Cloud payroll software with DAMANCOM integration | SMEs |
|
||||
| **Webisoft Maroc** | Cloud payroll with DAMANCOM integration | SMEs |
|
||||
| **ETManager** | Enterprise management solution preparing for e-invoicing | SMEs |
|
||||
| **Smart Way Africa** | SIMPL IS, TVA, IR teledeclaration services | Fiduciaries, enterprises |
|
||||
|
||||
**Sources:**
|
||||
- [Sage Maroc - Expert Comptable](https://www.sage.com/fr-ma/experts-comptables/logiciels-clients/)
|
||||
- [Sage 100 Comptabilite](https://www.sage.com/fr-ma/produits/sage-100/comptabilite/)
|
||||
- [M2ASOFT - Sage Integrator](https://m2asoft.com/)
|
||||
- [CR&SG Maroc](https://www.crsgmaroc.ma/comptabilite.html)
|
||||
- [JBS Presentation](http://www.jbs.ma/presentation.html)
|
||||
- [JBS Compta](http://www.jbs.ma/compta.html)
|
||||
- [NSE OJRA 2026](https://www.nse-ma.com/fr/logiciel-de-paie-ojra-nouveautes-version-2026)
|
||||
- [NSE Partners](https://www.nse-ma.com/fr/nos-partenaires/)
|
||||
- [Hisab.ma](https://hisab.ma/en)
|
||||
- [Comparatif Logiciels Comptabilite 2026](https://logicielcomptable.net/comparatif-meilleurs-logiciels-comptables/)
|
||||
|
||||
---
|
||||
|
||||
## 5. xHub and GovTech
|
||||
|
||||
### xHub
|
||||
|
||||
- **Founded**: 2015 by **Badr El Houari** (world Java champion).
|
||||
- **Location**: Casablanca Technopark.
|
||||
- **Role**: Selected by the DGI in July 2024 via international competitive bidding to develop Morocco's national e-invoicing platform.
|
||||
- **Contract value**: 6.3 million MAD (~600,000 EUR), 12-month execution period.
|
||||
- **Scope**: Development of functional/technical specifications, design, implementation, and gradual deployment of the e-invoicing system.
|
||||
- **Technical architecture**:
|
||||
- **Microservices** architecture built with **Java EE**.
|
||||
- Standard formats: **UBL** (Universal Business Language) and **CII** (Cross-Industry Invoice) for international interoperability.
|
||||
- **Clearance model**: Each e-invoice is validated/approved by the DGI before reaching the recipient. Ensures traceability and tax control.
|
||||
- **Timeline**: System technically finalized by October 2025. Pilot phase in 2026. Progressive generalization thereafter.
|
||||
|
||||
### Morocco E-Invoicing Mandate (2026)
|
||||
|
||||
- **Legal basis**: Finance Law provisions mandating electronic invoicing.
|
||||
- **Phased rollout**: Starting 2026, likely large enterprises first, then progressive extension to SMEs.
|
||||
- **Impact on fiduciaries**: Fiduciaries will need to ensure all clients can generate/receive compliant e-invoices. Creates new advisory and compliance service opportunities.
|
||||
|
||||
### Other GovTech Players / Initiatives
|
||||
|
||||
| Entity/Platform | Role |
|
||||
|----------------|------|
|
||||
| **DGI SIMPL ecosystem** | Already operational for tax e-filing (IS, IR, TVA). Foundation for e-invoicing integration. |
|
||||
| **OMPIC DirectEntreprise** | Electronic business creation platform, integrated with DGI, CNSS, courts, Official Printing Office. |
|
||||
| **CNSS DAMANCOM** | Electronic social security declarations portal. |
|
||||
| **CIMR Teledeclaration** | Electronic pension fund declarations. |
|
||||
| **Ministry of Justice - servicesenligne.justice.gov.ma** | Online commercial registry services. |
|
||||
| **Chorus Pro** (French reference model) | Morocco's e-invoicing is architecturally similar to France's Chorus Pro. The French Communaute Chorus Pro has documented Morocco's approach. |
|
||||
|
||||
**Sources:**
|
||||
- [TelQuel - Big Bang Facturation Electronique 2026](https://telquel.ma/2024/12/05/2026-lannee-du-big-bang-de-la-facturation-electronique-au-maroc_1907224)
|
||||
- [EDICOM - Morocco E-Invoicing](https://edicomgroup.com/blog/morocco-electronic-invoicing)
|
||||
- [Hisab - DGI Mandate 2026](https://hisab.ma/en/docs/mandate-2026)
|
||||
- [Pagero - Morocco Compliance](https://www.pagero.com/compliance/regulatory-updates/morocco)
|
||||
- [Orchidatax - E-Invoicing Morocco 2026](https://orchidatax.com/e-invoicing-morocco-2026-tax-compliance/)
|
||||
- [SAPeInvoice - Morocco DGI Initiative](https://www.sapeinvoice.com/2025/09/09/morocco-e-invoicing-initiative-2026/)
|
||||
- [Efficience Expertise - Facturation Electronique](https://efficienceexpertise.com/facturation-electronique-maroc-2026/)
|
||||
- [Sage Advice Maroc - Facturation Electronique Guide](https://www.sage.com/fr-ma/blog/facturation-electronique-le-guide-pour-dematerialiser-vos-factures/)
|
||||
- [Communaute Chorus Pro - Morocco](https://communaute.chorus-pro.gouv.fr/maroc-cap-sur-la-facturation-electronique/?lang=en)
|
||||
|
||||
---
|
||||
|
||||
## 6. Training & Education
|
||||
|
||||
### ISCAE (Institut Superieur de Commerce et d'Administration des Entreprises)
|
||||
|
||||
- **Program**: Cycle d'Expertise Comptable (CEC) -- the only path to becoming an Expert-Comptable in Morocco.
|
||||
- **Duration**: 3 years of theoretical courses + 3-year mandatory internship under a master supervisor (practicing Expert-Comptable).
|
||||
- **Admission**: Competitive entrance exam covering: general/analytical accounting, business/tax law, management, expression/communication.
|
||||
- **Eligible diplomas**: ISCAE diploma, Bachelor in economics (management option), ENCG diploma, French DECS, or equivalent.
|
||||
- **2025-2026**: Registration was open July 31 - September 19, 2025.
|
||||
- **Reform needed**: OEC president Faical Mekouar stated in November 2025: "Il est temps de repenser la formation de l'expert-comptable" (It is time to rethink the training of the expert-comptable).
|
||||
|
||||
### ENCG (Ecole Nationale de Commerce et de Gestion)
|
||||
|
||||
- **Network**: Multiple campuses -- Casablanca, Fes, Settat, Marrakech, El Jadida, Agadir, Kenitra, Oujda, etc.
|
||||
- **Key program**: Master Specialise en Comptabilite, Controle et Audit (CCA) -- bac+5 level.
|
||||
- **Objective**: Form high-level professionals for accounting departments, audit firms, and consulting firms.
|
||||
- **Career paths**: Expertise comptable (via ISCAE CEC after), auditing, management control, finance.
|
||||
- **ENCG Casablanca**: Offers "Comptabilite, Controle de Gestion et Audit" master.
|
||||
- **ENCG Settat, Fes, Marrakech**: Each offer CCA masters with similar curricula.
|
||||
- **ENCG diploma holders** are eligible to sit for the ISCAE CEC entrance exam.
|
||||
|
||||
### OEC (Ordre des Experts-Comptables)
|
||||
|
||||
- **Structure**: National order with regional councils (Casablanca, Rabat-Sale-Kenitra, Souss-Massa/Agadir, etc.).
|
||||
- **Continuing education**: The Institut de Formation de l'OEC produces an annual training program covering diverse topics for members, professionals, and corporate financial executives.
|
||||
- **Activities**: Colloquia, seminars, professional development workshops. Annual congress.
|
||||
- **Stagiaires**: OEC manages the internship program for CEC students, tracking progress through regional councils (e.g., oec-casablanca.ma/espace-stagiaires).
|
||||
- **Becoming an Expert**: Requires ISCAE CEC diploma + 3-year supervised internship + final exam/thesis defense.
|
||||
- **Website**: oec.ma
|
||||
|
||||
### 4Gestion Academy
|
||||
|
||||
- **Type**: Practical training center and licensed accounting firm (cabinet comptable agree).
|
||||
- **Location**: Boulevard Mohammed V, Rue Pierre Parent No. 96, 3eme Etage APT 31, Casablanca 20000. Phone: +212 664-481924.
|
||||
- **Specialization**: Practical training in accounting, management, taxation, and payroll management.
|
||||
- **Programs offered**:
|
||||
- Formation Aide Comptable (Assistant Accountant)
|
||||
- Formation Comptable (Accountant)
|
||||
- Formation Gestionnaire de Paie (Payroll Manager)
|
||||
- Plan Comptable Marocain video courses
|
||||
- **Format**: Online courses accessible anywhere, self-paced. Also in-person at Casablanca location.
|
||||
- **Target audience**: Aspiring accountants, career changers, fiduciary staff needing practical skills. Bridges gap between academic theory and fiduciary practice.
|
||||
- **Website**: 4gestionacademy.com
|
||||
|
||||
### Other Training Institutions
|
||||
|
||||
| Institution | Program | Relevance |
|
||||
|------------|---------|-----------|
|
||||
| **ATAcademy** (atacademy.ma) | Formation Preparatoire Expert-Comptable | Prep courses for ISCAE CEC entrance exam |
|
||||
| **HEEC** (Hautes Etudes Economiques et Commerciales) | Master CCA | Private alternative for CCA training |
|
||||
| **My Road to ISCAE** (myroadtoiscae.ma) | ISCAE preparation resources | Community/prep resource for aspiring experts |
|
||||
| **UCA ENCG** (Universite Cadi Ayyad) | Diplome ENCG Audit et Controle de Gestion | Undergraduate pathway |
|
||||
|
||||
**Sources:**
|
||||
- [ISCAE Cycle Expertise Comptable](https://www.groupeiscae.ma/programmes-2/formations-academiques/cycle-dexpertise-comptable/)
|
||||
- [ISCAE CEC 2025-2026 Concours](https://www.supmaroc.com/iscae-concours-cycle-expertise-comptable-2025-2026/)
|
||||
- [Medias24 - Mekouar on Expert Formation](https://medias24.com/2025/11/14/faical-mekouar-il-est-temps-de-repenser-la-formation-de-lexpert-comptable/)
|
||||
- [OEC Maroc](https://oec.ma/)
|
||||
- [OEC Formation Programme](https://www.oec.ma/le-programme-annuel-des-formations)
|
||||
- [OEC Souss-Massa - Devenir Expert](https://www.oec-soussmassa.ma/devenir-expert/)
|
||||
- [OEC Rabat - Formation Professionnelle](https://oecrsk.ma/formation-professionnelle/)
|
||||
- [4Gestion Academy](https://4gestionacademy.com/)
|
||||
- [4Gestion Formations Pratiques](https://4gestionacademy.com/formations-pratiques/)
|
||||
- [ENCG Casablanca - Master CCA](https://encgcasa.ma/formation/masters-sp%C3%A9cialis%C3%A9s/comptabilit%C3%A9-contr%C3%B4le-de-gestion-et-audit/)
|
||||
- [ENCG Fes - Master CCA](https://www.mba.ma/liste-des-masters-au-maroc/6411-master-comptabilite-controle-et-audit-cca-encg-fes-master-mba/)
|
||||
- [ATAcademy](https://atacademy.ma/)
|
||||
|
||||
---
|
||||
|
||||
## Ecosystem Map Summary
|
||||
|
||||
```
|
||||
┌─────────────────────────┐
|
||||
│ FIDUCIAIRE / EC │
|
||||
│ (Accounting Firm) │
|
||||
└────────┬────────────────┘
|
||||
│
|
||||
┌─────────────┬───────────┼───────────┬──────────────┐
|
||||
│ │ │ │ │
|
||||
┌────▼────┐ ┌─────▼────┐ ┌───▼───┐ ┌────▼─────┐ ┌─────▼─────┐
|
||||
│ BANKING │ │ SOCIAL │ │ TAX │ │ LEGAL │ │ TECH │
|
||||
│ │ │ SECURITY │ │ (DGI) │ │ & ADMIN │ │ VENDORS │
|
||||
└────┬────┘ └────┬─────┘ └───┬───┘ └────┬─────┘ └─────┬─────┘
|
||||
│ │ │ │ │
|
||||
Attijariwafa CNSS/DAMANCOM SIMPL OMPIC/ Sage
|
||||
BCP CIMR (IS/IR/ DirectEntr. JBS
|
||||
BOA/BMCE AMO TVA) CRI NSE/OJRA
|
||||
CIH Insurers E-Invoice Notaires Cegid
|
||||
SG Maroc (xHub) Tribunaux Hisab.ma
|
||||
CAM Cloud SaaS
|
||||
```
|
||||
|
||||
### Key Takeaways for Product Strategy
|
||||
|
||||
1. **Banking integration** is primarily via DGI SIMPL telepayment -- not direct bank APIs. Opportunity exists for bank statement import/reconciliation features.
|
||||
2. **CNSS DAMANCOM** and **CIMR teledeclaration** are critical integrations. NSE's OJRA dominates payroll; any competitor must offer EDI DAMANCOM export.
|
||||
3. **OMPIC DirectEntreprise** is the new standard for company creation -- fiduciaries are already registered as professionals on this platform.
|
||||
4. **xHub's e-invoicing platform** (clearance model, UBL/CII formats) launching in 2026 will be the single biggest disruption. Every fiduciary and their clients will need to comply.
|
||||
5. **JBS and NSE** dominate the traditional fiduciary software market. Sage has strong brand but serves larger firms. Cloud/SaaS entrants (Hisab, Beegma, Paie365) are emerging.
|
||||
6. **Training pipeline**: ISCAE CEC is the only path to Expert-Comptable. ENCG CCA masters feed the pipeline. 4Gestion Academy fills the practical skills gap. OEC continuing education keeps professionals current.
|
||||
@@ -0,0 +1,767 @@
|
||||
---
|
||||
stepsCompleted: [1, 2, 3, 4, 5]
|
||||
inputDocuments: []
|
||||
workflowType: 'research'
|
||||
lastStep: 1
|
||||
research_type: 'market'
|
||||
research_topic: 'Competitive landscape for fiduciary/accounting firm management SaaS in Morocco'
|
||||
research_goals: 'Identify competitors serving the Moroccan fiduciary market, analyze gaps in their offerings, and inform pricing strategy for L''Ami Fiduciaire'
|
||||
user_name: 'Saad'
|
||||
date: '2026-03-10'
|
||||
web_research_enabled: true
|
||||
source_verification: true
|
||||
---
|
||||
|
||||
# Market Research: Competitive Landscape for Fiduciary/Accounting SaaS in Morocco
|
||||
|
||||
## Research Initialization
|
||||
|
||||
### Research Understanding Confirmed
|
||||
|
||||
**Topic**: Competitive landscape for fiduciary/accounting firm management SaaS in Morocco
|
||||
**Goals**: Identify competitors, analyze gaps in their offerings, and inform pricing strategy
|
||||
**Research Type**: Market Research
|
||||
**Date**: 2026-03-10
|
||||
|
||||
### Research Scope
|
||||
|
||||
**Market Analysis Focus Areas:**
|
||||
|
||||
- Who serves Moroccan fiduciary/accounting firms today (SaaS tools, desktop software, local players, international entrants)
|
||||
- Feature comparison and gap analysis vs. L'Ami Fiduciaire's capabilities
|
||||
- Pricing models and tiers across competitors
|
||||
- Customer pain points and unmet needs in the current market
|
||||
- Strategic positioning recommendations for L'Ami Fiduciaire
|
||||
|
||||
**Research Methodology:**
|
||||
|
||||
- Current web data with source verification
|
||||
- Multiple independent sources for critical claims
|
||||
- Confidence level assessment for uncertain data
|
||||
- Comprehensive coverage with no critical gaps
|
||||
|
||||
### Next Steps
|
||||
|
||||
**Research Workflow:**
|
||||
|
||||
1. ✅ Initialization and scope setting (current step)
|
||||
2. Customer Insights and Behavior Analysis
|
||||
3. Competitive Landscape Analysis
|
||||
4. Strategic Synthesis and Recommendations
|
||||
|
||||
**Research Status**: Scope confirmed by user on 2026-03-10, ready to proceed with detailed market analysis
|
||||
|
||||
---
|
||||
|
||||
## Customer Behavior and Segments
|
||||
|
||||
### Market Size and Demographics
|
||||
|
||||
The Moroccan fiduciary/accounting market consists of distinct professional tiers:
|
||||
|
||||
- **Experts-Comptables (OEC-registered):** ~766 members inscribed at the Ordre des Experts Comptables (OEC) as of 2023, up 3% from 747 in 2022. These are the elite, diploma-holding professionals.
|
||||
- **Fiduciaires (non-OEC cabinets):** Thousands of smaller fiduciary firms operate across Morocco without OEC membership. These handle day-to-day bookkeeping, tax declarations, and company formation for TPE/PME clients.
|
||||
- **Total market estimate:** Between 3,000–5,000+ active fiduciary practices and accounting cabinets when including non-OEC firms (confidence: moderate — exact figures unavailable for non-OEC segment).
|
||||
|
||||
_Source: [OEC Maroc Annuaire](https://oec.ma/annuaire), [Industrie comptable au Maroc — Revue ISG](https://revue-isg.com/index.php/home/article/download/1792/1416/6286), [La profession de l'expertise-comptable au Maroc](https://journal-efm.fr/index.php/JEFM/article/download/63/37/100)_
|
||||
|
||||
### Geographic Concentration
|
||||
|
||||
The profession is heavily concentrated on the Atlantic economic axis:
|
||||
|
||||
| Region | Share of Experts-Comptables |
|
||||
|--------|---------------------------|
|
||||
| Casablanca & Centre | 70% |
|
||||
| Rabat-Salé-Kénitra | 16% |
|
||||
| Tanger-Tétouan | 5% |
|
||||
| Fès-Meknès | 4% |
|
||||
| Souss-Massa & South | 3% |
|
||||
| Marrakech-Safi | 3% |
|
||||
|
||||
**Key insight:** 85% of experts-comptables are concentrated in the Kénitra–Rabat–Casablanca corridor. This means the primary market for L'Ami Fiduciaire is geographically compact, making sales/marketing outreach more focused.
|
||||
|
||||
_Source: [Industrie comptable au Maroc — Revue ISG](https://revue-isg.com/index.php/home/article/download/1792/1416/6286)_
|
||||
|
||||
### Demographic Profiles
|
||||
|
||||
**Age and Gender:**
|
||||
- 84% male (642), 16% female (124) among OEC members
|
||||
- 62%+ are over 45 years old — a significant aging workforce
|
||||
- The younger generation (under 35) is more tech-receptive but represents a minority
|
||||
|
||||
**Firm Size Distribution:**
|
||||
- Most fiduciaires are small operations: 1 owner + 2–5 employees (assistants comptables)
|
||||
- Larger OEC-registered cabinets may have 10–30+ staff
|
||||
- Big Four (Deloitte, PwC, EY, KPMG) dominate ~70% of the large-enterprise audit market but do NOT serve the TPE/PME fiduciary segment
|
||||
|
||||
_Source: [Les limites du système — LesEco.ma](https://leseco.ma/maroc/experts-comptables-les-limites-du-systeme-au-maroc.html), [OEC Maroc Structure](https://oec.ma/structure)_
|
||||
|
||||
### Customer Behavior Patterns
|
||||
|
||||
**Current Tool Usage:**
|
||||
Most Moroccan fiduciaires rely on legacy desktop software:
|
||||
- **Sage (dominant)** — the market leader in Morocco, used across small to large firms
|
||||
- **CIEL Compta** — popular for its simplicity, especially among smaller cabinets
|
||||
- **EBP Compta** — strong in financial reporting and immobilisations
|
||||
- **Cegid** — used by mid-to-large firms, strong regulatory compliance
|
||||
- **ExpertC** — specifically designed for cabinets d'expertise comptable
|
||||
- **Excel/manual processes** — still widely used alongside or instead of dedicated software
|
||||
|
||||
_Source: [Les logiciels comptables les plus utilisés au Maroc — ExpertC](https://www.expertc.ma/Posts/post/logiciels-comptables-plus-utilises-maroc), [Sage Maroc](https://www.sage.com/fr-ma/experts-comptables/logiciels-clients/)_
|
||||
|
||||
**Cloud Adoption — Emerging but Early:**
|
||||
- **Sahih** — Moroccan cloud-native accounting platform (AWS-hosted), targeting modern firms
|
||||
- **Bleez** — full web accounting suite with AI features, targeting Moroccan professionals and SMEs
|
||||
- **ComptaCom** — online accounting with invoicing, storage, and tax declaration features
|
||||
- **Banqup** — collaborative platform digitizing document exchange between firms and clients
|
||||
- Cloud adoption is accelerating but still represents a minority of the market
|
||||
|
||||
_Source: [Sahih](https://sahih.ma/), [Bleez Maroc](https://bleez.com/fr-tn/), [ComptaCom Maroc](https://comptacom.ma/), [Banqup Maroc](https://www.banqup.ma/comptables/fonctionnalites/digitalisation)_
|
||||
|
||||
### Psychographic Profiles
|
||||
|
||||
**Segment 1: The Traditional Practitioner (majority — est. 60–70%)**
|
||||
- Age 45+, established practice, loyal to Sage/CIEL
|
||||
- Prioritizes stability and compliance over innovation
|
||||
- "If it works, don't change it" mindset
|
||||
- Biggest fear: losing data, breaking workflows
|
||||
- Will only switch tools if forced by regulation (e.g., DGI e-invoicing)
|
||||
|
||||
**Segment 2: The Modernizing Firm Owner (est. 20–25%)**
|
||||
- Age 35–50, growing firm, hiring junior staff
|
||||
- Sees technology as competitive advantage
|
||||
- Interested in client portals, collaboration tools, document management
|
||||
- Willing to pay for time savings and professional image
|
||||
- **This is L'Ami Fiduciaire's primary target segment**
|
||||
|
||||
**Segment 3: The Young Digital-Native (est. 10–15%)**
|
||||
- Under 35, recently started or freelancing
|
||||
- Cloud-first mindset, comfortable with SaaS
|
||||
- Price-sensitive but values modern UX
|
||||
- Active on social media, influenced by peer recommendations
|
||||
- Open to trying new tools, lower switching costs
|
||||
|
||||
### Behavior Drivers and Influences
|
||||
|
||||
**What drives tool adoption in Moroccan fiduciaires:**
|
||||
|
||||
| Driver | Weight | Detail |
|
||||
|--------|--------|--------|
|
||||
| **DGI regulatory pressure** | Very High | E-invoicing mandates, certified software requirements, digital tax declarations — this is the #1 forcing function |
|
||||
| **Time savings** | High | Automation of repetitive tasks (declarations, client notifications) |
|
||||
| **Client expectations** | Medium-High | Clients increasingly expect digital document exchange |
|
||||
| **Peer influence** | Medium | Word-of-mouth within the professional community |
|
||||
| **Cost** | Medium | Price-sensitive but willing to invest if ROI is clear |
|
||||
| **Compliance/certification** | High | Software must be DGI-certified — non-negotiable |
|
||||
| **French language** | Critical | Interface must be in French — no exceptions |
|
||||
|
||||
_Source: [Sage Advice Maroc — Digitalisation](https://www.sage.com/fr-ma/blog/digitalisation-impacts-expert-comptable/), [Transformation digitale de la profession comptable — Revue ISG](https://revue-isg.com/index.php/home/article/download/1240/1008/4351), [Plan comptable marocain 2025-2026 — Efficience](https://efficienceexpertise.com/plan-comptable-marocain-2025-2026-7-changements-a-appliquer-durgence/)_
|
||||
|
||||
### Customer Interaction Patterns
|
||||
|
||||
**Research and Discovery:**
|
||||
- Primarily word-of-mouth and professional network recommendations
|
||||
- OEC events and conferences
|
||||
- Sage reseller network is deeply embedded in the market
|
||||
- Limited online research — most firms rely on their existing IT provider/reseller
|
||||
|
||||
**Purchase Decision Process:**
|
||||
- Long decision cycles (3–12 months) for established firms
|
||||
- Key decision maker: firm owner/manager (solo decision in small firms)
|
||||
- Demo/trial is essential — firms need to see their specific workflow supported
|
||||
- Migration assistance is a deal-breaker — data import from Sage/CIEL is critical
|
||||
|
||||
**Post-Purchase / Loyalty:**
|
||||
- Extremely high switching costs (data, training, habits)
|
||||
- Once adopted, firms stay for 5–10+ years
|
||||
- Support quality (in French, local timezone) drives retention
|
||||
- Firms that switch typically do so during a generational transition or growth phase
|
||||
|
||||
---
|
||||
|
||||
## Customer Pain Points and Needs
|
||||
|
||||
### Customer Challenges and Frustrations
|
||||
|
||||
**1. Document Exchange Chaos**
|
||||
The #1 operational pain point for Moroccan fiduciaires is the manual, fragmented document exchange with clients. Firms rely on a mix of WhatsApp, email, USB drives, and in-person delivery. This results in:
|
||||
- Dispersed documents across multiple channels with no single source of truth
|
||||
- Endless follow-ups to collect missing pieces (tax receipts, invoices, bank statements)
|
||||
- Lost or duplicated documents leading to accounting errors
|
||||
- No audit trail of what was received, when, and from whom
|
||||
|
||||
_"Chaque retard de remise des pièces désorganise le travail du cabinet et augmente les coûts"_
|
||||
|
||||
_Source: [Dossier Fiduciaire Cloud](https://dossierfiduciaire.cloud/), [ComptaCom Maroc](https://comptacom.ma/)_
|
||||
|
||||
**2. Deadline Management and Tax Declaration Tracking**
|
||||
Moroccan tax deadlines are strict (TVA monthly/quarterly, IS, IR, CNSS) and penalties are severe:
|
||||
- Without a shared calendar and validation workflow, firms lose time and multiply errors
|
||||
- A missed CNSS or IS deadline exposes the firm AND client to penalties and audits
|
||||
- Tracking which declarations are done, pending, or late across dozens of clients is largely manual (Excel spreadsheets or mental tracking)
|
||||
- No automated reminder system to nudge clients for documents before deadlines
|
||||
|
||||
_Source: [AMDE — Cabinet Comptabilité Marrakech](https://amde-marrakech.ma/cabinet-de-comptabilite-marrakech/), [Comment choisir un cabinet comptable — Maison Entrepreneur](https://maison-entrepreneur.com/choisir-un-cabinet-de-comptabilite-a-casablanca/)_
|
||||
|
||||
**3. Legacy Software Limitations**
|
||||
The dominant tools (Sage, CIEL, EBP) are powerful for accounting entry but weak on practice management:
|
||||
- **Desktop-only / mono-poste**: Sage 100 Comptabilité starts at ~€1,400/license for single-user Windows. Multi-user (network) costs significantly more. No cloud access, no remote work capability.
|
||||
- **No client-facing features**: Zero client portals, no document exchange, no notification system
|
||||
- **No collaboration**: Firm owner cannot see what employees are working on in real-time
|
||||
- **No dossier/folder management**: These tools handle accounting entries but NOT the workflow around client dossiers (status, priority, assignment, follow-up)
|
||||
- **Migration lock-in**: Years of data trapped in proprietary formats make switching painful
|
||||
|
||||
_Source: [Sage Maroc — Sage 100 Comptabilité](https://www.sage.com/fr-ma/produits/sage-100/comptabilite/), [Prix Sage Comptabilité 2026 — Apogea](https://www.apogea.fr/sage-comptabilite-prix/), [Les logiciels comptables les plus utilisés au Maroc — ExpertC](https://www.expertc.ma/Posts/post/logiciels-comptables-plus-utilises-maroc)_
|
||||
|
||||
**4. Training and Skills Gap**
|
||||
- 47% of Moroccan accounting firms have NO continuous training policy for their employees
|
||||
- Staff must constantly adapt to regulatory changes (FEC, new plan comptable, IFRS harmonization) with inadequate support
|
||||
- Younger hires are more tech-savvy but the tools they're given are outdated
|
||||
|
||||
_Source: [Industrie comptable au Maroc — Revue ISG](https://revue-isg.com/index.php/home/article/download/1792/1416/6286), [La profession comptable face aux nouveaux défis — EcoActu](https://ecoactu.ma/profession-comptable-face-aux-nouveaux-defis/)_
|
||||
|
||||
### Unmet Customer Needs
|
||||
|
||||
| Unmet Need | Current Workaround | Opportunity for L'Ami Fiduciaire |
|
||||
|------------|-------------------|----------------------------------|
|
||||
| **Centralized client document exchange** | WhatsApp/email/USB | Client portal with secure upload, automatic notifications |
|
||||
| **Declaration deadline tracking** | Excel spreadsheet or memory | Dashboard with status tracking, priority alerts, deadline reminders |
|
||||
| **Client dossier workflow management** | Paper folders or basic file system | Digital folder system with status, assignment, priority, timeline |
|
||||
| **Team workload visibility** | Ask each employee verbally | Role-based dashboards showing who's doing what |
|
||||
| **Bulk operations for recurring declarations** | Create one by one manually | Bulk declaration creation across multiple clients |
|
||||
| **Archive and institutional memory** | Physical filing cabinets | Digital archive with search, filters, 10-year retention |
|
||||
| **Client self-service** | Client calls/visits the office | Portal for upload, confirmation, refusal — no account needed |
|
||||
| **Real-time collaboration** | Pass physical files between desks | Cloud-based, multi-user, real-time updates |
|
||||
|
||||
### Barriers to Adoption
|
||||
|
||||
**Price Barriers:**
|
||||
- Sage 100 single-user: ~€1,400 + annual maintenance (~€300–500/year)
|
||||
- Multi-user network licenses: 2x–5x the base price
|
||||
- Small fiduciaires (1–3 people) find this expensive for limited functionality
|
||||
- SaaS subscription model is unfamiliar but potentially more accessible at lower monthly costs
|
||||
|
||||
**Technical Barriers:**
|
||||
- No IT staff in small firms — the owner IS the IT department
|
||||
- Fear of data loss during migration from Sage/CIEL
|
||||
- Unreliable internet in some regions outside Casablanca–Rabat axis
|
||||
- Desktop habits deeply ingrained — "I know where my files are on my C: drive"
|
||||
|
||||
**Trust Barriers:**
|
||||
- Moroccan firms tend to trust foreign vendors (Sage, Cegid) over local SaaS — perception of "less competent or trusted"
|
||||
- Data sovereignty concerns: where is my data stored?
|
||||
- Skepticism toward cloud: "what if the server goes down and I can't access my clients' data?"
|
||||
|
||||
**Change Resistance:**
|
||||
- 62% of the profession is over 45 — generational resistance to new workflows
|
||||
- "We've always done it this way" inertia
|
||||
- Fear of being seen as incompetent during the learning curve
|
||||
|
||||
_Source: [MGI Worldwide — Moroccan firms in unfamiliar territory](https://www.mgiworld.com/resource/rapid-change-leaves-moroccan-firms-in-unfamiliar-territory.html), [Enablers and barriers for adopting new technology — ScienceDirect](https://www.sciencedirect.com/science/article/pii/S1467089523000581), [Barriers to cloud accounting — IJAEMS](https://ijaems.com/upload_images/issue_files/7IJAEMS-11020247-Barriers.pdf)_
|
||||
|
||||
### Service and Support Pain Points
|
||||
|
||||
- **Sage reseller support**: expensive annual contracts, slow response times, French phone support but limited local on-site help
|
||||
- **No onboarding assistance**: firms are expected to figure out software themselves or pay for costly training sessions
|
||||
- **Language gap**: international tools sometimes have incomplete French localization or no Arabic support
|
||||
- **Update fatigue**: regulatory changes (new plan comptable 2025-2026, FEC requirements) require software updates that are slow to arrive from foreign vendors
|
||||
|
||||
_Source: [Comptabilité informatisée — LesEco.ma](https://leseco.ma/maroc/comptabilite-informatisee-les-experts-comptables-veulent-relever-le-defi.html), [Logiciels comptabilité Maroc — CNC cahier des charges](https://www.cielmaroc.ma/actualites/logiciels-comptabilite-maroc-regles-cnc)_
|
||||
|
||||
### Pain Point Prioritization
|
||||
|
||||
| Priority | Pain Point | Impact | L'Ami Fiduciaire Advantage |
|
||||
|----------|-----------|--------|---------------------------|
|
||||
| **Critical** | No client document exchange platform | Daily frustration, errors, wasted time | Client portal already built — core feature |
|
||||
| **Critical** | No declaration/dossier tracking system | Missed deadlines = penalties | Folder system with status, priority, alerts |
|
||||
| **High** | Desktop-only legacy tools — no remote access | Can't work from home, no collaboration | Cloud-native SaaS, multi-user |
|
||||
| **High** | No team workload visibility | Firm owner blind to employee progress | Role-based dashboards (planned) |
|
||||
| **High** | Expensive licensing (Sage) | Budget pressure on small firms | SaaS subscription — predictable, lower entry |
|
||||
| **Medium** | No archive system | Legal compliance risk, lost history | Archive system (planned Phase 5) |
|
||||
| **Medium** | No bulk operations | Repetitive manual work at deadline peaks | Bulk declaration creation (planned Phase 4) |
|
||||
| **Medium** | Trust in local SaaS providers | Perception barrier | Build credibility through UX quality, security, and DGI compliance |
|
||||
|
||||
---
|
||||
|
||||
## Customer Decision Processes and Journey
|
||||
|
||||
### Customer Decision-Making Process
|
||||
|
||||
The buying journey for fiduciary/accounting software in Morocco is relationship-driven, slow, and heavily influenced by trust. It differs significantly from typical B2B SaaS buying patterns.
|
||||
|
||||
**Decision Stages for Moroccan Fiduciaires:**
|
||||
|
||||
| Stage | Duration | What Happens |
|
||||
|-------|----------|-------------|
|
||||
| **1. Trigger** | Instant | A pain event forces the search: DGI regulation change, firm growth, generational transition, or a competitor using better tools |
|
||||
| **2. Informal Research** | 1–3 months | Ask peers at OEC events, consult their existing IT reseller, maybe a Google search in French |
|
||||
| **3. Shortlisting** | 1–2 months | Narrow to 2–3 options based on peer recommendations and reseller availability |
|
||||
| **4. Demo/Trial** | 2–4 weeks | Live demo is critical — the firm owner needs to see their actual workflow supported. Trials are less common (desktop software doesn't trial easily) |
|
||||
| **5. Decision** | 2–4 weeks | Price negotiation, often through a reseller. Single decision-maker in small firms (the owner). In larger firms, 2–3 stakeholders (owner + IT + senior accountant) |
|
||||
| **6. Implementation** | 1–3 months | Data migration, training, parallel running of old and new systems |
|
||||
| **Total Cycle** | **3–12 months** | From trigger to full adoption |
|
||||
|
||||
_Source: [Gartner — SaaS Buying Experience](https://www.gartner.com/en/articles/the-saas-buying-experience-mapping-how-businesses-buy-software), [B2B SaaS Buyer Journey — Wynter](https://wynter.com/post/how-b2b-saas-marketing-leaders-buy-2024), verified against Moroccan market context_
|
||||
|
||||
### Decision Factors and Criteria
|
||||
|
||||
**Primary Decision Factors (must-have):**
|
||||
|
||||
| Factor | Weight | Detail |
|
||||
|--------|--------|--------|
|
||||
| **Conformité au plan comptable marocain** | Critical | TVA rates (20%, 14%, 10%, 7%), liasses fiscales, Simpl télédéclaration |
|
||||
| **French language interface** | Critical | 100% French UI is non-negotiable |
|
||||
| **Data security and backup** | Very High | Encryption, regular backups — clients' financial data at stake |
|
||||
| **Ease of use** | Very High | Ergonomic interface reduces errors and training time |
|
||||
| **Technical support quality** | High | Fast, French-speaking, local timezone support |
|
||||
|
||||
**Secondary Decision Factors (differentiators):**
|
||||
|
||||
| Factor | Weight | Detail |
|
||||
|--------|--------|--------|
|
||||
| **Price / value ratio** | High | Total cost of ownership matters more than sticker price |
|
||||
| **Customization** | Medium-High | Custom reports, adaptable workflows |
|
||||
| **Multi-user capability** | Medium-High | Growing firms need 3–10 concurrent users |
|
||||
| **Cloud/remote access** | Medium (rising) | COVID accelerated demand; still not universal |
|
||||
| **Client portal / document exchange** | Medium (rising) | Emerging need, not yet a standard expectation |
|
||||
| **Vendor reputation / brand trust** | High | Foreign brands (Sage) carry inherent trust premium |
|
||||
|
||||
_Source: [Logiciel comptabilité — Synergie Maroc](https://synergie.ma/logiciel-de-comptabilite-lequel-choisir/), [Guide complet logiciel comptabilité Maroc — HunterBI](https://hunterbi.com/logiciel-de-comptabilite-au-maroc/), [Logiciel comptabilité — Upsilon Consulting](https://www.upsilon-consulting.com/logiciel-de-comptabilite-que-choisir/)_
|
||||
|
||||
### Customer Journey Map
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ MOROCCAN FIDUCIAIRE BUYING JOURNEY │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ TRIGGER │
|
||||
│ ├── DGI regulation change (e-invoicing, FEC) │
|
||||
│ ├── Firm growth (hired new employees, more clients) │
|
||||
│ ├── Generational transition (son/daughter takes over) │
|
||||
│ └── Frustration peak (missed deadline, lost document) │
|
||||
│ │
|
||||
│ AWARENESS │
|
||||
│ ├── Peer conversation at OEC meeting or industry event │
|
||||
│ ├── Existing Sage reseller proposes an upgrade │
|
||||
│ ├── Google search: "logiciel comptabilité Maroc" │
|
||||
│ └── Social media / LinkedIn post from a peer │
|
||||
│ │
|
||||
│ CONSIDERATION │
|
||||
│ ├── Contact 2–3 vendors / resellers │
|
||||
│ ├── Request demo or on-site presentation │
|
||||
│ ├── Ask peers: "What do you use? Are you happy?" │
|
||||
│ └── Compare features against daily workflow needs │
|
||||
│ │
|
||||
│ DECISION │
|
||||
│ ├── Price negotiation (often via reseller) │
|
||||
│ ├── Check: does it handle MY specific workflow? │
|
||||
│ ├── Migration plan: can I import my Sage data? │
|
||||
│ └── Owner signs off (solo or with 1–2 stakeholders) │
|
||||
│ │
|
||||
│ IMPLEMENTATION │
|
||||
│ ├── Data migration from legacy system │
|
||||
│ ├── Team training (in French, hands-on) │
|
||||
│ ├── Parallel running period (old + new) │
|
||||
│ └── Go-live + first tax declaration cycle │
|
||||
│ │
|
||||
│ RETENTION / LOYALTY │
|
||||
│ ├── Support quality drives satisfaction │
|
||||
│ ├── Regulatory updates delivered on time │
|
||||
│ ├── Low churn once adopted (5–10+ year retention) │
|
||||
│ └── Word-of-mouth becomes acquisition channel │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Touchpoint Analysis
|
||||
|
||||
**Key Touchpoints — Where Moroccan Fiduciaires Discover Software:**
|
||||
|
||||
| Touchpoint | Effectiveness | L'Ami Fiduciaire Strategy |
|
||||
|-----------|--------------|--------------------------|
|
||||
| **Peer recommendations (OEC network)** | Very High | Seed early adopters → let them become advocates |
|
||||
| **Sage reseller network** | High (incumbent) | Cannot compete here — resellers push Sage |
|
||||
| **Google search (French)** | Medium | SEO for "logiciel gestion cabinet comptable Maroc" |
|
||||
| **OEC events & conferences** | Medium-High | Sponsor/demo at OEC Casablanca & Rabat events |
|
||||
| **LinkedIn / social media** | Medium (growing) | Content marketing targeting firm owners |
|
||||
| **Direct outreach** | Low-Medium | Cold outreach is culturally weak; warm intros work better |
|
||||
| **Free trial / demo** | Very High (conversion) | Offer live demo + guided trial with real data |
|
||||
|
||||
_Source: [Sage Maroc — Trouvez un partenaire](https://www.sage.com/fr-ma/trouvez-un-partenaire-sage/), [M2ASOFT — Intégrateur Sage](https://m2asoft.com/)_
|
||||
|
||||
### Information Gathering Patterns
|
||||
|
||||
**How Moroccan firm owners research software:**
|
||||
1. **Word-of-mouth first** — "What does my colleague at the OEC use?" is the #1 starting point
|
||||
2. **Reseller consultation** — Existing IT provider/Sage reseller is asked for recommendations
|
||||
3. **Google search** — French-language queries: "logiciel comptabilité Maroc", "meilleur logiciel cabinet comptable"
|
||||
4. **Vendor websites** — Quick scan of features and screenshots, but rarely enough to decide
|
||||
5. **Live demo** — The actual demo adds the most value in the process — more than marketing websites, trials, or reviews
|
||||
|
||||
**Trust hierarchy:**
|
||||
Peer recommendation > Reseller advice > Vendor demo > Online reviews > Marketing content
|
||||
|
||||
### Decision Influencers
|
||||
|
||||
| Influencer | Impact | Notes |
|
||||
|-----------|--------|-------|
|
||||
| **Fellow firm owners** | Highest | "Si Ahmed l'utilise et il est content, ça doit être bien" |
|
||||
| **OEC community** | High | Professional credibility and validation |
|
||||
| **Sage reseller** | High (for Sage) | Deep trust built over years, but limited to Sage products |
|
||||
| **Firm employees** | Low-Medium | Younger staff may advocate for modern tools but don't decide |
|
||||
| **Online reviews** | Low | Very few Moroccan-specific software reviews exist |
|
||||
| **Marketing/ads** | Low | Low trust in advertising; prefer personal validation |
|
||||
|
||||
### Purchase Decision Optimization — Opportunities for L'Ami Fiduciaire
|
||||
|
||||
**Friction Reduction:**
|
||||
- Offer guided onboarding with data import from Sage/CIEL — eliminate the #1 fear
|
||||
- Free trial with pre-populated sample data showing a real fiduciary workflow
|
||||
- No long-term contract required — monthly subscription reduces commitment fear
|
||||
|
||||
**Trust Building:**
|
||||
- Showcase local Moroccan development team (counter "local = less competent" bias)
|
||||
- DGI compliance certification front and center
|
||||
- Customer testimonials from real Moroccan cabinets (video if possible)
|
||||
- Data hosting transparency: clearly state where data is stored
|
||||
|
||||
**Conversion Optimization:**
|
||||
- Live demo is the highest-converting touchpoint — invest heavily here
|
||||
- Offer "shadow period": run L'Ami Fiduciaire alongside existing tool for 1 month
|
||||
- Provide migration assistance as a service, not a DIY task
|
||||
|
||||
**Loyalty Building:**
|
||||
- Rapid regulatory updates (new plan comptable, FEC, e-invoicing) before competitors
|
||||
- French-speaking WhatsApp/chat support (culturally appropriate for Morocco)
|
||||
- Community of users (private group) for peer learning and feature requests
|
||||
|
||||
_Source: [Gartner — SaaS Buying Experience](https://www.gartner.com/en/articles/the-saas-buying-experience-mapping-how-businesses-buy-software), [B2B SaaS CMO Buying Behavior — MarketingProfs](https://www.marketingprofs.com/charts/2026/54342/how-b2b-saas-cmos-buy-software)_
|
||||
|
||||
---
|
||||
|
||||
## Competitive Landscape
|
||||
|
||||
### Critical Market Positioning Insight
|
||||
|
||||
**L'Ami Fiduciaire is NOT an accounting software.** It does not compete with Sage, CIEL, or EBP on bookkeeping, journal entries, or tax calculation. Instead, it occupies a distinct niche: **practice management + client collaboration for fiduciary firms.** This is the layer ABOVE the accounting software — managing clients, dossiers, document exchange, team coordination, and client communication.
|
||||
|
||||
This distinction is critical for positioning and pricing. L'Ami Fiduciaire can coexist with Sage/CIEL (firms keep their accounting tool and ADD L'Ami Fiduciaire for practice management), or it can be positioned as a complete replacement for firms that need both.
|
||||
|
||||
### Competitor Categories
|
||||
|
||||
The competitive landscape for Moroccan fiduciary firms breaks into four categories:
|
||||
|
||||
| Category | Competitors | Relationship to L'Ami Fiduciaire |
|
||||
|----------|-----------|----------------------------------|
|
||||
| **1. Legacy Desktop Accounting** | Sage, CIEL, EBP, KHABIR, Evoleo | Indirect — different layer. Can coexist. |
|
||||
| **2. Cloud Accounting Platforms** | Sahih, Bleez, ComptaCom | Partial overlap on cloud/modern UX. Different core focus. |
|
||||
| **3. Practice Management / Collaboration** | ExpertC, Banqup | Direct competitors — same problem space. |
|
||||
| **4. International Reference (not in Morocco)** | FID-Manager (Belgium) | Conceptual benchmark — shows where the market is heading. |
|
||||
|
||||
---
|
||||
|
||||
### Category 1: Legacy Desktop Accounting Software
|
||||
|
||||
#### Sage (Market Leader)
|
||||
|
||||
| Attribute | Detail |
|
||||
|-----------|--------|
|
||||
| **Type** | Desktop (Windows), with hosted cloud option (Azure) |
|
||||
| **Market Position** | Dominant — estimated 50%+ of Moroccan cabinet installations |
|
||||
| **Target** | SMEs and accounting firms of all sizes |
|
||||
| **Key Products** | Sage 50 (small), Sage 100 Comptabilité (mid), Sage FRP 1000 (enterprise) |
|
||||
| **Pricing** | Sage 100 single-user: ~€1,400/license. Sage FRP 1000: ~€10,000/license. Annual maintenance: €300–500+. Sage 100 Hébergé (cloud): subscription pricing via resellers. |
|
||||
| **Strengths** | Deep Morocco compliance (TVA, liasses fiscales, Simpl), massive reseller network (M2ASOFT, FORSOFT, Delta Cloud, KAMSINFO, NODMA, CR&SG, CIPROTEC), 20+ years of trust, comprehensive accounting features |
|
||||
| **Weaknesses** | No client portal, no document exchange, no dossier management, no team collaboration, desktop-bound, expensive for small firms, slow to innovate on UX |
|
||||
| **Threat to L'Ami Fiduciaire** | Low-medium. Different layer. Sage does accounting; L'Ami Fiduciaire does practice management. Can coexist. Risk: Sage could add practice management features. |
|
||||
|
||||
_Source: [Sage Maroc](https://www.sage.com/fr-ma/produits/sage-100/comptabilite/), [Sage 100 Hébergé](https://www.sage.com/fr-ma/produits/sage-100/comptabilite-online/), [Sage Partners](https://www.sage.com/fr-ma/trouvez-un-partenaire-sage/), [Prix Sage — Apogea](https://www.apogea.fr/sage-comptabilite-prix/)_
|
||||
|
||||
#### CIEL Compta
|
||||
|
||||
| Attribute | Detail |
|
||||
|-----------|--------|
|
||||
| **Type** | Desktop (Windows) |
|
||||
| **Market Position** | Strong #2, especially popular among smaller cabinets |
|
||||
| **Pricing** | Lower than Sage (typically €500–800 for base license) |
|
||||
| **Strengths** | Simple, easy to learn, good for small operations, lower cost than Sage |
|
||||
| **Weaknesses** | Same as Sage — no client-facing features, no cloud, no practice management |
|
||||
| **Threat to L'Ami Fiduciaire** | Low. Different category. |
|
||||
|
||||
_Source: [Ciel Maroc](https://www.cielmaroc.ma/produits/logiciel-sage-50), [ExpertC — Logiciels les plus utilisés](https://www.expertc.ma/Posts/post/logiciels-comptables-plus-utilises-maroc)_
|
||||
|
||||
#### EBP Compta (Maroc Edition)
|
||||
|
||||
| Attribute | Detail |
|
||||
|-----------|--------|
|
||||
| **Type** | Desktop + emerging cloud options |
|
||||
| **Market Position** | Solid #3, strong in financial reporting |
|
||||
| **Key Products** | EBP Comptabilité PRO (Maroc), EBP Comptabilité ELITE (Maroc) |
|
||||
| **Pricing** | From ~€47/month (subscription) or perpetual license options |
|
||||
| **Strengths** | Good immobilisations and financial reporting, Morocco-specific editions, free trial available |
|
||||
| **Weaknesses** | No client portal, no practice management, less market presence than Sage |
|
||||
| **Threat to L'Ami Fiduciaire** | Low. Different category. |
|
||||
|
||||
_Source: [EBP Maroc](https://www.ebp.ma/), [EBP Comptabilité PRO Maroc](https://www.ebp.ma/logiciel-comptabilite/comptabilite-pro-maroc), [EBP — GetApp](https://www.getapp.com/finance-accounting-software/a/activ-accounting-software/)_
|
||||
|
||||
#### KHABIR (NSE)
|
||||
|
||||
| Attribute | Detail |
|
||||
|-----------|--------|
|
||||
| **Type** | Desktop (Windows) — 100% Moroccan |
|
||||
| **Market Position** | Niche local player, strong Morocco compliance |
|
||||
| **Pricing** | Quote-based — depends on modules and users |
|
||||
| **Strengths** | Built specifically for Moroccan accounting (Simpl-IS, Simpl-TVA automation), multi-user support, immobilisation management, 100% local team |
|
||||
| **Weaknesses** | Desktop-only, no cloud, no client portal, limited modern UX, small team |
|
||||
| **Threat to L'Ami Fiduciaire** | Low. Different category. |
|
||||
|
||||
_Source: [NSE — KHABIR](https://www.nse-ma.com/fr/logiciel-de-comptabilite-khabir/), [KHABIR 2025](https://www.nse-ma.com/fr/logiciel-de-comptabilite-khabir-v-2025/)_
|
||||
|
||||
#### Evoleo
|
||||
|
||||
| Attribute | Detail |
|
||||
|-----------|--------|
|
||||
| **Type** | Desktop (Windows) — Moroccan |
|
||||
| **Market Position** | Established local player, 21+ years |
|
||||
| **Pricing** | Quote-based |
|
||||
| **Strengths** | Mature product, Morocco-native compliance, ergonomic guided entry, comprehensive reporting (Grand Livre, Balance, liasse fiscal, ETIC) |
|
||||
| **Weaknesses** | Desktop-only, aging product, no cloud, no client portal |
|
||||
| **Threat to L'Ami Fiduciaire** | Low. Different category. |
|
||||
|
||||
_Source: [Evoleo](https://www.evoleo.ma/), [Evoleo Compta](https://evoleocompta.ma/)_
|
||||
|
||||
---
|
||||
|
||||
### Category 2: Cloud Accounting Platforms
|
||||
|
||||
#### Sahih
|
||||
|
||||
| Attribute | Detail |
|
||||
|-----------|--------|
|
||||
| **Type** | Cloud SaaS (AWS-hosted) — Moroccan |
|
||||
| **Market Position** | Emerging cloud-native disruptor |
|
||||
| **Pricing** | **FREE** (claims to be the 1st free professional accounting software on cloud in Morocco). Premium tiers unknown. |
|
||||
| **Key Features** | Cloud accounting, up to 1,000 companies and 100 users per account, collaborative tools (chat, encrypted messaging, video conferencing), dynamic reports, SHA256 + AES128 encryption |
|
||||
| **Strengths** | Free entry point, cloud-native, modern UX, collaborative features, strong security, AWS infrastructure |
|
||||
| **Weaknesses** | Free model sustainability questionable, accounting-focused (no practice management), unclear premium pricing, newer brand with less trust |
|
||||
| **Overlap with L'Ami Fiduciaire** | Medium. Both are cloud and modern, but Sahih is an accounting tool while L'Ami Fiduciaire is practice management. Could be complementary. |
|
||||
|
||||
_Source: [Sahih](https://sahih.ma/), [Sahih — Logiciel Gratuit](https://sahih.ma/logiciel)_
|
||||
|
||||
#### Bleez (Maroc)
|
||||
|
||||
| Attribute | Detail |
|
||||
|-----------|--------|
|
||||
| **Type** | Cloud SaaS — French company with Morocco subsidiary |
|
||||
| **Market Position** | Premium cloud entrant, AI-focused |
|
||||
| **Pricing** | From €15/month (free tier: 100 lines, 30 invoices/year). 3 paid packs + 1 free. |
|
||||
| **Key Features** | Full web accounting, AI-powered OCR and pre-accounting (ComptaBot), real-time dashboards, collaborative tools, mobile app, Morocco-compliant |
|
||||
| **Strengths** | AI automation (claims 80% faster production), French parent company (20+ years experience), local Moroccan support team, modern UX |
|
||||
| **Weaknesses** | Accounting-focused (no practice management, no client portal for document exchange, no dossier tracking), newer in Morocco, pricing may be high for small firms |
|
||||
| **Overlap with L'Ami Fiduciaire** | Low-Medium. Different problem space. Bleez does accounting; L'Ami Fiduciaire does practice management. |
|
||||
|
||||
_Source: [Bleez Maroc](https://bleez.com/maroc/), [Bleez Tarifs](https://bleez.com/nos-tarifs), [Bleez — Journal des Entreprises](https://www.lejournaldesentreprises.com/article/lediteur-de-logiciels-de-comptabilite-bleez-simplante-au-maroc-2137962)_
|
||||
|
||||
#### ComptaCom (Maroc)
|
||||
|
||||
| Attribute | Detail |
|
||||
|-----------|--------|
|
||||
| **Type** | Cloud SaaS + cabinet comptable service — French network with Morocco subsidiary |
|
||||
| **Market Position** | Budget cloud option, targeting créateurs and TPE |
|
||||
| **Pricing** | **From 99 DHS/user/month** (~€9/month) — "cheapest on the market" claim |
|
||||
| **Key Features** | Online accounting, invoicing, storage, tax declarations, expense tracking, dashboard, mobile document scanning (Capture app), user access rights management |
|
||||
| **Strengths** | Very low price point, backed by ComptaCom France (30+ years), cloud-native, HTTPS encryption, configurable user permissions |
|
||||
| **Weaknesses** | Targets enterprises, not fiduciary firms (no practice management). More of an online cabinet than a software product. Limited to accounting functions. |
|
||||
| **Overlap with L'Ami Fiduciaire** | Low. ComptaCom is an accounting service platform for businesses, not a practice management tool for cabinets. |
|
||||
|
||||
_Source: [ComptaCom Maroc](https://comptacom.ma/), [ComptaCom LinkedIn](https://ma.linkedin.com/company/comptacom-ma)_
|
||||
|
||||
---
|
||||
|
||||
### Category 3: Practice Management / Collaboration (DIRECT COMPETITORS)
|
||||
|
||||
#### ExpertC ⚠️ CLOSEST COMPETITOR
|
||||
|
||||
| Attribute | Detail |
|
||||
|-----------|--------|
|
||||
| **Type** | Cloud SaaS — Moroccan |
|
||||
| **Market Position** | The only Moroccan SaaS specifically designed for cabinet d'expertise comptable management |
|
||||
| **Pricing** | Quote-based (demo required) — no public pricing |
|
||||
| **Key Features** | Cabinet management (invoice generation, payment tracking/recouvrement, task and time management, analytical accounting), periodic email reports, centralized management of all cabinet activities |
|
||||
| **Strengths** | Purpose-built for Moroccan cabinets, SaaS model, covers billing/invoicing for the cabinet itself, task management, centralized operations |
|
||||
| **Weaknesses** | No visible client portal for document exchange, no public pricing (friction), limited web presence/marketing, unclear if it handles dossier/declaration workflow, no visible team collaboration features (role-based dashboards, assignment) |
|
||||
| **GAP vs L'Ami Fiduciaire** | ExpertC focuses on cabinet administration (billing, time tracking). L'Ami Fiduciaire focuses on client-facing operations (dossier management, document exchange, client portal, notifications). **These are adjacent but different problem spaces.** L'Ami Fiduciaire has a stronger client collaboration layer. |
|
||||
|
||||
_Source: [ExpertC](https://www.expertc.ma/), [ExpertC — Logiciels les plus utilisés](https://www.expertc.ma/Posts/post/logiciels-comptables-plus-utilises-maroc)_
|
||||
|
||||
#### Banqup (Maroc) ⚠️ PARTIAL COMPETITOR
|
||||
|
||||
| Attribute | Detail |
|
||||
|-----------|--------|
|
||||
| **Type** | Cloud SaaS — International (Unifiedpost Group) with Morocco presence |
|
||||
| **Market Position** | Document exchange platform between firms and clients |
|
||||
| **Pricing** | Not publicly available for Morocco. France pricing available but may differ. |
|
||||
| **Key Features** | Digital invoicing (create, send, receive), document sharing between client and comptable, real-time visibility for accountants into client financials, API integrations, mobile app |
|
||||
| **Strengths** | International backing, specific focus on the firm↔client digital bridge, modern platform, API-driven |
|
||||
| **Weaknesses** | Not a practice management tool (no dossier tracking, no team management, no declaration workflow), focused on invoicing/document exchange only, less Morocco-specific than L'Ami Fiduciaire, no visible workspace/multi-tenant model |
|
||||
| **GAP vs L'Ami Fiduciaire** | Banqup solves document exchange between firm and client. L'Ami Fiduciaire does this AND manages the entire dossier lifecycle, team coordination, priorities, status tracking, and archiving. **L'Ami Fiduciaire is a superset.** |
|
||||
|
||||
_Source: [Banqup Maroc](https://www.banqup.ma/), [Banqup for Comptables](https://www.banqup.ma/comptables), [Banqup Digitalisation](https://www.banqup.ma/comptables/fonctionnalites/digitalisation)_
|
||||
|
||||
---
|
||||
|
||||
### Category 4: International Reference Benchmarks
|
||||
|
||||
#### FID-Manager (Belgium) — Not in Morocco, but shows market direction
|
||||
|
||||
| Attribute | Detail |
|
||||
|-----------|--------|
|
||||
| **Type** | Cloud SaaS — Belgian |
|
||||
| **Market Position** | Market leader for fiduciary practice management in Belgium |
|
||||
| **Pricing** | **From €92/month** (all features, per-user pricing, unlimited dossiers) |
|
||||
| **Key Features** | Legal deadline tracking with alerts, digitalized client dossiers with auto-classification, invoicing, GDPR compliance, quality review preparation, web-based (no installation), task management |
|
||||
| **Relevance** | FID-Manager is conceptually what L'Ami Fiduciaire is building — but for the Belgian market. Its feature set and pricing provide a useful reference point. |
|
||||
|
||||
_Source: [FID-Manager](https://www.fid-manager.com/fr), [FID-Manager Pricing](https://www.fid-manager.com/fr/notre-simulateur-de-prix)_
|
||||
|
||||
---
|
||||
|
||||
### Feature Comparison Matrix
|
||||
|
||||
| Feature | Sage 100 | CIEL | ExpertC | Banqup | Sahih | Bleez | L'Ami Fiduciaire |
|
||||
|---------|----------|------|---------|--------|-------|-------|-----------------|
|
||||
| **Accounting entries** | ✅ Full | ✅ Full | ❌ | ❌ | ✅ Full | ✅ Full + AI | ❌ |
|
||||
| **Tax declarations (Simpl)** | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ |
|
||||
| **Client management (CRM)** | ❌ | ❌ | ✅ Basic | ❌ | ❌ | ❌ | ✅ Full |
|
||||
| **Dossier/folder workflow** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ Full |
|
||||
| **Client portal (document exchange)** | ❌ | ❌ | ❌ | ✅ Partial | ❌ | ❌ | ✅ Full |
|
||||
| **Email notifications to clients** | ❌ | ❌ | ❌ | ✅ Invoices | ❌ | ❌ | ✅ Full |
|
||||
| **Team roles & permissions** | ❌ | ❌ | ❌ | ❌ | ✅ Basic | ✅ Basic | ✅ Full (planned) |
|
||||
| **Multi-workspace (multi-tenant)** | ❌ | ❌ | ❌ | ❌ | ✅ Multi-company | ❌ | ✅ Full |
|
||||
| **Activity logging / audit trail** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ Full |
|
||||
| **Archive system** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ Planned |
|
||||
| **Cloud-native SaaS** | ❌ (hosted option) | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||
| **Mobile-friendly** | ❌ | ❌ | ❓ | ✅ | ❓ | ✅ | ✅ (responsive) |
|
||||
| **French interface** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||
| **Morocco compliance** | ✅ Deep | ✅ | ✅ | ❓ | ✅ | ✅ | N/A (not accounting) |
|
||||
|
||||
### Pricing Landscape Summary
|
||||
|
||||
| Competitor | Model | Price Range | Notes |
|
||||
|-----------|-------|-------------|-------|
|
||||
| **Sage 100** | Perpetual license + maintenance | €1,400+ license + €300–500/yr | Single-user. Multi-user 2x–5x more. |
|
||||
| **CIEL** | Perpetual license | ~€500–800 | Lower entry point |
|
||||
| **EBP Maroc** | Subscription or perpetual | From ~€47/month | Pro and Elite editions |
|
||||
| **KHABIR** | Quote-based license | Unknown (contact required) | Moroccan local |
|
||||
| **Evoleo** | Quote-based license | Unknown (contact required) | Moroccan local |
|
||||
| **Sahih** | Freemium SaaS | **FREE** (premium unknown) | Free tier is generous |
|
||||
| **Bleez** | Freemium SaaS | From €15/month (free tier available) | AI features in paid tiers |
|
||||
| **ComptaCom** | SaaS subscription | **From 99 DHS/user/month (~€9)** | Cheapest cloud option |
|
||||
| **ExpertC** | SaaS (quote-based) | Unknown (demo required) | No public pricing |
|
||||
| **Banqup** | SaaS | Unknown for Morocco | International platform |
|
||||
| **FID-Manager** | SaaS subscription | **From €92/month** (reference) | Belgian — not in Morocco |
|
||||
|
||||
### Competitive Gaps — Where L'Ami Fiduciaire Wins
|
||||
|
||||
**No competitor in Morocco combines ALL of these:**
|
||||
|
||||
1. ✅ Client management with status tracking and legal form classification
|
||||
2. ✅ Dossier/folder lifecycle management (create → assign → track → close → archive)
|
||||
3. ✅ Client portal with token-based access (no account needed)
|
||||
4. ✅ Automated email notifications (invitations, file requests, confirmations, status updates)
|
||||
5. ✅ In-folder messaging between firm and client
|
||||
6. ✅ Document exchange with Spatie Media Library
|
||||
7. ✅ Multi-workspace / multi-tenant architecture
|
||||
8. ✅ Activity logging and audit trail
|
||||
9. ✅ Role-based access control (with planned Owner/Manager/Worker granularity)
|
||||
10. ✅ Cloud-native, modern SaaS (Laravel + Vue 3 + Inertia)
|
||||
|
||||
**The gap is enormous.** Moroccan fiduciaires currently have:
|
||||
- Accounting tools that don't manage practice operations
|
||||
- OR practice management tools (ExpertC) that focus on billing, not client collaboration
|
||||
- OR document exchange tools (Banqup) that don't manage dossier workflows
|
||||
|
||||
**L'Ami Fiduciaire is the only product that bridges all three.**
|
||||
|
||||
### Competitive Threats
|
||||
|
||||
| Threat | Likelihood | Impact | Mitigation |
|
||||
|--------|-----------|--------|------------|
|
||||
| **Sage adds practice management layer** | Low-Medium (slow-moving enterprise) | High | Move fast, build switching costs through data lock-in and user habits |
|
||||
| **Bleez expands into practice management** | Medium (they have resources) | Medium | Bleez is accounting-focused; pivoting is a major effort |
|
||||
| **ExpertC adds client portal** | Medium (they're in the space) | Medium-High | L'Ami Fiduciaire already has a working portal; build network effects |
|
||||
| **New Moroccan SaaS entrant** | Low-Medium | Medium | First-mover advantage in this specific niche |
|
||||
| **International tool enters Morocco** | Low (market too small, too specific) | Low | Morocco compliance and French+Arabic cultural fit are natural moats |
|
||||
|
||||
### Strategic Opportunities
|
||||
|
||||
1. **"Use alongside Sage" positioning** — Don't fight Sage. Position L'Ami Fiduciaire as the practice management layer that works WITH the firm's existing accounting tool. This eliminates the biggest objection ("but we already use Sage").
|
||||
|
||||
2. **Own the client portal narrative** — No Moroccan competitor has a proper client portal with token-based access. This is L'Ami Fiduciaire's unique weapon. Market it as "your clients' digital bridge to your cabinet."
|
||||
|
||||
3. **Pricing as competitive weapon** — The market has no reference price for practice management SaaS in Morocco. You get to set the anchor. Price below FID-Manager (€92/month) but above ComptaCom (99 DHS/month) to signal professional quality.
|
||||
|
||||
4. **Regulatory tailwinds** — DGI e-invoicing mandates and FEC requirements are forcing digitalization. Firms that adopt L'Ami Fiduciaire can present a more professional, digital-first image to their clients.
|
||||
|
||||
_Source: All sources cited throughout competitive analysis above._
|
||||
|
||||
---
|
||||
|
||||
## Pricing Strategy Recommendations
|
||||
|
||||
### Market Context for Pricing
|
||||
|
||||
| Reference Point | Price | What It Buys |
|
||||
|----------------|-------|-------------|
|
||||
| ComptaCom Maroc | 99 DHS/user/month (~€9) | Basic cloud accounting |
|
||||
| Bleez (entry) | ~€15/month | Cloud accounting + AI (limited) |
|
||||
| EBP subscription | ~€47/month | Desktop accounting |
|
||||
| FID-Manager (Belgium) | From €92/month | Full practice management |
|
||||
| Sage 100 (annual equiv.) | ~€140–175/month (amortized) | Desktop accounting |
|
||||
|
||||
### Recommended Pricing Model
|
||||
|
||||
**Subscription SaaS — per workspace, not per user.**
|
||||
|
||||
Per-user pricing penalizes growth (firms hesitate to add employees). Per-workspace pricing encourages team adoption and makes the total cost predictable.
|
||||
|
||||
### Suggested Tier Structure
|
||||
|
||||
| Tier | Target | Price (MAD/month) | Price (~EUR/month) | Includes |
|
||||
|------|--------|-------------------|-------------------|----------|
|
||||
| **Starter** | Solo practitioner / new firm | 199 MAD | ~€18 | 1 workspace, up to 3 users, 50 clients, 100 folders, 5GB storage, client portal, email notifications |
|
||||
| **Professional** | Growing firm (primary target) | 499 MAD | ~€46 | 1 workspace, up to 10 users, unlimited clients, unlimited folders, 25GB storage, all features, priority support |
|
||||
| **Enterprise** | Large cabinet / multi-office | 999 MAD | ~€92 | Multiple workspaces, unlimited users, unlimited everything, 100GB storage, dedicated support, custom onboarding |
|
||||
|
||||
### Pricing Rationale
|
||||
|
||||
1. **Starter at 199 MAD** — Below the "pain threshold" for a solo practitioner. Cheaper than Sage annual maintenance. Just enough to get started and see value.
|
||||
|
||||
2. **Professional at 499 MAD** — Sweet spot for the primary target segment (modernizing firm with 3–10 employees). Comparable to EBP subscription but delivers practice management + client portal (which EBP doesn't). Far below FID-Manager (€92) while delivering similar value.
|
||||
|
||||
3. **Enterprise at 999 MAD** — For large firms that need multi-workspace. Priced at the FID-Manager level but includes Morocco-specific features and local support.
|
||||
|
||||
4. **No free tier** — Unlike Sahih/Bleez, L'Ami Fiduciaire is practice management, not accounting. A free tier devalues professional tooling. Instead, offer a **14-day free trial** with full features.
|
||||
|
||||
5. **Annual discount** — Offer 2 months free on annual billing (effectively ~17% discount) to reduce churn and improve cash flow.
|
||||
|
||||
### Pricing Comparison Positioning
|
||||
|
||||
```
|
||||
Price (MAD/month)
|
||||
│
|
||||
│ 999 ─── Enterprise ──── (= FID-Manager Belgium level)
|
||||
│
|
||||
│ 499 ─── Professional ── (= EBP, but with client portal + practice mgmt)
|
||||
│
|
||||
│ 199 ─── Starter ─────── (< Sage annual maintenance)
|
||||
│
|
||||
│ 99 ─── ComptaCom ───── (basic accounting only, no practice mgmt)
|
||||
│
|
||||
│ 0 ─── Sahih ────────── (accounting only, no practice mgmt)
|
||||
│
|
||||
└──────────────────────────────────────────────────── Features
|
||||
```
|
||||
|
||||
**Key message:** "You pay less than Sage maintenance and get 10x more functionality for managing your cabinet."
|
||||
1281
_bmad-output/planning-artifacts/ux-design-directions.html
Normal file
1281
_bmad-output/planning-artifacts/ux-design-directions.html
Normal file
File diff suppressed because it is too large
Load Diff
1307
_bmad-output/planning-artifacts/ux-design-specification.md
Normal file
1307
_bmad-output/planning-artifacts/ux-design-specification.md
Normal file
File diff suppressed because it is too large
Load Diff
174
_bmad-output/project-context.md
Normal file
174
_bmad-output/project-context.md
Normal file
@@ -0,0 +1,174 @@
|
||||
---
|
||||
project_name: "l'ami fiduciaire"
|
||||
user_name: 'Saad'
|
||||
date: '2026-03-08'
|
||||
sections_completed: ['technology_stack', 'language_rules', 'framework_rules', 'testing_rules', 'code_quality', 'workflow_rules', 'critical_rules']
|
||||
status: 'complete'
|
||||
rule_count: 52
|
||||
optimized_for_llm: true
|
||||
---
|
||||
|
||||
# Project Context for AI Agents
|
||||
|
||||
_This file contains critical rules and patterns that AI agents must follow when implementing code in this project. Focus on unobvious details that agents might otherwise miss._
|
||||
|
||||
---
|
||||
|
||||
## Technology Stack & Versions
|
||||
|
||||
- **Backend:** PHP ^8.2, Laravel 12
|
||||
- **Frontend:** Vue 3.5 (`<script setup lang="ts">`), TypeScript 5.2 (strict mode)
|
||||
- **Bridge:** Inertia.js 2.0 (`@inertiajs/vue3` ^2.3.7)
|
||||
- **Build:** Vite 7.0, `laravel-vite-plugin` 2.0
|
||||
- **Styling:** Tailwind CSS 4.1 (`@tailwindcss/vite`), shadcn-vue (reka-ui)
|
||||
- **Auth:** Laravel Fortify ^1.30
|
||||
- **Media:** spatie/laravel-medialibrary ^11.21
|
||||
- **Logging:** spatie/laravel-activitylog ^4.12
|
||||
- **Enums:** bensampo/laravel-enum ^6.12
|
||||
- **Routes:** laravel/wayfinder ^0.1.9 (type-safe frontend routes)
|
||||
- **Icons:** lucide-vue-next
|
||||
- **CSS Utils:** clsx + tailwind-merge + CVA via `cn()` helper
|
||||
- **Testing:** Pest 4.4, Laravel Pint (PHP formatting)
|
||||
- **JS Tooling:** ESLint 9, Prettier 3.4 (with tailwindcss plugin)
|
||||
|
||||
## Critical Implementation Rules
|
||||
|
||||
### Language-Specific Rules
|
||||
|
||||
**TypeScript:**
|
||||
- Strict mode enabled — never use `any` implicitly (explicit `any` allowed per ESLint config)
|
||||
- MUST use `import type { ... }` for type-only imports (separate statements, not inline `type` specifier)
|
||||
- Import order enforced: builtin → external → internal → parent → sibling → index (alphabetical within groups)
|
||||
- Path alias `@/` maps to `resources/js/` — always use it, never relative paths like `../../`
|
||||
- `isolatedModules: true` — no `const enum`, no namespace merging
|
||||
|
||||
**PHP:**
|
||||
- Model casts: use `protected function casts(): array` method, NOT the `$casts` property
|
||||
- Model mass assignment: always use explicit `$fillable`, never `$guarded = []`
|
||||
- Relationship return types: always add PHPDoc generics `/** @return BelongsTo<Model, $this> */`
|
||||
- Enums: use `bensampo/laravel-enum` — serialize with `->value`, cast in models with Enum class
|
||||
- All controller methods must have explicit return type annotations (`Response`, `RedirectResponse`)
|
||||
- PHP formatting via Laravel Pint — run `composer lint` before committing
|
||||
|
||||
### Framework-Specific Rules
|
||||
|
||||
**Vue 3 + Composition API:**
|
||||
- Always use `<script setup lang="ts">` — never Options API
|
||||
- Define props: `type Props = { ... }` + `defineProps<Props>()`; use `withDefaults()` for defaults
|
||||
- Export form data types from form components for reuse in page components
|
||||
- Composables follow `use` prefix convention (`useCurrentUrl`, `useInitials`)
|
||||
|
||||
**Inertia.js:**
|
||||
- ALL URLs must be passed as props from PHP controllers — never hardcode routes in Vue
|
||||
- Standard forms: `useForm<T>()` with `form.post(props.storeUrl)`
|
||||
- File uploads: use `<Form>` component with `enctype="multipart/form-data"`, NOT `useForm`
|
||||
- Navigation: `router.delete()`, `router.get()`, `router.post()` for programmatic actions
|
||||
- Page titles: always use `<Head title="..." />` component
|
||||
- Shared props accessed via `usePage()` (e.g., `page.props.auth`)
|
||||
|
||||
**Layout System:**
|
||||
- Pages wrap content in `<AppLayout :breadcrumbs="[...]">` — breadcrumbs are required
|
||||
- Auth pages use `<AuthLayout>` wrapper
|
||||
- Settings pages use `settings/Layout.vue` with its own sidebar navigation
|
||||
|
||||
**Laravel Controllers:**
|
||||
- Workspace: resolve from session (`current_workspace_id`), never from URL params
|
||||
- Authorization: custom `authorizeXxx()` protected methods with `abort(404)`, no Gates/Policies
|
||||
- Validation: dedicated Form Request classes, never inline `$request->validate()`
|
||||
- Data shaping: manually build arrays in controllers, no API Resources
|
||||
- Always pass URLs as props via `route()` helper (e.g., `'showUrl' => route('clients.show', $client)`)
|
||||
- Single-action controllers use `__invoke()` method
|
||||
- Enum labels: protected methods on controllers returning label arrays
|
||||
|
||||
### Testing Rules
|
||||
|
||||
- Use Pest syntax (`test()` closures), never PHPUnit class-based tests
|
||||
- Feature tests: `RefreshDatabase` is auto-applied via `Pest.php` — don't add it manually
|
||||
- Test descriptions: lowercase, descriptive strings (`'authenticated users can visit the dashboard'`)
|
||||
- Assertions: prefer Pest's `expect()` chaining over PHPUnit `assert*()` methods
|
||||
- Use `route()` helper for URLs in tests, never hardcoded paths
|
||||
- Feature tests grouped by domain subdirectory mirroring controller structure
|
||||
- Factory states for user roles: `User::factory()->admin()->create()`
|
||||
- Run tests: `composer test` (clears config, runs Pint lint check, then `php artisan test`)
|
||||
- No frontend JS tests configured — testing is PHP-only
|
||||
|
||||
### Code Quality & Style Rules
|
||||
|
||||
**Prettier (enforced):**
|
||||
- Semicolons, single quotes, 4-space indentation, 80 char print width
|
||||
- Tailwind plugin sorts classes in `clsx`, `cn`, `cva` calls
|
||||
- YAML files use 2-space indentation (override)
|
||||
|
||||
**ESLint:**
|
||||
- `vue/multi-word-component-names` is OFF — single-word names allowed
|
||||
- `resources/js/components/ui/*` is ignored — never lint or modify shadcn-vue components
|
||||
- Run `npm run lint` to fix, `npm run format` to format
|
||||
|
||||
**File Naming:**
|
||||
- Vue pages/components: PascalCase (`ClientForm.vue`, `Index.vue`)
|
||||
- Vue page subdirectories: lowercase by domain (`clients/`, `folders/`, `auth/`)
|
||||
- UI component subdirectories: kebab-case (`dropdown-menu/`, `input-otp/`)
|
||||
- TypeScript type files: lowercase (`auth.ts`, `navigation.ts`)
|
||||
- Composables: `use` prefix camelCase (`useCurrentUrl.ts`)
|
||||
- Each UI component group has an `index.ts` barrel file
|
||||
|
||||
**Code Organization:**
|
||||
- Pages: `resources/js/pages/{domain}/{Action}.vue`
|
||||
- Components: `resources/js/components/` (app-level) and `components/ui/` (shadcn-vue)
|
||||
- Types: `resources/js/types/` with barrel `index.ts`
|
||||
- Composables: `resources/js/composables/`
|
||||
- Lib utilities: `resources/js/lib/utils.ts` (`cn()` helper)
|
||||
|
||||
### Development Workflow Rules
|
||||
|
||||
**Local Development:**
|
||||
- Start all services: `composer dev` (runs server + queue + logs + Vite concurrently)
|
||||
- SSR mode: `composer dev:ssr`
|
||||
- Initial setup: `composer setup`
|
||||
|
||||
**CI/CD (GitHub Actions):**
|
||||
- `lint` workflow: Pint + Prettier + ESLint on push/PR to `develop`, `main`, `master`
|
||||
- `tests` workflow: Pest on PHP 8.4/8.5 matrix with Node 22
|
||||
- All code must pass both workflows before merging
|
||||
|
||||
**Before Committing:**
|
||||
- PHP: `composer lint` (Pint)
|
||||
- JS/Vue: `npm run format` then `npm run lint`
|
||||
- Tests: `composer test`
|
||||
|
||||
### Critical Don't-Miss Rules
|
||||
|
||||
**Never Do:**
|
||||
- Never modify `resources/js/components/ui/*` — shadcn-vue auto-generated, use `npx shadcn-vue` to update
|
||||
- Never hardcode routes in Vue — all URLs come from PHP controller props
|
||||
- Never use `$guarded = []` — always explicit `$fillable`
|
||||
- Never use inline `$request->validate()` — always Form Request classes
|
||||
- Never use Gates/Policies — use custom `authorizeXxx()` protected methods with `abort(404)`
|
||||
- Never add `RefreshDatabase` in tests — auto-applied via `Pest.php`
|
||||
|
||||
**Gotchas:**
|
||||
- Workspace is session-based (`current_workspace_id`) — not in URL, not route-model-bound
|
||||
- Nullable enums: use `$model->field?->value` (null-safe) when serializing
|
||||
- Authorization returns `404` not `403` for workspace boundary violations (intentional)
|
||||
- Client-facing routes (`/c/*`) use token-based `folder.invitation` middleware, not `auth`
|
||||
- New business models must add Spatie `LogsActivity` trait + `getActivitylogOptions()` returning `logFillable()->logOnlyDirty()->dontSubmitEmptyLogs()`
|
||||
- New models with files must add Spatie `InteractsWithMedia` trait and implement `HasMedia`
|
||||
- Inertia render paths use lowercase subdirectory: `'clients/Index'`, not `'Clients/Index'`
|
||||
|
||||
---
|
||||
|
||||
## Usage Guidelines
|
||||
|
||||
**For AI Agents:**
|
||||
- Read this file before implementing any code
|
||||
- Follow ALL rules exactly as documented
|
||||
- When in doubt, prefer the more restrictive option
|
||||
- Update this file if new patterns emerge
|
||||
|
||||
**For Humans:**
|
||||
- Keep this file lean and focused on agent needs
|
||||
- Update when technology stack changes
|
||||
- Review quarterly for outdated rules
|
||||
- Remove rules that become obvious over time
|
||||
|
||||
Last Updated: 2026-03-08
|
||||
Reference in New Issue
Block a user