Files
adr-sml/src/data/site.ts
T
Pouya Lajevardi 19f7226661
Build and deploy / build-and-deploy (push) Failing after 5s
chore: project scaffold, specs, and working record
2026-08-26 08:51:16 -04:00

162 lines
6.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Site-wide constants.
*
* Anything marked TODO(pouya) is an unanswered question in AGENTS.md §9.
* Do not guess a value to make the build pass — an unanswered question is
* supposed to be visible. See CLAUDE.md.
*/
export const SITE = {
name: 'Pouya Lajevardi',
tagline: 'Mediation · Arbitration · Toronto',
url: 'https://adr.smlcompany.ca',
locale: 'en_CA',
entity: 'SML Company Ltd. · Ontario, Canada',
} as const;
/**
* Verified credentials only — mirrors AGENTS.md §4.
* Adding a line here without adding it there is a bug.
*
* D13: the site asserts the JD and makes NO licensure claim. Do not add
* 'lawyer', 'called to the bar', 'licensed', or any post-nominal implying a
* licence — and do not imply it either. See AGENTS.md §4 Forbidden.
*/
export const CREDENTIALS = {
designations: ['Q.Med (ADRIC / ADRIO)'],
inProgress: ['Q.Arb — commenced August 2026'], // [verified 2026-08-26]
goal: 'C.Med-Arb (Chartered Mediator-Arbitrator)',
education: ['JD, Bond University'],
certifications: [
'Kompass Arbitration Certificate Program',
'Stitt Feld Handy — negotiation and ADR workshop series',
],
languages: ['English', 'Farsi'],
/** [verified 2026-08-26]. NOT OCNI (lapsed) and NOT the Law Society —
* listing the LSO implies licensure, which D13 bars. Do not add either. */
memberships: [
'ADR Institute of Canada (ADRIC)',
'ADR Institute of Ontario (ADRIO)',
'Ontario Bar Association — Construction & Infrastructure, ADR, and Civil Litigation sections',
],
} as const;
/** The three credential slots. Never matter counts — AGENTS.md §4. */
export const CREDENTIAL_ROW = [
{ value: 'Q.Med', label: 'ADRIC / ADRIO designation' },
{ value: 'JD + ML', label: 'Law and engineering' },
{ value: 'EN · FA', label: 'Bilingual practice' },
] as const;
/**
* The Toronto boutique is NEVER named — AGENTS.md D16. Use this string.
* Do not infer a name from an email domain or anywhere else.
*/
export const BOUTIQUE = 'a Toronto litigation and ADR boutique' as const;
/** Analytics: privacy-first and cookieless (D15). No GA4, no consent banner. */
export const ANALYTICS = {
provider: 'plausible' as 'plausible' | 'fathom' | null,
domain: 'adr.smlcompany.ca',
} as const;
export const CONTACT = {
email: 'info@smlcompany.ca', // [verified 2026-08-26]
/** No public phone by choice. Render 'By scheduled call' wherever a number
* would go — do not leave the field visually empty. */
phone: null as string | null, // [verified 2026-08-26]
phoneFallback: 'By scheduled call',
location: 'Toronto · Ontario · By appointment',
responseTime: 'Inquiries are answered within one business day.',
linkedin: 'https://www.linkedin.com/in/pouyalajevardi/', // [verified 2026-08-26]
/** Booking parked 2026-08-26 (AGENTS.md R6). Build /contact/ with the intake
* form and a reserved slot so an embed drops in later without a rebuild. */
bookingUrl: null as string | null,
} as const;
/** Portrait assets. Astro derives AVIF/WebP variants from the master at build. */
export const PORTRAIT = {
master: 'src/assets/pouya-lajevardi.jpg', // 1600x1600
og: 'src/assets/og-portrait.jpg', // 1200x630, cropped high
alt: 'Pouya Lajevardi',
} as const;
/** Shown on /contact/ and with the booking embed. Do not reword casually. */
export const NO_RETAINER_NOTICE =
'Submitting this form does not create a retainer, does not appoint a neutral, ' +
'and does not itself establish a mediatorparty relationship.';
/**
* Rate card — AGENTS.md D14, confirmed by Pouya 2026-08-26.
* One rate for all mediation matters. All figures PLUS HST.
* Full research and reasoning: docs/07-fees.md
*/
export const FEES = {
currency: 'CAD',
taxNote: 'All fees are plus HST.',
mediation: {
/** Prep is bundled AND stated on the page — [verified 2026-08-26].
* Do not hide it: at these rates, saying preparation is included is the
* point, not a detail. */
halfDay: { amount: 2000, hours: 3.5, prepIncluded: 2 },
fullDay: { amount: 4000, hours: 7, prepIncluded: 3 },
additionalParty: 500, // each party beyond two
overtimePerHour: 500, // [verified 2026-08-26]
},
arbitration: {
perHour: 500,
hearingDay: 4000,
documentsOnlySimple: 6500, // flat
documentsOnlyComplex: 9500, // flat
// No tribunal-secretary rate — removed by Pouya 2026-08-26.
},
// ENE, settlement counsel, dispute-system design, pre-dispute technical advisory
hourly: 500, // [verified 2026-08-26]
cancellation: [
{ window: 'More than 30 days before', fee: 'No fee. Disbursements only.' },
{ window: '15 to 30 days before', fee: '50% of the booked fee.' },
{ window: 'Fewer than 15 days before', fee: '100% of the booked fee.' },
],
cancellationNotes: [
'Rescheduling at the time of cancellation, with a new date fixed, is not charged.',
'The cancellation fee is waived if the reserved time is filled by another matter of equal or greater value.',
],
terms: [
'Fees are shared equally between the parties unless they agree otherwise in writing.',
'Accounts are payable on rendering. Interest accrues on overdue accounts at 5% per annum.',
'Video and in-person sessions are charged at the same rate.',
],
} as const;
export const PRACTICE_AREAS = [
{ slug: 'construction', name: 'Construction & Infrastructure', chip: 'Construction' },
{ slug: 'technology', name: 'Technology, AI & Data', chip: 'Technology' },
{ slug: 'energy', name: 'Energy, Grid & Regulatory', chip: 'Energy' },
{ slug: 'insurance', name: 'Insurance, SABS & LAT', chip: 'Insurance' },
{ slug: 'shareholder', name: 'Shareholder & Family Business', chip: 'Shareholder' },
{ slug: 'cross-cultural', name: 'Cross-Border & Diaspora', chip: 'Cross-cultural' },
] as const;
/** Seven items is the ceiling before a nav stops being scannable. */
export const PRIMARY_NAV = [
{ href: '/about/', label: 'About' },
{ href: '/mediation/', label: 'Mediation' },
{ href: '/arbitration/', label: 'Arbitration' },
{ href: '/practice/', label: 'Practice', children: PRACTICE_AREAS },
{ href: '/fees/', label: 'Fees' },
{ href: '/insights/', label: 'Insights' },
{ href: '/contact/', label: 'Contact' },
] as const;
/** Linked contextually rather than from the primary nav. */
export const SECONDARY_NAV = [
{ href: '/process/', label: 'How I work' },
{ href: '/med-arb/', label: 'Med-Arb' },
{ href: '/for-parties/', label: 'For parties' },
] as const;
export const LEGAL_NAV = [
{ href: '/legal/privacy/', label: 'Privacy' },
{ href: '/legal/terms/', label: 'Terms' },
] as const;