Back to app
Help & documentation BAWDA AI
/
On this page

Help & documentation

Everything in BAWDA AI, explained in one place. Use the search bar above to jump straight to what you need instead of scrolling — press / anywhere on this page to focus it.

Overview

BAWDA AI is a single home for working with several AI providers — Claude, ChatGPT, Gemini, Grok, and Perplexity — instead of switching between separate apps. Everything is arranged around three areas: a navigation menu on the left, a chat window in the middle, and a task monitor on the right.

Right now this is a layout and interaction prototype. The sections below describe how each part is meant to work. Anything not yet connected to a real AI provider is marked Coming soon so you always know what's live versus planned.

Feed

Feed is a durable, reverse-chronological record of results from around the app — drafts, reports, and other artifacts you'd want to come back to. Chat is ephemeral; the Feed is the lasting version. Click Feed in the left menu (right after Chat) to see the full page, or check the compact panel above your running Tasks on the right for the 4 most recent cards.

A card is a real snapshot from the moment it was created — its title, summary, and preview text intentionally don't change if you later edit the actual email, ad campaign, presentation, or report it's about, the same way a notification wouldn't rewrite itself after the fact. To see what's actually current, expand a draft or report card and use its real "Open the current version" button, which takes you straight to the live, editable item using the same reference every card already stores — rather than leaving the snapshot as the only thing you can see.

  • Filter strip: All / Unread / Archived, plus a chip for each of the 9 card types.
  • Search across title, summary, and each card's full content.
  • Grouped by day — Today, Yesterday, This Week, Earlier.
  • Click Open on any card to expand it in place and mark it read; Dismiss archives it without deleting whatever it points back to.
  • Updates arrive live — new cards appear the moment something creates them, no refresh needed.

There are 9 card types, matching the spec's own strict list, and all 9 render correctly. 5 now emit for real: creating a sequence or broadcast in Write eMail, a campaign in Ads, a presentation, a document, or an Analyze report all show up here automatically, the moment you create them. The other 4 — Gmail Lead, Instagram Draft, Morning Brief, and Routine Result — stay fully-built, correctly-rendering card types with no real trigger yet, since there's no Gmail lead-detection, no Instagram posting integration, and Routines isn't built yet either.

