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:
- 8-min voice interview → AI extracts content signals
- Style analysis → learns your tone, vocabulary, patterns
- Post generation → LinkedIn posts written in your voice
- 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
- amazon-dynamodb
- bedrock
- codepipeline
- ecs
- node.js
- nova
- react
- s3
- sonic
- terraform
- terragrunt
- vite
Log in or sign up for Devpost to join the conversation.