DEV Community

Cover image for πŸš€ FreelanceOS
Simran Shaikh
Simran Shaikh Subscriber

Posted on

πŸš€ FreelanceOS

Notion MCP Challenge Submission 🧠

πŸš€ FreelanceOS β€” AI-Powered Operating System for Freelancers

What I Built

FreelanceOS is a complete AI-powered operating system for freelancers and solopreneurs, built entirely on Notion MCP + Google Gemini AI.

Freelancers waste 5–10 hours every week on admin work that doesn't pay β€” writing contracts, creating invoices, sending client update emails, and chasing unpaid payments. FreelanceOS eliminates all of that.

You type a few words. FreelanceOS generates a professional AI-written contract, invoice, or client email β€” and saves it directly into your Notion workspace automatically.


The Problem It Solves

Admin Task Time Wasted Per Week
Writing freelance contracts 1–2 hours
Creating & formatting invoices 30–60 mins
Writing client update emails 20–30 mins
Tracking unpaid invoices Hours per month
Managing clients & projects across tools Daily friction

FreelanceOS collapses all of this into one AI-powered Notion workspace.


✨ Core Features

πŸ“Š AI Dashboard
Pulls live data from all 5 Notion databases and feeds it to Gemini AI, which analyzes your portfolio and gives you personalized business insights β€” total revenue potential, overdue projects, workload balance, and 3 actionable recommendations.

AI Dashboard


πŸ“„ AI Contract Generator
Enter client name, project description, budget, and deadline. FreelanceOS generates a complete professional freelance contract with scope, payment terms, revision policy, ownership rights, and termination clause β€” saved instantly to your Notion Contracts database.

Contract Generator


🧾 AI Invoice Generator
Enter client name, amount, and work done. FreelanceOS generates a professional itemized invoice with payment instructions and due dates β€” saved to your Notion Invoices database as "Unpaid" and tracked automatically.

Invoice Generator


πŸ‘₯ Client & Project Management
Full CRUD operations on Clients and Projects β€” all stored and managed through Notion MCP.

Add User

Add Project


πŸšͺ Clean Exit

Exit Screen


πŸ—ΊοΈ System Architecture

User Input (CLI)
      β”‚
      β–Ό
FreelanceOS (Python)
      β”‚
      β”œβ”€β”€β–Ά Google Gemini AI ──▢ AI-Generated Content
      β”‚                               β”‚
      └──▢ Notion MCP API β—€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                β”‚
                β–Ό
        Notion Workspace
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚  Clients   Projects  β”‚
    β”‚  Invoices  Contracts β”‚
    β”‚  Expenses            β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Enter fullscreen mode Exit fullscreen mode

Show us the code

πŸ”— GitHub Repository: github.com/SimranShaikh20/FreelanceOS

Project Structure

freelance-os/
β”‚
β”œβ”€β”€ main.py                 ← Entry point
β”œβ”€β”€ notion_helper.py        ← All Notion MCP API calls
β”œβ”€β”€ ai_helper.py            ← All Gemini AI calls
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ .env.example
β”‚
└── features/
    β”œβ”€β”€ dashboard.py        ← AI-powered insights
    β”œβ”€β”€ clients.py          ← Client management
    β”œβ”€β”€ projects.py         ← Project tracking
    β”œβ”€β”€ contracts.py        ← AI contract generation
    β”œβ”€β”€ invoices.py         ← AI invoice generation
    └── emails.py           ← AI email generation
Enter fullscreen mode Exit fullscreen mode

Key Code Snippets

AI Contract Generation:

def generate_contract(client_name, project_desc, budget, deadline):
    prompt = f"""
    Write a professional freelance contract:
    Client: {client_name}
    Project: {project_desc}
    Budget: ${budget}
    Deadline: {deadline}
    Include: scope, payment terms, revision policy,
    ownership rights, termination clause
    """
    return generate_text(prompt)
Enter fullscreen mode Exit fullscreen mode

Saving to Notion MCP:

def add_contract(client_name, project_desc, budget, content):
    db_id = os.getenv("CONTRACTS_DB_ID")
    data = {
        "parent": {"database_id": db_id},
        "properties": {
            "Name": {"title": [{"text": {"content": f"Contract - {client_name}"}}]},
            "Client": {"rich_text": [{"text": {"content": client_name}}]},
            "Budget": {"number": float(budget)},
            "Content": {"rich_text": [{"text": {"content": content[:2000]}}]},
            "Status": {"multi_select": [{"name": "Draft"}]}
        }
    }
    result = notion_post("pages", data)
Enter fullscreen mode Exit fullscreen mode

AI Dashboard Insights:

def generate_project_summary(projects):
    project_list = "\n".join([
        f"- {p['name']}: ${p['budget']} ({p['status']})" 
        for p in projects
    ])
    prompt = f"""
    Analyze these freelance projects:
    {project_list}
    Give: revenue potential, attention needed,
    workload assessment, 3 recommendations.
    """
    return generate_text(prompt)
Enter fullscreen mode Exit fullscreen mode

How I Used Notion MCP

Notion MCP is not just a storage layer in FreelanceOS β€” it IS the operating system.

The Integration

FreelanceOS uses Notion MCP as its single source of truth across 5 databases:

Notion Database What FreelanceOS Stores
Clients Name, email, active/inactive status
Projects Name, budget, deadline, progress status
Invoices AI-generated invoice content, amount, paid/unpaid
Contracts Full AI-generated contract text, draft/signed status
Expenses Category, amount, date for tax tracking

What Notion MCP Unlocks

1. Real-time AI + Notion sync
Every AI-generated document (contract, invoice) is immediately written to the correct Notion database via the MCP API. No copy-paste. No manual entry.

2. Live business intelligence
The Dashboard pulls live data from all 5 Notion databases simultaneously, feeds it to Gemini AI, and returns intelligent business insights about your freelance operation β€” all in real time.

3. Persistent workflow memory
Because everything lives in Notion, your freelance OS remembers every client, project, invoice, and contract across sessions. Notion MCP turns a Python script into a stateful business operating system.

4. Human-in-the-loop control
Every AI-generated output is reviewed by the freelancer before saving to Notion. The human stays in control β€” AI handles the generation, Notion handles the storage, the freelancer makes the final call.


πŸ› οΈ Tech Stack

  • Notion MCP β€” Core workspace and data layer
  • Google Gemini 1.5 Flash β€” AI generation (free tier)
  • Python 3 β€” Application logic
  • Rich β€” Beautiful terminal UI
  • Requests β€” Notion API HTTP client

πŸš€ Try It Yourself

git clone https://github.com/SimranShaikh20/FreelanceOS
cd FreelanceOS
pip install -r requirements.txt
# Add your API keys to .env
python main.py
Enter fullscreen mode Exit fullscreen mode

Full setup guide in the README.

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.