Production System Built: January 2025 Timeline: 2 weeks Role: Solo Developer
The Problem: As a freelance developer on Upwork, I was spending 8-10 hours per week on repetitive tasks:
This created two major issues:
The Solution: FreelanceOS is an end-to-end automation system that handles the complete freelance workflow from job discovery through project completion. Built using n8n workflow automation, Claude AI for proposal generation, and Telegram for mobile-first approvals, it transforms hours of manual work into minutes of strategic decision-making.
The Impact:
| Metric | Before Automation | After Automation | Improvement |
|---|---|---|---|
| Job Screening | 3-4 hours/week | 30 minutes/week | 87% reduction |
| Proposal Writing | 30-45 min each | 60 seconds each | 98% reduction |
| Response Time | 2-3 hours | 10 minutes | 12-18Γ faster |
| Mobile Operation | 0% (desktop only) | 95% (phone) | New capability |
| Proposal Quality | Variable (fatigue) | Consistent (AI) | Standardized |
| Weekly Admin Time | 8-10 hours | 1-2 hours | 80% time savings |
| Monthly Value | -$800 (lost time) | +$2,200 (saved time) | $3,000 swing |
graph TB
subgraph "Input Sources"
A[Email Job Alerts]
B[Manual Telegram Trigger]
end
subgraph "Core Automation Engine"
C[n8n Workflow Orchestration]
D[PostgreSQL State Store]
end
subgraph "AI & Services"
E[Claude API<br/>Proposal Generation]
F[ClickUp<br/>Project Tracking]
G[Toggl<br/>Time Tracking]
end
subgraph "Mobile Interface"
H[Telegram Bot<br/>Approvals & Notifications]
end
A --> C
B --> C
C <--> D
C <--> E
C <--> F
C <--> G
C <--> H
H --> User[π± User Mobile]
style A fill:#e1f5ff
style B fill:#e1f5ff
style C fill:#fff4e1
style E fill:#f0e1ff
style H fill:#e1ffe1
style User fill:#ffe1e1
Key Components:
Data Flow:
| Category | Technology | Why Chosen |
|---|---|---|
| Workflow Engine | n8n | Open-source, visual workflow builder, extensive integrations, self-hostable for data privacy |
| AI Engine | Claude API (Sonnet 4.5) | Superior writing quality for proposals, 200K context window, precise instruction following |
| Project Management | ClickUp | Robust API, flexible structure, mobile app, unlimited plan at $9/month |
| Mobile Interface | Telegram Bot | Universal platform, rich bot API, instant delivery, no custom app development needed |
| Time Tracking | Toggl | Simple API, widely used, Upwork integration available |
| Database | PostgreSQL | n8n workflow state, job history, performance metrics |
| Infrastructure | Docker + DigitalOcean VPS | Reproducible deployments, 4GB RAM server ($40/month), complete control |
Cost Analysis:
Problem: Telegram bots can only register ONE webhook URL globally. I needed to handle multiple workflow types (approvals, commands, notifications) but couldnβt create separate webhooks per workflow.
Options Considered:
Solution Chosen: Master router workflow with cascading IF nodes
Why:
Result: Single webhook routes to 12+ different workflow types with <100ms routing overhead
Technical Pattern (Conceptual):
// Telegram webhook receives update
// Master router examines:
// - update.message.text (for commands like /approve)
// - update.callback_query.data (for inline button presses)
// - update type (message, callback, etc.)
// Routes to appropriate sub-workflow via webhook trigger
Problem: n8n workflows are stateless by default. I needed to maintain context across multiple executions:
Options Considered:
workflow.staticData β Built-in persistenceSolution Chosen: workflow.staticData with PostgreSQL fallback
Why:
Result: Sub-second state retrieval, zero infrastructure additions
Problem: As a homeschool parent, my work happens in fragmented 10-15 minute blocks throughout the day. Desktop-based approval systems donβt work for this schedule.
Options Considered:
Solution Chosen: Telegram bot with inline keyboards
Why:
Result: 95% of system operations (screening, approvals, tracking) performed entirely from mobile device
Problem: Upwork doesnβt provide official RSS feeds or job discovery API. Previous workarounds:
Options Considered:
Solution Chosen: Hybrid email parsing + Telegram manual trigger
Why:
Implementation:
/submit_job <url> command for manual high-priority jobsResult: Real-time job discovery (1-2 minute email lag) with 100% ToS compliance
This repository contains conceptual examples and pseudocode to demonstrate architectural thinking. Full implementation contains proprietary business logic.
See: examples/scoring-algorithm.md
Concept: Multi-factor scoring system evaluates job opportunities across 8 dimensions (budget, client history, skills match, red flags, etc.). High-scoring jobs (β₯70/100) proceed to proposal generation.
See: examples/state-management.js
Concept: Using workflow.staticData for cross-execution persistence without external dependencies.
See: examples/webhook-router.md
Concept: Single webhook endpoint routes to multiple workflow types using pattern matching.
See: examples/error-handling.js
Concept: Fail-safe design where service failures trigger Telegram alerts rather than blocking workflows.
Technical Skills:
Architecture Patterns:
Problem-Solving:
This portfolio piece showcases architectural thinking and problem-solving approach. The full implementation contains proprietary business logic and is not publicly available.
Whatβs included in this repository:
Whatβs not included:
Why this approach?
This system represents significant competitive advantage in the freelance marketplace. The specific scoring criteria, prompt engineering, and workflow orchestration are the result of extensive testing and refinement. Sharing these would eliminate the advantage while the high-level architecture demonstrates technical capability.
What makes this system notable:
Zero Custom Code: Entire system built with low-code tools (n8n) + AI API, demonstrating effective tool selection over reinventing wheels
Mobile-First Philosophy: 95% mobile operation proves automation can work for non-desk workflows (important for parents, digital nomads, etc.)
Telegram Single Webhook Solution: Novel approach to Telegramβs webhook limitation using master router pattern
ToS Compliance: Email parsing approach respects platform rules while achieving automation goals
Cost-Effectiveness: $67/month operating cost with multi-thousand dollar monthly ROI
AI Prompt Engineering: Claude prompts refined to generate high-quality, personalized proposals (not generic templates)
Timeline: 2 weeks (initial build) + ongoing refinements Role: Solo developer - architecture, implementation, deployment Status: Production system running since January 2025 Scale: Processing 30-40 jobs/day, managing 5-10 concurrent projects
Technologies Mastered:
Interested in discussing this project or similar automation challenges?
π§ Email: cbosman@praxisprotocol.io πΌ LinkedIn: linkedin.com/in/csbosman π GitHub: github.com/bozzdev
This project demonstrates capabilities in:
Available for consulting on similar automation projects, AI integration, or technical architecture.
Documentation: MIT License Code Examples: MIT License (pseudocode/concepts only)
Portfolio piece created February 2025. Project built January 2025.
Note: This is a portfolio demonstration. For full details on implementation approach, technical deep-dives, or to discuss similar projects, please reach out directly.