JuntoAI Echo - Your Human-Enabled AI CopyWriter

Inspiration

Most professionals want a consistent LinkedIn presence but don't have time to write posts. Generic AI tools produce content that sounds like everyone else. We asked: what if the AI actually knew you first?

The insight was simple: the best prompts fail because the AI doesn't know the person. A 8-minute voice conversation changes that completely.

What It Does

Echo conducts a real-time voice interview using Amazon Nova 2 Sonic (speech-to-speech AI), then generates 2–5 authentic LinkedIn posts that match the user's voice, complete with images and a 7-day content calendar.

The weekly loop:

  1. 8-min voice interview → AI extracts content signals
  2. Style analysis → learns your tone, vocabulary, patterns
  3. Post generation → LinkedIn posts written in your voice
  4. Review, approve, auto-publish → hands-free content calendar

How We Built It

Speech-to-Speech Engine: Amazon Nova 2 Sonic handles the interview natively: no STT→LLM→TTS pipeline. This gives sub-second latency with natural barge-in support. We built a shared library (juntoai-core) with the Bedrock Sonic wrapper, 8-minute stream rotation, and WebSocket utilities so the same engine powers both Echo and our sister product JuntoAI Kinetic.

Post Generation Pipeline: After the interview, Nova 2 Lite analyzes the transcript in three passes:

  • Content Signal Extraction: topics, key quotes, themes, audience
  • Style Analysis: tone, formality, vocabulary complexity, recurring phrases (USER segments only, $temperature = 0.3$)
  • Per-Topic Post Generation: each post grounded in interview data with quality validation ($temperature \in [0.7, 0.9]$)

Stack: Node.js + Express + WebSockets on ECS Fargate, React + Vite + Tailwind on S3/CloudFront, DynamoDB (4 tables), S3 for transcripts and content bundles, Terraform/Terragrunt for IaC.

Cost engineering was a first-class concern:

C_session = C_Sonic + C_CV + C_signals + C_style + C_posts + C_images ≈ €0.33

We hit our target of under €0.35 per full weekly cycle by using Nova Lite (not Pro) for all analysis, enforcing a 8-minute hard timeout, and applying 7-day TTL on unclaimed data.

Challenges

Nova Sonic's event protocol was the steepest learning curve. It's not a simple streaming API. It requires a precise event sequence (sessionStart → promptStart → contentStart → textInput → contentEnd → ...). Out-of-order events silently kill the stream. We codified the "Golden Rules" for injection (interactive vs. non-interactive USER events) after debugging several silent failures.

8-minute stream rotation: Bedrock enforces a hard limit on bidirectional streams. We built a rotation system that waits for both parties to finish speaking, closes the old stream, recreates with a fresh one, replays conversation history, and resumes. All invisible to the user. In the end we decided for no rotation as all our test users had 2-3 great posts after 4-5 min interview time.

Authentic voice matching: Early post generation sounded generic. The breakthrough was filtering to USER-only transcript segments for style analysis and feeding the resulting StyleProfile into each post generation call. Posts went from "sounds like ChatGPT" to "sounds like the person."

Quality validation: LLMs sometimes hallucinate metrics or use LinkedIn clichés. We built a validator checking length bounds, hook quality, placeholder detection, cross-post uniqueness (≤80% similarity), and grounding against session data (with one retry on failure).

What We Learned

  • Voice-first AI interactions extract 3–5x richer content than text prompts
  • Shared libraries (juntoai-core) across products pay off fast. Echo's Nova integration took days, not weeks
  • Cost control must be designed in from day one, not bolted on
  • The best AI writing tool isn't a better prompt. It's a better understanding of the human :-)

Built With

Share this project:

Updates

Submission history