DEV Community

Gagan Thakur
Gagan Thakur

Posted on AI-assisted

I turned my client calls into LinkedIn posts with a voice note. Here is what I built.

I have spent about 15 years in tech, the last several as a solo independent consultant. The best ideas I have rarely show up when I'm sitting down to write. They show up on a client call, or right after one.

A question a client asks. A decision I'd make differently next time. The small detail that changed a project. Then the call ends, the next one starts, and the thought is gone.

I wanted to share those lessons on LinkedIn, because staying visible to clients and referral partners between projects matters. But turning a call into a post felt like a second job. So most of them never got written.

The idea: start from what I'd say out loud

Talking through a lesson is easy. I can explain a hard project to a client in two minutes. Staring at a blank page and writing that same lesson is where I stall.

So I built Sunle. You talk through a lesson from your work (or type something rough), and Sunle turns it into a LinkedIn draft you can edit and make your own.

Here is the kind of input I mean:

"Our CRM rollout got stuck because approvals still lived in a spreadsheet. Next time I'd walk through a real handoff with the team before configuring anything."

And the kind of draft that comes out:

Before you configure the CRM, follow one real handoff. Our rollout stalled on an approval step that still lived in a spreadsheet. It never came up in the demo. The missing piece was not another feature. It was knowing who approved what, and when. Map that with the people doing the work. Then configure the software.

(That's an illustrative example from the site, not a real client.)

Design rules I set for myself

A few decisions shaped the product more than any feature:

  • Your idea is the starting point. A draft is a first draft, not the final word. You can pick a tone (candid, polished or bold), edit any sentence, and ask for up to 3 rewrites.
  • You decide what goes live. Nothing is posted without your approval. Review the draft, then copy it to LinkedIn.
  • Share the lesson, not the client. Leave client names and identifying details out of the voice note. Automated client-detail checks aren't turned on yet, so your own review is the safeguard.
  • Respect the platform. No password collection, no scraping, no fake engagement, no automated comments or DMs, no connection automation. You don't even need to connect your LinkedIn account to try it.

How it's built

The whole product is one TypeScript modular monolith: Next.js (App Router) on Vercel, React 19, Tailwind, with Neon Postgres as the only database and Neon Auth for sign-in. Sentry for errors. No workers, no queues, no separate backend service. One deployable app.

Speech-to-text: the browser records audio with MediaRecorder and uploads it; the server transcribes it with Groq's whisper-large-v3-turbo (OpenAI whisper-1 as a switchable fallback provider). Groq because it's fast and cheap enough that a two-minute voice note costs fractions of a cent. Typed input is an equal path, not a degraded one.

Generation: drafts go through OpenRouter, defaulting to Claude 3.5 Sonnet, swappable with an env var. OpenRouter because I wanted to change models without rewriting the integration.

The prompt structure is where most of the work went. Each draft gets:

  • A tone-specific system prompt (candid / polished / bold) that fixes the format: one sentence per line, blank lines between, short sentences for mobile reading.
  • One randomly picked "inspiration post" from a small curated sheet, so structure and rhythm vary between drafts instead of every post sounding identical.
  • Your role context (consultant or fractional leader), length preset, and any confirmed writing preferences you've saved.
  • Hard rules in every prompt: preserve the writer's actual insight. Do not invent client results, quotations, numbers, or project details. Remove or generalize confidential and identifying client information.

Rewrites pass three things: the original source note, the current draft, and your instruction. Keeping the source note in the rewrite prompt is what stops the meaning from drifting after two or three edits.

The technical problem that surprised me: models invent plausible specifics. A vague voice note comes back with a confident "reduced onboarding time by 40%" that was never said. The fix wasn't one clever prompt — it's the do-not-invent rules in both the system and user prompts, plus a post-processing pass that strips the markdown fences models love to wrap output in. I also built an evaluation harness of test cases for detecting client identifiers in drafts, ran it, and turned the feature **off **in production: the false-positive rate made it annoying and the false-negative rate made it theater. It stays off until the numbers earn it.

What I'd do differently: I started with more surfaces than I needed — a Python Telegram bot, a separate dashboard, n8n workflows — and spent real time maintaining all of them before consolidating into one Next.js app. If I'd shipped web-only from day one, I'd have had months for the prompt work that actually determines whether the drafts are usable.

What I learned building it solo
Narrow scope is the feature, not a compromise. The first version of Sunle does one thing: speak → transcript → draft → copy. LinkedIn OAuth publishing code exists in the repo, behind disabled flags, because I kept the door open but shipped none of it. Every feature I said no to is why the core flow takes about 90 seconds.

**Human-in-the-loop isn't a limitation of AI products — it's the product. **The moment a tool posts on your behalf, it stops being a writing assistant and becomes a reputation risk. You review the transcript, review the draft, hit copy, and publish yourself. That's not a missing feature. That's the promise.

Voice input is much messier than text, and the fix is a review step, not a smarter model. Real voice notes have ums, mid-sentence tangents, and client names you didn't mean to say out loud. Letting users edit the transcript before generation did more for draft quality than any prompt tuning. The best "AI safety feature" in Sunle is a plain editable text box.

Try it
Sunle gives you 3 free voice drafts, no card required. After that it's $14/month if it earns a place in your week.

If you're a consultant, freelancer or founder who has good thoughts and no time to write them up, try it at sunle.app. I'd like to hear what breaks and what's missing. You can reach me at [x.com/hi_gaganthakur, or use the support page on sunle.app].

I'm Gagan, building AI automation tools solo, one real problem at a time.

Top comments (0)