Files
jobtrackingapp/docs/redesign/audit/FUNCTIONALITY_INVENTORY.md

16 KiB

Protected functionality ledger

This is the current source-backed preservation baseline. All rows are Preserve until a later approved migration explicitly records relocation, merger or deprecation. Target-only ideas are separated at the end. A component's existence proves implemented behavior, not live provider availability or usability quality. The API census and component census supply the individual call sites/consumers behind these groups.

There are 57 protected capability groups. The completion summary classifies existing behavior, UX improvements, new requirements and known defects separately. A preserve-and-improve classification never removes a capability from this contract; known defective behavior is not the intended behavior to preserve.

Entry, navigation and account

ID Current user-facing function Source / important contract
E01 Public product explanation, Free/Pro feature comparison, honest unavailable-billing states and sign-in/register links LandingPage, planCatalog; do not invent prices or purchasable capabilities
E02 Local sign-in/registration, remember-me, configured Turnstile, resend verification, reset password, verify email LoginPage, reset/verification views, TurnstileWidget; server configuration controls availability
E03 Google/Microsoft sign-in/link flows, Microsoft legacy relink, provider popup success/error handling GoogleAuthCard, MicrosoftAuthCard, MicrosoftLegacyRelinkPage; OAuth/state/origin rules remain
E04 2FA challenge, recovery codes, setup/verify/disable/regenerate, trusted devices and revocation TwoFactorChallenge, TwoFactorSettingsCard; preserve sensitive confirmation and recovery presentation
E05 Active session list, current-device distinction, single/other-session revocation, logout SessionsSettingsCard, AppShell, auth, sessionBoundary; invalidation must clear private UI
E06 Avatar upload/remove, name/display name/headline, account email-change request/cancel/confirm, local password change ProfilePage; account identity is distinct from canonical career data
E07 Collapsible desktop sidebar, mobile drawer, active subsection matching, keyboard command launcher AppShell, QuickCommandDialog; job/company search and fixed navigation/add commands
E08 Theme light/dark/system, EN/Bokmål preference with server hydration, toast/confirm/prompt and error routes themePrefs, I18nProvider, toast, confirm, prompt, route error/not-found views
E09 Cross-tab account switch, stale mutation/read rejection, BFCache/focus revalidation and reauthentication api, sessionBoundary, App; B02 server precondition and client unmount/abort must survive extraction

Discover and manage jobs

ID Current user-facing function Source / important contract
J01 Search NAV listings by role/company/municipality, sorting, source/freshness/deadline/work-arrangement details, external listing links JobDiscoveryPage; provider failures and empty results distinguishable
J02 Named saved searches, run/delete, automatic alert preference, new/updated results and dismissal JobDiscoveryPage, saved-search APIs; retain owner scope and alert metadata
J03 Add job manually or from URL/pasted listing, reviewed preview, company lookup/create, tags and dates, duplicate warning AddJobModal; preview is not a write; keep B01 outbound boundary and existing review step
J04 Capture via browser extension, bookmarklet and share/capture query; optional job attachment and tailored CV draft after create QuickCaptureCard, captureUrl, App, browser-extension; preserve payload/URL contracts
J05 Job table search/filter/sort/pagination, visible columns/page size, saved named views, row/card actions JobTable, SavedViewsMenu; mobile cards and accessible full-workspace entry already exist
J06 Selection/bulk status/delete/restore, soft-delete/trash and restore, edit job/company association JobTable, EditJobDialog; preserve partial-error handling and confirmation semantics
J07 Kanban grouped status views, drag move, keyboard pickup/drop/cancel, direct status selection, job opening KanbanBoard, pipeline; same records as table, not a second job model
J08 Company directory, recruiter/contact/source/location and pipeline/contact-date editing; company relationship job history CompaniesTable; company creation is integrated with job/import flows, not assumed standalone CRUD
J09 Offer comparison including recorded compensation, decision deadline and notes, source-job links OfferComparisonPage; no new compensation calculator implied
J10 JSON/CSV job export; JSON import; CSV-to-import-JSON conversion and import counts ImportExportJobs; preserve B05 blob bytes/BOM, spreadsheet safety and typed formats; do not claim full account restore from job import

Job workspace and application artifacts

