freelance-dashboard/TECHNICAL_REFERENCE_EN.md
StillHammer 21ebf32e4f Dashboard avec graphiques, TCD, slicers et checkboxes fonctionnels
- KPIs complets (CA, Heures, Taux, Stats, Objectifs)
- Graphiques CA par client + Heures par client
- TCD Heures x Client x Projet avec Slicer interactif
- Checkboxes dynamiques bien positionnes (E3:E7)
- Documentation technique et guides MCP

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 17:05:25 +07:00

28 KiB
Raw Blame History

Freelance Dashboard - Technical and Functional Reference

Project Type: Business Intelligence / Data Visualization Main Technology: Microsoft Excel (with VBA/Macros) Target Audience: Freelancers, independent consultants, small businesses Status: Proof of Concept - Production Ready


Table of Contents

  1. Overview
  2. Business Problem
  3. Proposed Solution
  4. Technical Architecture
  5. Detailed Features
  6. Data Model
  7. Key Performance Indicators (KPIs)
  8. Technologies and Tools
  9. Development Process
  10. Demonstrated Skills
  11. Results and Impact

Overview

Concept

Freelance Dashboard is an interactive Excel dashboard designed for real-time tracking of freelance activity. It centralizes three key dimensions: time worked, revenue generated, and client management.

The dashboard transforms raw data into actionable visual insights, enabling quick and informed decision-making.

Project Objectives

  • Simplify activity tracking: Replace multiple Excel spreadsheets with a unified dashboard
  • Visualize performance: Real-time KPIs, dynamic charts, trends
  • Automate calculations: Advanced formulas and VBA macros to eliminate manual work
  • Professionalize presentation: Modern design suitable for client demonstrations
  • Facilitate decision-making: Quickly identify most profitable clients, slow periods, actual hourly rates

Business Problem

Identified Pain Points

Freelancers face several challenges in managing their activity:

Problem Impact
Scattered data (time, invoices, emails) Time loss, billing errors
Lack of global vision Difficulty identifying profitable clients
Manual KPI calculations Error risk, wasted time
Unprofessional reports Poor image with clients
Approximate time tracking Under-billing, revenue loss

Expressed Need

"I want to see at a glance my monthly revenue, my most profitable clients, and know if I'm meeting my objectives."


Proposed Solution

Approach

Create an all-in-one Excel dashboard with:

  1. Structured data tables for input (Excel Tables)
  2. Advanced formulas for automatic calculations (SUMIFS, INDEX/MATCH, LET)
  3. Pivot tables for flexible aggregation
  4. Interactive charts for visualization
  5. Visual filters (Slicers) for data exploration
  6. VBA macros for automation (refresh, export)
  7. Professional design with conditional formatting

Solution Advantages

  • Zero installation: Works with Excel (present on 99% of PCs)
  • Lightweight and fast: No external database
  • Customizable: Client can modify formulas and design
  • Portable: Single .xlsm file to share
  • Scalable: Can connect to other sources (Access, Power Query, API)

Technical Architecture

Overview

┌─────────────────────────────────────────────────────────────┐
│                    FREELANCE DASHBOARD                       │
│                   (FreelanceDashboard.xlsm)                  │
└─────────────────────────────────────────────────────────────┘
                              │
        ┌─────────────────────┼─────────────────────┐
        │                     │                     │
   ┌────▼─────┐         ┌─────▼──────┐        ┌────▼─────┐
   │  DATA    │         │  BUSINESS  │        │   UI     │
   │  LAYER   │         │   LOGIC    │        │  LAYER   │
   └──────────┘         └────────────┘        └──────────┘
        │                     │                     │
   - Data_Clients       - KPI Formulas         - Dashboard
   - Data_Temps         - Pivot Tables         - Charts
   - Data_Revenus       - Calculated columns   - Slicers
   - Config             - Validation           - Formatting

File Structure