Select the checkbox on any card (archived ones don't get one) to bulk-archive several at once — "Select all" and "Archive selected" appear above the list.

Workspaces

A workspace is the outermost container in BAWDA AI. Each one holds its own separate set of Projects, Chats, Skills, and Integrations, so different parts of your work never mix together.

The pill just below the BAWDA AI logo always shows your current workspace. Click it for a real, quick-switch dropdown listing every workspace with its color and name (the active one highlighted) — click any other to switch directly, or use Manage workspaces… at the bottom to open the full list below. Or click Workspace at the top of the left menu to go straight to the full list.

  • Switching workspaces — click anywhere on a workspace card (other than its icons) to make it active, or use the pill's quick-switch dropdown above. The pill updates immediately, and Projects switches to show that workspace's own projects.
  • Creating a workspace — click New workspace, give it a name and an accent color, then click Create workspace. It starts out empty, ready for its own projects.
  • Renaming a workspace — hover a card and click the pencil icon. The name becomes editable right there — press Enter or click away to save, or Escape to cancel.
  • Deleting a workspace — hover a card and click the trash icon, then confirm. If it has projects inside it, you're told they'll be removed too. If it's your current workspace, you're told which workspace you'll be switched to instead. You always need at least one workspace, so the last remaining one can't be deleted.

Workspaces and Projects are backed by a real database (Firestore) — create one, close the tab, come back tomorrow, and it's still there, tied to your signed-in account. Chats, Skills, and Integrations are genuinely scoped to each workspace too, the same way Projects always has been — switch workspaces and you'll see that workspace's own real chats, skills, and connected integrations, not everything mixed together. A brand-new workspace starts with the same example Skills and Integrations shown as demo data everywhere else in the app, so it isn't blank on first use, using a real one-time-per-workspace seed (deleting them all in one workspace won't bring them back on their own; they're genuinely gone from that workspace). Each workspace card's project count is a real, accurate number kept in sync as projects are added or removed — not dependent on which workspace happens to be currently active.

Navigation menu

The left menu holds your workspace, models, chats, and other sections.

  • Workspace — opens the workspace list, covered in its own section above.
  • New Task — starts a fresh conversation. See the New Task section below.
  • Chat, Feed, Projects, Analyze, Assets, Characters, Avatars, Brain, JK5 Categories, Tone List, Write eMail, Ads, Presentations, Code Agent, Promoteer, Frameworks, Personal Assistant, Documents, Software, Skills, Integrations — the main areas of the app, each covered in its own section on this page.
  • Models — the list of connected AI providers, covered in its own section below.
  • Recent chats — a real, saved list of your past conversations in the current workspace, most recent first. Click one to reopen it and pick the real conversation back up with its full history; hover for pencil (rename) and trash (delete) icons. Starting a fresh conversation (via New Task, or by switching workspaces) doesn't create a new entry here until you actually send a first message.
  • Installed Apps — only appears once you've installed something from Software; lists your installed tools, sorted by install date. Clicking one opens it directly now, rather than taking you to its Software catalog page first.
  • Your name and avatar at the very bottom — opens the account menu, covered in its own section below.

Collapsing the whole menu: click the arrow next to the "BAWDA AI" logo to shrink the menu down to just icons, useful when you want more room for the chat. While collapsed, click the "B" logo mark to bring the full menu back.

Collapsing individual sections: Models, Recent Chats, and Installed Apps each have their own small chevron next to the section label — click it to collapse just that section, independent of the others and independent of the whole-menu collapse above. Your choice is remembered the next time you open the app.

If you have enough sections and chats that the menu runs taller than your screen, it scrolls on its own — your account menu at the very bottom always stays reachable rather than getting pushed off-screen.

Account menu & signing in

Click your name and avatar at the bottom-left of the menu to open the account menu — not a settings icon, not a hamburger menu, your actual name and picture. It opens a small popover with:

  • Credits — opens the real Credits page, covered in its own section below.
  • Settings — opens a real Settings hub: Personal (name, phone, address, timezone), Security (real password change, or an honest explanation for Google-only accounts), API Keys (Brain's real API Keys page), Email Sending (a real, saved choice between Resend, GMass, and EmailJS for Write eMail's real Send/Schedule), and Optimised Chat Routing (real, editable rules for which AI provider Optimised Chat picks for each kind of task, plus an on-demand real refresh).
  • Screenshot — captures the app's current visible view, immediately downloads it as a PNG to your computer, and saves a copy into Assets in the same step (through the exact same real upload pipeline every other Assets file goes through). No permission dialog needed — it captures the page's real content directly rather than your whole desktop. One honest limitation: it can't see inside cross-origin iframes (like AIO's embedded live browser session), so that specific region may render blank if you screenshot while one is open.
  • Screen Recorder — a real screen recording, with your real microphone narration mixed in, using the browser's native Screen Capture and MediaRecorder APIs (no third-party library). A floating pill with a live timer and Stop button appears while recording, so you can keep working elsewhere in the app while it captures. Starting a recording always shows the browser's own real picker (choose screen/window/tab) — a hard browser security requirement, not something that can be made silent the way Screenshot is. Microphone access is optional; denying it just records whatever audio the shared screen/tab itself provides, if any. Stops correctly whether you use the app's own Stop button or the browser's native "Stop sharing" control. Same dual save as Screenshot — immediate download, plus an automatic upload into Assets (real time for a real file, unlike the screenshot's near-instant save). Saves as .webm, the one video format every major browser's recorder reliably supports natively — true in-browser .mp4 encoding isn't consistently available. Auto-stops at a 30-minute safety cap.
  • Billing — opens the real Billing page, covered in its own section below.
  • Learn — opens the real Learn library, covered in its own section below. A small dot shows while any lesson is still unseen.
  • Feedback — opens the real feedback dialog, covered in its own section below.
  • Support — opens the real ticket dialog, covered in its own section below.
  • Privacy Policy and Terms of Service — real links now, opening ai.bawda.ca/privacy-policy and ai.bawda.ca/terms in a new tab.
  • Sign out — sits below a thin divider, separating it from the items above as a distinct kind of action. It's plain text with no icon and the same neutral color as everything else in the menu — signing out isn't treated as a dangerous or destructive action, just a routine one.

Sign-in is real now, backed by Firebase Authentication. Opening BAWDA AI without being signed in redirects you to /sign-in and back again afterward — a real gate, not the "no gate yet" placeholder state from earlier. Your name and initials in the account menu come from your actual account (your Google name, or the part of your email before the @ for email/password accounts).

Signing out happens the moment you click it — no "are you sure?" confirmation, matching the routine, non-destructive tone above. It calls Firebase's real sign-out, and every open tab notices and follows automatically, without needing to be refreshed — that's genuine Firebase behavior now, not a manual workaround.

Sign in with email/password and Sign in with Google are both fully real. Google opens an actual account picker via Firebase's own sign-in popup. Passwords, error messages ("Email or password is incorrect," rate limiting, disabled accounts) all come from Firebase's real responses rather than fixed test triggers. GitHub is still mocked — no GitHub app is connected yet, so it shows the same "couldn't sign you in" message as before and falls through to the email form.

Sign up (/sign-up) creates a real account and sends a real verification email — you won't be able to sign in until you click the link in it. Forgot password (/forgot-password) sends a real reset email, with the same non-revealing confirmation message whether or not that address actually has an account, so the page never leaks who has signed up.

Update: GitHub sign-in is now real code, the same signInWithPopup mechanism Google uses — but it needs one real, one-time setup step that can't be done from code: registering a GitHub OAuth App in GitHub's own developer settings, then pasting its Client ID and Secret into Firebase Console → Authentication → Sign-in method → GitHub. Until that's done, clicking it shows the same clear "isn't enabled for this project yet" message Google would show under the same condition, rather than a fake success. Everything else about your account is real now — Workspaces, Projects, Skills, Integrations, Tasks, Analyze, and Assets are all backed by a real database once Firebase is configured, tied to your signed-in account rather than resetting on reload. See each section's own page in this guide for exactly what's real versus still mocked within it.

Default chat shortcuts

Clicking Chat in the left menu opens a fresh chat screen with a set of default shortcuts underneath the "What can I help you with today?" prompt. Each shortcut is a full, ready-made message — click one and it's sent immediately, exactly as if you'd typed it yourself and pressed Enter.

Right now there's one example shortcut, "What is the weather today?", to show how the feature works. More shortcuts will be added to this list over time.

The chats listed under Recent chats in the left menu can be renamed too — hover a chat and click the pencil icon that appears, edit the name right there, then press Enter or click away to save, or Escape to cancel.

Projects

Projects are folders for organizing your chats, and they belong to whichever workspace you're currently in — switch workspaces and you'll see a different set of projects. Click Projects in the left menu to see every project inside your current workspace, laid out as a grid of cards. Each card shows the project's color, its name, how many chats are inside it, and when it was last updated.

  • Creating a project — click New project in the top-right of the Projects screen (or the button shown when you have no projects yet). Give it a name, pick one of six accent colors, and click Create project. It appears at the top of your grid immediately.
  • Renaming a project — hover a card and click the pencil icon. The name becomes editable right there — press Enter or click away to save, or Escape to cancel, the same way renaming a workspace or a chat works.
  • Deleting a project — hover over any project card and click the trash icon next to the pencil. Confirm in the dialog that follows. Deleting can't be undone, so you're always asked to confirm first.
  • Opening a project — click anywhere on a project card (other than its icons) to see the real chats inside it, with a real chat count that now genuinely updates as you go. Click New chat there to start a real conversation tied to that project; click any listed chat to reopen it with its full history, same as Recent Chats.

Projects you create are saved for real once Firebase is configured — they're stored inside their parent workspace in the database, not just in this browser tab.

Analyze

Analyze is a research workbench — the place to define what you want to learn about a competitor or market, queue up who to check, run a scan, and read the resulting report. It's a workbench, not a content engine: it produces insight, not social posts or emails. It's global, not tied to any one workspace, so everything you build here is visible no matter which workspace is active.

Update after the Blaze upgrade: a real scan now genuinely calls a Cloud Function (generateAnalysisReport) that attempts a real fetch of the target's page and asks Claude to analyze it. When that fetch succeeds, the report is real AI analysis grounded in real page content. When it can't (social handles need real platform APIs this app doesn't have; some sites block simple bot requests or need JS rendering), Claude is told to reason from just the brief and target metadata, and it's instructed to mark every section "low confidence" and say so plainly rather than invent specifics it couldn't have seen. The report banner reflects which case you're looking at. The seed briefs that ship with a fresh account still generate their reports from a fixed template — that's deliberate, so a new install has demo content without spending a real AI call — and the "faildemo"/"partialdemo" testing hooks on a target's identifier still work for free, before any real call happens.

Everything about the workflow around those reports is real, same as before: briefs, targets, runs, and the reports themselves all persist to your account, survive a reload, and pick up right where you left off.

Scan briefs

Click Analyze in the left menu to see every brief you've created, as a grid of cards filterable by All / Active / Templates / Archived, with a search box above them. Each brief has a scan type — Website, Social, Ads, Pricing, Funnel, or Comprehensive — chosen at creation and fixed afterward, since it determines what kind of report gets generated. Briefs are saved for real once Firebase is configured.

  • New brief — title, optional description and category, a scan type, and an optional "mark as template" checkbox.
  • Edit / Archive / Delete — the ⋮ menu on a brief's detail page. Editing covers title, description, category, and the template flag (scan type can't be changed after creation). Deleting removes the brief and everything in it — this is an immediate, permanent delete, not the 30-day recovery window a real backend would offer.

Targets & running a scan

Open a brief and its Targets tab to add what you want scanned — a website URL, an Instagram handle, a pricing page, and so on. Each target type validates its own format as you type, and adding the same target twice is a no-op rather than a duplicate row. Toggle a target inactive to exclude it from future runs without deleting it, or rename its label, or remove it entirely. Targets are saved for real, the same as their parent brief.

Click Run scan to open the confirmation modal: pick which active targets to include and see the credit cost update live against your real credit balance (the app's one admin account sees "unlimited credits" here instead of a number). Confirming queues a run for each target — queued → running → succeeded / failed / partial — visible on the Runs tab. A failed run can be retried; a queued or running one can be cancelled. Credits are now only ever actually reserved and spent at the moment the real AI call happens inside the Cloud Function (with an exact refund if that call fails) — queuing or cancelling a run no longer touches your balance at all, since nothing was really charged yet at that point. Runs and their outcomes are saved for real and reload correctly — one caveat: if a run is actively in progress and you reload mid-run, its last known status is what you'll see; it won't keep progressing live across a page reload the way it does if you just leave the tab open.

Your credit balance shows at the top of the Analyze screen, backed by the same real, app-wide credit system used everywhere else (see the Credits section). Running out blocks the confirmation until you have enough (there's no real billing behind "top up" yet).

Reports

Once a run succeeds or partially succeeds, click View report from the Runs or Reports tab. Each report has a score gauge, a Summary, a Scorecard (confidence level per section at a glance), full Findings, Evidence, and — for Comprehensive scans only — Recommendations. Star a report, tag it, and add private notes (editable, deletable) from the right rail — all saved for real, and synced live if you have the same report open in more than one tab.

Comparisons & History

Click History from the Analyze header to see every report across every brief in one place, with search across titles/summaries/findings and filters for brief, scan type, date range, score range, and tags. Click Compare to select 2–5 reports and view them side by side — score gauges with deltas between them, sections aligned by name, and a "Differs" badge on any section whose confidence level doesn't match across reports. Comparing reports of different scan types is blocked in the UI, not just silently wrong. Both screens are just different views over your real, saved reports — nothing extra to configure.

Templates

Mark any brief as a template and it gets a Use template button — on its card in the Templates tab, and in its own detail page's ⋮ menu. Using one clones it into a fresh draft brief with the same title, description, scan type, and category, but no targets or runs, ready for you to fill in.

Exporting & sharing a report

From a report's right rail: Markdown and JSON export are real downloads — genuine files built from that report's actual data, no backend involved. Print / Save as PDF uses your browser's own print dialog rather than a PDF-generation library; choose "Save as PDF" there for a file. Comparisons have the same PDF export, from their own header.

Share link is a labeled preview, not a working feature — clicking "Generate share link" creates a real-looking, revocable link, but there's no server to actually host it, so it won't load for anyone you send it to. The rail says this plainly rather than letting you find out the hard way. The token itself is saved for real, though, so it won't change every time you reload — only when you regenerate or revoke it yourself.

Assets

The Asset Library is where every image, video, audio clip, document, and text snippet you bring into BAWDA AI lives — one searchable, filterable place instead of scattered across whatever section created or used them. Click Assets in the left menu to open it.

Uploading is fully real once Firebase is configured — files go to real cloud storage tied to your account, not just this browser tab. Drag files anywhere onto the grid, or click Upload for a dedicated drop zone. Supported: PNG, JPG, WEBP, MP4, MOV, MP3, WAV, PDF, TXT, and MD, up to 50 MB per file and 20 files at once. Each upload shows a live progress bar right in the grid.

For images, a smaller preview thumbnail is generated right in your browser at upload time and saved alongside the original — there's no server available to do this as a background job, so it happens client-side instead, but the result is the same: fast-loading thumbnails in the grid.

  • Filter by type, source (uploaded vs. generated), tag, and a date range, all from the toolbar above the grid. The tag dropdown only ever lists tags you've actually used.
  • Search matches name, prompt, model, and tags, live as you type.
  • Click any card to open its detail drawer: a full preview, metadata (dimensions, file size, prompt, upload date), editable tags, and Download/Copy/Move to Trash. A "Used in" section is there too, honestly showing "not used anywhere yet" for now — nothing else in the app embeds assets automatically yet, so it has nothing real to list.
  • Hover any card (outside the drawer) for the same quick actions without opening it: Download, Copy, and a ⋮ menu.
  • Tags are added and removed right from the drawer, or in bulk: click Select in the header, check off any number of assets, then Tag from the bar that appears at the bottom. The same bar's Move to Trash deletes all selected assets at once.
  • Copy copies the actual image to your clipboard where your browser supports it; otherwise it copies the file's link.
  • Delete moves an asset to Trash rather than removing it immediately. Open Trash from the library header to restore something or delete it permanently. There's no 30-day auto-cleanup running in the background — permanent deletion from Trash is a manual action for now.

The storage usage pill at the top shows real usage, calculated from your actual files — it isn't enforced as a hard cap yet, since there's no billing behind it.

Fork (from the drawer) makes a real, independent copy of an asset — a new file, not just a new record pointing at the old one, so deleting either copy later can never break the other. Regenerate (images only) is now real AI image generation via Gemini (Nano Banana), for 5 credits — genuinely calls Gemini with your prompt and saves a real generated image, not a placeholder. Either way, the drawer's new Variants section links back to the original and forward to anything forked or regenerated from it.

Copy Block text files can be edited in place — click Edit in the drawer, change the text, Save writes it straight back to your real file in storage. Documents (PDFs) don't get this, since there's no PDF editor available in the browser to make that meaningful.

One honest limitation worth knowing: file links you see while browsing your own library (Download, Copy) aren't short-lived the way a fully server-backed library's would be. Once one is generated, it keeps working until you delete that file, rather than automatically expiring after an hour. Your files are still private — only your account can ask for one in the first place.

Share is real — unlike Analyze's share links, this one actually works for anyone you send it to. Clicking Share (from the drawer) copies the file to a separate, genuinely public location and gives you a link anyone can open without an account, with an optional expiry (never, 1, 7, or 30 days). Revoke actually deletes that public copy, not just marks it revoked — the link truly stops working, immediately. Re-opening Share on an asset that already has an active link shows you the same one back, rather than generating a confusing second copy.

Update: New Asset (in the header) creates a brand-new asset from just a name and prompt — no existing asset required first. Now real AI image generation via Gemini (Nano Banana), for 5 credits — a genuine, unique image from your prompt, saved to real cloud storage.

Collections are real, named folders — a different concept from tags: exclusive membership (one collection per asset) rather than loose multi-labeling. Create one from the Collections filter dropdown (+ New collection…), assign an asset to one from its detail drawer, and filter the grid down to just that collection the same way you'd filter by tag.

Characters

Attractive Characters is where you define who is writing when AI generates content for you — a name, a backstory, what they stand for and against, and how they sound. The idea (borrowed from Russell Brunson's Expert Secrets framework) is that people buy from people they know, like, and trust — so instead of every AI output sounding generic, it can read like it came from a specific, consistent voice. Click Characters in the left menu to open it.

You can build as many characters as you want, but exactly one is active at a time — that's the voice everything downstream is meant to read from. The active one gets a large card of its own at the top; everyone else sits below in a grid with a one-click Make Active button.

  • New Character gives you two starting points: a real, live AI interview that genuinely adapts as you go — building on what you actually say rather than working through a fixed script — covering name, tagline, origin story, backstory, pillars, what they stand against, voice, and any signature phrases, one real question at a time with a live preview building as the AI extracts it — or a blank profile you fill in yourself, field by field.
  • Every field saves itself. Click any field on the Profile tab to edit it; press Enter (or click away) to save. A small "Saved" note flashes next to the label so you know it landed — there's no separate Save button and no "finished" state to reach. Pillars, "stands against," and signature phrases are chips: type and press Enter to add one, click the × to remove it.
  • The ⋮ menu (on a card, or the detail page itself) has Rename, Duplicate, Make Active, and Delete. Duplicate copies every field into a new, inactive profile named "(copy)". Delete asks you to confirm first.
  • Search on the index page matches name, tagline, and pillars.

The interview is a real, live AI conversation now — a real Claude call reads the whole conversation so far and asks one genuinely adaptive question at a time, building on specifics you've already given rather than working through a fixed checklist regardless of your answers. Once it has enough to work with (usually somewhere around 5–9 real exchanges, judged by how rich your answers actually are, not a fixed count), it stops and hands back a real, synthesized profile pulled from the whole conversation for you to review and save. Saying "skip" moves it on to the next real gap. One honest trade-off from this change: since the conversation is now genuinely dynamic rather than a fixed sequence, it no longer saves your progress if you close it partway through — starting the interview again begins a fresh conversation.

Stories are a true narrative from the character's past, saved separately from the profile itself — a title, summary, full body, themes, dominant emotion, the false belief it destroys, and a handful of "candidate hooks" (punchy one-liners pulled from the story, ready to drop into other writing). Click + Add story on the Stories tab to write one.

Hooks are suggested with a plain heuristic, not real AI. Leave the hooks field blank when saving a story (or click "Suggest hooks" while writing one) and the app pulls out sentences from the body that read like a reasonable one-liner by length alone — genuinely useful as a starting point, but nowhere near as good as what a real model would find. You can always add, edit, or remove hooks yourself. The Hooks tab gathers every hook from every story in one pool — click one to copy it, and you can see which story it came from.

Everything here is saved for real once Firebase is configured, tied to your signed-in account — including stories, which live as their own collection under each character so Duplicate copies them along with everything else.

Update: this was accurate when written, but is no longer true. Write eMail, Ads, and Presentations all now genuinely read a character's real voice (tagline, backstory, voice style, signature phrases) and its real AC Stories when generating content, and are told explicitly never to invent a story if none genuinely fits.

Customer Avatars

Customer Avatars are dream-buyer profiles — who you're writing to, as opposed to Characters, which define who's writing. Click Avatars in the left menu to see your library as a searchable, sortable grid, each card color-coded and showing its top fear and top desire at a glance.

  • Quick Add — an inline form right on the library page: name, top desire, top fear. Fastest way to get an avatar down before you forget it.
  • New avatar (full form) — every field: tagline, a 6-color picker, age range, occupation, primary platform, top desire/fear, and free-form key/value lists for demographics and psychographics.
  • Detail page — click any avatar to see it in full, with an inline Edit mode (no separate modal) and a Used by panel that honestly shows "not used anywhere yet," since no other section reads from Avatars for real yet.
  • The ⋮ menu (or the detail page's buttons) has Duplicate, Archive/Restore, and Delete — Delete warns you first if anything references the avatar, and always offers Archive as the safer alternative.

Avatar Picker is a reusable component built for future sections to embed — live search, plus an inline "no matches → create one" flow. Nothing in the app uses it yet, so there's a small, clearly-labeled Preview: Avatar Picker component toggle at the bottom of the library page so you can see it work in isolation.

Everything here is saved for real once Firebase is configured, tied to your account.

Brain

Brain is your persistent memory layer — everything the app (and eventually other tools) should already know about you and your business, so nothing has to be re-explained every time. Click Brain in the left menu to see all six libraries at once, with a unified search box across every one of them.

Profile Facts

The 11 canonical facts every workspace has — niche, pricing model, ideal customer, business/audience descriptions, social handles, primary platform — plus any custom fields you add (up to 20). A completeness ring in the header shows how many of the 11 are filled in, with a one-time pulse animation the first time you hit 100%. Every real change writes a row to that field's own history — view it from the ⋮ menu on any field. Custom fields show their real underlying field key (in monospace, under the display name) both on the saved card and when editing an existing one — useful since the display name is editable and can drift from the key you originally set.

Memory Facts

Free-form facts, each auto-classified into a category (Business, Customer, Offer, Personal, Other, or Imported) and a visibility (Private/Team) as you type — a plain keyword heuristic, not an AI call, and you can always override the guess before saving. Filter by category, search across all of them.

Files

Drag-and-drop upload (PDF, video, audio, image, text, up to 500MB), organized into folders. Real transcript extraction only happens for .txt/.md files — everything else stores the file itself with an honest "No transcript" label, since real OCR/speech-to-text needs a server this app doesn't have.

Import URL

This now has a real, working fetcher — no more manual copy-pasting required. Single Page mode does one real fetch of a page's actual visible text. Whole Site mode does a real, bounded crawl: fetches the starting page, discovers real same-domain links on it, and fetches each of those too, up to your configured page cap. Click Fetch pages automatically and it fills the content boxes with what it really found, for you to review (and edit if needed) before clicking Import — nothing saves without you seeing it first. A page that needs JavaScript to render its real content (this fetcher can't see that) reports so honestly rather than pretending, and you can still paste that one manually as a fallback. Each imported page still creates a Memory Fact tagged "Imported," same as before.

AC Stories & Hooks

AC Stories uses the full 10-act story structure (Backstory through The Transformation, plus False Belief and 3–7 Candidate Hooks) — deliberately a separate library from the stories already inside Characters, not the same data twice. Hooks combines your own curated hooks with every candidate hook pulled live from your AC Stories, tagged Curated or Story-Derived. The tone dropdown on hooks now pulls live from your real Tone List (see its own section below); JK5 category tagging lives on its own page too.

Settings — API Keys

Reachable from the account menu or a link on Brain's home page. Generates a real, unique key (shown once, hashed before it's ever stored — even you can't retrieve it again, only revoke and generate a new one). This is a real, working MCP (Model Context Protocol) server now — point any real MCP client (Claude Desktop, Claude Code, etc.) at the connection URL shown on the API Keys page, using your generated key as the Bearer token. Built on the well-established Streamable HTTP transport (JSON-RPC 2.0 over a single endpoint), deliberately not the brand-new stateless spec revision that shipped only weeks before this was built and most real clients likely haven't adopted yet — genuine interoperability with real clients today mattered more than being on the newest possible spec. A first, deliberately small set of real tools is exposed — search Documents, list Customer Avatars, list Attractive Characters, search AC Stories, search Hooks — all read-only and scoped to your own real data; nothing that sends, deletes, or writes anywhere is reachable through this endpoint yet.

Everything in Brain is saved for real once Firebase is configured, tied to your account.

JK5 Categories

The JK5 Method (Jenna Kutcher's framework, taught by Russell Brunson in Traffic Secrets): instead of posting only about your business, pick 5 categories of things you're genuinely passionate about and rotate through them. There's no universal list — every founder's five are different, so this page never picks for you. Click JK5 Categories in the left menu.

  • Empty state — 5 "Pick a category" slots plus a grid of 24 suggested starting points (Family, Funnels, Business, Faith, and so on). Clicking a suggestion pre-fills the name; you still choose to save it.
  • Exactly 5, enforced for real — the Add button disables once you have 5 active categories, with the same "pick 5 that matter" message the framework itself uses. Archive one to free up a slot.
  • Reorder — up/down buttons behind a "Reorder slots" toggle (not drag-and-drop, same end result), with a confirmation since reordering changes which slot's content rotates where.
  • Each card shows a real, live hook count, pulled from the same Hooks library described above.

Update: clicking into a category now shows a real, filtered list of every hook tagged with it — search and a newest/oldest sort, both scoped to just that category. A real Post next suggestion sits at the top: the oldest tagged hook you haven't gotten to yet, a simple rotation heuristic rather than anything that needs new usage-tracking infrastructure. Tagging itself happens right on the Hooks page — every curated hook (story-derived hooks aren't real standalone documents, so they're not taggable this way) now has a real JK5 category dropdown on its card. Click Select on the Hooks page to bulk-tag several hooks with one category at once.

Tone List

A companion to JK5 for a different axis: instead of what you post about, Tone is the emotional register a hook is written in. Unlike JK5, there is a canonical starting five — Hilarious, Motivating, Informational, Polarizing, Intriguing — though you can rename, replace, or add fully custom tones. Click Tone List in the left menu.

  • Use the 5 canonical tones — one click fills all 5 slots with the defaults above, each with its own description and example hook. You can still rename or edit any of them afterward.
  • Renaming never breaks tagging — each tone has an underlying key that's separate from its display name. If you rename "Hilarious" to something else, hooks already tagged with it stay correctly tagged, and a Reset to canonical name option appears in its ⋮ menu so you can always get back to the original.
  • Same exactly-5, reorder, and archive behavior as JK5 Categories above.

The Tone dropdown on Brain's Hooks page now pulls live from whatever you've set up here — rename a tone and it shows the new name on every hook immediately, including hooks tagged before you renamed it.

Write eMail

Write eMail is a focused workspace for every kind of email a founder needs to send — sequences (Soap Opera, Daily Seinfeld, Product Launch, Affiliate Launch), single emails (Broadcast, Welcome, Re-engagement, Cart Abandon), and a Subject Line Tester. Click Write eMail in the left menu, pick a type, fill in the context card, and generate.

Update after the Blaze upgrade: generation is now genuinely real — a Cloud Function (generateEmailContent) writes the whole sequence (or single email) in one call, in the voice of your actual chosen Character (name, tagline, backstory, voice style, and signature phrases all passed in as real context) and weaving in a real matching AC Story when one genuinely fits — the model is explicitly told never to fabricate a fake personal anecdote if none of your real stories match the angle. Everything around those drafts was already real: the voice picker pulls from your actual Characters, the audience picker is the real Avatar Picker component, and matching stories come from your actual Brain → AC Stories.

  • Voice is required — the composer refuses to generate without picking a Character first, matching the spec's own "never drafts without a voice" rule.
  • Sequence length is adjustable (5/7/10) for sequence types; send-day offsets are computed to fit the type (daily for Daily Seinfeld, spread across roughly two weeks for Soap Opera/Affiliate, compressed for Product Launch). All emails in a sequence are generated together in one real AI call, so the model can see the whole arc and avoid repeating itself across emails.
  • Library — every sequence and broadcast you generate is saved for real and listed together, newest first, with a status badge.

Update: Send and Schedule are real for single broadcast emails now, through a real, switchable email service. Go to Settings → Email Sending to pick between three real, working providers: Resend (already configured, the current default), GMass (sends through your real Gmail account, but needs its Premium/Professional/Team plan for API access), and EmailJS (needs a real template already created in your EmailJS dashboard with variables named exactly to_email, subject, message_html, and from_name, plus "Allow EmailJS API for non-browser applications" enabled under Account → Security in the EmailJS dashboard — without that second one, a real send is rejected outright regardless of how correct the credentials are). All three are selectable now for whenever their setup is done, without needing a code change later. One honest scope limit worth knowing clearly: this app has no real subscriber/audience list anywhere, so real sends go to your own account's verified email as a genuine preview of what a subscriber would receive, rather than pretending to reach an audience this app was never built to hold. Send now sends it immediately; Schedule saves a real send time and a real background job checks every 15 minutes and genuinely sends it when that time arrives, using whichever provider is currently selected. Sequences (multi-email nurture flows) aren't covered by real sending yet — Push to ClickFunnels remains the honest path for how a real sequence would actually reach an audience once a funnel tool is connected.

The composer (open any sequence or broadcast from the library) is a real two-column workspace: context recap and the email list on one side, the active email on the other. Edit switches the body to a real markdown textarea; Preview renders it. Subject and preview text save on blur; the body saves the same way.

  • Re-roll now genuinely calls the AI again with your current draft included as context and an explicit instruction to find a real new angle rather than just reword the old one — and still keeps the previous version as a real, restorable alternate, nothing thrown away.
  • Approve / Skip move you through a sequence one email at a time; approving the last one (or every email individually) surfaces a "Mark sequence approved" option.
  • Approving anything opens Send now / Schedule / Save as draft (and Push to ClickFunnels, for sequences) — all honest about what's not connected: no email service or scheduler exists yet, so nothing will actually send or fire at a scheduled time. Save as draft is the only one that reflects real state.

Subject Line Test is genuinely real, just not AI — it searches your actual Brain → Hooks library by keyword overlap against your topic and shows you how many real matches it found, rather than inventing a fixed count of fake hooks. Favorite one and apply it straight to a broadcast or a sequence's first email.

Library actions (the ⋮ menu on any row): Clone duplicates a sequence's context (not its emails) so you can tweak the offer/audience and regenerate; Archive hides it behind the library's Archived toggle without deleting anything; Push to ClickFunnels is an honest "not connected" notice, same as everywhere else money or an outside service would be involved.

A later spec ("One-To-Many Emails") turned out to describe largely the same feature as Write eMail under a different name, so rather than build a second, overlapping section, its genuinely new pieces were folded in here instead:

  • A/B subject variant — "Add A/B subject variant" reveals a second subject field; hiding it again never clears what you typed.
  • CTA and P.S. fields — separate from the body, on every email.
  • Insert Hook / Insert Story — real buttons in the composer toolbar that pull from your actual Brain → Hooks and Brain → AC Stories libraries and drop the text into the body at your cursor, with a genuine record of what was inserted and when. "Insert Stack" from the original spec was left out entirely — Value Stacks doesn't exist anywhere in this app, so there was nothing real to back that button with.
  • Analytics — a "Log results…" action on any sequence for emails sent, open rate, click rate, conversions, and revenue. These are real, saved fields, but since no ESP is connected, nothing populates them automatically — they're there for you to fill in by hand after sending elsewhere.

Ads

Ads is where you plan paid-traffic campaigns for Meta, YouTube, TikTok, and LinkedIn — genuinely distinct from Write eMail, not the same feature twice. An ad campaign is built from Concepts (a strategic angle) each holding multiple variants (one complete piece of ad creative: hook, primary text, headline, description, CTA, destination URL, visual brief) ready for split testing. Click Ads in the left menu, pick one of 7 campaign types (or Custom), choose a voice, and it seeds real default concepts with 5 template variants each.

Update after the Blaze upgrade: Generate Draft and Generate Variants are now genuinely AI-written, in the voice of your chosen Attractive Character (name, tagline, backstory, voice style, and signature phrases all passed in as real context), weaving in a real matching AC Story only when one genuinely fits. Campaign creation itself still seeds each default concept's 5 starting variants as a fast, free template scaffold — that's deliberate, matching how it's always worked — and Generate Draft/Generate Variants are the real, on-demand actions that turn any of them into genuine AI copy.

Still Coming soon: nothing — this section is now fully built (within the honest limits noted below).

The editor (open any campaign from the library) has a left rail with every concept and its variants (click any variant to make it active), and a center pane with the full field set: Hook, Primary Text, Headline, Description (each showing a live word count against the spec's target range, turning amber if you're outside it), CTA button, ad type, destination URL, a markdown Visual Brief, and private Variant Notes.

  • Generate Draft now calls a real Cloud Function to fill the active variant with genuine AI copy — if it already has real content, it still asks before overwriting.
  • Insert Hook / Insert Story work the same as Write eMail's, pulling from your real Brain libraries. "Insert Stack" is absent here too — Value Stacks doesn't exist in this app.
  • Generate Variants genuinely calls the AI for N new variants in one request (default 5, 1–20), explicitly instructed to give each one a real, distinct hook and emotional angle rather than reword the same idea — matching what an actual split test needs.
  • Campaign status follows the spec's own flow guard: you can't jump straight to Live or Completed without passing through Ready first.
  • Keyboard nav: Cmd/Ctrl+↑/↓ moves between concepts, Cmd/Ctrl+←/→ moves between variants in the active concept.

Export (the Export… button in the editor, or the ⋮ menu in the library): Markdown (full campaign), a separate Visual Briefs doc, plain text, generic CSV, and CSVs shaped for Meta Ads Manager / Google Ads Editor / TikTok Ads bulk import. One honest caveat on those last three: I couldn't verify each platform's exact current column schema from this environment (no live internet access here) — double-check the headers against your ad account's own import template before uploading.

Push to ad platform… covers ClickFunnels, Meta Ads Manager, Google Ads, TikTok Ads Manager, and LinkedIn Campaign Manager — all honest "not connected" notices, since none of these integrations exist yet (the non-ClickFunnels ones would also need your own API key, stored encrypted, once built).

Post-launch metrics (the "Log results…" link in the editor rail): impressions, clicks, CTR, CPC, conversions, cost/conversion, ROAS, and revenue are all real, saved fields — since no ad platform is connected, nothing populates them automatically, so they're there for you to fill in by hand.

Library actions (the ⋮ menu on any campaign): Duplicate copies the whole campaign including its current concept and variant content, so you can tweak and relaunch rather than starting from a blank template again — this is different from Write eMail's Clone, which resets to no emails, because the spec explicitly describes Ads' duplicate as reusable-as-is. Archive hides it behind the library's Archived toggle without deleting anything. Delete is permanent and confirmed first.

Presentations

Presentations is where you build webinar and VSL scripts — Perfect Webinar, 3-Hour Webinar, Short Pitch Webinar, VSL, and Product Launch Formula, plus Custom for a blank slate. A presentation is a single ordered list of Sections (Opener, Secret #1, The Stack, The Close, etc.) — simpler in shape than Ads, since there's no concept/variant nesting here. Click Presentations in the left menu, pick a type, choose a voice, and it seeds the real named sections for that framework with template placeholders and their actual word-count targets.

Update after the Blaze upgrade: Generate Draft is now genuinely AI-written, in the voice of your chosen Attractive Character (name, tagline, backstory, voice style, and signature phrases all passed in as real context), weaving in a real matching AC Story only when one genuinely fits. The model is also shown the full section structure of the presentation — every section's title and target length, not just the one it's writing — so a section fits its place in the arc without repeating ground another section already covers. Creating a presentation itself still seeds the real named sections as a fast, free template scaffold, matching how it's always worked — Generate Draft is the real, on-demand action that turns any section into genuine AI copy, written as a spoken script rather than an essay.

Still Coming soon: nothing — this section is now fully built (within the honest limits noted below).

The editor (open any presentation from the library) has a left rail with every section, and a center pane with the active section's body (markdown Edit/Preview toggle), a live word-count-vs-target line, private Section Notes, Copy (to clipboard), Generate Draft, Insert Hook/Insert Story, and Approve.

  • Section order is locked for the 5 named frameworks, matching the spec exactly — only Custom presentations let you reorder (up/down buttons) or add new sections.
  • Generate Draft now calls a real Cloud Function to fill the active section with genuine AI copy — if it already has real content, it still asks before overwriting, same as Ads.
  • Insert Hook / Insert Story pull from your real Brain libraries, same as Write eMail and Ads. No "Insert Stack" here either — Value Stacks doesn't exist in this app.
  • Keyboard nav: Cmd/Ctrl+↑/↓ moves between sections.

Export (the Export… button in the editor, or the ⋮ menu in the library): Markdown (full script), an Outline (one line per section with word-count target and status), and a Slide Outline. One honest note on that last one: it's a real, structured text outline — title plus bullet points per section — not an actual .pptx file. Generating a genuine PowerPoint client-side would need a library I couldn't verify works from this sandboxed environment, and a broken slide file would be worse than a clean text outline to build from.

Post-event results (the "Log results…" link in the editor rail): attendance, conversions, revenue, and private reflections notes are all real, saved fields — since no calendar or attendee-tracking integration exists, nothing populates these automatically, so they're there for you to fill in by hand after the presentation runs.

Library actions (the ⋮ menu on any presentation): Duplicate copies the whole presentation including its current section content, so you can tweak and reuse rather than starting from a blank template again — the same interpretation used for Ads' Duplicate, since the spec describes the copy as something you edit, not something that starts empty. Archive hides it behind the library's Archived toggle without deleting anything. Delete is permanent and confirmed first.

Code Agent

Code Agent is a chat-first AI pair-programmer: describe an app in plain English, get a real plan and real code back, and iterate by talking to it. Click Code Agent in the left menu to see the dashboard, or Browse templates for a pre-seeded starting point. The composer matches Main Chat's own: a real Mic (Web Speech API dictation), real file attachments (images/PDFs, genuinely read by Claude via real vision, not just referenced by filename), an @ mention to reference another of your own apps by name, and one-click shortcut chips below the composer that genuinely populate it with real, ready-to-send instruction text. Enter sends, Shift+Enter for a new line. Every code block in a reply has a real Copy button — copies the raw code itself (not the formatted display), ready to paste straight into a file. When a reply contains real code, a real Preview & Deploy button also appears underneath it — Preview runs the app for real, right in the browser (React + a live in-browser transform, the same real approach this app's own Artifacts use, with a real, readable error message shown right in the preview if something in the generated code genuinely fails); Deploy publishes that exact same running app to a real, public, shareable URL. A real Auto-Preview toggle sits above the chat — parallel to Optimised Chat's own "make the right call automatically" idea, applied here to Code Agent's actual core loop: on, a reply with real code opens Live Preview immediately, no need to click Preview each time; it resets to off each time you open a project. The one honest limit: this covers a self-contained React app only — no external npm packages, no imports between the AI's own files, and no real backend/database calls (Firebase included) since there's no real bundler or server behind it. If a request genuinely needs any of that, Code Agent says so rather than pretending it'll run. A real Deployments button on the dashboard lists every live URL you've ever published across every app, each with its own real Rename and Delete buttons — deleting one takes down the real Storage file immediately, so that link stops working right away, with no need to go into Firebase Console to remove one manually. Each app in the dashboard list also has its own real Rename and Delete — deleting an app is a real cascade delete of its full conversation history, not just the project record.

Update after the Blaze upgrade, correcting an earlier limit stated here: this section used to say there was no honest partial version of an app builder, and that the entire feature had to stay a shell because it couldn't be faked. That was true for live preview and one-click deploy specifically — those genuinely still don't exist, and still can't be faked without misleading anyone — but planning and code generation themselves turned out to have a real, honest partial version after all: a genuine AI conversation that writes real, complete code in real markdown code blocks, explains what it does, and is upfront when asked to actually run, preview, or deploy something that this app can't do.

  • The Dashboard — a real, saved list of your app projects, searchable, with a "New app" button.
  • Template Gallery — 8 real starter templates (CRM, Content Calendar, Kanban Dashboard, Landing Page, Invoice Tracker, Client Portal, Booking Scheduler, Internal Wiki). Picking one creates a real project pre-seeded with that template's description as the first chat message, and now gets a real first AI reply too.
  • The Chat — a real, persisted conversation per project, with real markdown rendering so code blocks actually render as code. A real "Thinking…" state while the AI works.

What's still genuinely unconnected: live preview, the iteration-against-a-running-app loop, and one-click deployment. Status stays deliberately simplified to just draft — "Building" and "Live" still aren't offered as options, since this app can't truthfully reach those states without a real sandboxed execution environment and deploy pipeline, neither of which exist.

Promoteer

Promoteer is the in-app social scheduler and moderator — a Kanban board (Draft → Scheduled → Published), a Composer, a Calendar, and Moderation tabs for incoming comments/DMs. Click Promoteer in the left menu.

The Composer and Kanban are real: caption with a live per-platform character counter, real drag-and-drop media upload to Firebase Storage with per-file progress (the same real pipeline already proven out for Assets), a platform picker, a schedule time picker, and a genuinely append-only state-change log every time a post moves between Draft/Scheduled/Published — including by dragging a card between columns on the board.

A note on what's not real: no Instagram/Facebook/TikTok/X account can actually be connected — there's no OAuth integration anywhere in this app for any social platform, so every platform in the picker permanently shows "Connect" and clicking it gives an honest explanation rather than pretending to start an OAuth flow. Schedule and Publish now both save the post for real but are upfront that nothing will actually go out, since there's no connected platform and no publishing worker behind this. Dragging a card into Scheduled without a schedule time set, or into Published at all, gets the same honest explanation instead of a fake status change.

Top hashtag suggestions are real once you have 5+ published posts on file — pulled from your own actual caption history, not invented "top performer" data (there's no real engagement metric available without a connected platform to measure it).

Still Coming soon: nothing — this section is now fully built (within the honest limits noted below).

Calendar is a real month grid — click any day to open a side panel showing what's scheduled, with a genuine drag-and-drop reschedule (drag a card from the panel onto another day, or drag straight from the panel onto a day cell). Filter chips above the grid narrow the view to one platform at a time. Days with no scheduled posts but drafts sitting unfiled show a real "N drafts ready" gap-filler hint — click one to fill that exact day, which also moves the draft to Scheduled for real.

Moderation has real Comments and DMs tabs with pending counts, and real Approve & send / Draft with AI (or Re-draft, once a draft exists) / Skip actions that genuinely update the item's status. Update after the Blaze upgrade: the one honest, permanent limit here remains — this list is fed by a real Instagram sync that doesn't exist anywhere in this app — but reply drafting itself is now genuinely real AI. Since there's no way for a real comment or DM to ever arrive without that sync, a handful of clearly-labeled example items are seeded once per account (the UI says plainly that these are demo items, not real synced activity) so the real AI drafting has something to work with — the same permanent "seed once, never again after a real deletion" pattern already proven for Tasks and WebScan briefs. Approve & send still honestly explains nothing can actually be sent, since no Instagram connection exists. Resync gives an honest "nothing to sync" notice rather than pretending to check anything.

Frameworks

Frameworks lets you extract a reusable phase structure from something you already have — a transcript, an article, notes — and later apply that structure to seed a new Write eMail sequence, Presentation, or Ads campaign. Click Frameworks in the left menu.

Built-in Catalog is real: 10 named, real marketing frameworks with their actual phase structures — Perfect Webinar, Soap Opera and Daily-Seinfeld email sequences, Product Launch Formula, Hook → Story → Offer, Epiphany Bridge, Value Ladder, Dream 100 Channel Mix, Attractive Character Archetypes, and 4 Profit Centers. These are read-only; Clone into My Frameworks makes a real, editable copy.

Extract framework opens a wizard with 5 source types and 4 extraction modes — only some of each are connected:

  • Pasted text works for real. Existing artifact, URL (YouTube/Vimeo/podcast), uploaded file, and direct audio capture all honestly explain they're not connected — each needs a real transcript-fetching or transcription service this app doesn't have.
  • Match a known framework and Define my own phases both work for real — the first clones one of the 10 built-ins with each phase's example text seeded from your pasted source (clearly labeled as a template, not written by AI); the second starts you with a blank framework to build from scratch. Update after the Blaze upgrade: Auto-detect and Hybrid are now genuinely AI-driven too — Claude reads your entire pasted source and infers its own real phase structure (however many phases actually exist in it, typically 3–10), pulling a real quote or close paraphrase from your actual source for each one rather than inventing content it doesn't contain. Both modes call the same real extraction; "Hybrid" only differs in that you're expected to edit the result afterward, which the real Phase 2 editor already supports for any framework regardless of how it was created.

Still Coming soon: nothing — this section is now fully built (within the honest limits noted below).

The editor (open any framework from My Frameworks) has a left rail listing every phase (add, reorder with up/down buttons, delete), and a center pane with the active phase's full field set: name, purpose, target word count, target duration, structural notes, and a markdown example text with Edit/Preview. Cmd/Ctrl+↑/↓ moves between phases.

Component tagging, for any framework with a pasted source: select a passage in the read-only source box and tag it as a Hook, Story, CTA, or Transition. Hooks save for real into your actual Brain → Hooks library. CTA and Transition tags save into two brand-new small libraries built specifically for this (the spec calls for new tables here, unlike Hooks/Stories, which the spec says to reuse). Tagging as a Story gives an honest note instead of auto-filing it — a real AC Story needs its full structure (Backstory, Wall, Epiphany, and so on), so a single tagged passage gets saved as a record here but has to be copied into Brain → AC Stories by hand. There's no "Tag as Stack Item" option at all — Value Stack doesn't exist anywhere in this app, same reason "Insert Stack" is missing everywhere else.

Apply Framework (the button in the editor header) is fully real: pick Write eMail sequence, Presentation, or Ads campaign, choose a voice, and it genuinely creates a new one of those, with each of the framework's phases becoming a real email / section / ad variant — seeded with that phase's actual example text (or a clearly-labeled placeholder if the phase doesn't have one yet), not a generic template unrelated to what you built.

Export (the same button, or the ⋮ menu in the library) produces a real Markdown file (every phase, in order) or a real JSON file matching the framework's own field structure. Duplicate copies the whole framework including its current phases; Archive hides it behind the library's Archived toggle without deleting anything; Delete is permanent and confirmed first.

Personal Assistant

Personal Assistant (her real, actual name is Kim Valentina — you'll know her casually as Kim) is a real AI agent living in chat that can call real tools into your actual business data and connected accounts. Click Personal Assistant in the left menu to see your sessions.

The composer now genuinely matches Chat's own — the same real Mic (dictation), Attachment (real Storage upload, real 50MB cap, real chips), @ mention (the same shared integrations menu Chat uses), and the same quick-actions row beneath it (Research, Write email, Analyze, Schedule, Plan Week, Skill…) navigating to those real sections exactly like Chat's own does. One honest, deliberate limit: an attached image or PDF is passed to Kim by real filename and a real working link, not read directly the way Chat's own attachments are — she knows it's there and can reference it, but doesn't yet see its actual content.

Kim genuinely knows who she's talking to — name, phone, address, and timezone, pulled live from your real Settings → Personal on every message, plus your real, server-verified account role (Admin/Staff/Paid/Free — something only your actual account claim decides, never something you could talk her into believing). Anything you haven't filled in over there, she'll say so honestly rather than guess or make something up.

This is a genuine multi-turn agent — a Cloud Function gives it real tools and lets it call several of them across multiple internal rounds before producing its final answer, deciding for itself when a tool is actually needed rather than always reaching for one.

  • Sessions — a real, saved list of your conversations, searchable, with a "New session" button. Each session's title is auto-set from your first message.
  • Renaming and deleting sessions — every session has pencil (rename) and trash (delete) icons, both in the session list and inside an open session's own header. Deleting a session removes its saved messages too, not just its title from the list — this can't be undone.
  • The Chat — every message is genuinely saved, with a real "Thinking…" state while the agent works.
  • Plan checklist — a real, per-session list of steps you add and check off yourself; the assistant doesn't create or update it automatically.

Real tools it can call — each one genuinely queries or changes your real, actual data, scoped to your account, never fabricated:

  • Your own app data: save_memory_fact, search_documents, list_customer_avatars, list_attractive_characters, search_ac_stories, search_hooks, and read-only lookups across Routines, Plan Week, Skills, Integrations, Frameworks, Ad campaigns, Presentations, Promoteer posts, Notes, Bookmarks, Collaborators boards, Video Transcriber transcripts, and AIO.
  • Gmail (if connected): search your inbox, create a draft, and — on clear instruction — send or delete (move to Trash) a real email. Sending is the one irreversible action here; the assistant defaults to drafting instead whenever there's any real doubt.
  • Google Calendar (if connected): view real upcoming events, create or update real events on request.
  • Google Drive (if connected): search real files, create real folders, rename/move real files and folders.
  • Google Docs (if connected): read a document, create a new one, append content to an existing one.
  • Google Sheets (if connected): read cell values, overwrite a range, append a new row.
  • AIO Agent Browser Session: a real Claude computer-use loop that can drive a live remote browser on an app you've registered in AIO, taking real actions on request (see the AIO section below for details and honest limitations).

Any of these that touch a real connected account will say so honestly if that account isn't connected yet, rather than faking a result.

Learn

Learn is a self-paced library of short walkthroughs for what BAWDA AI can do, organized by topic — no required order, no completion gates. Open it from the account menu (below Billing).

Genuinely different from the app's "Videos" section (still on hold): Videos wanted real third-party paid course video files; Learn is about BAWDA AI itself, so every lesson's written content is real and accurate, covering features that are actually built. There's no real video hosting connected, so the spec's own resilience rule — "if video fails, show transcript and summary, never block access" — becomes the honest permanent state here rather than a rare edge case: every lesson leads with real Summary and Transcript tabs instead of a video player.

  • Topics and lessons cover Brain, Write eMail, Ads, Presentations, Analyze, Documents, WebScan AI, Promoteer, Frameworks, and Content Planning (JK5/Tone) — accurate summaries of how each actually works in this app right now.
  • Progress tracking is real: viewing a lesson marks it In Progress, "Mark complete" is a real per-user, per-lesson state, and per-topic "X of Y complete" counts are genuine.
  • "Continue where you left off" and "Recently watched" on the home page are both real, drawn from your actual progress.
  • The Actions tab on each lesson has a real "Go to [Feature]" button that navigates you straight there, instead of handing off to an AI assistant that doesn't exist yet.

Sprints

Sprints are meant to be time-boxed, cohort-style training programs released on a schedule, each with its own library, sequential lessons, and optional companion apps. Click Sprints in the left menu.

Shares Videos' core limit: the spec's own example is "Dream 100," an actual marketingsecrets.ai program, so this needs real, paid, third-party course video content that doesn't exist to seed it with — same wall as Videos, honestly acknowledged rather than faked. The two example sprints in the library are clearly labeled [Example] and every lesson note says plainly it's a placeholder, not a real course.

What's real: the exact library → lessons → progress shape already proven out for Learn — a progress bar per sprint, per-lesson completion state, and Mark Complete that genuinely persists. There's no real payment provider, so nothing here fakes an unlock: one example sprint is fully viewable to demonstrate the unlocked experience, and the other is deliberately left locked to demonstrate the paywall — clicking "Unlock this Sprint" gives an honest explanation instead of pretending to charge you.

Apps layer: a sprint can list companion apps, and Install/Uninstall on those tiles calls the exact same real infrastructure already built for Software — this isn't a separate install system. In fact, Software's Research app was already gated behind unlockType: 'sprint' from when Software was first built, anticipating this section; completing the example sprint now genuinely unlocks it there. Update after the Blaze upgrade: Research itself is real now too — it opens Chat with the composer focused toward Deep Research, the genuine capability built in an earlier Blaze step, not a separate research system.

Schedule

Schedule is one calendar aggregating everything with a real date already scheduled elsewhere in this app — a genuinely live view, not a separate system you maintain by hand. Click Schedule in the left menu.

  • Real sources: scheduled Promoteer posts, scheduled Presentations, and scheduled Write eMail sequences/broadcasts. Clicking an item's "Open in…" takes you straight to it in its real section.
  • A real fix along the way: Write eMail's "Schedule…" action used to be just a toast with no date picker behind it at all — it now genuinely saves a date, which is what makes it show up here. Ads' launch-date field has the same gap and hasn't been fixed yet, so scheduled ad campaigns don't appear on this calendar.
  • Reminders are Schedule's own native, fully real item type — add one from "+ New Reminder," with a real Repeat option (Daily, Weekly, Bi-Weekly, Monthly, or Yearly — e.g. a reminder set for a Monday at 4pm with Weekly picked genuinely recurs every Monday at 4pm; recurring occurrences are computed live, not stored as separate documents) and a real Remind me lead-time alert — pick a number and a unit (minutes, hours, days, weeks, months, or years) and a real email goes to this account's own address that far ahead of the reminder's actual time. Checked every minute, so short lead times (down to 1 minute) are honored precisely rather than only roughly. Works correctly for repeating reminders too — each real occurrence gets its own alert, not just the first one ever. A reminder already marked done or cancelled never sends a "coming up" alert. Every reminder can be genuinely edited (click it → Edit, reopens the same form pre-filled) or deleted outright (a real, permanent delete, not just marked cancelled), alongside the existing Mark done/Cancel. For a repeating reminder, Edit/Delete/Mark done/Cancel all apply to the whole series — there's no per-occurrence override system, and the inspector says so plainly when you open a repeating reminder rather than implying something more granular than what's actually there.
  • Conflict detection is real: a banner appears when 2+ items land within 30 minutes of each other, or 3+ items share the same channel on the same day.
  • One honest limit: the calendar re-reads Promoteer/Presentations/Write eMail's current data each time you open or navigate Schedule, rather than being wired into their own live update stream — so a change made in another tab while you're already sitting on this page won't appear until you revisit it. Reminders update live.

Plan Week

Plan Week is weekly goal-setting and time-blocking, built directly on top of this app's real Projects and Tasks — not invented data. Click Plan Week in the left menu; prev/next arrows move between weeks, each auto-created the first time you visit it.

Plan mode is real: add Weekly Goals and mark them done, check off which of your actual Projects get focus this week, and see a real, AI-prioritized Suggested Week. A real Claude call reads your weekly goals, in-focus projects, and every real open task's real priority and due date to genuinely distribute tasks across the week — earlier-due and higher-priority tasks land earlier, tasks tied to a goal or an in-focus project get weighted higher, and each day gets a short, real, specific rationale rather than generic filler. Not every open task has to be scheduled if there are more than the week can reasonably hold; leaving a lower-priority one unscheduled is a genuine prioritization choice, not an error. Commit Week is real and moves the week from "planning" to "active."

Still Coming soon: nothing — this section is now fully built (within the honest limits noted below).

Committing a week genuinely turns the AI's Suggested Week into real Day Blocks, one per weekday — committing saves exactly what the AI showed you, including its real per-day rationale saved as that block's real notes, not a separately re-computed guess. Made a mistake? A committed week's "Commit Week" button becomes a real Cancel Commitment — it genuinely deletes the day blocks it created (including anything already marked done in Execute mode, which it warns about before you confirm) and reverts the week back to planning, so you can adjust your goals or in-focus projects and commit again cleanly rather than ending up with duplicate day blocks.

Execute mode shows today's #1 goal, today's real day blocks with Mark Done and a notes field, and a genuine streak — queried across your actual week history, counting back from the most recent week, stopping at the first one that wasn't both committed and reviewed.

Review mode is real: wins and lessons (free text, one per line), energy/satisfaction ratings, and Save Review moves the week to "reviewed." Rolling a goal forward genuinely copies it into next week's real Goals list rather than just marking it rolled with nothing carried over.

History lists every real week on file; clicking one jumps straight to it. Templates save the current week's goals as a reusable starting point, and applying one adds those goals for real to whatever week you're currently viewing.

Worth knowing: Routines isn't wired in at all — the original spec ties Plan Week to scheduled routine instances, but Routines doesn't exist as a section in this app yet, so that dimension is left out entirely rather than shown with nothing behind it.

Prompt Window

Prompt Window is the chrome around the main Chat composer — it isn't a separate page. This section enhances the real, already-working textarea and send button with the full set of controls the spec describes.

  • Model selector (top-left pill): a real dropdown between three placeholder models with a genuinely saved default preference. These are generic names, not real Anthropic model names, since this fictional app isn't explicitly Claude-branded.
  • Dictation (mic button): genuinely real, using your browser's own Web Speech API — no server involved. Denied microphone permission or an unsupported browser both get a clear, honest explanation instead of silently failing.
  • Attachments (paperclip, or drag-and-drop anywhere on the composer): real file picker, real chips with filename/size/remove, and a real 50MB total cap enforced client-side. Files genuinely upload to Firebase Storage with live progress.
  • Integrations @-menu: real, pulls your actual connected integrations from the Integrations page and inserts a real @slug at your cursor. "Connect more…" takes you straight there.
  • Skill indicator: real, pulls your actual Skills. Click the "Skill…" quick-action to pick one; the badge appears above the input and clicking it clears the active skill.
  • Quick actions: Write email, Analyze, Schedule, and Plan Week all navigate you straight into those real sections. Research now focuses the composer with a real placeholder hint, since research itself lives inside Chat — see the Research section below.
  • "Suggested for you": real, grounded in actual observable state in your account — open Tasks, an uncommitted Plan Week, unread Feed items, pending Promoteer moderation — never fabricated personalization. The section is hidden entirely when there's nothing to suggest, per the spec's own edge case.

Update after the Blaze upgrade: sending a message now gets a genuine reply — Chat calls a real Cloud Function that calls the real Anthropic API, with full multi-turn conversation history sent on every call. As of Step 10, that function is generateResearchResponse rather than a plain chat call — see the Research section below for what that actually adds. The three model tiers in the selector now map to real Claude models. Credits are genuinely deducted per real call (server-side, with an exact refund if the API call itself fails) — except for the app's one admin account, which is unlimited by design. A clear inline error appears if you're signed out, out of credits, or the AI service is temporarily rate-limited.

Research

Research isn't a separate page — per the spec, "there is no standalone research page; research happens inside the chat flow." So this section describes what Chat itself now genuinely does, rather than somewhere new to click.

Memory first, for real: before answering, every message checks your actual saved Memory Facts and Profile Facts (both real Brain data) — if they already answer the question, the model is told to use them directly rather than search the web unnecessarily.

Quick vs. Deep, genuinely routed: most questions get Quick Research — a concise, cited answer grounded in a handful of real web sources (or your real memory, when that's enough). Saying something like "deep dive," "comprehensive report," "thorough analysis," "full breakdown," "competitive analysis," "market research," or "exhaustive analysis" — the spec's own explicit trigger phrases — genuinely detects Deep Research intent and shows a real confirmation card (cost and time estimate included) before anything fires, exactly as the spec requires. One honest limit worth stating plainly: "Deep" here means a real, meaningfully more thorough single AI pass with a much higher web-search budget — not a literal guarantee of scanning 100+ distinct sources the way a dedicated research pipeline might promise.

Real citations: inline markdown links next to the claims they support, plus a real numbered sources list under the reply when the model actually searched.

Real next-step suggestions: every research reply ends with 2–4 genuine, clickable suggestion chips — tapping one sends it as your next message, exactly the "first-person, action-first" pattern the spec calls for.

Real Feed cards, every time: after any research interaction, a genuine research_report_card is saved to your Feed — this is that card type's third real use (Analyze already uses the same one for its own reports).

Deep Research also saves a real Document: the full long-form answer is saved to your actual Documents library with a real word count and reading time, and the reply includes a genuine "View saved research document" link straight into it.

Routines

Routines are a prompt on a recurring schedule that fires in the background — a weekly digest, a daily inbox check — without you needing to be looking at the app. Click Routines in the left menu.

Update after the Blaze upgrade — this is now genuinely real, correcting an earlier limit stated here: this section used to say real scheduled firing was architecturally impossible for a static app with no server at all. That was true only within this project's pre-Blaze constraints — Cloud Functions changed that. A real background job (firePendingRoutines) now runs every 15 minutes, checks every active routine across every account for whether its real, stored nextFireAt has passed, and fires each one for real — independent of whether your browser tab is even open.

What's real: full CRUD (name with a real "no dates allowed" check, prompt with a real 4000-character counter, the 5 schedule presets, day-of-month capped at 28, a real integration dropdown pulling your actual connected integrations, delivery checkboxes requiring at least one), Pause/Resume, Delete, a real detail view, and real run history. "Next scheduled" is a real, honest prediction of when the background job will actually pick this routine up — computed correctly for the timezone the routine was created in, not just the server's own clock.

Run now and a real scheduled fire both run the exact same real AI execution — the routine's prompt is sent to Claude for real, and the result becomes that run's summary. If Feed delivery is checked, this is routine_result_card's real caller — one of Feed's 9 card types. Email delivery still gives the same honest "no email service connected" notice used everywhere else an outside service is involved; Silent delivery logs to History only, exactly as designed. A failed run (out of credits, a bad prompt) shows up honestly in History with a red status and the real error message, rather than being hidden.

One honest limit that remains: a routine's optional integration reference (the @toolkit dropdown) still can't actually act through that integration — no real OAuth layer exists yet, same as everywhere else in this app. The routine's prompt still runs for real; it just can't call out through Gmail, Instagram, or whichever toolkit is named.

Community

Community is meant to be a member-to-member layer — profiles, posts, comments, reactions, follows, groups, moderation. Click Community in the left menu.

Built as a genuine single-user shell, by explicit choice: the real version needs other members' profiles and posts to be readable by everyone, cross-account follows, and moderation spanning every user's content — the same multi-user architecture conflict already holding Team & Seats and Members for last, since every collection in this app is owner-scoped. Rather than defer this one too, it's built for real within that honest limit: everything works, it just only ever shows your own content, since there's no one else here yet.

Posting is real: markdown body up to 5,000 characters, optional image (real upload to Firebase Storage), optional link (link previews always show the bare URL — the spec's own "preview fetch failed" edge case is the honest permanent state here, since no real link-preview service exists). A real 15-minute edit window, after which Edit disappears from the menu; editing shows a real "edited" indicator. Delete is a real soft-delete — content is replaced with "[deleted]," matching the spec exactly.

Reactions are real and idempotent: 5 emoji, one per person per post, clicking the same one again removes it, clicking a different one replaces it. Report saves a real report for moderation review.

Still Coming soon: nothing — this section is now fully built (within the honest single-user limits noted above).

Comments are real, threaded exactly one level deep — reply to a top-level comment and it nests under it; replies themselves can't be further replied to, matching the spec. Comments support the same 15-minute edit window, soft-delete, and reactions as posts, each independently. The composer at the bottom of a post's detail page is real and capped at 2,000 characters.

My Profile is real: avatar initial, bio, location/website, join date, and post/follower/following counts, with a real Posts/Replies/Reactions tab set (Reactions is currently just a note pointing you to individual posts, rather than a full reverse-lookup index). Edit Profile opens real Settings — display name, bio, location, website, all genuinely saved.

Groups are real — create one with a name, description, and public/private visibility, and it gets its own real group feed (posts filed into it show up there and in the main feed). You're automatically its only member, since there's no one else to invite yet.

Moderation shows your real open reports with Hide and Dismiss actions. Hide genuinely marks a reported post as hidden; one honest, disclosed gap: comment reports aren't wired to a specific document path in this simplified build (the report doesn't track which post a comment belongs to), so hiding a reported comment falls back to just dismissing the report, with a clear toast explaining why.

Support

Staff/Admin-only now, per explicit decision — hidden from regular accounts in both the left nav and the account menu, and genuinely enforced in Firestore rules too, not just hidden in the UI. Anyone who already had a ticket before this change keeps access to it; only creating new ones is restricted now.

Support is the "Contact Support" dialog in the account menu (last item before Sign out). Almost everything about it is genuinely real — this section had no AI, server, or multi-user dependency to work around.

  • Real validation: Subject 3–120 characters, Message 20–5000 characters with live counters, Send stays disabled until both are valid.
  • Real attachments: up to 5 files, 25MB each, an allowlist of common image/PDF/text types. Attachments upload to Firebase Storage before the ticket is created, and a failed upload never blocks sending the message — it's just dropped with a clear notice, exactly per spec.
  • Your account email is real and read-only, pulled from your actual Firebase Auth session, with a "Prefer email?" fallback and a working Copy button.
  • Auto-attached context (page URL, referrer, user agent, viewport size) is captured and saved on the ticket for real, the same way it would be server-side in the original spec.
  • A real 60-second client-side rate limit between submissions, surfaced as a clear message rather than a silent block.
  • Tickets are grouped into real, correctly-separated categories — All / Open / In Progress / Closed, each showing a live count — with a Newest/Oldest sort control, so tickets in one status never bleed into another category's list.

Any Staff or Admin account can genuinely see and reply to a ticket you open — see the Staff & Support section below for what that side looks like.

Feedback

Feedback is the "Send Feedback" dialog in the account menu, right above Support. Same shape as Support, and just as genuinely real — no AI, server, or multi-user dependency stood in the way here either.

  • Real category picker: Bug Report, Feature Request, or Other.
  • Real validation: Title 3–120 characters, Description 10–2000 characters, live counters, Submit stays disabled until both are valid.
  • Real optional screenshot: drag-and-drop or file picker, PNG/JPG/GIF up to 10MB, genuinely uploaded to Firebase Storage.
  • Your account email is real and read-only, pulled from your actual Firebase Auth session.
  • Auto-attached context (page URL, referrer, user agent, viewport) is captured and saved for real.
  • Submitting swaps the dialog to a real "Thanks — we got it" confirmation with a genuine short reference ID (the first 8 characters of the actual saved document's ID), then auto-closes — matching the spec's confirmation-without-status-tracking design.
  • A real idempotent guard prevents a double-click or a retry from creating duplicate submissions.

The one honest limit, same as Support: no real team reviews what comes in — the submission saves for good, but that's as far as it goes in this build.

Documents

Documents is the master library for every structured write-up you create in BAWDA AI — specs, frameworks, SOPs, plans, reports, sequences, strategy docs, and anything else — across 8 categories, each with its own extra fields (an SOP tracks owner role and review dates; a Plan tracks budget and timeline; and so on). Click Documents in the left menu.

  • List page — category tabs with live counts, search, 5 sort modes, table or card view, Favorite/Pin, rename in place.
  • Editor — real markdown rendering with an Edit/Split/Preview toggle, an auto-generated table of contents from your headings, a formatting toolbar, tags, and full keyboard shortcuts (Cmd/Ctrl+S save, +B/+I/+K formatting, +Shift+P toggle preview). Auto-saves as you type; Cmd/Ctrl+S forces an immediate save.
  • Checklists — markdown checkboxes (- [ ] like this) render as real, clickable checkboxes right in the preview.
  • Category panels — SOPs and Strategy docs get a real review-due banner computed from their actual review date; Plans get a real timeline bar from their actual start/end dates; Sequences count real ## message headings for a cadence view, rather than trusting a disconnected number.
  • Related Docs — a real heuristic (matching category, shared tags, similar titles), not AI.

Downloads: .md and .json are straightforward real files. .pdf uses your browser's own print-to-PDF (choose "Save as PDF" in the dialog that opens). .docx uses a real code-side library loaded from the internet — if you ever see it missing from the download menu, that library didn't load, and the rest still works fine. "Download all formats" bundles everything into a real ZIP.

Version history is real — a new version is saved at meaningful checkpoints (saving with Cmd/Ctrl+S, or leaving/switching documents), not on every single keystroke pause. Restoring an old version creates a new edit rather than deleting anything in between, so nothing is ever lost.

Public sharing is real and works for anyone you send it to — optional passcode, optional expiry, a real view/download counter, and Revoke that immediately and permanently invalidates the link while keeping its stats. The shared page is a snapshot from when you shared it, not a live view of further edits.

Software

Software is a catalog of single-purpose tools you install into your sidebar, rather than always seeing every tool as a permanent menu icon. Click Software in the left menu to browse it — filter by All / Installed / Available / Locked, or by category.

All 13 listed apps are real now — WebScan AI, Collaborators, Video Transcriber, Calculator, Notes, Bookmarks, AIO, Research, Promoteer, Framework Extractor, Personal Assistant, QR Code Generator, and Profit Machine. Install any of them from here (or open it straight away if it's already installed) to run it; Research opens Chat with the composer focused toward the real Deep Research capability rather than a separate second research system, Promoteer/Framework Extractor/Personal Assistant each open their real, existing section elsewhere in the app, and QR Code Generator and Profit Machine are both real, internal view-panes like every other app here, not separate pages. QR Code Generator: custom colors and gradients, a logo overlay, label frames and borders, real PNG/SVG/JPG export, all genuinely client-side with nothing ever uploaded anywhere. Saving a code is real too — persists to your own account (not just the current tab), so you can come back anytime, reopen it, and update its content or styling; clicking "Save" again while one's loaded updates it in place rather than creating a duplicate, with a "Save as a new copy instead" option when you genuinely want a second version. The catalog, install/uninstall, and the "Installed Apps" sidebar section are all fully real and working, same as before.

Profit Machine is a real, full trading position calculator, rebuilt faithfully from a much larger original spec — here's the real feature set: real live price and 24hr peak/valley from Binance (falling back to MEXC/a CORS proxy if needed), 4 saved positions per side with tab switching, real entry/target/liquidation math, Take-Profit rollover, Binary Sync (mirrors Long entries into Short at the same position), and a browsable real ticker list. The AI Prediction chart is a real 10-dataset Chart.js visualization with timeframe selection, history navigation, and drag-panning — honestly labeled as an illustrative simulation of a plausible price path, not a genuine market prediction. Auto Trading Intelligence proposes real Buy/Long and Sell/Short plans and tracks real intention history. AI Communications is real Claude — genuinely aware of every real number on the page: Equity, QTY, Fixed Profit, Total Fees, Buffer, live price, and every position's entry/target/liquidation/floor/ceiling/PnL across all 4 slots per side, plus the real current AI Prediction Analysis values (Projected, Live, Current Level, Long/Short Target, Fee Recovery, 24h Peak/Valley, Floor/Ceiling) and the real projected price path itself — actual time/value pairs sampled across whatever chart window is currently visible (respecting your timeframe and pan position), so it can genuinely answer questions about trend or the projected value at a specific time, not just a single current number — plus Auto Trading Intelligence's proposed plans whenever those sections are actually open — no API key needed, with a real, toggleable internet-access switch (Local by default; checking it gives Claude real, live web search, at a higher credit cost) — Enter sends, Shift+Enter for a new line, single-shot (one prompt, one response, not a saved chat). Calendar, Scientific Calculator, and Notes are real embedded mini-tools, kept deliberately separate from the main Calculator/Notes apps elsewhere in Software. Telegram/BONKbot is a real deep-link launcher; Live Market News is a real RSS feed (Cointelegraph/CoinDesk/CryptoPotato) with real BTC/SOL filtering. Sound (hover + click + alarm), the AI deviation screen-pulse alert, and price-path pattern alerts are all real too. One thing worth knowing: unlike QR Code Generator's saved codes, none of Profit Machine's data (positions, calendar notes, calculator notes, chat) persists between visits — it's genuinely session-only, matching the original design.

Installed Apps sidebar — clicking an app in the sidebar list opens it directly now, rather than taking you to its Software catalog page first. Each of the 7 standalone apps (WebScan, Collaborators, Video Transcriber, Calculator, Notes, Bookmarks, AIO) now also has its own Uninstall button right on its own page, in addition to Software's — useful now that the sidebar skips the catalog page entirely.

Uninstalling is soft — an app's saved data is never deleted, so reinstalling picks up exactly where you left off.

WebScan AI

WebScan is a 60-second revenue diagnostic — paste a domain or business name and it scores the business against 15 specific "revenue levers" (Lead Magnet, Sales Funnel, Offer Stack, Backend Monetization, Value Ladder, Email Nurture, AI Software, and so on), each rated Red/Yellow/Green with a finding and a rough dollar-opportunity estimate, rolling up into one overall 0–100 score. Install it from Software, then open it from there or from Installed Apps in the left menu.

Update: the 15-lever list was corrected to exactly match the spec (a "Backend Monetization" lever that was missing entirely has been added, a non-canonical "Conversion Rate Optimization" lever that was never part of the real spec has been removed, and two levers were moved to their correct scoring tier) — every scan now also includes a real quoted evidence excerpt from the fetched page per lever, when one exists.

Update after the Blaze upgrade: scans are now genuinely AI-driven. Each scan attempts a real fetch of the target's live page (the same underlying utility Analyze uses), and when that succeeds, all 15 levers are assessed against real, current page content. When it can't be fetched (a site blocking simple bot requests, needing JS rendering, or just no domain given), Claude reasons from the business name alone and is explicitly told to keep every finding honest and every dollar-opportunity estimate conservative rather than invent specifics it couldn't have observed — reflected right on the report itself. The scoring math stays exactly as it was: each lever's tier (weighted 2x / 1.5x / 1x) genuinely rolls up into the overall score and its band (Critical/Underdeveloped/Functional/Strong/Exceptional), real and untouched by this step.

Still Coming soon: nothing — this section is now fully built (within the honest limits noted below).

The report banner tells you plainly which case you're looking at — grounded in a real fetch, AI reasoning without live content, or (for any scan run before this update) an older heuristic scan that hasn't been re-scanned yet.

The report groups all 15 levers by their real weight tier (Tier 1 = 2x, Tier 2 = 1.5x, Tier 3 = 1x), with each lever's Red/Yellow/Green status, finding, and estimated dollar opportunity.

Update: real YouTube presence lookup is now connected — the first of the spec's 5 additional crawl providers. Each scan now also genuinely searches for the business's YouTube channel and, when a real match is found, pulls its actual subscriber/video/view counts and top videos by view count, feeding this into the AI's real assessment (particularly Content Engine). When no real channel can be matched, the scan honestly says so rather than assuming no video presence exists.

Update: real multi-page site crawling via Firecrawl is now connected — the second provider. Each scan now genuinely fetches real content from the target's homepage plus, where they exist, its pricing and about pages, via Firecrawl's real crawl API — deeper than the basic single-page fetch that still runs as a free, no-key-needed backup whenever Firecrawl isn't available.

Update: real tech-stack lookup via BuiltWith is now connected — the third provider. Each scan can genuinely detect real technologies (CMS, email tools, analytics, payment providers) actually in use on the target's domain. Worth knowing: BuiltWith has no meaningful free tier for real lookups — real plans start at $295/month — so unless a real paid key is set, this one runs through its real fallback question flow far more often than YouTube or Firecrawl do.

Update: Facebook Ad Library is now connected too — the fourth and final of WebScan's 5 crawl-stack providers, but deliberately different from the other three. Meta's official free Ad Library API is scoped almost entirely to political and social-issue ads; for a general-purpose tool scanning arbitrary commercial businesses, the real API would return nothing useful for most real scans. Building a toggle implying a working "real data" state would have been dishonest, so this provider has none — it always uses real, admin-provided fallback answers about a business's real ad activity, every single scan, and says so plainly in Settings rather than pretending a real API connection exists. A real, collapsible "Source evidence" section on the report lists every real source actually used for that scan (the page fetch, YouTube, Firecrawl, BuiltWith, and Facebook Ad Library), each with its own real excerpt and, when available, a real link to the source itself.

If YouTube's key is marked as a placeholder in Settings → API Keys → External API Keys, starting or re-running a scan asks a few real, specific questions about that business's YouTube presence instead of calling the real API — your real answers get used the same way real API data would, honestly labeled throughout as admin-provided rather than API-sourced.

Generate Proposal creates a real 9-section consultant proposal (Executive Summary, Current State, Roadmap, Implementation, Pricing, ROI, Metrics, Differentiators, Next Steps). Update: every section is now genuinely AI-written narrative prose grounded in that scan's real findings and dollar-opportunity totals — the Executive Summary specifically is a real 3-paragraph narrative, not a one-line data summary — then fully editable, matching the spec's own "pre-seeded but fully editable" rule. Pricing and Differentiators, which need the consultant's own real input, come back as a real, sensible starting point reasoned from the scan's own numbers, honestly framed as a draft to personalize rather than a final answer.

White-Label Settings (consultant name/title/website/brand color/footer text, and an option to hide WebScan's own branding) are saved for real, cached for reuse, and now genuinely applied to PDF exports and public share pages.

Re-scan adds a brand-new report row rather than overwriting the last one — that's what makes History real: every past scan for a target is preserved. History shows the full timeline with score deltas between consecutive scans, and Compare Two Scans gives a genuine lever-by-lever diff — which levers improved, declined, or stayed the same between any two scans you pick.

Export PDF (on both the report and the proposal) uses the same real browser-native print-to-PDF as Documents — no server-side renderer, just a hidden print-formatted page and the browser's own "Save as PDF." White-label branding, when set, is applied to the PDF's header and footer.

Create Share Link on a proposal generates a genuine public, token-based URL (optionally passcode-protected and/or time-limited) using the exact same security pattern as Documents' public sharing — a separate, narrowly-scoped collection so the public page can only ever read that one snapshot, never your account's other data. Revoking a link is immediate and permanent.

Collaborators

Collaborators is a real Dream 100 board — the people, pages, podcasts, channels, newsletters, and groups where your dream customers already congregate, organized as named cards in platform columns you can rank, research, and outreach against. Built on the Dream 100 framework from Russell Brunson (Expert Secrets / Traffic Secrets) and Chet Holmes (The Ultimate Sales Machine). Install it from Software, then open it from there or from Installed Apps in the left menu.

Creating a board now runs through the real 5-step Discovery Wizard: title/niche/dream customer profile, discovery keywords (with AI suggest), platform selection (default 8 plus any custom columns you add), and market maturity/target count. Finishing creates the real board and drops you straight onto it — the wizard's "preview starter cards before committing" step is the same real AI Research flow described below, reached per column rather than as one combined screen, so you see the actual board underneath each batch of candidates instead of approving up to 8 separate lists sight-unseen.

Eight built-in platform columns — Authors, Facebook Pages, Facebook Groups, Podcasts, Instagram, YouTube, Newsletters, and Blogs — plus a + Custom column button for anything else (Reddit, LinkedIn, TikTok, Twitch, Discord, and so on). Each column shows a running count against your target (default 100, set per board).

Adding cards two ways: + Add card for a manual entry (name, handle, link, follower count, audience signal), or AI Research to have Claude find real, named candidates for a keyword you give it — review the list, check the ones worth keeping, and click Add selected. Every AI Research call is honest about its own limits: it has no live browsing, so it answers from its own training knowledge of real accounts and will omit anything it isn't confident is real rather than invent a plausible-sounding name.

Click any card to open its detail drawer with four tabs:

  • Profile — follower count with its last-verified date, audience signal, which keyword surfaced it, its discovered/vetted/active/dead status, and the two earn-your-way-in / buy-your-way-in flags (Relationship target feeds the Outreach Pipeline, Ad target feeds the Ad Seed List export).
  • Outreach Log — the real pipeline (cold → outreached → responded → conversation → partnership → won/lost/archived). + Add Touch logs a real, timestamped entry (channel, message, response, next step) and automatically flips the card to "outreached" on its first touch.
  • Notes — free-form private notes, saved per card.
  • AI ResearchWho is similar? finds adjacent audience-holders to this one; Is this still active? gives Claude's honest best-effort liveness read (likely active / likely dead / uncertain), since a model's own knowledge of "still posting" can be stale — treat it as a lead to verify, not a guarantee.

Export from the board header covers the full board as CSV, a single column's CSV, a Trello-ready CSV (List/Card Name/Card Description columns, ready to paste into a Trello import), and an Ad Seed List — name, handle, and link for every card still flagged ad_target = true, for uploading as a Meta Custom Audience or interest-targeting seed.

Select on the board header turns on bulk-select mode — a checkbox appears on every card, and a bulk action bar lets you toggle Relationship/Ad flags or archive the selection in one pass. Archiving warns you separately when any selected card has an open outreach conversation, so nothing active gets buried silently.

Maintenance on the board header runs the weekly maintenance pass over the currently open board: stale follower counts (unverified >6 months), cards with no outreach touch in 90 days, and platform-specific dead-flag candidates (podcasts >18 months silent, blogs >2 years, authors >10 years). Each row gets a one-click action (mark verified, open the card, or mark dead) — dead-flag retirement is always a manual click, never automatic.

Import on the board header accepts a pasted CSV (from Excel/Sheets) or a copied Notion/Trello table — paste it in, pick which column it lands in, click Preview, uncheck anything you don't want, and import. Only a "name" header is required; link, handleOrId, followerCount, and audienceSignal columns are picked up automatically by header name if present.

Share on the board header creates a real public, read-only link (and a ready-to-paste iframe embed snippet) showing every card's name, link, and follower count grouped by column — a static snapshot taken when the link is created, never a live query, so your outreach log, notes, and private data are never exposed. Click Refresh snapshot after adding cards to update it, or Revoke link to kill it permanently, same pattern as WebScan's proposal shares.

Still Coming soon: nothing structural — every capability in the spec has a real implementation now, within the honest scoping noted above for the wizard's step 5.

Video Transcriber

Video Transcriber takes any video URL — YouTube, Rumble, or almost anywhere else — and turns it into a real, saved Markdown transcript under a Transcriptions heading. Install it from Software, then open it from there or from Installed Apps.

+ New transcription takes a pasted video URL and kicks off a real download and transcription job. The card appears immediately with a processing status and updates on its own — no need to refresh or wait on the page — once the real transcription finishes (typically a few minutes, longer for longer videos).

Under the hood: real audio extraction via yt-dlp (which is why this isn't limited to YouTube/Rumble — yt-dlp supports 1,800+ real sites), uploaded to AssemblyAI for real speech-to-text. If more than one distinct voice is detected, the transcript is speaker-labeled (Speaker A:, Speaker B:, etc.); otherwise it's plain running text. A failed transcription (an unsupported site, a private/removed video, audio AssemblyAI couldn't process) shows the real reason and offers Try again.

Once complete, a transcript is view-only in the app (by design — it's a genuine record of what was actually transcribed, not something that should silently drift from that) with Download .md and Copy actions. Delete removes it permanently.

No formal spec sheet existed for this feature yet at build time — it was built to a reasonable first-pass scope and documented as such. See the separate Video Transcriber Spec Sheet PDF for the full breakdown of what's real, what's approximated, and the upgrade path once a real spec is available.

Calculator

A real, internal calculator — basic arithmetic and a full scientific mode, toggle between them anytime. Install it from Software, then open it from there or from Installed Apps.

Basic covers add, subtract, multiply, divide, percent, sign toggle, clear, and clear-entry. Scientific adds sin/cos/tan and their inverses, ln, log, square root, x², x^y, 1/x, n!, 10^x, and the π/e constants, plus a DEG/RAD toggle for trig functions.

This works the way a real physical calculator does — operand, operator, operand, equals — not a typed-expression parser, so there's no parentheses button; each operation applies immediately to the current number on screen, which is why a running "12 +" sub-line shows above the display while an operation is pending.

Full keyboard support: number keys, + - * /, Enter or = for equals, Backspace to delete the last digit, Escape to clear, % for percent.

A session history list below the calculator logs every completed calculation — click any past result to load it back into the display. This resets when you navigate away; it isn't saved between sessions in this first pass (see the Calculator Spec Sheet PDF for the upgrade path if persistent history is ever wanted).

Notes

Notes is a full note-taking app modeled on Apple Notes — folders, pinning, checklists, search, a 30-day Recently Deleted, per-note passcode lock, and image attachments. Install it from Software, then open it from there or from Installed Apps.

The three-pane layout works like Notes.app itself: folders on the left (plus All Notes and Recently Deleted), the note list for whichever folder is selected in the middle (search box included), and the editor on the right. Autosaves as you type — no save button.

Editor toolbar: bold, italic, underline, a real interactive checklist (click a checkbox to mark it done), bullet and numbered lists, image insertion, pin, lock, move to folder, and delete. Recently Deleted holds a soft-deleted note for 30 days (auto-purged server-side after that, same as real Apple Notes) before it's gone for good; you can restore or permanently delete early from there.

Lock gates a note behind a passcode you choose, checked against a real hash before the note opens. This is a real access gate, not full end-to-end encryption the way Apple's own note-locking is — worth knowing if you're locking something genuinely sensitive. See the Notes Spec Sheet PDF for the honest distinction.

Update from Mac is a real, working import: download the provided AppleScript, run it on your Mac (Script Editor walks you through it), and it exports every note in Notes.app to a JSON file on your Desktop. Upload that file back in the Update modal, and it creates or updates notes here — matched by each note's real Apple Notes ID, so running it again later updates existing notes instead of duplicating them. This only ever pulls from your Mac into this app, never the reverse.

The Live sync toggle next to Update is intentionally disabled. Continuous two-way sync between Mac Notes and this app would require a separate program running on your Mac at all times with permission to read and write Notes.app — genuinely outside what a browser-based app can install or control. Clicking the toggle explains this; the Notes Spec Sheet PDF documents the real architecture that would make it possible as a scoped future upgrade.

Bookmarks

Bookmarks manages your real Chrome bookmarks — a hover-flyout menu matching Chrome's own bookmarks-bar behavior, plus a full management panel for real CRUD, all backed by a companion Chrome Extension that does the actual reading/writing of Chrome's bookmark store. Install it from Software, then open it from there or from Installed Apps.

Unlike Notes' Mac import, this one supports genuine automatic two-way sync — Chrome does publish a real extension API for bookmarks, unlike Apple Notes. Chrome → Cloud changes push instantly (the extension reacts the moment you add, edit, move, or delete a real Chrome bookmark). Cloud → Chrome changes are picked up roughly every 60 seconds — the real practical minimum for a Chrome extension's background polling, not instant, but close.

Setup: install the companion Chrome Extension (provided as a downloadable .zip — unzip it, then load it unpacked via chrome://extensions → Developer mode → Load unpacked, since this hasn't been published to the Chrome Web Store). Click Connect Extension in the app to get a one-time 6-digit pairing code, enter it in the extension's popup, and it signs in as your real account and does a first full sync.

Auto-sync toggle in the sync panel turns live syncing on or off in both directions at once. Off means nothing syncs automatically — you can still trigger a one-time Sync Now from the extension's popup at any time regardless of the toggle.

The hover-flyout menu at the top mirrors Chrome's own bookmarks bar — hover over a folder to see its contents, hover over a nested folder to flyout further, click a bookmark to open it in a new tab. The manager panel below is where real CRUD happens: browse by folder (Bookmarks Bar / Other Bookmarks / Mobile Bookmarks, Chrome's own real top-level folders), search across everything, and add, edit, move, or delete bookmarks and folders. Anything created, edited, or deleted here reaches your real Chrome bookmarks on the next sync (instantly if a change originated in Chrome, within about a minute if it originated here).

No formal spec sheet existed for this feature yet at build time. See the separate Bookmarks Spec Sheet PDF for the full architecture, the extension's real code, and known edge cases (e.g. no specific conflict-resolution policy yet for the same item changing in both places within the same ~60-second window).

AIO (Applications I Own)

AIO is a real registry of the third-party apps and websites you have access to — name, URL, whether you have White Label access, and an optional saved login — one click away, and genuinely known to your Personal Assistant. Install it from Software, then open it from there or from Installed Apps (clicking an app in Installed Apps now opens it directly, not its Software catalog page).

+ Add Application saves name, URL, a White Label checkbox, and an optional username/password. Any stored login is real AES-256-encrypted before it's ever written to the database — never plaintext. Open launches the site in a new tab; Edit lets you update details or reveal a saved login (decrypted just for you, on demand); each app's own page also has its own Uninstall button now, in addition to Software's.

Connected to the Personal Assistant, for real: Kim can call a real list_owned_apps tool to see what you have access to and reference it when helping you figure out how to get something done. It deliberately never sees the actual password through this path, only whether one exists.

Agent Browser Session starts a real, separate remote browser (via Browserbase — a paid, real account is required; sessions will fail if that account's free minutes run out) live inside the app. Type an instruction and it genuinely tries to complete it: Claude's real computer-use capability looks at the live screen, decides an action, executes it against the real session, and repeats — watch the live view to see it happen, with a running step log alongside it, capped at 15 real steps per instruction. It defaults to landing on the app's own registered URL rather than a blank page, and neutralizes copy/inspect-blocking scripts and forces links that would open a new tab to open in the same one instead, so the agent's own view always reflects what actually happened. This has been confirmed working end-to-end on real tasks. One known real limitation: sites with Cloudflare's more advanced bot-challenge protection (confirmed with Rumble) can still block it even with a residential proxy and browser-fingerprint impersonation in place — parked for now, not something to expect working yet.

See the separate AIO Spec Sheet PDF for the full breakdown, the credential-security tradeoffs, and the tool-registry pattern for extending Personal Assistant coverage further.

Skills

Skills work the same way they do for the AI models themselves: a skill is a name, a short trigger describing when it should be used, and a set of instructions to follow when it's relevant. Update: Skills are now genuinely scoped to each workspace — switch workspaces and you'll see that workspace's own real library, not everything mixed together. Click Skills in the left menu to see every skill in your current workspace.

  • Learning a new skill — click Learn new skill, then fill in a name, the trigger (when it should be used), the instructions it should follow, and an accent color. Click Learn skill and it's added to your list immediately, switched on by default.
  • Turning a skill on or off — each skill card has a toggle in its bottom-right corner. Off skills stay in your list, dimmed, without being considered for anything until you switch them back on.
  • Renaming a skill — hover a card and click the pencil icon, the same inline-edit pattern used for workspaces, projects, and chats.
  • Deleting a skill — hover a card and click the trash icon, then confirm. This can't be undone.
  • How to Create a New Skill is included by default — a starter skill that explains the process of building your own, the same way a "how this works" example is built into Claude's own skill system.

Update: your active skills are now genuinely read and applied by real AI calls — Chat (Claude, Gemini, ChatGPT, and Perplexity), Write eMail, Ads, Presentations, Personal Assistant, and Code Agent all send your current workspace's active skills along with every request, and the model itself decides which (if any) genuinely fit based on each skill's own trigger description. Toggling a skill inactive, or switching workspaces, changes what gets applied in real time. Skills marked inactive are never sent. The library itself is real and saved per-workspace, tied to your account.

Integrations

Integrations connect real third-party accounts — Gmail, Google Calendar, Google Drive, Google Docs, Google Sheets, Slack, GitHub, Notion — so the Personal Assistant can act on them directly in conversation. Click Integrations in the left menu to see everything connected in the current workspace.

Five of these are genuinely real — Gmail, Google Calendar, Google Drive, Google Docs, and Google Sheets all use a real, full server-side OAuth flow (refresh tokens, secure server-side storage, no client access to the credential itself). All five share the same underlying Google OAuth client, so connecting one doesn't require repeating any setup for the others. Slack, GitHub, and Notion remain honest placeholders — not wired up yet.

  • Connecting for real — a card that isn't really connected yet shows a Connect for real link. Clicking it takes you to Google's actual sign-in and permissions screen (account picker included) — go through that fully rather than closing it early, or the connection won't complete.
  • Turning an integration on or off — the toggle pauses it without disconnecting it; the badge on the card reflects this honestly (green "Connected" when on, gray "Off" when paused — toggling off never severs the real underlying connection, it just stops the Assistant from using it).
  • Renaming — hover a card and click the pencil icon.
  • Disconnecting — hover a card and click the trash icon, then confirm. This revokes the real stored credential server-side, not just the visible status — a "disconnected" service genuinely can't be used again until reconnected.

What each one can really do:

  • Gmail — search your real inbox, create real drafts, and (on clear instruction) send or delete (move to Trash) real emails.
  • Google Calendar — view real upcoming events, and create or update real events on request.
  • Google Drive — search real files by name, create real folders, and rename/move real files and folders.
  • Google Docs — read a real document's content, create a new real document, and append real content to an existing one.
  • Google Sheets — read real cell values, overwrite a real range, and append a real new row.

Sending an email is the one genuinely irreversible action in this list — the Assistant is instructed to default to creating a draft instead whenever there's any doubt about recipient, content, or intent, rather than guess and send.

Credits

A balance pill near the bottom of the left menu (and a full page reachable from the account menu) tracks the credits every AI action would cost. The balance itself, your usage history, and the pricing reference are all real and backed by your account.

No payment provider is connected — Buying a top-up pack or changing plans shows a plain notice saying so rather than pretending to charge anything, matching how API Keys handles the same situation.

Update after the Blaze upgrade: Chat now genuinely consumes a credit per real AI call — deducted server-side in the same Cloud Function that calls Anthropic, with an exact refund if that call fails, so a flaky API response never actually costs you anything. Usage history now reflects real calls, not just a starting allowance. The app's one admin account (oneil.greaves@gmail.com) shows "Unlimited" instead of a number — genuinely unenforceable by anyone editing their own account data, since the check happens server-side against the verified sign-in email on every single call, not against anything stored in Firestore.

Update: real, distinct allowances per role — Free User gets 100 credits, Paid User 1000, Staff 2000, Admin unlimited, each over a real 30-day period. A real, automatic background job checks daily and genuinely resets each account's allowance once its period ends — no manual step needed. Changing someone's role from Settings → Team & Roles updates their allowance immediately too, not on some future cycle. Real top-ups or bonus credits a person has separately are their own pool and are never touched by a role change or a routine replenishment. A real security gap from before this got fixed along the way: credit balances used to be directly writable by the signed-in account itself in Firestore, which meant anyone could have opened dev tools and set their own allowance to anything. All writes to a credit balance now happen only through Cloud Functions, server-side, the same principle already used for role enforcement.

Billing

Reachable from the account menu. Update: real Stripe billing is now connected for the Paid User plan ($99/month). Starting a trial now genuinely runs through Stripe Checkout — a real card is collected upfront (required, not optional, a deliberate change from how this page worked before), and you’re not charged until the real 14-day trial actually ends.

A real webhook keeps role, credits, and billing status in sync with what Stripe actually reports: when a trial converts to a real paid subscription, the account is automatically promoted to Paid User (1000 credits) without any admin action needed; if the subscription is genuinely canceled, the account is automatically returned to Free User. Open Customer Portal and Update card now open Stripe's real, hosted Customer Portal for managing or canceling a subscription directly.

Admin and Staff accounts are untouched by any of this — Admin bypasses billing entirely (see below), and Staff is deliberately admin-assigned only, never purchasable.

What's still separate: Credits page's one-time top-up packs and its standalone plan-switcher buttons remain genuinely unconnected — this update covers the Paid User monthly subscription specifically, not one-time credit purchases.

Admin accounts bypass this page entirely — an Admin sees a real, honest "full access, no subscription needed" message instead of any billing UI, the same principle Credits already uses for showing "Unlimited." Staff accounts see the same real bypass message.

Update: a real, automatic account lifecycle is now enforced, for Free Trial and Paid accounts (Staff and Admin are exempt entirely):

  • Code Agent is only available to Staff and Admin — Free Trial and Paid accounts don't see it.
  • If a trial ends without ever successfully paying, the account locks immediately (redirected here on every real navigation attempt, enforced both in the app itself and server-side, so it can't be bypassed by editing client state), with a real 8-day grace period shown as a countdown before the account and all its data are automatically, permanently deleted.
  • If a paying account's later renewal payment fails, it stays fully unlocked through a real 30-day, 10-attempt retry window (a genuine retry every 3 days, run on this app's own schedule against the real subscription) — only locking, with the same real redirect enforcement, if all 10 retries fail. From there, a real 15-day grace period applies before automatic, permanent deletion.
  • A real warning email is sent the moment an account actually locks, in addition to the persistent in-app banner shown for as long as it stays locked.
  • Deletion is real and complete — the sign-in account and every piece of real app data tied to it (workspaces, assets, chat history, everything), not just the credential.

Switching AI models

Under "Models" in the left menu, each provider is listed with a colored dot and its current version. Click any provider to make it the active model for your next message.

  • The top status bar updates to show the model and version you picked. Update: that status bar button is now a real dropdown of its own (it previously did nothing when clicked) — click it to switch models directly from there, without needing the left menu. Both stay perfectly in sync with each other.
  • The composer's placeholder text changes to "Message [Model]…" so it's always clear who you're talking to.
  • The small row of dots in the status bar (the "tuner") lights up to match your selection.

Update: Claude, Gemini, ChatGPT, Perplexity, and now Grok all genuinely reply for real, using whichever one is currently selected. Perplexity's replies include real source citations, shown the same way Claude's web-search citations already are — genuine sources from its own response, not fabricated. Grok replaced Copilot as the fifth real provider — Copilot's own SDK would have needed real per-user GitHub sign-in and a persistent, always-on server this app's Cloud Functions architecture doesn't support, while xAI's Grok API is a real, standard, stateless HTTPS endpoint like the other four. Grok is also the app's real coding-focused responder — Optimised Chat genuinely routes coding-shaped requests to it, and it's a real, honest fallback for Code Agent if Claude's own default engine is ever unreachable (clearly labeled in the reply when that happens, not silently swapped).

Optimised Chat

A separate, real mode in the composer's model pill (Standard Chat / Deep Reasoning / Fast & Concise / Optimised Chat) — not the same as the left-menu provider selector above. When Optimised Chat is selected, it overrides your manual provider choice and decides automatically, per message, which of the five real providers (Claude, Gemini, ChatGPT, Perplexity, Grok) is best suited to what you're actually asking.

  • Real classification, not a guess — a real, cheap AI call reads your message against your own routing rules (see below) and picks a category and provider before your real reply is generated. A toast shows exactly what was picked and why, so the routing is never hidden.
  • Real inline image generation — if the message is clearly an image request, Optimised Chat genuinely generates it (via Gemini, the same real image model Assets uses) and shows it right in the conversation, with a real "View in Assets" link, since it's saved as a genuine, first-class Asset, not a chat-only artifact.
  • Everything else routes to the matching provider's already-real chat function — Optimised Chat doesn't duplicate that logic, it just decides which one to call.

The routing knowledge behind this is real and yours to control, from Settings → Optimised Chat Routing: every category, its current preferred provider, and the reasoning behind it, all editable directly. There's deliberately no automatic recurring check — only a real "Refresh now" button that runs an actual, paid web-search check when you choose to click it, always shown as a real before/after comparison you approve before anything is saved. A badge shows how long it's been since the last review, so you know when it's worth checking rather than being nagged automatically.

Roles: Admin, Staff, Paid User, Free User

A real, four-tier role system. Your current role shows right under your name in the account menu, and as a badge next to "Settings."

  • Real, server-side enforcement — roles live as genuine Firebase Auth custom claims on the verified sign-in token, exactly the same trust mechanism this app's admin recognition (unlimited credits) already relied on. Nothing about a role is a Firestore field the client could ever write to itself; a small Firestore mirror does exist for display and listing, but it is never what any real check reads.
  • The original admin account is the one hardcoded bootstrap — the one seed that lets it self-assign the real Admin role the first time this system runs, without needing an existing admin to grant it first (solving the obvious chicken-and-egg problem). Every other role, for every other account, is assigned by an admin.
  • Settings → Team & Roles (visible only to Admins) lists every real account on this app and lets you set each one's role — Admin, Staff, Paid User, or Free User — directly from a dropdown, saved immediately for real.
  • New sign-ups default to Free User until an admin changes that.

Update: full account management is real now, not just roles. From Settings → Team & Roles, as an Admin you can:

  • Create a brand-new account directly — a real email, a password you set yourself, an optional display name, and a starting role. There's no invite-email flow yet, so you're responsible for sharing that password with them.
  • Read every real account that's ever signed into this app, live from Firebase Auth.
  • Update any account's role, and disable or re-enable their ability to sign in at all.
  • Delete an account for real, permanently. This deliberately only deletes their real sign-in account and role record — it does not cascade-delete the rest of their app data (workspaces, assets, chat history, etc.), since that's a much larger, separate operation spread across many collections, not something to silently bundle into "delete a user."

You can't disable or delete your own account through this page — that safety rail is enforced the same way everything else here is, server-side. Update: no admin account can ever be deleted by anyone, including another admin — a real, server-side check, not just a hidden button. Other admin accounts show a real "Protected" label in place of the delete button, and still show their role dropdown and Disable toggle, since those remain real, legitimate updates — only deletion itself is permanently blocked for any account with the Admin role. If admin access genuinely needs to be removed from someone, change their role first; once they're no longer an Admin, deletion works normally.

What's still open: real, distinct credit allowances per role are now defined (see Credits above), and the real account lifecycle (trial expiry, payment failure, automatic deletion) and Code Agent's Staff/Admin-only gating are both now real too (see Billing above, and Staff & Support below) — any further feature-level gating beyond what's already built is a separate, deliberate decision still to be made rather than guessed at.

Staff & Support

A real Staff nav item appears only for Staff and Admin accounts — hidden from the nav entirely for anyone else, and every real action it enables independently re-checks the caller is genuinely Staff or Admin server-side, the same "the UI hiding it is a convenience, not the real security boundary" principle Team & Roles already established.

  • A real account list, deliberately excluding any payment or card details — Stripe holds those, this app never has. Shows each account's real role, real billing status, and a real lock badge if it's currently counting down to deletion.
  • A real notes section per account, visible and writable only by Staff/Admin, never by the account itself — write down anything worth remembering about a real conversation with that member.
  • Real deadline extension — for any currently-locked account, Staff can extend its deletion countdown by a real number of days, with a real reason required. That reason becomes a permanent note on the account automatically, a genuine audit trail of who extended what and why, not a silently-changed date.
  • Real support ticket management — see and reply to every real ticket any member has opened, and change its status. The same real category tabs (All / Open / In Progress / Closed, each with a live count) and Newest/Oldest sort control as the member-facing Support view.

The real Support nav item is Staff/Admin-only now, per explicit decision — hidden from regular accounts in both the left nav and the account menu's own Support entry, and genuinely enforced at the Firestore rules level too (not just a hidden button), so a non-staff/admin account can't create a new ticket even by other means. Anyone who already had a ticket before this change can still see it and any replies; only creating new ones is restricted.

External API Keys

A real, Admin-only section inside Settings → API Keys → External API Keys — genuinely separate from the section above it, which is for keys this app issues to others (like a Claude Desktop connection). This one is about every real key this app itself needs to call out to a third-party service.

  • A real toggle per key — ON means a genuine key is set; OFF means a placeholder ("x") is currently in use. Toggling is a real, manual, admin-set indicator, not automatic detection — this app never inspects the actual secret value.
  • A real Info button next to each — opens the exact terminal commands to set that specific key for real, ready to copy and paste.
  • A real fallback, where one genuinely makes sense — for data-lookup keys like YouTube, Firecrawl, and BuiltWith, marking the toggle OFF means the next real scan that needs that data asks a few specific, real questions instead of failing, and uses your real answers the same way real API data would, honestly labeled as admin-provided throughout. If more than one of a scan's keys is off at once, the questions are asked one provider at a time, not all together. Every other real key in the list — every AI provider, email-sending, authentication, billing, domains & DNS, media-processing, security, and browser-automation key — has no such fallback; there's no honest set of questions that substitutes for a real AI conversation, a real email send, a real payment, or a real DNS record, so those simply show as unavailable until a real key is set.
  • Facebook Ad Library shows no toggle at all — a real, deliberate exception. It has no real API integration, ever, since Meta's official free API doesn't meaningfully serve general commercial ad research. It always uses real fallback questions instead, and Settings says so plainly rather than showing a toggle for a real "ON" state that doesn't exist.

This list grows automatically as real new integrations are built — any future service needing a real API key gets added here too, following the same real toggle-and-fallback pattern.

Top status bar

This one-line bar sits above the chat and always shows which AI you're currently using.

  • Model pill (left) — shows the active provider and version. Click it to jump back to the model list.
  • Tuner dots — a quick visual reference for which provider is active.
  • Search icon — opens global search inside the app, covered below.
  • Help icon — opens ai.bawda.ca/help in a new tab.

Chat window

The middle column is where conversations happen. Messages you send appear on the left with your initials; AI responses appear with the provider's icon and a small tag showing the exact model version that replied. Every conversation is now genuinely saved as you go — it's the same real chat listed under Recent Chats in the left menu, scoped to your current workspace, and reopening it later picks up right where you left off.

Type in the box at the bottom — it grows automatically as you write more. Press Enter (or the send button) to add your message to the thread, or Shift+Enter for a new line without sending.

Attachments — press the paperclip (or drag a file into the composer) to upload one, up to 50MB total per conversation. Update: attached images and PDFs are now genuinely sent to and read by the AI, not just uploaded and displayed — ask about a screenshot or a document and it can actually see it. Other file types (Word docs, spreadsheets, etc.) upload for real too, but the AI can't read their contents directly; it's told the filename honestly rather than pretending to have read something it can't.

@ mention — opens a menu of your connected integrations to reference directly in a message; shows "No integrations connected yet" with a link to Integrations if you have none. Both this and the "Skill…" quick-action pill open upward from the composer, same as the model selector, so the menu doesn't run off the bottom of the screen.

Recent Chats (left menu) — every saved conversation, with rename (pencil) and delete (trash) icons on hover. Deleting removes the conversation's saved messages too, not just its entry in the list — this can't be undone. Deleting the conversation you're currently viewing returns you to a fresh, empty chat.

New Task

Click New Task at the top of the left menu to clear the current conversation and start over. The chat window shows "What can I help you with today?" along with the model that will respond, and your cursor is placed straight into the message box so you can start typing immediately. This is also what the app shows the moment you open it, so you always land in a ready-to-type state rather than a stale sample conversation.

Global search (in the app)

Inside the main app, click the magnifying glass in the status bar, or press Ctrl + K (Cmd + K on Mac), to open a floating search bar. Start typing to filter across everything in the app at once — sections, models, past chats, and tasks — grouped by category so results are easy to scan.

Close it by pressing Esc, clicking outside the search box, or selecting a result.

This is a separate search from the one on this help page — that one searches your app data; this one searches the documentation you're reading right now.

Task panel

The right-hand column shows work currently running across your connected AI providers, with a status pill for each: Running, Queued, or Done, plus a progress bar.

Click any task card to open its details in a panel that slides in from the right, showing the full status, which provider is handling it, progress, and a timeline of log entries. Close it with the X, a click outside, or Esc.

All Tasks

Don't confuse this with the task panel above — they're two different things that happen to share the word "task." The task panel tracks AI jobs (a provider summarizing a document, drafting an email). All Tasks is your own personal to-do list, and nothing you put there is connected to what the AI providers are doing.

Open it by clicking View all → at the bottom of the task panel. It replaces the chat area with a dedicated inbox, and a back arrow in its top-left returns you to Chat.

  • Tabs — All, Today, This Week, Overdue, Done. All groups your open tasks under headings (Overdue, Due Today, This Week, No Due Date, Future); the other tabs show a flat list already filtered to that slice.
  • Adding a task — type into the box pinned above the list and press Enter. Click + Add details to also set a description, a due date, and a priority before saving.
  • Completing a task — click its checkbox. Click again to reopen it.
  • The ⋮ menu on each row — Mark complete/Reopen, Edit (change anything about the task), Snooze (pushes the due date forward by a day), Dismiss (hides it outside the Done tab without deleting it), and Delete (permanent, asks you to confirm first).
  • Select mode — click Select in the header to check off several tasks at once. A bar appears at the bottom with Mark complete, Dismiss, and Delete for everything you've checked; Cancel exits and clears your selection.

Update: Tasks now genuinely auto-pulls one specific kind of item from elsewhere in the app — when a Routine actually fails (whether from a manual "Run now" or a real scheduled fire), a real high-priority task is created automatically, titled after the routine and carrying the real error message, tagged with a small Auto badge so it's clearly distinguishable from tasks you created yourself. Broader auto-pulling (e.g. from Projects, which don't have task-like content of their own to pull from) isn't planned beyond this.

Help button & this page

The question-mark icon in the app's status bar now opens ai.bawda.ca/help in a new tab, at your request — not this local file. That means this page (help.html) currently has no link pointing to it from inside the app itself; it's still maintained here in case it's useful to host at that external address, or to link back in from elsewhere later.

This page is meant to stay up to date as new features are added, so if you ever forget how something works, search here instead of guessing.