Sunday 6 PM. You open your freelance world to plan the week.
You check Notion for project status โ but the deadline there is stale, the real one is in Trello. You check Sheets for invoices โ Sent but actually overdue since Friday, no alert fired. You check GoDaddy for domain expiry โ you forgot which registrar acme.com is on. You check 1Password for a client handover you promised โ which acme-server entry is production?
90 minutes later you have a vague list on a sticky note and a feeling you forgot something critical.
You did: the invoices overdue 11 days that cron would have flagged, the domain 7 days to expiry amber badge, the lead silent 21 days that just churned.
Freelancers don't need a better weekly plan. They need a weekly review rhythm that surfaces truth without hunt.
Why Weekly Reviews Fail for Freelancers
Everyone agrees weekly reviews are essential. Almost no freelancer does them. Why?
- Data lives in 6 places:
Notionnotes,Trellodeadlines,Sheetsfinance,GoDaddy/Namecheapexpiries,1Passwordvault,Buffercontent. A review requires 6 hunts + manual reconciliation. 90-minute chore โ skipped next week. - No status signal:
SheetscellSentnever flips toOverdue.TrellocardIn Reviewdoesn't knowinvoice sentโpaidsrc/app/api/transactions/route.ts:21. Withoutcronsrc/app/api/cron/daily/route.ts:69sentโoverdue, you review stale truth. - No single view: You can't answer
Who owes me? Which project slips? What expires?in one query. So you answer none.
Without a 30-minute rhythm, you react to client pings instead of operating your business.
The 30-Minute Operating Rhythm (5 Checks, One Dashboard)
In RunoSO, your tenant_${id} graph src/lib/db/tenant.ts:47 makes the review a filter walk, not a dig. Set a 30-minute calendar block Monday 9 AM and run these 5 in order:
Check 1: Finance โ Are You Getting Paid? (7 min)
Open Finance โ Overview FinanceOverviewClient Recharts src/components/finance/FinanceOverviewClient.tsx + InvoicesListClient:
- Filter
invoices status:sentwheredueDate < nowโOverduelist.cronalready flippedsentโoverdueand creatednotifications type:invoice_overduesrc/lib/db/schema-public.ts:195+ digestsendReminderDigestEmailsrc/lib/emails/send.ts:469. You don't hunt overdue โ you process it. - Check
transactionssrc/app/api/transactions/route.ts:89type:income|expenselinkedinvoiceIdsrc/lib/db/schema.ts:98โ doesamount paidmatchinvoices.amount?syncInvoicePaidStatussrc/app/api/transactions/route.ts:21auto-syncedpaid. - Scan
investmentssrc/lib/db/schema.ts:269type:stock|sip|crypto|fdvstransactionsnet โ you seeMRR,receivables,runwaylive, not month-old Sheet.
Action: For each overdue, click resend portal link portalTokens src/lib/db/schema-public.ts:169 โ copy portal/[token] โ send. 3 clicks, not 20-minute Gmail dig.
Check 2: Pipeline โ What Ships This Week? (7 min)
Open Projects src/app/(dashboard)/projects filtered status:active:
- Sort by
deadlinesrc/lib/db/schema.ts:33ascending โAcme Homepage due in 4dtop. Checktaskstodo|in-progress|donesrc/app/api/projects/route.ts:28totalTasks/doneTasks. Ifdone 8/12butdeadline 4d, you slip โ reprioritize. - Scan
budgetvsadvancesrc/lib/db/schema.ts:35-36โ isWebsite Redesign โน1.2L budget, โน30k advancehealthy?transactions Project Advancerow existssrc/app/api/projects/route.ts:145โ no hidden money. - Use
CommandMenu โKsrc/components/layout/CommandMenu.tsx:1โ typeprojectโ jump without sidebar scroll.
Action: For at-risk projects, promote 2 tasks to Today for Monday via isToday:true src/lib/db/schema.ts:247 pre-loaded.
Check 3: Clients โ Who Needs Attention? (5 min)
Open Clients src/app/(dashboard)/clients filtered:
status:leadsrc/lib/db/schema.ts:7โ anycreatedAt >14d agosilent? Ping.leadโactiveconversion stalls here.status:activebutlast project deadline >21d agowith no newprojectโ churn risk. Need check-in.- Open
ClientDetailPageClientsrc/app/(dashboard)/clients/[id]/page.tsxfor top 2 clients โ verifynotes: prefers Slack, NET-15fresh,vaultItemscount matches reality.
Action: Add Follow-up: Acme Q2 retainer to Backlog GET /api/tasks?view=backlog with dueDate: +3d, promote tomorrow if needed.
Check 4: Renewals โ What Expires? (5 min)
Open Assets โ Domains/Hosting/Subscriptions src/app/(dashboard)/assets/page.tsx:
- Filter
expiryDate < now + 14dor see amber badges7 daysfromDOMAIN_MILESTONES [14,7,3,1,0]src/app/api/cron/daily/route.ts:275andRENEWAL_MILESTONES [7,3,1,0]forrenewalDate.autoRenew:falseflagged. - Check
assetsHosting.vaultItemId โ vaultItemssrc/lib/db/schema.ts:198link intact โ IP + credential together so renewal isn't a hunt. assetsSubscriptions billableTo:clientwithcostnot yet invoiced โ createinvoicenowPOST /api/invoices/route.ts:84.
Action: Renew or set autoRenew:true for 2 domains in place โ 1 click per asset.
Check 5: Plan Next Week's Today (6 min)
Open Tasks โ Backlog GET /api/tasks?view=backlog sorted priority:high + dueDate:
- Pick 9 tasks for the week (3 per deep block ร 3 blocks). Not 20. Tag each
scheduledDatesrc/lib/db/schema.ts:248Mon-Wed-Fri. - Promote Mon's 3 to
TodayisToday:truetonight โ Tuesday's will be promoted Monday night. RolloverrunDailyRolloversrc/lib/utils/task-rollover.ts:1will carry any unfinishedrolledOverFrom. - Check
taskStreakssrc/lib/db/schema.ts:257isCompleteDayhistory โ ifFriwas incomplete 2 weeks, make Monday small to rebuild๐ฅ.
30 minutes. 5 checks. One graph. No tab hunt.
Why This Beats Notion / Sheets Rhythm
| Review task | Sheets + Notion + Trello (90 min) | RunoSO tenant_${id} 26 tables (30 min) | |
|---|---|---|---|
Who owes me? | Filter Sheet Sent, guess overdue, no alert | Invoices sentโoverdue auto + notifications + portal resend | |
What ships? | Trello deadline vs Notion budget mismatch | Projects deadline + tasks done/total + budget/advance one page | |
Which client churns? | Search 3 tools for last contact | `Clients status:lead | active + last project` age in one list |
What expires? | GoDaddy + Hostinger + Calendar hunt | Assets 14/7/3/1/0 badges + digest email, linked vaultItemId | |
Plan Today? | Copy-paste Sheet rows, no rollover | Backlog โ Today promote + runDailyRollover + streak ๐ฅ |
You are not saving time. You are reclaiming operator control.
Mistakes That Turn Review Into Chore
Mistake 1: Reviewing Friday night.
You're drained, you skip. Review Monday 9 AM with fresh context after cron nightly batch. Or Sunday 6 PM if you protect it โ but Monday sticks more.
Mistake 2: Treating review as reading.
A review without actions is entertainment. Each check must produce a Backlog task or Today promotion. Finance overdue โ portal resend task. Renewal 7d โ renew task. No action = no rhythm.
Mistake 3: Keeping review data in head.
Acme prefers NET-15 belongs in clients.notes src/lib/db/schema.ts:14, not memory. If you remember it, but new VA doesn't, the system fails when you scale src/lib/plans/limits.ts:28 SoloโPro.
Run the Rhythm This Monday
- Block
30 min Mon 9 AMtitledOperating Reviewโ protect it like a client call. - Open
DashboardGET /api/sidebar/statssrc/app/api/sidebar/stats/route.ts:55badges โ seependingInvoices, remainingTasks, contentDueSoonbefore detail dig. - Run 5 checks in order โ timebox 7-7-5-5-6 โ stop at 30 even if imperfect. Consistency beats completeness.
- End by promoting Monday's 3
Todayโ tomorrow you execute, not plan.
After 4 Mondays, the review becomes muscle. And your freelance business stops surprising you at midnight.
RunoSO is the operating rhythm โ finance, pipeline, clients, renewals, and Today's plan in one tenant_${id} graph with cron, rollover, and streaks.
โ Start Your Rhythm Free on RunoSO
By Gautam Parmar src/app/(marketing)/about/page.tsx:44 โ solo founder, Next.js 16 Razorpay Resend, building 26-table Drizzle OS in public on X.
Keep Reading
- Daily execution: daily system today vs backlog.
- Focus system: deep work for freelancers.
- Dashboard truth: solo business metrics dashboard.
FAQ
When should I do the weekly review? Monday 9 AM (or Sunday 6 PM protected). Timebox 30 minutes across 5 checks โ finance, pipeline, clients, renewals, plan Today.
What if I miss a week? cron and rollover held the fort โ overdue flipped, rolledOverFrom carried. Resume next Monday; system didn't lose truth.
How does review link to daily Today? Review selects week's 9 tasks + schedules them; each night you promote tomorrow's 3 to isToday:true. Weekly rhythm feeds daily streak.