ID Current user-facing function Source / important contract
W01 Dedicated job workspace and reusable quick overlay; overview/analysis/CV/cover-letter/interview sections; old deep-link mapping ApplicationWorkspacePage, ApplicationWorkspace, jobWorkspaceRoute; retain full-page/overlay parity
W02 Job detail/status/progression, next actions, dates, description, recruiter/contact and timeline JobDetailsSection, ApplicationProgress, ApplicationTimeline; do not redefine pipeline enums or history
W03 Analysis, profile match/gaps, strategy snapshot, workflow assistance and status suggestions ApplicationAnalysis, ApplicationMatch, ApplicationStatusSuggestion, ApplicationStrategySnapshot; show provenance/loading/failure and confirmation
W04 Checklist create/edit/complete/delete/order, progress and recommended next action ApplicationChecklist; keep keyboard reorder and persisted item identity
W05 Select/attach a CV, create/tailor document variants, review tailoring guidance and selected-source context ApplicationCvSection, ApplicationTailoringSection, applicationWorkspace; owner+job association enforced by API
W06 Cover-letter editing, AI suggestion review/reject/apply, saved versions and restore, unsaved navigation protection ApplicationAssets, CoverLetterAiAssistant; document override must not mutate master profile
W07 Application draft fields, submission/package preparation, frozen submitted-package versions and archived attachment download ApplicationAssets, SubmittedPackagesSection, applicationWorkspace; historical package is distinct from current draft
W08 Attachments upload/drag-drop, category/purpose, rename, AI-use flag, preview/download/delete Attachments; owner-scoped binary retrieval, consent selection and size/error handling
W09 Interview questions/categories, manual items, answers, ready status, remove, contextual AI review/add-to-prep InterviewPrep, applicationWorkspace; generated facts/answers require review
W10 Interview debrief template and follow-up content/date, readiness and next-action state InterviewPrep; neutral prompts must not seed invented company/achievement facts
W11 Follow-up/reminder workflow, rule-driven dates/stages, notifications, deadline/follow-up ICS and Google/Outlook calendar event actions RemindersView, RulesSettingsCard, ApplicationCalendarActions; calendar integration already exists, date-only/timestamp semantics must survive
W12 Async operation progress, pending/failed/retry/cancel states and associated notifications OperationsPage, profile processing components; preserve operation IDs and server state, avoid duplicate starts on rerender

Career Profile and CVs