Sheet Role Type Content
Dashboard User interface UI KPIs, charts, slicers, final layout
Data_Clients Source data Data Client table (ID, name, sector, start date)
Data_Temps Source data Data Time entries (date, client, project, hours)
Data_Revenus Source data Data Payments (date, client, amount, type)
Config Parameters Settings Year, hourly rate, objectives, dropdown lists
TCD_Data Intermediate calculations Hidden Pivot tables for charts

Data Flow

1. INPUT               2. VALIDATION           3. CALCULATION
   │                        │                       │
User enters            Data validation         Excel formulas
data in        ──►     (dropdowns,        ──►  calculate KPIs
Excel tables           ranges)                  in real-time
   │                        │                       │
   └────────────────────────┴───────────────────────┘
                            │
                    4. VISUALIZATION
                            │
                  Charts and Pivot Tables
                  refresh automatically

Detailed Features

1. Data Management

Excel Structured Tables

All data is stored in Excel Tables (ListObjects):

  • Auto-expansion: New rows added automatically
  • Structured references: tbl_Clients[ClientID] instead of $A$2:$A$10
  • Built-in filters: Click on column headers
  • Propagated formulas: Automatic calculated columns

Data Validation

Field Validation Error Message
ClientID Dropdown list from Data_Clients "Select an existing client"
Hours Decimal between 0.25 and 24 "Enter valid hours"
Type List (Invoice/Deposit/Credit) "Invalid type"
Date Valid date format "Incorrect date"

2. KPI Calculation

The dashboard displays 8 key indicators recalculated in real-time:

KPI Formula Interpretation
Total Revenue =SUMIFS(Data_Revenus[Montant], ...) Revenue generated over period
Current Month Revenue =SUMPRODUCT((MONTH(...)=MONTH(TODAY()))...) Current month performance
Total Hours =SUMIFS(Data_Temps[Heures], ...) Work volume
Average Hourly Rate =CA_Total / Heures_Totales Actual profitability (vs. quoted rate)
Active Clients =SUMPRODUCT((COUNTIFS(...) > 0) * 1) Portfolio diversification
Top Client =INDEX(MATCH(MAX(...))) Most profitable client
Hours This Week =SUMIFS(..., Date, ">="&WeekStart) Weekly workload
Number of Projects =COUNTA(UNIQUE(Data_Temps[Projet])) Mission diversity

Advanced formulas used:

  • SUMIFS / COUNTIFS: Multiple conditional aggregations
  • INDEX / MATCH: Reverse lookups
  • SUMPRODUCT: Matrix calculations without array formulas
  • LET (Excel 365): Named variables in formulas
  • XLOOKUP (Excel 365): VLOOKUP replacement

3. Data Visualization

Dynamic Charts

Chart Type Data Source Insight
Monthly Revenue Evolution Vertical bars Pivot on Data_Revenus Revenue trend over 12 months
Revenue by Client Pie / Donut Pivot on Data_Revenus Revenue concentration (80/20 rule)
Hours per Week Stacked bars Pivot on Data_Temps Workload, overload identification
Revenue vs Hours Combo chart Combined pivot Profitability/effort correlation

Pivot Tables

Pivot tables enable:

  • Flexible aggregation: Drag and drop fields
  • Quick filtering: By period, client, project
  • Automatic calculations: Sum, average, count, percentage
  • Calculated fields: Hourly rate = Amount / Hours

Slicers (Visual Filters)

┌───────────────────┐  ┌───────────────────┐
│  CLIENTS          │  │  PERIOD           │
│  [ ] Acme Corp    │  │  [ ] 2024 Q1      │
│  [x] Tech Sol.    │  │  [x] 2024 Q2      │
│  [ ] Marketing    │  │  [ ] 2024 Q3      │
└───────────────────┘  └───────────────────┘

Slicers are connected to pivot tables and enable interactive filtering without formulas.

4. VBA Automation

Module mod_Refresh

Sub RefreshDashboard()
    ' Recalculate all formulas
    Application.CalculateFull

    ' Refresh all pivot tables
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        Dim pt As PivotTable
        For Each pt In ws.PivotTables
            pt.RefreshTable
        Next pt
    Next ws

    MsgBox "Dashboard refreshed!", vbInformation
