AI ghostwriting platform for LinkedIn and Twitter that eliminates AI slop through structural constraints and multi-layer quality control.
- Voice Profiles: Create unique voice profiles with 20+ rules, reference posts, and brand colors
- 5 Voice Modes: Thought Leader, Storyteller, Educator, Provocateur, Community Builder
- 6-Stage Generation Pipeline: Multi-stage refinement ensures high-quality output
- Quality Gates: 100+ forbidden phrases, specificity checks, hook strength validation
- Platform Conversion: Automatic LinkedIn → Twitter thread conversion
- Carousel Generation: Template-based carousel creation with brand colors
- Frontend: Next.js 14 (App Router), TypeScript, Tailwind CSS
- Components: shadcn/ui, Framer Motion
- AI: Google Gemini 3 Flash API
- Storage: localStorage (MVP)
- Deployment: Vercel
- Node.js 18+
- Google Gemini API Key (Get one here)
-
Clone the repository: ```bash git clone https://github.com/yourusername/william-ai.git cd william-ai ```
-
Install dependencies: ```bash npm install ```
-
Create a
.env.localfile: ``` GEMINI_API_KEY=your_gemini_api_key_here ``` -
Run the development server: ```bash npm run dev ```
-
Open http://localhost:3000 in your browser.
- Go to "Voice Profile" in the navigation
- Enter a name and select target platforms
- Add 20+ voice rules (sentence patterns, forbidden words, signature phrases)
- Add 3 reference posts with engagement metrics
- Select brand colors for carousels
- Save your profile
-
Go to "Create Post" and choose a flow:
- Personal Experience: Share a story or lesson
- Pattern Recognition: Share observations across situations
-
Select a voice mode that matches your content style
-
Answer the interview questions with specific details
-
Submit for generation (takes 30-60 seconds)
-
Review, edit, and export your post
- Posts must score 85+ to pass quality gates
- Zero forbidden phrases allowed
- Minimum 3 specific details (numbers, names, dates)
- Strong hook with number, contrarian claim, or personal stake
``` william.ai/ ├── app/ # Next.js App Router pages │ ├── api/ # API routes │ ├── create/ # Post creation flows │ ├── dashboard/ # Main dashboard │ └── voice-profile/ # Profile management ├── components/ # React components │ ├── ui/ # shadcn/ui components │ ├── interview/ # Interview flow components │ ├── generation/ # Generation UI components │ └── dashboard/ # Dashboard components ├── lib/ # Utilities and logic │ ├── context/ # React contexts │ ├── guardrails/ # Quality validation │ ├── pipeline/ # Generation pipeline │ ├── prompts/ # AI prompts │ └── utils/ # Helper functions ├── data/ # Static data │ ├── voice-modes.ts # Voice mode definitions │ └── carousel-templates.ts └── hooks/ # Custom React hooks ```
-
Push your code to GitHub
-
Connect your repository to Vercel
-
Add environment variable:
GEMINI_API_KEY: Your Gemini API key
-
Deploy!
MIT
Built with Cursor and Claude Opus 4.5