ID Current user-facing function Source / important contract
C01 Canonical structured career profile: personal details, summary, skills, work, education, languages, interests and long-tail/custom sections CareerProfilePage, views/career/*; profile save is an account singleton, CV is an identified derived resource
C02 Profile overview, completeness/import guidance, manual edit, copy raw CV text, avatar and version history/restore CareerWorkspacePage, CareerProfilePage; preserve projection/history behavior without redesigning schema
C03 CV/file upload and extraction, rebuild/improve/reprocess, progress/history, diff, explicit low-confidence selection, accept/discard, retry/cancel CareerProfilePage, /profile-cv/*; uploaded proposal is not silently canonical truth
C04 Evidence bank: sourced statement/title/category/tags, add/list/delete and truthfulness guidance CareerEvidenceBank; evidence belongs to profile owner and is not AI-invented experience
C05 CV library create/name/copy/delete, template gallery and real sample thumbnails, publish/unpublish/share and PDF download CvBuilderPage, cvBuilder; separate public slug from numeric private ID
C06 Studio Template/Content/Customize/AI Tools/History navigation; debounced preview, page boundaries/automatic fit and save state CvBuilderEditor; existing mobile edit/preview and desktop split must retain parity; automatic fit is not a manual zoom control
C07 Built-in item visibility/order, custom sections, preset/free-text section catalog, item/content overrides, hide/remove, native section drag and keyboard reorder CvBuilderEditor, components/cv/*, useDragReorder; selected profile source and overrides remain distinguishable
C08 Template-capability-aware typography/colors/header/headings, skills presentation/groups, one/two-column and sidebar settings, photo/icons CvCustomizeTab, theme registry; retain unsupported-setting handling and server render equivalence
C09 A4/Letter, density, margins/spacing, date format, document language, per-section rows/grid/compact/bubbles and columns cvBuilder, CvCustomizeTab, content controls; do not drop advanced controls merely to simplify layout
C10 Undo/redo of editor settings, save queue, unsaved guard, history/version restore and preview lifecycle CvBuilderEditor; current queue serializes one mounted editor only, not concurrent browsers
C11 Per-section AI improve/translate/custom instruction and whole-document translate/improve/spelling review AiSectionAssistant, builder AI tab; source/target language, current/suggestion comparison, apply/reject
C12 Authenticated PDF export and anonymous published-CV preview/PDF; long searchable multipage documents PublicCvPage, cvBuilder, server renderer; B03 shared resource admission and public ownership/publication checks

Correspondence and external accounts

ID Current user-facing function Source / important contract
M01 Job-scoped manual note/email log, search, delete, paste/import message; current job/company context Correspondence; manual record is different from sending a real email
M02 Gmail candidate search/import, linked-thread refresh/sync history, import thread, unlink/relink/move with job selection Correspondence; cross-job relationship changes remain owner-bound
M03 Global correspondence inbox with pagination/search/filter/direction/provider/link state, full message and attachment information, source-job links CorrespondenceInboxPage; provider read failure distinct from no messages
M04 Compose/reply, choose connected provider and job/recipient, save/resume/delete drafts, review/confirm send, delivery states and explicit new attempt CorrespondenceInboxPage; persisted draft revision and send idempotency/uncertain delivery controls must survive navigation changes
M05 Gmail review candidates, proposed jobs, link/reject/keep decisions, notes, manual sync and create suggested job GmailReviewPage embedded in inbox; retain legacy review redirect
M06 Gmail/Google and Microsoft Graph connection/status/disconnect, IMAP connection/status/disconnect EmailProviderConnections, ConnectedAccountsPage; login identity and mail-provider identity are separate capabilities

Dashboard, settings and administration

ID Current user-facing function Source / important contract
S01 Personal dashboard counts, activity/funnel/company/skill trends, stage/salary insights and actionable next steps DashboardView, analytics APIs; chart transformations and empty/error states preserved
S02 Five per-owner local visibility preferences; onboarding progress and dismiss; notification bell/unread/read/dismiss DashboardView, OnboardingChecklist, NotificationsPopover; no server widget-order/resize contract exists yet
S03 Follow-up/ghosting rule settings, email reminder preference, table preferences, theme/language and connected-account links SettingsView, RulesSettingsCard; preferences have different scopes, do not replace with one unsafely shared object
S04 AI privacy settings, usage/limits, honest Free/Pro lock states, billing status, conditional checkout and portal AiPrivacySettingsCard, AiUsageCard, AccountPlanProvider; server entitlement authoritative, not client context defaults
S05 Account export, encrypted backup download, lifecycle status and deliberate deletion confirmation BackupCard; recent-auth/password/provider restrictions remain; a downloadable backup is not proven restore readiness
A01 Admin user list/create, role promotion/demotion guards, reset link and delete with last-admin/self warnings AdminUsersPage, /users; API roles enforce privilege regardless of navigation
A02 Admin audit event list/detail, supported undo and job restore AdminAuditPage; preserve event/ownership semantics rather than generic mutation buttons
A03 Separate system health/build/database/AI/email status, SMTP settings/test, AI probe, CV corpus benchmark and maintenance run controls AdminSystemPage; sensitive config values/logs must not move into personal dashboard

Relationship to the target brief

The target grouped navigation would reorganize an existing collapsible sidebar. Jobs/Table and Kanban can become view choices over the existing APIs. Dedicated Analytics/Documents/Notifications destinations would relocate embedded capabilities. They are not permission to delete offers, reminders, correspondence review, operations or legacy URLs.

Dashboard drag/order/resize/reset are new work beyond the five local booleans; cross-device persistence is an unresolved scope choice. Optional goals, a new logo and expanded contextual access are separately identified additions; a general chat platform, product rename or additional providers are not implied by existing AI/integrations. Retain implemented Google/Outlook calendar actions even though the product brief describes broader calendar ambitions as future work.

The new-requirements matrix distinguishes required versus suggested/future additions: expanded command search/actions, application density, configurable status mappings, per-task scheduling, intent-led onboarding, contextual-assistant access and aggregate admin metrics. Existing raw custom status values, job reminders, onboarding checklist, operational admin dashboard and CV document density must remain intact; none alone establishes the corresponding new contract. The brief asks for contextual assistant access, not necessarily a general chat platform; a new logo is required, while a name change remains undecided.

During migration, extend this table with destination, regression test and review evidence per ID. Do not treat a screen screenshot or a count of passing tests as proof that all rows survived.