Desk — Project Story

What Inspired Us

Freelancing is one of the most liberating ways to work. You choose your clients, your hours, your rates. But the moment you land your first client, you realize the work itself is only half the job. The other half is the business — and nobody prepared you for it.

We watched independent professionals piece together their operations from a graveyard of disconnected tools. Notion for project briefs. Stripe for invoices. Gmail threads doubling as contracts. Wave for accounting. Calendly for scheduling. Each tool solved one problem and created three more. The average freelancer touches six different platforms before they send a single invoice.

The math is bleak. If a freelancer bills at $75/hour and loses 5 hours a week to administrative tool-switching, that's $375 gone every week this is nearly $20,000 a year in unbilled time. And that's before accounting for late payments that never got chased because the reminder system lived in a spreadsheet nobody updated.

$$\text{Annual unbilled loss} = \text{hourly rate} \times \text{admin hours/week} \times 52$$

We wanted to build the thing that should have existed ten years ago: one calm, professional workspace where a freelancer runs their entire business without leaving.

What We Learned

Building Desk with MeDo taught me something I didn't expect going in, the constraint of natural language as your primary interface forces you to think more clearly about product design than code ever did.

When you write code, you can defer decisions. You stub things out, leave TODOs, ship something half-baked and come back to it. When you're prompting MeDo, vagueness costs you. An underspecified component produces an underspecified result. I learned to front-load every design decision before touching the builder.

I also learned how MeDo's plugin system changes the calculus of what's worth building. Features that would have taken days to wire up manually aka multi-currency invoice conversion via the ExchangeRate skill, client portal translation via Google Text Translation became very easy to setup. The build velocity is genuinely different.

On the product side, I learned that freelancers don't need more features. They need fewer, done right. Every time we considered adding something, I asked one question: does this help someone get paid, or does it just look impressive in a demo? If the answer was the latter, it didn't ship.

How I Built It

I started with the design system before writing a single prompt. The entire visual language was four colors (#121212, #FFFFFF, #F4F4F4, #D9D9D9), Geist typeface, letter-spacing: -0.05em on every text element, fully pill-shaped buttons at border-radius: 9999px, this was locked in an XML specification document that we pasted at the start of every MeDo session. This kept the visual identity consistent across ten pages built across multiple sessions.

  1. Homepage — established the design language and gave us a reference point for everything that followed
  2. Auth pages — registration and login, simple and fast
  3. Dashboard — the client list, the first real product screen
  4. Client Detail + Proposal Builder — the core workflow
  5. Budget Detail, Contract Generation, Pricing, Client Portal — completing the full surface area
  6. Add/Edit Client modal + Invoice Creation flow — the out-of-scope features that turned a prototype into a product
  7. Client Pages that contained the ciew for a client, including the client dashboard, settings, proposals and many more pages different from the user that actually made the client interact better with the user (aka freelancer)

Each new page was built by feeding MeDo a detailed XML prompt that specified layout, typography, spacing, component behavior, responsive rules, validation logic, and interaction patterns. The XML structure gave the agent clear hierarchical context: sections, fields, states, and edge cases.

The plugin integrations were layered in last:

  • Stripe handles subscription billing and invoice payments
  • ExchangeRate powers live currency conversion on invoices
  • Google Text Translation allows clients in the portal to read all their documents in their preferred language with one click
  • Resend handles email sending for the client and the user

Challenges I Faced

Scope discipline. The requirements document had a long list of out-of-scope features for the initial release. Sticking to that list was genuinely hard. The temptation to add time tracking, recurring invoices, and team collaboration was real. I kept returning to the same test: does this help someone get paid faster? If not, it's a future release.

Balancing depth with demo-ability. A hackathon submission needs to be navigable in three minutes. Desk has ten pages and a meaningful number of interaction states. We had to make sure every page was actually important to the project

Built With

  • medo
Share this project:

Updates