IrvinCruzAI/Linkedin_PostCraft
Voice-to-LinkedIn content engine. Speak your ideas, get formatted posts with AI-generated images instantly. Webhook architecture + brand voice personalization. Demonstrates voice interface integration + product workflow design.
PostCraft
Voice-to-LinkedIn content engine. Speak your ideas, get formatted LinkedIn posts with AI-generated images in seconds.
π Try Live Demo | Tech Stack | Quick Start
A FutureCrafters Project β’ Built by Irvin Cruz
TL;DR (30-Second Scan)
What: Voice-to-LinkedIn content engine. Speak or type your topic β get a formatted LinkedIn post with AI-generated image, brand voice applied, and publish-ready formatting.
Why Different: Voice transcription as primary input (fastest content creation method), brand voice personalization (company name, website, LinkedIn profile baked in), and webhook architecture (extensible, integrates with any backend).
Technical Showcase: Demonstrates voice interface integration, webhook architecture, user settings management, localStorage persistence, and content workflow (generate β edit β publish β history).
For Businesses: Solo entrepreneurs and content creators can generate branded LinkedIn posts in seconds via voiceβno typing, no design work, just speak and publish.
Tech: React 18 + TypeScript + Vite + Voice API + Webhook integration + LocalStorage + Content personalization.
The Problem
Content Creators: Post consistently on LinkedIn = growth. But typing posts = friction. Voice is 3x faster than typing.
Solo Entrepreneurs: Need branded content (company name, website, voice) but no design team. Generic AI tools ignore branding.
Busy Professionals: Have ideas while driving, walking, working out. Can't type. Voice memos become wasted ideas.
Current "Solutions" Fail:
- β ChatGPT = Type everything, no voice input, no branding, manual image creation
- β LinkedIn native = No AI assist, manual formatting, no brand voice presets
- β Voice notes apps = Capture ideas but don't format for LinkedIn or generate images
The gap: No tool that takes voice input, applies brand voice, formats for LinkedIn, and generates matching imagesβall in one workflow.
The Solution
Voice-First Content Creation
Input Methods:
- Voice transcription (primary) β Speak your topic naturally
- Text input (fallback) β Type if needed
Why voice matters:
- 3x faster than typing
- Capture ideas anywhere (driving, walking, gym)
- More natural expression (speak how you think)
Brand Voice Personalization
Settings Configuration:
- Company name
- Website URL
- LinkedIn profile
- Brand voice description
- Content tone (professional/casual/technical)
- Target audience
- Industry
Applied to every post:
- Company mentions automatically formatted
- Brand voice consistent across posts
- Hashtags relevant to industry
- Call-to-action includes website/profile
Complete Content Workflow
Voice/Text Input
β
Webhook (Your Backend)
β
AI Generation:
- Post content (formatted for LinkedIn)
- Image generation (matching topic)
- Brand voice applied
β
PostCraft UI:
- Preview post + image
- Edit if needed
- Publish or save
β
Post History (LocalStorage)
Webhook Architecture
Why webhook:
- Flexible backend (use any AI provider)
- Your API keys, your control
- Extensible (add analytics, CRM, scheduling)
- Not locked into one AI service
Request Format:
{
"topic": "AI in marketing",
"user_name": "Irvin Cruz",
"content_preferences": {
"tone": "professional",
"length": "medium",
"include_hashtags": true,
"industry": "AI + Marketing"
},
"branding_settings": {
"company_name": "FutureCrafters",
"website": "futurecrafters.ai",
"brand_voice": "Direct, technical, no fluff"
}
}Response Format:
{
"post_content": "Formatted LinkedIn post...",
"image_url": "https://..."
}Portfolio Analysis
Technical Overview
What This Project Demonstrates
1. Voice Interface Integration
Not just text input:
- Voice API integration (browser native or custom)
- Transcription handling
- Fallback to text (progressive enhancement)
- User experience optimization (voice = primary, text = backup)
Why this matters: Voice interfaces are the future. Shows ability to design for multiple input modalities, not just keyboard/mouse.
2. Webhook Architecture
Extensible System Design:
- Frontend doesn't call AI directly (decoupled)
- Webhook backend can be anything (Node.js, Python, serverless)
- Easy to swap AI providers (backend change, frontend unchanged)
- Integration-ready (add CRM, analytics, scheduling)
Why this matters: Production systems need flexibility. This shows architectural thinking beyond monolithic apps.
3. User Settings Management
Complex State Management:
- Brand settings (company, website, LinkedIn)
- Content preferences (tone, length, hashtags)
- Webhook configuration
- LocalStorage persistence (settings survive refresh)
Why this matters: Real apps have complex user settings. This shows ability to manage state, validate inputs, and persist data.
4. Content Workflow Design
Complete User Journey:
- Generate (voice β AI β formatted post + image)
- Edit (post editor with preview)
- Publish (webhook to LinkedIn or manual copy)
- History (past posts with re-use capability)
Why this matters: Product thinking. Not just "build a form"βdesigned complete workflow for real use case.
5. Progressive Enhancement
Graceful Degradation:
- Voice works? Great (primary path)
- Voice unavailable? Text input works (fallback)
- Webhook down? Clear error message (not silent failure)
- Settings missing? Prompts user to configure (onboarding)
Why this matters: Production apps must handle edge cases. This shows maturity beyond happy-path coding.
For AI Strategy Manager / Product Roles
Most candidates show ONE:
- Frontend work (but no backend thinking)
- AI integration (but no voice interface)
- Feature building (but no workflow design)
This project shows ALL:
- β Voice interface integration (forward-thinking input modality)
- β Webhook architecture (extensible, decoupled design)
- β User settings management (complex state + persistence)
- β Content workflow (generate β edit β publish β history)
- β Brand personalization (company voice baked into content)
That's the product thinking + technical execution AI Strategy Manager roles require.
Interview Talking Points
2-Minute Story:
"I built PostCraft to solve a content creation friction point: typing LinkedIn posts is slow. Voice is 3x faster. But existing tools don't support voice input for LinkedIn content creation.
PostCraft is voice-first. Speak your topic, the app transcribes it, sends to a webhook backend (your choiceβcould be OpenAI, Claude, custom AI), generates a formatted LinkedIn post with matching image, and applies your brand voice.
Brand voice is keyβmost AI tools ignore branding. This one takes your company name, website, LinkedIn profile, and brand voice description, then bakes it into every post. Consistent branding without manual editing.
Architecturally, it's webhook-based. The frontend doesn't call AI directlyβsends to your backend webhook. That makes it extensible: swap AI providers, add analytics, integrate CRM, schedule postsβall without changing the frontend.
For AI Strategy Manager roles, this shows product thinking: voice interface, webhook architecture, brand personalization, complete content workflow. Not just 'build a form'βdesigned for real use case."
Key Stats:
- Voice-first input (3x faster than typing)
- Webhook architecture (backend-agnostic)
- Brand voice personalization (company + voice baked in)
- Complete workflow (generate β edit β publish β history)
- TypeScript + React 18
Technical Highlights:
- Voice API integration β Browser native or custom transcription
- Webhook decoupling β Frontend agnostic to backend AI provider
- LocalStorage persistence β Settings + history survive refresh
- Content workflow β Full journey from idea to published post
Features
Core Capabilities
- β Voice input β Speak your topic naturally (primary method)
- β AI post generation β Formatted LinkedIn content + image
- β Brand personalization β Company, website, LinkedIn, voice applied
- β Post history β Save all generated posts, re-use anytime
- β Edit before publish β Preview and tweak AI output
Content Preferences
- β Tone control β Professional, casual, technical
- β Length control β Short, medium, long
- β Hashtag inclusion β Auto-generate relevant hashtags
- β Call-to-action β Website/profile link insertion
- β Industry targeting β Content relevant to your field
Technical Features
- β Webhook architecture β Your backend, your AI provider
- β LocalStorage persistence β Settings + history saved locally
- β TypeScript β 100% type coverage
- β Responsive UI β Mobile-friendly, dark theme
- β Error handling β Clear error messages, graceful degradation
Tech Stack
Frontend
- React 18 + TypeScript β Type-safe component architecture
- Vite β Lightning-fast dev/build pipeline
- Tailwind CSS β Utility-first styling
- Lucide React β Icon library
Voice & Transcription
- Browser Voice API β Native speech recognition
- Fallback to text β Works without voice support
Data Layer
- LocalStorage β Settings + post history persistence
- Custom hooks β
useLocalStoragefor reactive persistence - Type-safe state β Zod-like validation (TypeScript types)
Integration
- Webhook architecture β POST to your backend
- JSON API β Standard request/response format
- Extensible β Add any backend (Node.js, Python, serverless)
Code Quality
- TypeScript strict mode β 100% type coverage
- ESLint β Code style enforcement
- Component architecture β Modular, reusable
- Custom hooks β Logic reuse (
useLocalStorage)
How It Works
Architecture Flow
User speaks topic (Voice API)
β
Transcribe to text
β
Load user settings (LocalStorage)
β
Build request JSON:
- Topic
- Content preferences (tone, length, hashtags)
- Branding settings (company, website, voice)
β
POST to webhook (Your Backend)
β
Backend generates:
- LinkedIn-formatted post (with brand voice)
- AI-generated image (matching topic)
β
Return JSON:
- post_content (string)
- image_url (string)
β
PostCraft displays:
- Preview post + image
- Edit controls
- Publish button
β
Save to Post History (LocalStorage)
Webhook Integration
Your backend receives:
interface WebhookRequest {
topic: string;
user_name: string;
content_preferences: {
tone: 'professional' | 'casual' | 'technical';
length: 'short' | 'medium' | 'long';
include_hashtags: boolean;
industry: string;
target_audience: string;
};
branding_settings: {
company_name: string;
website: string;
linkedin_profile: string;
brand_voice: string;
};
}Your backend returns:
interface WebhookResponse {
post_content: string; // Formatted LinkedIn post
image_url: string; // URL to AI-generated image
}Example backend (pseudo-code):
app.post('/generate-post', async (req) => {
const { topic, branding_settings, content_preferences } = req.body;
// Call your AI provider (OpenAI, Claude, etc.)
const post = await openai.chat.completions.create({
messages: [{
role: 'system',
content: `You write LinkedIn posts for ${branding_settings.company_name}. Brand voice: ${branding_settings.brand_voice}. Tone: ${content_preferences.tone}.`
}, {
role: 'user',
content: `Write a LinkedIn post about: ${topic}`
}]
});
// Generate matching image
const image = await openai.images.generate({
prompt: `Professional LinkedIn post image: ${topic}`,
size: '1024x1024'
});
return {
post_content: post.choices[0].message.content,
image_url: image.data[0].url
};
});Why This Architecture?
Voice-First Over Text-Only
Decision: Voice as primary input, text as fallback
Why:
- β 3x faster content creation (voice vs typing)
- β Capture ideas anywhere (driving, walking, gym)
- β More natural expression (speak how you think)
- β Accessibility (typing can be barrier for some users)
Tradeoff: Not all browsers support voice API. That's why text input is still available (progressive enhancement).
Webhook Over Direct AI Integration
Decision: Webhook to backend, not direct OpenAI calls from frontend
Why:
- β API keys not exposed in frontend (security)
- β Backend-agnostic (swap AI providers without frontend changes)
- β Extensible (add analytics, CRM, scheduling in backend)
- β Cost control (backend can implement rate limiting, caching)
Tradeoff: Requires backend setup. Worth it for flexibility + security.
LocalStorage Over Database
Decision: LocalStorage for settings + history (no server-side DB)
Why:
- β Fast (instant reads/writes)
- β Private (data stays on user's device)
- β Simple deployment (no database server needed)
- β Offline-capable (works without internet)
Tradeoff: Data not synced across devices. For MVP, acceptable. Can add cloud sync later.
Quick Start
Prerequisites
- Node.js 18+
- Backend webhook that returns
{ post_content, image_url }
Installation
# Clone repository
git clone https://github.com/IrvinCruzAI/Linkedin_PostCraft.git
cd Linkedin_PostCraft
# Install dependencies
npm install
# Start development server
npm run devFirst-Time Setup
- Configure your name (appears in generated posts)
- Add webhook URL (your backend endpoint)
- Example:
https://your-backend.com/generate-post
- Example:
- Set branding (optional but recommended)
- Company name
- Website
- LinkedIn profile
- Brand voice description
- Speak or type topic β Generate post
Use Cases
Solo Entrepreneurs
- Problem: Need consistent LinkedIn presence but typing posts = slow
- Solution: Speak ideas during commute/gym, instant formatted posts
- Result: 3x faster content creation, consistent brand voice
Content Creators
- Problem: Ideas come anytime, typing on phone = friction
- Solution: Voice capture anywhere, posts generated when ready
- Result: Never lose ideas, publish more consistently
Busy Professionals
- Problem: Know LinkedIn helps growth, but finding time to write = hard
- Solution: 30 seconds to speak topic = post ready
- Result: Maintain presence without time commitment
About FutureCrafters
PostCraft is part of FutureCrafters' portfolio of AI productivity tools.
More Projects:
- NewsGen AI β 10-second article generation from headlines
- Marketing Dashboard β 6 AI marketing generators with business context engine
- WebinarStudio β Enterprise webinar content pipeline (115 TypeScript files)
- Rory β AI content engine with custom voice modeling
Services:
- AI Exploration Session ($500)
- Paid Diagnostic ($1,500)
- Control Layer Sprint ($5,000)
- FutureCrafters Labs ($2K-6K/mo)
Get In Touch
Portfolio/Hiring:
- LinkedIn: linkedin.com/in/irvincruzrodriguez
- Website: irvincruz.com
- Email: irvin@futurecrafters.ai
Product/Business:
- π Book consultation
- π§ hello@futurecrafters.ai
- π futurecrafters.ai
Project Stats
| Metric | Value |
|---|---|
| Input methods | Voice + Text |
| Architecture | Webhook (backend-agnostic) |
| Workflow steps | 4 (generate β edit β publish β history) |
| TypeScript files | 10 |
| Type coverage | 100% |
A FutureCrafters Project β’ Built by Irvin Cruz βοΈ
Last Updated: February 2026