Email-to-Task Automation, Demo Mode & UI Polish
Forward emails to a dedicated inbox and AI automatically creates structured tasks in Smartsheet. New Email Tasks dashboard tab with KPI metric, demo mode toggle for presentations, and UI refinements.
- FeatureEmail-to-Task Automation — Forward emails to eb.smart.app@gmail.com and AI creates tasks automatically
n8n workflow watches Gmail, GPT-4o-mini extracts task name, client, dates, and notes. Tasks written to dedicated Email Tasks sheet with dependencies enabled.
- FeatureEmail Tasks Dashboard Tab — Third view alongside Upcoming and By Client on the Task Assistant
Dedicated toggle button, search/filter, email metadata display (sender, subject, received date). Bulk actions work across all tabs including email tasks. Pre-warmed during login for instant loading.
- FeatureEmail Tasks KPI — New metric card on the dashboard showing email task count
- FeatureDemo Mode — Toggle in account popup hides admin-only pages for presentations
Available to admin only. Hides Architecture, Users, Analytics, Business Case, and model selector. Defaults to ON. Persists in localStorage.
- ImproveCheckbox UX — Enlarged click area to full column width, task detail popup no longer triggers from checkbox column
- FixTap Game Fonts — Fixed to use Inter font consistently across all game UI elements
- Infran8n Integration — Gmail Trigger → AI extraction → Smartsheet write pipeline for email task ingestion
V3 Design System, Guided Tours & EB SMART Rebrand
Complete visual overhaul with a navy-tinted palette and starfield animation, interactive guided tours on every page, task detail popups, carrier contact phone fields, benefit-to-carrier sync, and a full rebrand from “Task Assistant” to “EB SMART” with a custom logo.
- FeatureV3 Design System — complete visual overhaul with navy-tinted palette, Interstellar-inspired starfield, and glass morphism
New palette (#040f1a body, #0b1726 cards, #101e30 hover), blue-black gradient background (170deg), glass morphism header with backdrop-filter blur, custom scrollbars, ::selection highlight, and Inter 800 weight for headings and KPI numbers.
- FeatureGuided Tours — interactive walkthroughs on 5 pages via TourGuide.js with “?” trigger button
Step-by-step tours on Task Assistant, Add Tasks, Workload, New Client, and Client Dashboard. Dark-themed dialog matching V3 palette with keyboard navigation (arrows, Escape), auto-scroll, and bottom placement.
- FeatureTask Detail Popup — click any task in the list to view and edit full details in a modal
Opens a detail popup showing all task fields when clicking a row in the task list. Supports inline editing without leaving the main view.
- FeatureCarrier Contact Phone — phone number field added to carrier contacts with sync support
New phone field on carrier contacts with display in both edit and read modes. Syncs through benefit-to-carrier contact pipeline.
- FeatureBenefit-to-Carrier Sync — auto-populate carrier contacts from benefit plan data
Carrier contacts are automatically populated when benefit plan selections include carrier rep information, eliminating manual re-entry.
- ImproveLogin Rebrand — login screen updated from “Task Assistant” to “EB SMART” with new custom logo
Description updated to reflect that email is used to identify you across all EB SMART tools, not just the chat assistant.
- ImproveNew EB SMART Logo — isometric H with checkmark and orbital dots, deployed site-wide
Custom icon on dark navy background at 36px in header and 64px on login. All favicons regenerated (16, 32, 180, 192, 512px). Replaced old Higginbotham wordmark.
- ImproveKPI Typography — numbers now use Inter 800 weight for bolder, more readable metrics
- ImproveWCAG AA Compliance — all text meets minimum 4.5:1 contrast ratio
- Improve‘Plan Name’ Column — renamed from ‘Plans’ for clarity on benefits table
- ImproveContacts Default Expanded — carrier contacts section opens expanded by default in read mode
- FixDuplicate Carrier Contacts — fixed deduplication logic when syncing benefit data to contacts
- FixPhone Field Sync — fixed phone number not carrying through dedup in benefit-to-carrier sync
- FixChunked Storage — reduced chunk size from 3500 to 2500 to prevent base64 overflow
- InfraStarfield Canvas — 3-layer parallax animation with 265 stars, prefers-reduced-motion support
Drifting starfield with depth-based speed and opacity across three layers. Disabled automatically when prefers-reduced-motion is active.
- InfraTourGuide.js Integration — CDN-loaded library with dark theme overrides in shared styles.css
- InfraV3 Style Guide — comprehensive design reference document at /v3-style-guide.md
Dashboard Overhaul, Benefits Tools & Screenshot Uploads
Major fixes to the task dashboard (overdue logic, % complete, checkmarks), new benefits page features (copy/paste contacts, rate guarantee, character limits), contact reordering, revenue formatting, and screenshot attachment support for issue reporting.
- NewCopy & paste contacts across benefit lines
Clipboard icon on each contact copies it; paste button appears on all other lines showing the copied name. Eliminates re-typing the same contact info across multiple benefit lines.
- NewRate Guarantee field on benefit lines
New open text column (e.g., “1 year”, “2 year”) added to the benefits table. Appears in both edit and read modes, persists through save/reload.
- NewScreenshot attachments on Report Issue form
Both Task Assistant and Client Dashboard report modals now accept image uploads with preview. Screenshots upload as Smartsheet row attachments on the System Backlog sheet via the multer middleware.
- NewTask column headers on dashboard
Column labels (Task, Client, Due, % Done) now display above task rows in both Upcoming and By Client views for better readability.
- NewMove up/down reorder buttons on Group & Carrier Contacts
Same pattern as benefit line reordering. Arrow buttons with disabled state on first/last items.
- NewRevenue auto-formatting with dollar sign and commas
Client Snapshot revenue field auto-formats as user types (e.g., “$1,200,000”). Formatted value saved to Smartsheet and displayed consistently.
- NewCharacter limit warning on Benefits save
Client-side check warns when benefit data approaches Smartsheet’s 50K field limit. Server returns HTTP 413 with clear message if exceeded.
- FixCritical: task dashboard showing wrong user’s tasks
isUserTask() was receiving a string instead of user object in /api/my-tasks, causing undefined === undefined matches. Fixed to pass the proper resolved user object.
- Fix% Complete showing 500%+ on dashboard
Server already converted 0-1 to 0-100, but frontend multiplied again. Added normPct() with auto-detection. Tasks at 100% now filtered out.
- FixOverdue tasks using wrong logic on dashboard
Dashboard was using client-side date math instead of the Smartsheet Overdue report. Server now tags tasks with isOverdue flag from the report; frontend uses that as source of truth.
- FixMulti-contact fields only matching first assignee
MULTI_CONTACT_LIST parsing now extracts all emails. isUserTask checks the full array and splits comma-separated display names.
- FixBenefit contacts lost when section collapsed during save
Contact inputs now always render to DOM in edit mode (hidden when collapsed) so readDraftFromDom always captures values.
- FixWarm-up completion overriding login screen after failed login
onWarmComplete now checks if user is logged in before navigating away from the login screen.
- FixClient dropdown showing “Loading clients…” when selecting POD
applyFilters now recovers from localStorage if _allClientsLoaded flag is stale. loadClientList no longer wipes dropdown if clients already displayed.
- UpdateCheckbox checkmark now uses base64 SVG for cross-browser reliability
Overdue checked state also explicitly includes the checkmark SVG instead of inheriting (which failed in some browsers).
- UpdateNav tab renamed from “Dashboard” to “Task Assistant” for consistency across all pages
- UpdateWarm-up optimized — client list fetch starts in parallel with reports instead of sequentially after
- UpdateEmpty state message shows “All caught up!” when all tasks complete instead of misleading “No tasks match”
- InfraAdded multer dependency for multipart file upload handling (screenshot attachments)
Client Dashboard Enhancements, Analytics & Notification Tuning
Client-level notes and carrier contact tracking, an analytics dashboard for book-of-business insights, streamlined notification emails, and improved mobile experience.
- NewClient Notes — free-text notes field on the Client Dashboard for per-client context
Persists to sheet summary. Visible on the Client Snapshot tab alongside company info.
- NewCarrier Contacts per benefit line on Client Dashboard
View and manage carrier rep contacts for each benefit line directly from the client view.
- NewAnalytics Dashboard (admin-only) — book-of-business insights with data visualizations
Context-aware breakdown tables, benefit line analysis, and white space identification. Built from real workbook data.
- NewClickable KPI metrics on Task Assistant — tap any stat to see the underlying tasks
Active, overdue, upcoming, completed, and not-started counts are now interactive.
- NewTemplate toggle on New Client creation — choose between blank sheet or pre-configured template
Blank option creates a minimal sheet for custom setups. Template option includes full 141-task structure with predecessors.
- UpdateTask assignment notification emails now include only 4 key fields: Assigned To, Task, Start Date, Due Date
Previously included all columns, making emails cluttered. Updated across all 841 client sheets and all workspace templates.
- UpdateCompleted tasks now sort newest first instead of oldest first
- UpdateMobile layout improvements — shorter input placeholder, constrained chat height, better spacing
- UpdateFriendlier error messages when tasks fail to load or update
- FixClient list loading — server now waits for warm cache instead of returning empty results
- FixNot Started KPI click navigating to wrong filter
- FixTransient 529 errors no longer flash in the health check status bar
- InfraTemplate deployment script for bulk template updates across all 18 workspaces
Playwright-based script automates: update source sheet summary fields, Save as Template to each POD's Clients folder, delete old templates. One command to push template changes everywhere.
- InfraNotification fields update script for bulk automation rule changes across 900+ sheets
Multi-Office Routing, Notifications & Prompt Revamp
Office-aware data routing for Tyler and Fort Worth, task assignment notifications across 870+ sheets, and a complete overhaul of the suggested prompts experience.
- NewMulti-office routing — Tyler users see Tyler data, Fort Worth users see FW data, admins see everything
- NewUnassigned tasks — ask the chatbot to find and assign tasks with no assignee across multiple clients
- NewTask assignment notifications — automation rules deployed to all 870+ client sheets so you get notified when assigned a task
- New“My Pod” prompt category — auto-fills your pod name for one-click pod queries
- New“Add Task” prompt templates — pre-filled forms for general and client task creation
- NewHorizontal scrollbar on Workload page for extended date ranges
- UpdateRevamped suggested prompt categories: My Tasks, Add Task, Client, My Pod, Updates, General
- UpdateSimplified helper text to a concise tip
- UpdateAdded logout button to all pages (previously only on Task Assistant)
- UpdateChatbot can now create tasks directly in the Task Log for non-client-specific work
- FixFixed POD dropdown not loading on Add Tasks and New Client pages
- FixFixed workload scrollbar only visible at bottom of page
Client Data Infrastructure & SSO Planning
Complete rebuild of client list data pipeline for reliable POD-to-client mapping, bulk ClientName corrections, and Smartsheet API documentation for developer continuity.
- NewHybrid client list: report + workspace POD mapping loads 843 clients across all 17 PODs
Client Status report provides all sheet IDs and names. 17 parallel workspace fetches (using loadAll=true) build the sheetId→POD map. Combined in warmClientLists() during login warm-up for instant POD filtering on the Client Dashboard.
- NewFlexible sheet name parsing via parseClientName() supports all naming formats
Handles MM/DD/YYYY ClientName, 2025 ClientName, 2026_ClientName, and plain names. Previously only date-prefixed sheets were recognized, excluding ~660 clients.
- NewSmartsheet API reference (SMARTSHEET_API.md) stored in project for developer continuity
2,800-line complete API documentation covering all endpoints, schemas, pagination patterns, and error handling. Referenced by CLAUDE.md for future development sessions.
- ImproveClient list loads during login warm-up — not on dashboard page load
Removed 2-second polling interval from client-dashboard.html. Client list fetched once from warm-up cache and filtered locally by POD. No continuous refreshing.
- ImproveTemplate sheets (_client template) filtered from client dropdown
Internal template sheets no longer appear in the client selection list.
- Infra169 ClientName placeholder values corrected on sheet summary fields
Sheets with "ClientName" as placeholder text in the Client summary field updated to actual client names parsed from sheet names. Covers all 17 POD workspaces.
- InfraSwitched to node-fetch for reliable Smartsheet API responses
Native Node.js v24 fetch has gzip decompression bugs with Smartsheet responses (Z_DATA_ERROR). node-fetch with compress: false provides reliable responses.
- InfraCLAUDE.md expanded with 5 new API behavior lessons and Smartsheet API key for local scripts
New Client Creation & Client Dashboard
Full client lifecycle management: create new client sheets from template with pre-filled data, and view/edit client info through a dedicated dashboard.
- NewNew Client form — 5-tab wizard to create client sheets from template
Copies the master template into the correct POD workspace, sets renewal date, fills 67 summary fields, and auto-assigns 141 tasks to the designated Account Coordinator and Account Manager. Includes company info, administration details, contacts, benefit plans, and compliance questions.
- NewClient Dashboard — per-client view with 4 tabs: Renewal Timeline, Client Snapshot, Benefits, Contacts
Filter by POD and client. Header card shows renewal countdown, overall completion %, and phase indicator. Expandable task sections with progress bars. All snapshot data editable inline.
- NewChatbot can now create tasks on client sheets via the
create_task tool
Fuzzy-matches client name, places task under the correct section, assigns to current user by default. Supports sheet_id for multi-match disambiguation.
- NewClient template pre-configured with dependency-based task timing
38 section-level predecessors anchored to the Renewal Date milestone (Row 1). 80 task-to-task sequential dependencies within sections. All dates cascade automatically when renewal date is set.
- New141 tasks pre-assigned to role placeholders (Account Coordinator / Account Manager)
101 AC tasks (execution, system work, processing) and 40 AM tasks (client-facing, strategic, reviews). Automatically replaced with real contacts on client creation.
- New67 sheet summary fields on client template for full snapshot data
Company info, team assignment, administration, employee counts, client structure, Day 2 services, contacts (JSON), benefit lines (JSON), and compliance questions.
- NewEB User Directory sheet in Smartsheet (62 active employees)
Central contact directory with email, name, role, office, and POD assignments. Full Name auto-calculated via formula. PODs mapped from workspace sharing data.
- FixDue date updates now work on sheets without Duration column (Task Log)
Previously failed silently when the sheet lacked a Duration column. Now falls back to setting Due Date directly.
- ImproveServer timezone set to Central Time (America/Chicago)
Fixed off-by-one date issues on Render server. todayFriendly() and todayISO() now use Central Time.
- ImproveNavigation expanded to 7 tabs across all pages
Added New Client and Client Dashboard tabs to the navigation bar on all pages.
Branding, Add Task Redesign & Date Fix
New Smartsheet checkmark favicon and site logo, redesigned Add Task wizard flow, and fixed incorrect day-of-week labels in chatbot responses.
- NewSmartsheet checkmark logo as site favicon and header icon across all pages
Replaced previous EB monogram with stacked cards. Full favicon package: .ico, PNGs (16–512px), apple-touch-icon, webmanifest, browserconfig.
- ImproveAdd Task wizard restructured — Section dropdown moved from Step 1 to Step 3 (Task Details)
Users now select POD → load sheets → pick sheets → then choose section alongside task details. More logical flow.
- ImproveAdd Task sheet list now filters out non-client sheets (Contact List, Effort Weights, Task Weights)
These utility sheets don't contain task sections and were cluttering the selection list.
- ImproveAdd Task action buttons changed from green to accent blue to match site-wide design system
- FixChatbot day-of-week labels were off by one (e.g. showing "Monday, Mar 17" when Mar 17 is a Tuesday)
Root cause: Claude was guessing day names from ISO date strings. Fix: server now pre-computes correct day names using Date.UTC() and passes pre-formatted strings like "Tuesday, Mar 17". Today's date also injected into the system prompt.
- Fix"Assigned To" field now writes as a proper Smartsheet contact (with initials icon) instead of plain text
Both the Add Task wizard and chatbot update_task now use MULTI_CONTACT objectValue format with name + email. Contact directory exposed via /api/contacts for client-side name→email resolution.
- FixTap game leaderboard shows each player's personal best instead of duplicate entries
Client-side deduplication of tapgame_scores by username (case-insensitive). New scores only saved if they beat the user's current personal best.
- NewDue date changes now work automatically — server converts to working-day duration behind the scenes
When a user asks to change a due date, the server fetches the task's start date, calculates working days (excluding weekends and Higginbotham holidays), and sets the duration. No more "dependency-enabled sheet" errors. Holiday calendar covers 2025–2027: Good Friday, Memorial Day, Juneteenth, Independence Day, Labor Day, Thanksgiving + day after, Christmas Eve + Christmas.
Dark Mode Redesign
Complete visual overhaul across all pages using the Higginbotham dark-mode style guide. Shared CSS design system with custom properties, Inter font family, and consistent component styling.
- NewShared design system (
styles.css) with CSS custom properties for colors, spacing, radii, and motion
All pages now use centralized tokens: --black, --card, --accent, --border, etc.
- ImproveNear-black canvas (#0c0e12) replaces slate-900 background across all pages
Card surfaces use #12151a with hairline borders (rgba white 6%)
- ImproveInter font family (weights 300-700) replaces Segoe UI system font
- ImprovePill-shaped buttons (100px radius) and 20px card radius throughout
- ImproveSingle blue accent (#5596E1) replaces mixed blue/purple gradients
- FixRemoved box-shadows and gradients from UI chrome for cleaner aesthetic
- Infra~120 lines of duplicated inline CSS removed per page, replaced with shared stylesheet
Mobile Navigation, POD Workspace Update & Cosmetic Refinements
Hamburger menu for mobile devices, corrected POD workspace data, and improved tap game layout on small screens.
- FeatureMobile hamburger menu replaces horizontal nav tabs on screens under 768pxDropdown menu slides down from header with full-size touch-friendly links. Applied to all 5 pages.
- ImprovedTap game layout stacks leaderboard below game grid on mobile instead of side-by-sidePreviously the game grid was cut off on the left side of mobile screens. Grid and leaderboard now stack vertically.
- ImprovedHeader subtitle updated to spell out SMART acronym — "Smartsheet Management & Account Renewal Tool"Previously showed "Employee Benefits · Smartsheet Management" which didn't explain the acronym.
- FixPOD workspace names and IDs corrected from live Smartsheet APIAll 17 POD names were outdated (Almond, Bricker, Dearman, etc.). Now matches actual workspace structure: Bember, Campbell, Dummit, Hayes, Hubbard, Hutchings, J.Parks, Klein, Marsh, Miller, MVP, NRR, Parks, Sankary, TSJ, Vann, Zamaites.
UI Standardization & Bug Fixes
Unified header styling, color hierarchy, and typography across all pages. Fixed critical tap game and leaderboard bugs. Added Report Issue and user email badge to every page.
- ImprovedHeader visually distinct from body — header now uses #1e293b background vs #0f172a body, with deeper shadow for clear separationPreviously header and body were the same color (#0f172a), making them blend together with only a faint border line.
- ImprovedFont standardized to Segoe UI across all 5 pages — chatbot page previously used DM Sans which looked different when switching tabsRemoved Google Fonts DM Sans import; kept JetBrains Mono for code blocks only.
- FeatureReport Issue button added to all pages — previously only on the chatbot pageWorkload, Add Tasks, User Guide, and Changelog now all have the same Report Issue modal writing to the System Backlog sheet.
- FeatureUser email badge shown in header on all pages — reads from localStorage for consistent identity display
- FixTap game "Play while you wait?" button completely non-functional on returning sessionsRoot cause: JavaScript Temporal Dead Zone — firebaseReady was declared with let at line 993 but accessed during auto-login at line 779. The ReferenceError killed the entire script, so startTapGame was never defined. Fixed by changing late-declared variables to var.
- FixLeaderboard stuck on "Loading..." — Firebase was never initialized on warm-cache pathinitFirebase() was only called inside showGameScreen(). Added eager initialization at script load so leaderboard data is always available.
- FixDual game screens (pre-start + game-over) displaying simultaneously after warm-up completed mid-gameonWarmComplete() now explicitly hides all sub-screens before showing game-over state.
- ImprovedNav toggle and user badge use recessed styling (#0f172a) against the lighter header for modern depth effect
Tap Game, Firebase Leaderboard & Intelligent Warm-Up
Interactive tap game during cold-start loading, Firebase-backed leaderboard, and a re-engineered warm-up pipeline that pre-fetches all data including user stats — so everything is instant when the chat screen loads.
- FeatureTap Game — 4x4 frenzy-mode tile game plays during the Render cold-start warm-upUsers see "Play while you wait?" instead of a loading spinner. Game ends automatically when all data is loaded. Tapping a wrong tile ends the round early; if warm-up isn't done yet, users can play again.
- FeatureFirebase Realtime Database leaderboard — top 10 scores displayed in-game, all scores stored historicallyScores saved under the user's email prefix (e.g., "pgordon"). Firebase compat SDK v9.23.0 loaded via CDN. Leaderboard updates in real-time across all users.
- FeatureAssign Task modal on Workload page — click any available user to open a task creation formWrites directly to the B-FWAC Task Log sheet via dedicated /api/assign-task endpoint. Assignee auto-filled as MULTI_CONTACT_LIST with email. Fields: Task Name, Due Date (required), Client, Notes (optional).
- ImprovedTwo-phase warm-up pipeline — reports cached first, then stats fetched against cached dataPreviously, stats and reports fetched in parallel causing a race condition where the stats endpoint re-fetched uncached reports from Smartsheet (adding ~15s delay). Now: Phase 1 warms 4 reports (active, overdue, upcoming, completed) in parallel; Phase 2 fetches /api/stats which hits fully cached data and returns near-instantly.
- ImprovedSession-aware auto-login — returning users skip the game screen if data was cached within the last 5 minutesUses localStorage timestamp to detect fresh sessions. Logout clears the warm cache, ensuring a clean cold start on next login.
- InfraNew /api/warm-single endpoint replaces bulk /api/warm — enables per-report progress trackingClient fires 4 parallel requests and tracks each completion individually. Progress bar advances from 0% → 20% → 40% → 60% → 80% (reports) → 100% (stats).
- InfraNew /api/assign-task endpoint — writes rows to B-FWAC Task Log (sheet 2294167674769284) with column-mapped cellsHardcoded column IDs for Task, Assigned To, Due Date, Client Name (B-FWAC), and Notes. Uses Smartsheet objectValue format for MULTI_CONTACT_LIST assignment.
- ImprovedUser Guide expanded with Workload Timeline, Assign Task, and Changelog sectionsTable of contents updated to 19 sections. Overview table now includes Workload page entry.
Workload Enhancements & Task Assignment
Expanded the workload timeline with lane stacking for overlapping tasks and a direct task assignment form that writes to the B-FWAC Task Log.
- FeatureAssign Task from Workload page — creates new tasks directly in B-FWAC Task Log with auto-set start date and statusClicking an available user's name pre-fills the assignment form. Task appears on timeline after submission.
- ImprovedOverlapping tasks now stack vertically in separate lanes — rows expand dynamically to fitPreviously, concurrent tasks overlapped and only the topmost bar was visible.
- FeatureUndated task count badge (+N) shown next to each user on the timelineProvides visibility into hidden workload from tasks missing due dates.
- ImprovedWorkload timeline now includes tasks with only a due date (shown as 1-day bars)Previously required both start and due date. Task count went from ~40 to 800+.
Workload Timeline & Role System
New dedicated page for visualizing team workload, with availability search and role-based filtering.
- FeatureWorkload Timeline page — horizontal Gantt-style view of all active tasks by userColor-coded task bars, date range picker, hover tooltips with task details, weekend dimming, today highlight.
- FeatureFind Available — select a date and role to see who has bandwidth for new assignmentsAvailable users shown in green chips, busy users in red. Timeline scrolls to the target date.
- InfraRole system added to contact directory — AC, AM, SAM, SAE, TL, MD designations for all 62 team membersPowers the role filter on workload page and availability search.
- FeatureUser Guide page added as in-app tab — comprehensive reference with 16 sections
Aggregation Queries & Contact Cleanup
Server-side data aggregation for full-dataset counting, major contact standardization effort, and user matching improvements.
- FeatureSummarize mode for get_tasks — aggregate counts by user, client, status, or pod across all tasksReplaced the previous 60-task sample limitation for counting queries. Full dataset is now processed server-side.
- ImprovedMax response tokens increased from 2,048 to 4,096 for longer AI outputs
- FixUser matching now handles compound last names (e.g., "Diana Torres" → Diana Torres Rossell)Added NAME_TO_EMAIL alias system and last-name-parts matching to isUserTask().
- InfraBulk contact cleanup across 800+ sheets — 226 cells corrected to proper contact formatFixed freeform text entries, wrong email domains (.com→.net), typos, and first-name-only values. Multi-contact columns handled via objectValue API format.
- InfraContact directory expanded from 51 to 67 entries (62 active + 5 former employees)Sourced from official HR roster. Name corrections applied (Georgie Perry, Maricarmen Permann, Samuel Petitpas).
- InfraClient sheet naming convention standardized to MM/DD/YYYY ClientName614 sheets renamed via API automation. 177 pending user input for renewal dates.
B-FWAC Integration & Report Issue
Integrated the B-FWAC ad-hoc task log, added Smartsheet-backed issue reporting, and unified client name resolution.
- FeatureB-FWAC Task Log integration — ad-hoc tasks with explicit "Client Name (B-FWAC)" column now included in all reportsclientLabel() helper resolves client names from either the dedicated column or the sheet name.
- FeatureReport Issue form writes directly to System Backlog sheet in SmartsheetReplaced previous mailto: approach. Captures request type, description, and auto-appends conversation context. Area/Feature auto-set to "Web App".
- ImprovedUnified client resolution across get_tasks, get_client_status, list_clients, and /api/stats
- ImprovedFuzzy client matching now works across both sheet names and B-FWAC client name column
Add Tasks Wizard & KPI Dashboard
Major expansion with the bulk task insertion tool and personal KPI metrics.
- FeatureAdd Tasks tool — 5-step wizard for bulk task insertion across multiple client sheetsSelect folder → pick sheets → define task → preview → results. Inserts under section headers (Onboarding, Marketing/Renewals, Compliance, Implementations, Carrier, Reporting).
- FeatureKPI dashboard — personal metrics bar showing active, overdue, upcoming, not started, in progress, completed, and client countPre-warmed on login via /api/warm endpoint for fast initial load.
- FeatureSuggested prompts drawer — 5 categories of pre-built query templates accessible via hamburger menuMy Tasks, Client Status, Team & Pod, Update Tasks, General — with bracket-template prompts.
- FeatureNavigation toggle in header to switch between Task Assistant and Add Tasks views
Initial Launch — AI Task Assistant
First release of EB SMART. AI-powered chatbot connected to Smartsheet via 5 purpose-built reports, deployed on Render.
- FeatureAI chatbot powered by Anthropic Claude (Sonnet 4) with natural language task queriesTool-use architecture with 6 constrained tools — the AI can only access Smartsheet through defined operations.
- Feature4-report query system — active, overdue, upcoming, and completed task views
- FeatureClient status tracking — section-by-section renewal progress with overall percentage via Level 1 section report
- FeatureTask updates with confirmation — 8 editable fields (% complete, assigned to, done, flag, task name, start date, due date, duration)
- FeatureComment support — add discussion comments to task rows via the chatbot
- FeatureClient listing with open task counts and POD grouping
- Infra5 purpose-built Smartsheet reports sourcing from 17 POD workspacesReplaced single large report that caused indefinite hangs. Reports scoped by task status for performance.
- InfraNode.js proxy architecture — eliminates CORS issues, no client-side API key exposureFrontend uses relative /api URLs. Backend proxies to Smartsheet with proper auth headers.
- Infra51-person contact directory with email ↔ name mapping and reverse lookup
- Infra10-minute in-memory report cache with pre-warming on login
- InfraDeployed on Render with auto-deploy from private GitHub repository