Add Company Signature Block to Client Portal and Quote Screen

Objective

  • Add a company-branded signature block to the job portal hub and quote screen so agents and clients can immediately see which inspection company they are interacting with
  • Improve trust and professionalism on client-facing surfaces without waiting for the broader portal layout redesign (ATT-1955)
  • Ship a consistent, reusable company identity footer on both surfaces as an interim branding fix

Background

  • Product feedback (Cat via Ryan): agents feel uncertain about who the portal belongs to when they open it
  • Originally scoped to the quote screen only; Ryan and Chris agreed both the quote screen and job portal hub should match for consistency
  • Chris noted the job portal uses a two-column layout — placing the block full-width at the bottom, outside the column grid, avoids fighting the existing structure on either surface
  • A design reference was discussed via Claude for the quote screen visual treatment; content decisions below were informed by that conversation
  • Current implementation (confirmed in code):
  • Job portal hub (/client/job/[slug]) and quote screen (/client/quotes/[slug]) share MapHeader — logo-only branding in the map header overlay; no phone, email, or website in the persistent chrome
  • Quote archived state already renders a partial "Contact Us" block (name, phone, email, physical address) inline in quotes/[slug]/page.tsx — active quotes do not
  • Company model exposes logo, name, phone, email, and url (website) via existing GET company/:id calls already made on both surfaces
  • Similar company contact patterns exist elsewhere (e.g. agreement PDF export, repair quote modals) but no shared portal signature component today

Product Decisions

Locked

  1. Scope — Signature block on both the job portal hub and the quote screen (active quote view)
  2. Content — Company logo, name, phone number, email address, and website
  3. Layout — Full-width block at the bottom of the screen, placed outside the existing two-column / card layout structure
  4. Consistency — Both surfaces use the same component, content fields, and visual treatment
  5. Inspector exclusion — No inspector details in the signature block (inspector may change across the inspection lifecycle; aligns with ATT-1955)
  6. Interim role — This ships ahead of ATT-1955 layout redesign; ATT-1955 will decide later whether to replace, merge, or retain this block

Open

  1. Sub-route scope — Should the signature appear on hub pages only (job/[slug]/page.tsx, quotes/[slug]/page.tsx) or on all child routes that share the layout (pay, agreement, quote accept, etc.)? Layout-level placement vs page-level placement affects this
  2. Missing company fields — If phone, email, or website (company.url) is empty, hide that line or show a placeholder?
  3. Link behavior — Should phone, email, and website render as actionable links (tel:, mailto:, external URL) or plain text?
  4. Archived quote contact block — Active quotes get the new signature block; archived quotes already show inline contact info. Unify into the shared component or leave archived view as-is?
  5. Visual spec — Claude design reference is not attached to this work item. Is engineering-led styling (matching existing portal cards / company color) acceptable for v1, or is a mockup required first?
  6. Physical address — Locked content lists logo, name, phone, email, website only. Should company physical address (company.address) be included or explicitly excluded?

Scope

Frontend (attik-frontend)

  • New shared component (e.g. under src/app/client/sharedClientComponents/) — reusable company signature block consuming Company props
  • Job portal hub: src/app/client/job/[slug]/page.tsx — add block below the 3-column grid; src/app/client/job/[slug]/layout.tsx wraps page in MapHeader (company already fetched in layout for header; page also fetches company — consider passing or reusing)
  • Quote screen: src/app/client/quotes/[slug]/page.tsx — add block below main quote content; src/app/client/quotes/[slug]/layout.tsx wraps in MapHeader and fetches company
  • Data source: Company type in src/util/types/serverTypeCollection/company.tslogo, name, phone, email, url (website); no new backend fields expected
  • Reference patterns: partial contact block in archived quote branch of quotes/[slug]/page.tsx; company footer in job/[slug]/agreement/[id]/components/ExportPDFButton.tsx; logo + contact in reports/components/RepairListPDF.tsx

Backend (attik-backend)

  • No changes expected — company contact fields already on company documents and returned by existing company routes

Out of scope (unless expanded)

  • Broader portal layout / map header redesign (ATT-1955)
  • Report viewer, repair-list, or other /client/* surfaces without explicit product decision
  • Inspector info, sub-company branding, or configurable logo sizing (ATT-1435)

References

Please authenticate to join the conversation.

Upvoters
Status

Planned

Board
🏠

Main App

Date

About 7 hours ago

Author

Linear

Subscribe to post

Get notified by email when there are changes.