Free project management is possible — and I'm not talking about limited freemium plans. I'm talking about a complete, self-hosted system with AI prioritization that replaces $100+/month tools. Here's how I do it.
The Problem: Expensive and Limited Project Management Software
I've used project managers for years. Asana, Linear, ClickUp, Notion... all good, but all expensive.
Real costs:
- Linear: $8/user/month (basic), $14/month (pro) → $168/year minimum
- Asana: $10.99/user/month → $132/year
- ClickUp: $9/user/month → $108/year
- Notion Projects: $10/month → $120/year
Multiply that by a team (even if it's just you + 2 people) and you're at $300-500/year.
And the problem isn't just cost. It's that none of them adapt 100% to how I work:
- Can't automate prioritization with AI
- Can't integrate with my AI agent (OpenClaw)
- Can't customize the scoring logic
- Data on third-party servers
- API limitations
So I asked: What if I build my own free project management system?
The Solution: OpenClaw + NocoDB on My VPS
I have a VPS I already pay for ($20/month for my ENTIRE stack). Why not use it for project management too?
Complete stack:
- NocoDB (visual database, Airtable alternative) → Free, self-hosted
- OpenClaw (autonomous AI agent) → Free, open source
- Python script (automatic prioritization) → Wrote it in 30 minutes
Additional cost: $0/month
And it's not just a table. NocoDB includes a Kanban view with drag & drop — I can drag tasks between columns (Backlog → In Progress → Done) exactly like Trello or Linear. It also has gallery views, forms, and calendar views. All without paying anything extra.
Features:
- ✅ Task management (NocoDB UI)
- ✅ Intelligent prioritization (Python script + AI)
- ✅ Automatic assignment (OpenClaw analyzes projects)
- ✅ Optimized daily plan (exactly 4 hours)
- ✅ Impact categorization (Monetization > Customer Value > Growth > Tech Debt)
- ✅ Data 100% under my control
- ✅ Complete API without limits
How It Works: The Complete System
1. Database in NocoDB
Tasks table with fields:
| Field | Type | Description |
|---|---|---|
| Task | Text | Short description |
| Project | Text | Which project it belongs to |
| Priority | Select | P0 (Critical), P1 (Important), P2 (Can Wait), P3 (Nice to Have) |
| Status | Select | Backlog, In Progress, Blocked, Done, Archived |
| Assignee | Select | AI agent, Me, Delegatable, TBD |
| Due Date | Date | Deadline |
| Category | Select | SEO, Content, Newsletter, Monetization, Course, etc. |
| Type | Select | 💰 Monetization, ❤️ Customer Value, 📈 Growth, 🔧 Tech Debt |
| Value (1-10) | Number | Expected impact |
| Effort | Select | 15 min, 30 min, 1 hour, 2-4 hours, 1 day, 1 week+ |
| Notes | Long text | Additional context |
NocoDB setup in 5 minutes:
version: '3'
services:
nocodb:
image: nocodb/nocodb:latest
ports:
- "8080:8080"
environment:
NC_DB: "pg://postgres:5432?u=nocodb&p=password&d=nocodb"
volumes:
- ./data:/usr/app/data
2. Intelligent Prioritization Script
The heart of the system: a Python script that reads NocoDB and generates the 4-hour daily plan.
Scoring logic:
score = (value * priority_weight * type_multiplier) / effort_hours
Weights:
- Priority: P0 = 4x, P1 = 3x, P2 = 2x, P3 = 1x
- Type: Monetization = 3x, Customer Value = 2.5x, Growth = 2x, Tech Debt = 1x
- Overdue bonus: +0.5 per day late (max +5)
Why this works: It reflects my actual philosophy — revenue first, then happy users, then acquisition, then technical optimization. Not all tasks are equal. A P1 Monetization task (contacting sponsors) is worth MORE than a P0 Tech Debt task (updating an about page).
The complete script:
#!/usr/bin/env python3
"""
Daily Priority Planner - NocoDB
Score = (value * priority * type) / effort
Fills exactly 4 hours/day
"""
import requests
from datetime import datetime
NOCODB_URL = "https://nocodb.yourdomain.com"
PROJECT_ID = "your_project_id"
TABLE_ID = "your_table_id"
DAILY_MINUTES = 240 # 4 hours
EFFORT_MAP = {
"15 min": 15,
"30 min": 30,
"1 hour": 60,
"2-4 hours": 180,
"1 day": 480,
"1 week+": 2400,
}
PRIORITY_WEIGHT = {
"P0 - Critical": 4,
"P1 - Important": 3,
"P2 - Can Wait": 2,
"P3 - Nice to Have": 1,
}
TYPE_MULTIPLIER = {
"💰 Monetization": 3.0,
"❤️ Customer Value": 2.5,
"📈 Growth": 2.0,
"🔧 Tech Debt": 1.0,
}
def score_task(task):
value = task.get("Value (1-10)", 5)
priority = PRIORITY_WEIGHT.get(task.get("Priority", ""), 2)
tipo = TYPE_MULTIPLIER.get(task.get("Type", ""), 1.5)
effort_min = EFFORT_MAP.get(task.get("Effort", "2-4 hours"), 180)
# Overdue bonus
due = task.get("Due Date")
bonus = 0
if due:
days_until = (datetime.strptime(due[:10], "%Y-%m-%d") - datetime.now()).days
if days_until < 0:
bonus = min(abs(days_until) * 0.5, 5)
return ((value + bonus) * priority * tipo) / (effort_min / 60)
def build_plan(tasks, max_minutes=DAILY_MINUTES):
scored = sorted([(score_task(t), t) for t in tasks], key=lambda x: -x[0])
plan = []
total = 0
for score, task in scored:
effort_min = EFFORT_MAP.get(task.get("Effort", "2-4 hours"), 180)
if total + effort_min <= max_minutes:
plan.append((score, task, effort_min))
total += effort_min
return plan, total
Sample output (my actual daily plan):
📋 Daily Plan - Thursday (240 min / 240 min)
1. [P0] 📈 Growth Install Rank Math
⏱️ 30 min | Score: 176.0
2. [P0] 💰 Monetization Email outreach warm leads
⏱️ 1 hour | Score: 144.0
3. [P1] 📈 Growth Reindex blog in Google
⏱️ 15 min | Score: 120.0
4. [P1] 📈 Growth Schema Markup implementation
⏱️ 30 min | Score: 84.0
5. [P0] 🔧 Tech Debt Monitor community migration
⏱️ 30 min | Score: 72.0
🤖 AI: 180 min | 👤 Me: 60 min | 📊 Total: 240 min
3. OpenClaw: My AI Agent
OpenClaw is an autonomous AI agent that:
- Reads my projects (README.md, TODO.md files)
- Extracts pending tasks
- Automatically adds them to NocoDB
- Categorizes them (Monetization, Customer Value, etc.)
- Executes the tasks I assign to it
Real example: I told OpenClaw "Generate the task list in NocoDB. Remember to review prioritization carefully."
OpenClaw:
- Scanned all my projects in
~/projects/ - Found 11 missing tasks
- Added them to NocoDB with automatic categorization
- Updated the prioritization script
- Showed me the daily plan
All in 3 minutes.
Without OpenClaw, this would have taken me 30-45 minutes manually.
Notion vs My System
| Feature | Notion ($10-18/mo) | My System ($0/mo) |
|---|---|---|
| AI prioritization | ❌ Manual | ✅ Automatic (math score) |
| Project context | ❌ Generic AI | ✅ OpenClaw knows ALL context |
| Performance | ⚠️ Slow with 100+ rows | ✅ PostgreSQL (thousands of rows) |
| Automations | ⚠️ Basic | ✅ Arbitrary Python scripts |
| Self-hosted | ❌ SaaS required | ✅ 100% yours |
| Auto daily plan | ❌ Doesn't exist | ✅ Exactly 4h/day |
| AI agent integration | ❌ No | ✅ Direct read/write |
When to use Notion: If your team is non-technical and needs wiki + project management in one. The UI is unbeatable for that.
When not to use Notion: If you're a technical founder who wants full control, AI integration, and doesn't want to pay $10-18/month for something you can have free.
Complete Stack Comparison
| Feature | Linear ($14/mo) | Asana ($11/mo) | My System ($0/mo) |
|---|---|---|---|
| Annual cost | $168 | $132 | $0 (VPS already exists) |
| AI prioritization | ❌ Manual | ❌ Manual | ✅ Script + OpenClaw |
| Custom logic | ❌ Limited | ❌ Limited | ✅ 100% control |
| Self-hosted | ❌ SaaS | ❌ SaaS | ✅ Yes |
| Auto daily plan | ❌ No | ❌ No | ✅ Yes (4h exact) |
| Kanban view | ✅ Native | ✅ Board | ✅ Drag & drop |
Hosting Setup
For the VPS, I run:
- NocoDB (task management)
- Listmonk (newsletter)
- n8n (automation)
- PostgreSQL (shared DB)
- Caddy (reverse proxy)
- OpenClaw (AI agent)
Cost: ~$12/month for EVERYTHING
Equivalent SaaS:
- Linear: $14/month
- ConvertKit: $29/month (newsletter)
- Zapier: $20/month (automation)
- Total SaaS: $63/month
Savings: ~$51/month = $612/year
When NOT to Use This System
- Non-technical team: If your team doesn't use terminal, Linear/Asana are better (polished UI)
- No VPS: If you don't have a server, you need one — but a Hostinger VPS starts at $5.99/month, still cheaper than SaaS alternatives
- Mobile-critical: My system is web-responsive but not a native app
- No time for setup: 1 initial hour might be too much if you're in a rush
Conclusion: Is It Worth It?
Yes, if:
- You're a technical founder
- You have a VPS (or plan to get one)
- You value control and customization
- You want to integrate AI into your workflow
No, if:
- Non-technical team
- No time for initial setup
- Mobile is 95% of your work
- Budget isn't a concern
For me: Game changer. 45+ active tasks, 7 active projects, all done in 4 mathematically-prioritized hours/day.
And free.
Want to see this in action? Join Cágala, Aprende, Repite — where I share these setups in detail, including complete scripts and configurations.
📝 Originally published in Spanish at cristiantala.com
Top comments (0)