
📍Skutr Docs — Day 10. When the client didn't show up, but the brief is needed
Yesterday — a voice that understands business. Today — two big pieces: full editing of the brief in the web dashboard and a scenario when the client didn't show up for the interview.
—
📝 The brief is now editable
Previously, the brief in the web dashboard was read-only — AI generated it, freelancer views it. But in practice, the brief always needs tweaking: clarify the target audience, add integration, change deadlines. Now all 9 fields of the brief are editable directly in the dashboard. And after edits — a button "Regenerate TOR" that recreates the technical specification and cost from the updated brief.
—
💰 Validation: no price — no document
I discovered that a freelancer could save a project and download a PDF without specifying the final cost. This resulted in a document with an empty price field — which cannot be sent to the client.
Now: manual saving is blocked without final_price > 0. PDF generation — also blocked. Both on the frontend (toast notification) and backend (400 error). Meanwhile, auto-save every 30 seconds works without restrictions — so intermediate edits are not lost.
—
✏️ Small things that matter
The project name is now editable inline — click on the title, type, Enter. PDF renamed to "Brief and TOR" — because it now includes the brief. Prompts updated for all 12 project types.
—
🔀 When the client didn't show up for the interview
Second part of the day. Freelancer creates a project, chooses path A (AI interview), sends the link to the client. But the client doesn't show up. The freelancer briefed them themselves — by phone, in correspondence — and wants to upload materials to the already created project. But there was no UI for that. The "Waiting for client" screen was spinning a spinner and waiting. Endlessly.
Added a button "Upload materials manually" on the waiting screen. Full form: text + voice + photo + file. Uploaded — clicked "Generate TOR" — pipeline picks it up.
But under the hood — the pipeline was failing. The project was created with brief_source = "interview", pipeline went to the interview branch, interview empty — error. Uploaded materials were lying nearby, but the pipeline didn't see them.
Fixed: now the pipeline determines the source by fact, not by label. If interview data exists — takes it. If not, but uploaded materials exist — upload path.
—
💡 Insight of the day
The product breaks not on the happy path. The client didn't show up for the interview — this is not an edge case, it's half of the freelancer's reality. If the product can't handle this — it's a toy, not a tool.
—
🎯 Total for the day: editable brief with TOR regeneration, final cost validation, inline name editing, material upload to existing project, auto-detection of data source in pipeline.
—
#buildinpublic #skutrdocs #AI #freelance #selfemployed #startup #SaaS #product #UX
Comments
0No comments yet.
Sign in to join the discussion.