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
- Scope — Signature block on both the job portal hub and the quote screen (active quote view)
- Content — Company logo, name, phone number, email address, and website
- Layout — Full-width block at the bottom of the screen, placed outside the existing two-column / card layout structure
- Consistency — Both surfaces use the same component, content fields, and visual treatment
- Inspector exclusion — No inspector details in the signature block (inspector may change across the inspection lifecycle; aligns with ATT-1955)
- Interim role — This ships ahead of ATT-1955 layout redesign; ATT-1955 will decide later whether to replace, merge, or retain this block
Open
- 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
- Missing company fields — If phone, email, or website (
company.url) is empty, hide that line or show a placeholder?
- Link behavior — Should phone, email, and website render as actionable links (
tel:, mailto:, external URL) or plain text?
- 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?
- 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?
- 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.ts — logo, 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