End Sub

Other Macros

Macro Description Usage
QuickRefresh Silent refresh (no popup) Dashboard button
ExportPDF Export dashboard to PDF Client sharing
AddTimeEntry VBA form for quick entry UserForm
BackupData Backup data to CSV Security

5. Professional Design

Color Palette

Color Hex Usage
Dark blue #2C3E50 Headers, titles, main elements
Green #27AE60 Positive KPIs, objectives met
Light gray #ECF0F1 Background, neutral zones
Red #E74C3C Alerts, objectives not met
Orange #F39C12 Warnings, attention zones

Conditional Formatting

Rule 1: IF Revenue >= Objective THEN Green
Rule 2: IF Revenue >= 80% Objective THEN Orange
Rule 3: IF Revenue < 80% Objective THEN Red

Applied to:

  • KPI cells
  • Progress bars
  • Trend indicators (arrows ↑↓)

Dashboard Layout

┌──────────────────────────────────────────────────────────────┐
│  FREELANCE DASHBOARD - 2025            [Refresh] [Export PDF] │
├──────────────────────────────────────────────────────────────┤
│                                                                │
│  ┌────────────┐  ┌────────────┐  ┌────────────┐  ┌─────────┐ │
│  │ TOTAL REV  │  │ MONTH REV  │  │   HOURS    │  │  RATE   │ │
│  │  $45,230   │  │  $8,500    │  │    312h    │  │ $72/h   │ │
│  │            │  │            │  │            │  │         │ │
│  └────────────┘  └────────────┘  └────────────┘  └─────────┘ │
│                                                                │
│  ┌────────────┐  ┌────────────┐  ┌────────────┐  ┌─────────┐ │
│  │ CLIENTS    │  │ TOP CLIENT │  │ WEEK HOURS │  │ PROJECTS│ │
│  │     12     │  │ Acme Corp  │  │    38h     │  │    8    │ │
│  └────────────┘  └────────────┘  └────────────┘  └─────────┘ │
│                                                                │
├──────────────────────────────────────────────────────────────┤
│                                                                │
│  [Slicer: Clients]  [Slicer: Year]  [Slicer: Quarter]         │
│                                                                │
├────────────────────────────────┬─────────────────────────────┤
│                                │                             │
│  MONTHLY REVENUE EVOLUTION     │  DISTRIBUTION BY CLIENT     │
│  ┌──────────────────────────┐  │  ┌───────────────────────┐ │
│  │       ▃▅▇▇▆▅▄▆▇▅▃▂      │  │  │       ████            │ │
│  │                          │  │  │     ██    ██ Acme    │ │
│  │ Jan Feb Mar Apr May Jun  │  │  │   ██  ██    Tech     │ │
│  └──────────────────────────┘  │  │  █      ██  Marketing│ │
│                                │  └───────────────────────┘ │
├────────────────────────────────┼─────────────────────────────┤
│                                │                             │
│  HOURS PER WEEK                │  REVENUE vs HOURS           │
│  ┌──────────────────────────┐  │  ┌───────────────────────┐ │
│  │ ████ ██ ████ ████ ██    │  │  │    ●         ○        │ │
│  │                          │  │  │  ●   ●     ○  ○       │ │
│  │ W01 W02 W03 W04 W05      │  │  │●       ● ○      ○     │ │
│  └──────────────────────────┘  │  └───────────────────────┘ │
│                                │                             │
└────────────────────────────────┴─────────────────────────────┘

Data Model

Relational Schema

┌─────────────────┐
│  Data_Clients   │
├─────────────────┤
│ ClientID (PK)   │◄──────┐
│ Name            │       │
│ Sector          │       │
│ StartDate       │       │
└─────────────────┘       │
                          │ 1:N
