01Executive summary
Linear and Jira start every task from a blank box. We don't have to.
A human has to notice something happened — in Slack, in a meeting, in a merged PR — and manually transcribe it into a ticket, or it evaporates. LiveCEO already reads that content: Slack, email, meeting transcripts, Drive, code, and calendar flow into a per-org wiki the answer agent reads on every chat turn.
Tasks isn't a new database bolted next to that wiki — it's the same wiki, the same agent, and the same access-control graph, expressed as a tracker. Every task a producer sees was either typed by a human (still fully supported) or proposed by the agent with a citation back to the exact Slack message, transcript segment, or PR page that justified it — rendered as the same clickable wiki pill a chat answer already uses.
The go-to-market wedge is migration, not feature parity. Jira is already a read-only wiki source today (raw/jira/<project>/<issue>.md), ingested before a single tracker line of code exists. Tasks starts in overlay mode: every open issue in a pilot project appears instantly because the content was already there; edits sync back so Jira stays authoritative; a reconcile tick proves zero drift before anyone is asked to trust more. Weeks of zero-conflict adoption later, a project flips to master with one toggle. No forklift migration, no flag day, no re-typed backlog.
Everything that makes this a project manager rather than a database is structurally unavailable to Linear or Jira: no wiki to draft proposals from, no bot already in the meeting, no calendar fused to a knowledge graph, no headless agent running proactive turns on a clock. LiveCEO runs that exact loop twice in production today — the alerts engine's post-reindex sweep and the scheduled-jobs claim-and-run clock. Most of "AI project manager" is therefore integration work on proven infrastructure: the headline number is zero new backend services.
06The feature set
18 features across 5 pillars.
Four brainstorm lenses — proactivity, meeting lifecycle, one-ecosystem superpowers, and Linear/Jira parity — were synthesized, deduplicated, and ranked by impact over effort. Here is everything that survived, with the phase it ships in.
| Feature | Pillar | Phase | Effort | Impact |
| T−30 Pre-Meeting Brief | Meeting Lifecycle | P1 | M | ●●●●● 5/5 |
| Post-Meeting Task Extraction (T+10m) | Meeting Lifecycle | P1 | L | ●●●●● 5/5 |
| Unified Proposal Inbox | Proposal Engine | P1 | M | ●●●●● 5/5 |
| Tasks/Projects Schema + Agent Tools | Core Tracker | P1 | M | ●●●●● 5/5 |
| Keyboard-First List + Board | Core Tracker | P1 | M | ●●●●● 4/5 |
| Evidence-Linked Tasks (Provenance) | One Ecosystem | P1 | M | ●●●●● 5/5 |
| Overlay-First Importer + Sync Bridge | Migration & Reach | P1 | L | ●●●●● 5/5 |
| Signal-to-Task Proposal Sweep | Proposal Engine | P2 | M | ●●●●● 5/5 |
| Evidence-Based Stale Task Nudge | Proposal Engine | P2 | M | ●●●●● 4/5 |
| Duplicate & Already-Done Detection | Core Tracker | P2 | S | ●●●●● 4/5 |
| Access-Scoped Task Visibility | Core Tracker | P2 | S | ●●●●● 3/5 |
| Ask-the-Tracker + Velocity Dataset | One Ecosystem | P2 | M | ●●●●● 5/5 |
| Status Truth Engine | Migration & Reach | P2 | L | ●●●●● 5/5 |
| Slack Action Surface | Migration & Reach | P2 | S | ●●●●● 3/5 |
| Dependency-Slip Radar | Proposal Engine | P3 | L | ●●●●● 5/5 |
| Decision Log Auto-Extraction | Meeting Lifecycle | P3 | M | ●●●●● 4/5 |
| Recurring-Meeting Health Score | Meeting Lifecycle | P3 | M | ●●●●● 4/5 |
| Leadership Risk Dashboards | One Ecosystem | P3 | M | ●●●●● 4/5 |
PILLAR A
Meeting Lifecycle
The tracker that's already in the room — before the call starts and after it ends.
T-Minus-30 Pre-Meeting Brief
Phase 1Effort M●●●●● 5/5
30 minutes before any recorded meeting, Slack gets a brief of attendees' open work and a suggested agenda — nobody asked for it.
A cron tick modeled on the scheduled-jobs claim-and-run clock scans calendar events starting in the next ~25–35 minutes, resolves attendees to wiki people via the calendar's identity matching, pulls each attendee's open tasks, runs a scoped agent turn to summarize what changed since the series' last occurrence, and posts the result to the meeting's Slack channel through the existing bot.
At Vortex Games
The weekly Art Pipeline Sync is Tuesday 10am, Recall-recorded. At 9:30, #art-pipeline gets: "Art Pipeline Sync in 30 min. Maria — finalize creature shader budget (overdue 2 days). Dae-Ho — fix texture streaming crash on PS5 (in progress). Since last sync: decision logged to switch to Nanite for hero assets. Suggested agenda: 1) shader budget 2) Nanite rollout blockers 3) streaming crash root cause." Maria walks in already knowing what's overdue instead of reconstructing it from memory.
Why Linear/Jira can't
They have no calendar awareness and no company-wide knowledge base to pull "what changed since last sync" from — this requires the calendar-plus-wiki fusion only LiveCEO already has.
Builds oncalendarSource.ts matchWikiIdentitycalendarDataset.tsalertEval.ts dispatch patternslackBot.tsrefresh-tick.mjs (new meeting-briefs-due tick)
Post-Meeting Task Extraction (T+10m)
Phase 1Effort L●●●●● 5/5
The instant a transcript finalizes, the agent reads it and proposes tasks — with a speaker, a due date, and a citation to the exact transcript page.
Hooks into the Recall webhook right after it writes raw/meetings/<month>/<date>-<botId>.md and kicks the incremental index. A scoped agent turn reads just that page, extracts explicit commitments using speaker-segment attribution, resolves names to people entities via the same identity matching calendar sync uses, and writes proposal rows — never live tasks. The identical trigger fires on the Google Meet webhook path and on ad-hoc "Record Now" calls with no calendar event behind them.
At Vortex Games
During the weekly Milestone Review, producer Maria says "Priya, can you get the updated character rig to the build by Thursday" and Priya replies "yep, Thursday." Minutes after the transcript finalizes, a proposal appears: "Deliver updated character rig for Alpha build — Priya — due Thu 08-22," citing the exact page. Priya gets a Slack DM to confirm before anyone would normally type up meeting notes.
Why Linear/Jira can't
They need a human to type tickets after a call, or a bolted-on transcript app with no idea who "Priya" is in the org — here the same identity resolution used for calendar sync powers assignee guessing for free.
Builds onwebhooks/recall transcript.donerecallIngest.ts speaker segmentswebhooks/google-meetmeeting-recording/record-nowmatchWikiIdentity
Decision Log Auto-Extraction
Phase 3Effort M●●●●● 4/5
Decisions made out loud get written to a durable wiki page — the exact source the next T−30 brief reads from.
The same T+10m extraction turn, run for decisions instead of action items: outputs entities/decisions/<slug>.md (title, decided-by, date, rationale, transcript citation, linked task) via the existing wiki-write path, closing the loop the pre-meeting brief consumes as "what changed since last sync."
At Vortex Games
Someone says "let's cut co-op mode for launch and ship it as a post-launch patch." The extraction writes entities/decisions/cut-coop-for-launch.md, linked to the auto-proposed "ship co-op patch" task and cited to the transcript moment. Three weeks later the CEO asks chat "why did we cut co-op?" and gets a cited, dated answer instead of someone's fuzzy memory.
Why Linear/Jira can't
Decisions-as-wiki-entities, bidirectionally linked to tasks, are structurally impossible in a tracker with no company knowledge base to write into — a decision log there is at best a doc nobody updates.
Builds onshared extraction turnwikiBuild.ts write pathwikiPath.ts (new entities/decisions taxonomy)
Recurring-Meeting Health Score
Phase 3Effort M●●●●● 4/5
Every standing meeting gets a rolling scorecard — held, proposed, completed — plus a one-time flag the moment one produces literally nothing.
Groups meetings by the calendar's recurring-event ID into a series, joins against tasks and decisions sourced from each occurrence's transcript, and computes a 4-week rolling completion rate exposed as a queryable meeting_health dataset. A cheaper per-occurrence check flags "transcript finalized, extraction ran, zero outcomes" the same day with a once-only nudge to the organizer.
At Vortex Games
The CEO asks chat "which standing meetings are wasting time?" and gets: "Weekly Live Ops Sync has held 6/6 occurrences but closed only 1 of 14 proposed tasks (7%) — Art Pipeline Sync is at 64%." Separately, a biweekly sync that was 40 minutes of pure status updates gets a same-day "No outcomes" tag, and the organizer gets one nudge instead of the meeting silently vanishing into the transcript archive.
Why Linear/Jira can't
Calendar cadence × transcript-derived outcomes literally cannot exist in a tool that never sees the calendar or the meeting audio — "this meeting produced nothing" isn't even a concept a ticket database can represent.
Builds oncalendarDatasetSpec.tsmeetingMaterialization.ts reconcile patterndatasetQuery.tstask_events
PILLAR B
Proposal Engine
Every AI-drafted change — new task, unblock, close, reassign — is one diff in one inbox, and nothing moves until a human taps approve.
Unified Proposal Inbox
Phase 1Effort M●●●●● 5/5
One inbox for every AI-drafted task action, rendered as a diff with a citation — the structural piece Linear/Jira have no concept of at all.
A /tasks/proposals view lists every pending proposal across every producing feature — meeting extraction, signal triage, stale nudges, status inference, dependency-slip flags — each rendered as current-state → proposed-state with its evidence as a clickable wiki pill, and three actions: approve, edit-then-approve, dismiss-with-reason. Approving calls the same write path a typed chat command uses. A daily digest of the same data pushes to Slack every weekday morning via the existing delivery path.
At Vortex Games
Maria opens Monday's inbox: 6 pending — 2 auto-triaged bugs, 1 meeting action-item for Priya, 1 stale-task unblock for Dan, 1 auto-close for a merged PR, 1 dependency-slip flag on Alpha 0.9. She approves the bugs, edits the action-item's due date (Priya mentioned a dentist appointment in the same meeting), approves the unblock and the close, dismisses the slip flag with a note — under two minutes, every decision auditable forever because each proposal keeps its citation.
Why Linear/Jira can't
No agent reads their data to generate proposals in the first place, so an AI-authored, evidence-cited, diffable action queue has nothing to feed it — this is what makes "AI drafts, human decides" an audit trail instead of a chat message nobody acts on.
Builds onAlertsView.tsx UX templateMarkdown.tsx wiki pillstask_proposals tablealert_events audit pattern
Signal-to-Task Proposal Sweep
Phase 2Effort M●●●●● 5/5
Every Slack thread, email, and doc gets scanned for an implied task before anyone files one.
A recurring per-org sweep, structurally identical to the alerts evaluation, runs right after each reindex, filters to newly-changed raw/slack, raw/gmail, and raw/googledrive pages via the wiki's change tracking (not a full rescan), and asks a scoped agent turn per active project whether the content implies an actionable task. If yes: title, description, suggested assignee, priority — citing the source page, written as a proposal.
At Vortex Games
QA lead Jono posts in #bug-triage: "Repro'd the crash on Steam Deck when alt-tabbing during the loading screen — happens 100% of the time on build 0.91." The nightly reindex ingests it; the sweep reads the new page, recognizes an actionable bug report, drafts "Fix Steam Deck alt-tab crash during loading screen" with assignee inferred from who owns the loading-screen code and priority=high from the "100% repro" language. It lands in Maria's inbox the next morning instead of scrolling off Slack unnoticed.
Why Linear/Jira can't
They only create tasks from what a human explicitly files; with no read access to Slack, email, or Drive, a bug report buried in a thread simply evaporates.
Builds onalertEval.ts sweep patternwiki_change_items diffsagentDispatch.tsraw/slack · raw/gmail · raw/googledrive
Evidence-Based Stale Task Nudge
Phase 2Effort M●●●●● 4/5
A task stuck "blocked" gets nudged only when the wiki proves the blocker actually cleared — with the message that proves it.
A per-task condition evaluated on every reindex, the same way alert conditions run: "task X is blocked on Y; is there wiki evidence Y is resolved?" A blocked_on_ref column (ticket key or wiki path, captured when a task is marked blocked) scopes the turn to Grep only matching pages, proposing an unblock with the citation on a match. No generic time-based nag, ever.
At Vortex Games
Dan's "Integrate new save-file compression" has sat blocked six days on "waiting on Priya's asset pipeline update (VG-482)." The nightly Jira sync writes VG-482's page with status Done and "fixed in pipeline v2.3, deployed today." The evaluator matches it against Dan's blocked_on_ref and proposes "Unblock: VG-482 resolved — evidence attached" — instead of a "hasn't moved in 6 days" nag he'd ignore.
Why Linear/Jira can't
Jira's stale-issue reminders are time-based cron nags with zero awareness of whether the blocker resolved elsewhere — a different ticket, a Slack thread, a merged PR. Sitting on the same wiki as everything else means proving the blocker cleared before bothering anyone.
Builds onalertEval.ts condition patternISSUE_KEY_RE ticket matchingtask_events
Dependency-Slip Radar
Phase 3Effort L●●●●● 5/5
Sees three tasks upstream that a milestone is going to slip, and says so with the full chain of evidence — not a manually-toggled red flag.
A daily scoped agent turn walks a task's declared dependency edges plus calendar proximity to a milestone date, cross-referencing wiki evidence of at-risk upstream work — a task in-progress with no recent Drive activity, a ticket that slipped estimate twice — and produces one proposal naming the root cause with every claim cited.
At Vortex Games
"Alpha Build 0.9" (due 08-28) has three dependent tasks: Priya's rig delivery, Dan's integration (blocked on Priya), Jono's QA pass (blocked on Dan). The sweep sees Priya is 2 days late against her own Thursday commitment — captured by meeting extraction — and Drive shows no new rig upload since Tuesday. It proposes: "Alpha 0.9 at risk — rig delivery 2 days late, no Drive activity since Tue, will cascade into Dan's integration and Jono's QA window," citing the meeting page, the Drive freshness signal, and the calendar milestone.
Why Linear/Jira can't
Linear's "at risk" health is a manually-toggled status field, not a computed prediction with evidence — it can't see that the source asset hasn't been touched in Drive, because it has no visibility outside its own issue graph.
Builds oncalendar_events datasettasks dataset (query_dataset)raw/googledrive freshnessscheduled_jobs tick machinery
PILLAR C
Core Tracker
Everything Linear does — projects, statuses, assignees, priorities, a fast board — minus the blank page you have to fill in yourself.
Tasks/Projects Schema + Agent Tools
Phase 1Effort M●●●●● 5/5
First-class task tools on the same agent that already reads the whole company brain — "create a task," "what's blocking the milestone," and "mark this done" just work, from chat or Slack.
New tasks/projects/task_events tables. Three agent tools registered exactly like the verified alerts pattern — create_task, update_task, query_tasks — each a zod-validated, DB-free confirmation handler (production agents run in an egress-fenced container), with the real DB write intercepted in the messages route via a new taskTool.ts matching alertTool.ts line-for-line.
At Vortex Games
Art director Priya types: "Create a task for the concept team to finalize the boss creature silhouette before Friday's review, assign to Devon." The agent resolves "Devon" against entities/people/devon-lark.md — the same identity resolution the calendar uses — calls create_task, and the confirmation streams back like a create_alert does today. Later, Elena asks "what's still open for the Milestone 3 review" and gets an inline, cited answer.
Why Linear/Jira can't
Their "AI features" are chat sidebars bolted onto a rigid CRUD backend; here task creation is a first-class capability of the agent that reads the whole company brain, so "assign to Devon" resolves through the same person-identity graph used for calendar and access control.
Builds onagentCore.ts MCP patternalertTool.ts parse+handlemessages route interception loopinit-db.sql idempotent migrations
Keyboard-First List + Board, Wiki-Grounded Detail
Phase 1Effort M●●●●● 4/5
The actual Linear-parity UI — but every task's citations open the same reader panel chat answers already use, scrolled to the exact cited line.
src/app/tasks/page.tsx copies the verified alerts full-canvas template; a new tasks TabId joins the rail. The view renders a keyboard-navigable list (j/k, x to select, e to edit status) and a drag-between-columns board. A task's citations render through the existing wiki-pill system; the ReaderPanel gains a #L<n> fragment handler so a transcript citation opens scrolled and highlighted to the exact segment.
At Vortex Games
QA lead Marcus filters the board to "Blocked" and opens "Investigate frame drops on Series S," whose description cites the milestone-review transcript. He clicks the pill and the panel slides open already scrolled to Dae-Ho's exact sentence: "yeah the crash happens when we stream in the cave biome textures mid-fight" — the same reading experience he uses for chat answers, now on a task card.
Why Linear/Jira can't
Their task descriptions are plain text or manually pasted links; here citations are load-bearing, machine-resolved wiki paths, so "why is this task here" always resolves to a live document, not a stale paste.
Builds onalerts/dashboards page templateTabRail.tsx TabId unionReaderPanel.tsx + ReaderContext.tsxAlertsView.tsx fetch pattern
Duplicate & Already-Done Detection
Phase 2Effort S●●●●● 4/5
Before a task is created, the agent checks whether it — or its outcome — already exists, and says so instead of filing a duplicate.
The create_task flow runs a pre-check — Grep/Glob over entities/ and raw/ plus a query_tasks call — for near-duplicate titles and topics before confirming; on a match, it surfaces the existing task or the wiki page proving it's already resolved.
At Vortex Games
A new QA hire asks the bot to "create a task to fix the save-corruption bug on the Steam Deck build." The agent greps first, finds entities/bug/save-corruption-steamdeck.md marked resolved with a linked commit, and replies "This looks already fixed — resolved Aug 15, patch 1.4.2. Want me to create the task anyway, or check with QA that it regressed?"
Why Linear/Jira can't
"Search before you file" is a human courtesy nobody follows. Here duplicate-checking is structurally free — the agent turn creating the task already has full-text grep over the whole company brain.
Builds onagentCore.ts Read/Grep/Globconfirm-then-call patternquery_tasks
Access-Scoped Task Visibility
Phase 2Effort S●●●●● 3/5
Tasks inherit the same allow/deny rules as wiki pages and alerts — a contractor sees only their own work, an HR-sensitive task never leaks, zero new access-control code.
Every task gets selector labels stamped at creation. Both the API and query_tasks call the same verified subset check alerts use: every selector on the task must be within the viewer's allowed set from the org's one access policy, else owner+admin-only.
At Vortex Games
The external QA vendor has membership_type='external'. A "Console Cert Blockers" project is scoped to employees via an access rule. When the contractor's board loads, the same policy resolution that governs their wiki access excludes those selectors — their board simply never shows those tasks. No contractor-vs-employee permission system was built.
Why Linear/Jira can't
Their permissions are a separate, manually-configured ACL bolted on after the fact; task visibility here is definitionally the same policy graph that governs chat access — one place admins ever configure.
Builds onaccessPolicy.ts resolveEffectivePolicyalertVisibility.ts subset ruleorg_people + access_rules
PILLAR D
One Ecosystem
A task is just another cited node in the same brain that answers your chat questions — not an island with its own database.
Evidence-Linked Tasks (Provenance Trail)
Phase 1Effort M●●●●● 5/5
Every task is born with a citation trail — the Slack thread, doc, or meeting that created it — permanently attached. No "why does this exist" archaeology.
When the agent creates a task, it captures the wiki paths it was reading that turn (the same touched-selectors mechanism alerts already derive from Read-tool activity) as evidence_paths, rendered as clickable pills. The same field seeds an on-demand Context Pack — a one-page synthesized brief generated by the existing artifact pipeline the moment someone opens a task cold.
At Vortex Games
In #art-pipeline, art director Mara posts "the boss silhouette reads wrong against snow biome, need a repaint pass before Friday review." Someone tags the bot; mid-answer it creates the task with the Slack page and the asset entity as evidence. Three weeks later a producer picking it up cold generates a Context Pack instead of re-reading three weeks of Slack.
Why Linear/Jira can't
Their tasks link to whatever URL a human pastes in, if anyone bothers. Here provenance is a byproduct of how every turn already works — and it doubles as the seed for an instant research brief they can't generate, having nothing outside their own database to pull from.
Builds ontouchedSelectors mechanismMarkdown.tsx + wikiPath.ts pillsartifactGen.ts Context Packs
Ask-the-Tracker + Task Velocity Dataset
Phase 2Effort M●●●●● 5/5
Any chat question — in the Tasks tab or the main chat — can answer from live task state composed with the wiki, cited the same way.
Registers a tasks dataset in the analytical lane, following the calendar dataset's verified privacy template: status, priority, project, cycle timing, assignee department — deliberately omitting titles, free text, and named individuals, mirroring the calendar's confirmed stance (no title, no organizer, no attendee list). The agent may query it before answering blocking/status/velocity questions, then compose the aggregate with a qualitative wiki pass for the "why."
At Vortex Games
A producer asks "what's blocking the August 29 milestone build?" The agent queries blocked tasks for that milestone, cross-references the milestone entity, and answers: "Two blockers: audio mixdown (missing VO files, see the #audio thread) and a crash on level load, still open in QA." Elena asks "why did average cycle time nearly double?" and gets a dataset-computed number (11.2h → 21.4h) explained by a wiki-grounded cause (a 3-day broken build pipeline) in one composed answer.
Why Linear/Jira can't
They're islands you open and filter yourself; here the window that answers "what did the playtest feedback say" also answers "what's blocking the build" in one grounded turn, because the number and the cause live behind one tool surface.
Builds oncalendarDatasetSpec.ts privacy templatedatasetStore.ts + datasetQuery.tstask_events cycle times
Leadership Risk Dashboards
Phase 3Effort M●●●●● 4/5
One glance at who's overloaded and which roadmap items have gone quiet — composed from tasks, calendar, and the strategy docs already in the wiki.
A pre-built artifact visualizes per-person task load against real calendar availability and milestone dates, plus a priority-alignment view bucketing work into "tied to a live milestone," "orphaned," and "milestone with zero open tasks" by cross-referencing evidence paths against milestone/OKR/roadmap wiki pages. Auto-refreshed weekly and pinned to Dashboards, or generated on demand from a chat question.
At Vortex Games
Before the leads sync, Maria opens "Team Load — Alpha 0.9," sees Priya's row red against her meeting-heavy calendar, and reassigns two lower-priority tasks to Jono, whose row is green. The studio lead's "Priority Alignment — August" flags that Steam Deck certification has zero open tasks despite a hard deadline in three weeks — a gap invisible in Jira, which has no concept of the roadmap doc at all.
Why Linear/Jira can't
Jira's workload widgets only count Jira issues and don't know a person's day is eaten by meetings; its roadmap view only knows manually-kept custom fields. This reads real calendar availability and the actual strategy docs living in Drive/Confluence.
Builds onartifactGen.ts + Dashboardscalendar_events datasettasks datasetentities/milestone|okr pages
PILLAR E
Migration & Reach
Land where the work already lives — inside Jira on day one, inside Slack every day after.
Overlay-First Jira/Linear Importer + Sync Bridge
Phase 1Effort L●●●●● 5/5
Turns the already-existing read-only Jira wiki ingestion into a live overlay — every open issue appears instantly, and Jira stays the boss until a team asks it to stop.
Imports every open issue (already ingested as raw/jira/<project>/<issue>.md) into tasks as a shadow row keyed by external_id. On every LiveCEO edit, pushes the delta back via the Composio connector. On every reindex, diffs the freshly-pulled page against the shadow row and reconciles drift using the durable-comparison pattern that already guards meeting transcripts. A per-project toggle moves overlay → mirror → master.
At Vortex Games
The engine team lives in Jira project WWC. Elena enables overlay mode for WWC only — every issue shows up instantly because the wiki ingested it last night. Marcus closes a ticket from LiveCEO's board; the bridge pushes it to Jira within the next tick; the next day's reindex confirms no drift. Three weeks and zero conflicts later, Elena flips WWC to master; new issues now originate in LiveCEO.
Why Linear/Jira can't
The migration is cheap specifically because the Jira data was already flowing into the wiki as markdown before a single tracker line of code existed — a competitor needs a from-scratch importer with no ingestion to build on.
Builds onraw/jira ingestion (ISSUE_KEY_RE)Composio Jira/Linear connectorsmeetingMaterialization.ts reconcilesource_sync_state
Status Truth Engine
Phase 2Effort L●●●●● 5/5
When the PR merges, when the build ships, or when Jira and the meeting transcript disagree — the task proposes fixing itself instead of quietly going stale.
One evaluator, three triggers: (1) watches raw/github pages for merge-state changes and correlates them to in-progress tasks, proposing done the moment a reindex captures the merge; (2) for overlay tasks, this is the sync bridge's drift check; (3) for any task linked to an entity, compares status against the freshest mention in recent Slack or transcripts and flags a conflict on divergence — rather than trusting the system-of-record blindly.
At Vortex Games
Dan merges PR #341 on Friday; the next reindex captures it and the evaluator proposes "Mark done: PR #341 merged," citing the page — Dan taps approve instead of remembering to close the ticket. Separately, Jira's WWC-241 still shows In Progress, but the Aug 19 standup transcript has the tech lead saying "particle optimization shipped in 1.4.3, closing that out" — the linked task gets a "status may be stale" banner citing the transcript.
Why Linear/Jira can't
Smart-commit linking needs the exact "Fixes VG-118" syntax in every commit; Jira only knows what's typed into Jira. Reading PRs and transcripts semantically catches the very common "ticket status lied" problem no standalone tracker can see.
Builds onraw/github taxonomywiki_change_itemsmeetingMaterialization.ts reconcileraw/jira taxonomy
Slack Action Surface
Phase 2Effort S●●●●● 3/5
Approve a proposal, close a task, or reassign it with a button click inside the Slack channel where the work actually happened — never opening the app.
Extends the bot's existing Block Kit posting to interactive messages for proposals and task mentions. The Slack events webhook gains a block_actions case calling the exact same write path the chat agent tool uses — a Slack click and a chat command are two entry points into one handler.
At Vortex Games
The sweep posts into #vortex-engine: "Proposed task: Add regression coverage for inventory desync — cited to yesterday's thread. [Approve] [Reject] [View]." Lead engineer Sam, who never opens the LiveCEO tab, taps Approve from his phone. The task is created per the proposal, with a confirming reply deep-linking back to /tasks.
Why Linear/Jira can't
Jira's Slack integration is read-only notifications plus a slash command; here the same write path the agent uses in chat is exposed as a Slack button — no separate Slack-specific business logic to drift.
Builds onslackBot.ts slackPostBlockswebhooks/slack (new block_actions case)slack_alert_subscriberstaskTool.ts shared write path
11Appendix
The four lenses behind the synthesis.
Lens 1 — Proactive AI project manager
The tracker is not a place humans type tasks into — it is a standing AI PM that watches everything the company brain ingests and continuously proposes the task-state changes a good PM would make between standups. Its core deliverable is not a task list; it's a Proposal Inbox where every action arrives as a diff with a citation, so the system earns trust by being provably right rather than by being autonomous.
Lens 2 — Meeting lifecycle automation
The task tracker is the exhaust of the company's actual meeting cadence, captured before, during, and after every call. LiveCEO already owns the calendar, the recording bot, and the identity graph a standalone tracker never sees; the winning move is closing the loop those three already form. Linear and Jira are ticket databases bolted onto a calendar via a thin integration at best; this is a tracker that is the meeting lifecycle.
Lens 3 — One-ecosystem superpowers
A task is one more addressable node in the same wiki/graph/dataset fabric that already holds Slack, Drive, Jira, Figma, and transcripts — born with provenance back to the evidence that spawned it, answerable from chat with the same citations, kept honest by background reconciliation against what the rest of the brain actually says. Structurally impossible for a tool that only knows what a human typed into it.
Lens 4 — Parity, migration & architecture
To replace Linear/Jira the tracker must first be credible as a tracker — but built as the same architecture already proven by alerts and scheduled jobs, not as a bolt-on CRUD app. The wedge is migration, not feature parity: Jira is already a read-only wiki source, so LiveCEO becomes a live overlay first and master later, with every task grounded in the same wiki that answers chat questions.
How this report was produced. A multi-agent workflow ran over the LiveCEO codebase on this branch: three mapper agents read the app shell, chat agent, calendar/meeting pipeline, and knowledge/data layer file-by-file; four brainstorm agents generated 30+ candidate features through the four lenses above, each grounded in the verified map; a synthesis agent deduplicated, ranked by impact-over-effort, and structured the result — 8 agents, 78 tool calls, ~558k tokens. Every file path cited in this report was read by a mapper, and claims the mappers could not verify are recorded as open probes in the audit output, not asserted here. Where a subsystem is described as "verified," a mapper confirmed the referenced behavior at the cited file.