Live status, definitive spec, changelog, and error log. Updated every turn. Last updated:
| Module | URL | Status | Blocker |
|---|
A personal AI operating system for Simon Johnson / Identity Partners. Deployed at hootify.identitypartners.uk. Backend: Cloudflare Worker. Knowledge: Notion. Auth: 4-digit PIN (Simon/Olivia/Nicholas/Guest).
The system monetises Simon's interpersonal services consultancy (Identity Partners) through AI-assisted content creation, research, CRM, and automated posting across 150+ platforms.
| Layer | Technology | URL/ID | Status |
|---|---|---|---|
| Frontend | Cloudflare Pages | hootify.identitypartners.uk | Live |
| Backend | Cloudflare Worker | hootify-orchestrator.identitypartners.workers.dev | Live |
| KV Cache | Cloudflare KV | a0c71350bfda4dc9bd454e449db51b00 | Live |
| Database | Cloudflare D1 | d7bb84ad-f7fc-471a-8c65-de79562a6307 | Live |
| Knowledge | Notion | ntn_z150β¦ (token stored) | Connected |
| Auth | 4-digit PIN | /auth | Working |
Plain HTML pages. No JS routing. Each page is standalone. Sidebar links are hyperlinks, not JS calls. Domains = folders (not interaction membranes). Owl logo = click to go home.
| Page | URL | Purpose | Status |
|---|---|---|---|
| Home/Dashboard | / | News feed, quick chat, calendar, social queue preview | Partial |
| Chat | /chat | AI chat, 15 personas, 5 routing profiles, multi-model, round table | Working |
| Research | /research | 20+ sources, parallel search, AI synthesis | Keys needed |
| Social Canvas | /canvas | Templates + image injection + download PNG | Images need keys |
| Templates | /templates2 | 50 templates, edit, batch download | Images need keys |
| Canvas Studio | /polotno | Live editor, batch generator | Images need keys |
| Atomise | /atomise | Longform β platform posts | AI keys needed |
| Proliferate | /proliferate | Full content pipeline: quotes β posts β canvases β queue | AI keys needed |
| Auto Post | /post | Bluesky + LinkedIn direct posting | Social keys needed |
| Round Table | /roundtable | Multi-model debate, 10 personae, synthesis | AI keys needed |
| Creator Studio | /creator | Voice, music, podcast, video | Voice keys needed |
| Zoho Mail client, AI assist, compose | Zoho token needed | ||
| CRM | /crm (standalone needed) | Pipeline, contacts, actions, Notion sync | Broken in index.html |
| Social Queue | /social | Calendar, approve, schedule posts | Partial |
| Settings | /settings | Changelog, appearance, providers, Notion, Cloudflare | Working |
| Setup | /setup | Bulk API key upload | Fixed β use this |
| Status (this page) | /status | Live status, spec, changelog, errors | New |
Every image, AI response, and research result requires keys in the Cloudflare Worker. The /setup page had a bug (payload key was secrets instead of keys) β now fixed and deployed. Go to /setup, paste all keys in KEY=VALUE format, click Save.
Once Unsplash/Pexels/Pixabay keys are in: all templates, canvas, and proliferate will show real images.
Once Groq/Cerebras keys are in: chat, research, atomise, round table, and proliferate will generate real content.
Polotno Studio is the correct engine for social canvases. It has 500+ templates, Google Fonts, and a full canvas SDK. The current /polotno page embeds the Polotno web app which requires its own login β that's the loop you're seeing.
Correct approach: Use the Polotno SDK (polotno-studio npm package) embedded directly, authenticated with your API key. No separate login. Your brand assets and templates live inside Hootify.
What I need: Your Polotno API key (paste as POLOTNO_API_KEY=your_key in /setup). Once that's in the worker, I'll rebuild /canvas using the SDK β no login loop, full template library, direct PNG export.
| Issue | Cause | Fix | Priority |
|---|---|---|---|
| Images not loading in templates/canvas | Unsplash/Pexels/Pixabay keys missing from worker | Upload keys via /setup | π΄ Critical |
| AI not responding in chat/research/atomise | Groq/Cerebras keys missing from worker | Upload keys via /setup | π΄ Critical |
| CRM doesn't load | Rendered inside index.html via broken JS routing | Build standalone /crm.html | π High |
| Polotno login loop | Embedding web app instead of SDK | Rebuild with Polotno SDK + API key | π High |
| Sidebar doesn't scroll on tablet | Missing overflow-y:auto on nav | CSS fix β 2 lines | π‘ Medium |
| 5 duplicate canvas/template pages | Built incrementally without consolidating | Consolidate into /canvas (one page) | π‘ Medium |
| Dashboard news feed empty | RSS proxy not built in worker | Add /api/rss endpoint to worker | π‘ Medium |
| Podcast generates script not audio | ElevenLabs key missing | Upload ELEVENLABS_API_KEY | π‘ Medium |
| Video generates script not video | FAL key missing | Upload FAL_API_KEY | π‘ Medium |
| Zoho email not connected | Need access token from Self Client flow | Complete Zoho OAuth, upload token | π‘ Medium |
All failed API calls, render errors, and silent failures are logged here automatically.
Live key status from the worker. Upload missing keys β
The page embeds studio.polotno.com β Polotno's own web app β which requires a separate Polotno account login. That's not the right approach.
Polotno provides a JavaScript SDK (polotno-studio) that embeds the full canvas editor directly inside Hootify, authenticated with your API key. No separate login. Your brand assets, templates, and fonts live inside Hootify.
POLOTNO_API_KEY=your_key in /setupNot needed and not the right approach. The SDK authenticates with the API key server-side. Playwright would be fragile and break on any UI change. SDK is the correct integration path.