┌─────────────────┐       │       ┌─────────────────┐
│   Data_Temps    │       │       │  Data_Revenus   │
├─────────────────┤       │       ├─────────────────┤
│ Date            │       │       │ Date            │
│ ClientID (FK)   │───────┼───────│ ClientID (FK)   │
│ Project         │       │       │ Amount          │
│ Hours           │       │       │ Type            │
│ Description     │       │       └─────────────────┘
└─────────────────┘       │
                          │
                   Relationships

Data Tables

Data_Clients (5 demo rows)

ClientID Name Sector StartDate
CLI001 Acme Corporation Tech 01/15/2024
CLI002 Tech Solutions Tech 03/01/2024
CLI003 Marketing Pro Marketing 06/10/2024
CLI004 E-Shop Plus E-commerce 09/22/2024
CLI005 Finance Group Finance 11/05/2024

Data_Temps (10 demo rows)

Date ClientID Project Hours Description
01/02/2025 CLI001 Website 3.5 Mockups
01/02/2025 CLI002 Backend API 6.0 Endpoints
01/03/2025 CLI001 Website 4.0 Integration
... ... ... ... ...

Total: 43.5 hours over 10 entries

Data_Revenus (7 demo rows)

Date ClientID Amount Type
01/15/2025 CLI001 2,500.00 Invoice
01/20/2025 CLI002 4,200.00 Invoice
01/25/2025 CLI003 1,800.00 Invoice
... ... ... ...

Total: $16,300 over 7 payments

Business Rules

  1. One client can have multiple time entries (1:N)
  2. One client can have multiple payments (1:N)
  3. ClientID is the join key
  4. No cascade deletion: Archiving with flag rather than DELETE
  5. Dates: Format mm/dd/yyyy (US) or dd/mm/yyyy (FR) depending on Excel locale

Key Performance Indicators (KPIs)

Operational KPIs

KPI Simplified Formula Format Benchmark
Total Revenue =SUM(Revenus[Amount]) $#,##0 Monthly target = $10,000
Total Hours =SUM(Temps[Hours]) 0.0 "h" 140h/month (7h × 20d)
Average Hourly Rate =Revenue / Hours $0.00/h US Market: $50-150/h
Active Clients =COUNTA(UNIQUE(...)) 0 5-10 clients = good balance

Strategic KPIs

Metric Calculation Target Action if Off-Target
Client Concentration % revenue from top client < 40% Diversify portfolio
Occupancy Rate Billable hours / Work hours > 70% Prospect if < 50%
Revenue Variation (Rev month N - Rev month N-1) / Rev month N-1 > 0% Analyze causes if negative
Projects per Client Avg(# projects / Client) > 2 Retention, upsell

Automatic Alerts

Configuration in Config:

IF Hours_Week > 50 THEN Alert "Overload"
IF Month_Revenue < 80% Target AND Day > 20 THEN Alert "Target at risk"
IF Top_Client > 50% Total_Revenue THEN Alert "Client dependency"

Implemented via conditional formatting + optional macro.


Technologies and Tools

Technical Stack

Layer Technology Version Usage
Interface Microsoft Excel 2016+ / M365 UI, charts, formulas
Business Logic Excel Formulas - KPI calculations, aggregations
Automation VBA (Visual Basic for Applications) 7.1 Macros, refresh, export
Development VBA MCP Server 0.6.0+ Code injection, automation
Versioning Git 2.x Change tracking
Documentation Markdown - README, technical specs

Excel Features Used

Formulas

  • SUMIFS / COUNTIFS: Multiple conditional aggregations
  • INDEX / MATCH: Advanced lookups (replaces VLOOKUP)
  • XLOOKUP: Modern lookup function (Excel 365)
  • LET: Variables in formulas (Excel 365)
  • FILTER / UNIQUE: Dynamic array manipulation (Excel 365)
  • SUMPRODUCT: Matrix calculations without array formulas

Excel Objects

  • Excel Tables (ListObjects): Self-expanding structured tables
  • PivotTables: Dynamic pivot tables
  • Slicers: Connected visual filters
  • Conditional Formatting: Rules-based formatting
  • Data Validation: Dropdown lists, constraints
  • Named Ranges: Named ranges for readability

Charts

  • Bar Chart: Vertical/horizontal bar charts
  • Pie Chart / Donut: Pie charts
  • Line Chart: Evolution curves
  • Combo Chart: Combined charts (bars + line)

Development Tools

VBA MCP Server

MCP (Model Context Protocol) server enabling Excel automation via API:

# Example: Write data
set_worksheet_data(
    file_path="FreelanceDashboard.xlsx",
    sheet_name="Data_Clients",
    data=[["CLI001", "Acme Corp", "Tech", "01/15/2024"]]
)

# Example: Create Excel table
create_excel_table(
    file_path="FreelanceDashboard.xlsx",
    sheet_name="Data_Clients",
    range="A1:D6",
    table_name="tbl_Clients"
)

# Example: Inject VBA
inject_vba(
    file_path="FreelanceDashboard.xlsm",
    module_name="mod_Refresh",
    code=vba_code
)

MCP Workflow

  1. Phases 1-2: File structure and formulas via MCP (automated)
  2. Phases 3-5: Pivot tables, charts, design via Excel UI (manual)
  3. Phase 6: VBA macro injection via MCP (automated)

Development Process

Methodology

Hybrid approach: Automation (MCP) + Manual (Excel UI)

Phase Content Method Estimated Duration
1 File structure + tables MCP VBA 1h
2 KPI formulas MCP VBA 1h
3 Pivot tables Excel UI 1h
4 Charts Excel UI 2h
5 Dashboard layout + slicers Excel UI 2h
6 Design polish + demo data Excel UI 1h
7 Testing + documentation Manual 1h

Total: 9 hours

Phase 1: Structure (MCP)

Actions

  • Create 5 sheets (Dashboard, Data_Clients, Data_Temps, Data_Revenus, Config)
  • Create 3 Excel Tables with headers
  • Populate with demo data (5 clients, 10 time entries, 7 payments)
  • Configure data validation (dropdown lists)

MCP Code

# Create client table
data = [
    ["ClientID", "Name", "Sector", "StartDate"],
    ["CLI001", "Acme Corporation", "Tech", "01/15/2024"],
    # ... other rows
]
set_worksheet_data("templates/FreelanceDashboard.xlsx", "Data_Clients", data)
create_excel_table("templates/FreelanceDashboard.xlsx", "Data_Clients", "A1:D6", "tbl_Clients")

Phase 2: Formulas (MCP)

Actions

  • Write 8 KPI formulas in Dashboard sheet
  • Create calculated columns in tables (Month, Week, ClientName)
  • Configure basic conditional formatting

MCP Code

kpis = [
    ["Total Revenue", "=SUM(tbl_Revenus[Amount])"],
    ["Total Hours", "=SUM(tbl_Temps[Hours])"],
    ["Average Hourly Rate", "=B1/B2"],
    # ... other KPIs
]
set_worksheet_data("templates/FreelanceDashboard.xlsx", "Dashboard", kpis, start_cell="A1")

Phases 3-5: Visualization (Excel UI)

Actions

  • Create 4 pivot tables
  • Generate 4 dynamic charts
  • Add slicers (Clients, Year, Quarter)
  • Position elements on dashboard
  • Apply color palette
  • Adjust fonts, sizes, spacing

MCP Limitations

VBA MCP Server cannot create:

  • Pivot tables
  • Charts
  • Slicers
  • Advanced visual formatting

These elements must be created manually in Excel.

Phase 6: VBA (MCP - Optional)

Actions

  • Validate VBA syntax with validate_vba
  • Inject mod_Refresh module with inject_vba
  • Create dashboard buttons to execute macros
  • Test execution with run_macro

Code

vba_code = '''
Sub RefreshDashboard()
    Application.CalculateFull
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        Dim pt As PivotTable
        For Each pt In ws.PivotTables
            pt.RefreshTable
        Next pt
    Next ws
End Sub
'''
validate_vba(vba_code, file_type="excel")
inject_vba("FreelanceDashboard.xlsm", "mod_Refresh", vba_code)

Phase 7: Testing & Documentation

Test Checklist

  • Enter new row in each table
  • Data validation (invalid ClientID, hours out of range)
  • Automatic KPI recalculation
  • Filtering via slicers
  • Execute RefreshDashboard macro
  • PDF export of dashboard
  • Excel 2016 / 2019 / M365 compatibility

Deliverables

  • FreelanceDashboard.xlsm (final file)
  • README.md (instructions)
  • TECHNICAL_REFERENCE.md (this document)
  • PNG screenshots of dashboard
  • (Optional) 1-min demo video

Demonstrated Skills

Technical Skills

Domain Skills Level
Advanced Excel Complex formulas, pivot tables, charts, slicers Expert
VBA Macros, UserForms, automation, API calls Advanced
Data Modeling Relational schema, normalization, keys Intermediate
Business Intelligence KPIs, dashboards, data visualization Advanced
Automation Python scripting, MCP server, CLI tools Intermediate
UX/UI Design Layout, colors, visual hierarchy Intermediate

Soft Skills

  • Business Analysis: Identification of freelance pain points
  • Design: Data modeling and architecture choices
  • Documentation: Clear technical specifications writing
  • Methodology: Hybrid auto/manual approach
  • Quality: Testing, validation, error handling

Comparable Use Cases

This project demonstrates skills applicable to:

  1. HR Dashboards: Leave tracking, absences, performance
  2. Sales Dashboards: Sales pipeline, revenue by product
  3. Financial Reporting: Budgets, forecast vs actual
  4. Project Tracking: Gantt, workload, budget
  5. Inventory: Stock, movements, stockout alerts

Results and Impact

Measurable Gains

Before After Gain
30 min/week manual entry 5 min/week 83% time saved
3 separate Excel files 1 unified file Simplicity
Manual calculations prone to error Automatic formulas Zero errors
No global vision Real-time dashboard Better decisions
Amateur presentation Professional design Client credibility

Project ROI

  • Investment: 9h development @ $75/h = $675
  • Annual gain: 25h saved @ $75/h = $1,875
  • ROI: 178% first year

Not counting:

  • More accurate billing (less under-billing)
  • Better rate negotiation (knowledge of actual rate)
  • Identification of unprofitable clients

Testimonial (Simulated)

"Before I had 3 different Excel files and spent 30 minutes every Friday doing my calculations. Now everything is centralized and KPIs are up-to-date in real-time. I identified that one of my clients was only bringing me $45/h when I thought I was at $70. I was able to renegotiate my rates thanks to this data."

Marie L., Freelance Marketing Consultant

Possible Evolution (V2)

Feature Complexity Impact
Automatic connection to TimeTrack Pro (Access) Medium ++++
Import invoices from accounting software Medium +++
Forecast / Quarterly objectives Easy ++
Multi-currency with API exchange rates Hard ++
Automatic export to Google Sheets Medium +
Mobile app (time entry) Very hard ++++

Appendices

Resources

Project Files

freelance-dashboard/
├── README.md                   # User documentation
├── TECHNICAL_REFERENCE.md      # THIS FILE - Technical reference
├── PLAN.md                     # Project plan (9h)
├── DATA_MODEL.md               # Table schema
├── FORMULAS.md                 # All Excel formulas
├── CLAUDE.md                   # AI instructions
├── docs/
│   └── MCP_VBA_GUIDE.md        # MCP guide
├── templates/
│   └── FreelanceDashboard.xlsx # Final Excel file
└── scripts/
    └── populate_demo.py        # Demo data population script

Contact

Author: Alexis Trouve Email: alexistrouve.pro@gmail.com GitHub: https://github.com/AlexisTrouve?tab=repositories


License

MIT License - This project can be freely used for commercial or personal purposes.


Document Version: 1.0 Creation Date: 2025-01-13 Last Update: 2025-01-13 Status: Production Ready