feat(data): de-fake customer phones, tag 10 demo archetypes, add lost lead (#3), make #6 over-budget

This commit is contained in:
Satyam Rastogi
2026-05-29 16:43:48 +05:30
parent 76df03f6fa
commit 4857033994
+62 -21
View File
@@ -2214,6 +2214,7 @@ const MOCK_PROJECTS = [
subcontractorIds: [],
projectType: 'Gutter Replacement',
status: 'completed',
demoScenario: 4,
phase: 'Handover',
budget: 8500,
approvedBudget: 8500,
@@ -2267,6 +2268,7 @@ const MOCK_PROJECTS = [
subcontractorIds: ['sub_001'],
projectType: 'HVAC Installation',
status: 'active',
demoScenario: 5,
phase: 'MEP',
budget: 32000,
approvedBudget: 32000,
@@ -2578,6 +2580,7 @@ const MOCK_PROJECTS = [
subcontractorIds: ['sub_001'],
projectType: 'Commercial Roof Replacement',
status: 'active',
demoScenario: 7,
phase: 'Structural',
budget: 125000,
approvedBudget: 125000,
@@ -2678,6 +2681,7 @@ const MOCK_PROJECTS = [
subcontractorIds: [],
projectType: 'Foundation Repair',
status: 'active',
demoScenario: 8,
phase: 'Finishing',
budget: 75000,
approvedBudget: 75000,
@@ -2866,6 +2870,7 @@ const MOCK_PROJECTS = [
subcontractorIds: ['sub_001'],
projectType: 'Exterior Facade Restoration',
status: 'disputed',
demoScenario: 10,
budget: 95000,
spent: 68400,
margin: 0.20,
@@ -2902,6 +2907,12 @@ const MOCK_PROJECTS = [
{ id: 'ms_011_6', name: 'Window Sealant Replacement', dueDate: '2026-02-28', status: 'pending', assignedTo: 'v4' },
{ id: 'ms_011_7', name: 'Final Restoration and Paint', dueDate: '2026-03-15', status: 'pending', assignedTo: 'con_001' }
],
paymentSchedule: [
{ id: 'ps_011_1', milestone: 'Mobilization (20%)', amount: 19000, dueDate: '2025-12-10', status: 'paid' },
{ id: 'ps_011_2', milestone: 'Phase 1 Complete (25%)', amount: 23750, dueDate: '2026-01-15', status: 'paid' },
{ id: 'ps_011_3', milestone: 'Phase 2 & Waterproof (30%)', amount: 28500, dueDate: '2026-02-20', status: 'pending' },
{ id: 'ps_011_4', milestone: 'Final Completion (25%)', amount: 23750, dueDate: '2026-03-20', status: 'pending' },
],
invoices: [
{ id: 'inv_011_1', amount: 22000, submittedBy: 'con_001', status: 'paid', dueDate: '2025-12-18', datePaid: '2025-12-20' },
{ id: 'inv_011_2', amount: 18400, submittedBy: 'v1', status: 'paid', dueDate: '2026-01-15', datePaid: '2026-01-18' },
@@ -2909,6 +2920,15 @@ const MOCK_PROJECTS = [
{ id: 'inv_011_4', amount: 12800, submittedBy: 'con_001', status: 'pending', dueDate: '2026-02-20' },
{ id: 'inv_011_5', amount: 8900, submittedBy: 'v4', status: 'pending', dueDate: '2026-03-05' }
],
issueLog: [
{ id: 'issue_011_1', title: 'Scope dispute — contractor claims 3 unapproved COs; owner withheld Phase 2 payment', priority: 'Critical', status: 'open', assignedTo: 'Jesus Gonzales', dateReported: '2026-02-18' },
],
activityTimeline: [
{ date: '2026-02-18', action: 'Dispute Opened', user: 'Diana Reeves', details: 'Owner withheld Phase 2 milestone payment — disputes scope of CO #2 and CO #3. Project effectively paused.' },
{ date: '2026-02-10', action: 'Change Order Disputed', user: 'Texas Builders LLC', details: 'CO #3 structural reinforcement — owner claims it was not in original bid.' },
{ date: '2026-01-30', action: 'Payment Released', user: 'Diana Reeves', details: 'Phase 1 payment released after masonry sign-off.' },
{ date: '2025-12-20', action: 'Mobilization Payment', user: 'Diana Reeves', details: 'Project started — 20% mobilization paid.' },
],
documents: [
{ name: 'Facade Restoration Master Contract', url: '#', type: 'contract' },
{ name: 'Building Permit #25-2101', url: '#', type: 'permit' },
@@ -2999,7 +3019,7 @@ const MOCK_PROJECTS = [
propertyId: 'P-9013',
address: '2908 Roundabout Ln, Plano, TX 75023',
customerName: 'Charlotte Norris',
customerPhone: '(972) 555-0123',
customerPhone: '(972) 413-7842',
customerEmail: 'charlotte.n@gmail.com',
contractorId: 'con_001',
subcontractorIds: [],
@@ -3073,7 +3093,7 @@ const MOCK_PROJECTS = [
propertyId: 'P-9014',
address: '5614 Ridgewood Dr, Plano, TX 75093',
customerName: 'Henry Castaneda',
customerPhone: '(972) 555-0124',
customerPhone: '(469) 628-3519',
customerEmail: 'hcastaneda@yahoo.com',
contractorId: 'con_001',
subcontractorIds: [],
@@ -3150,7 +3170,7 @@ const MOCK_PROJECTS = [
propertyId: 'P-9015',
address: '3401 Parker Rd, Plano, TX 75023',
customerName: 'Yvonne Blackwell',
customerPhone: '(972) 555-0125',
customerPhone: '(214) 857-4061',
customerEmail: 'yblackwell@gmail.com',
contractorId: 'con_001',
subcontractorIds: [],
@@ -3223,7 +3243,7 @@ const MOCK_PROJECTS = [
propertyId: 'P-9016',
address: '4812 Mapleshade Ln, Plano, TX 75075',
customerName: 'Emmanuel Okafor',
customerPhone: '(972) 555-0126',
customerPhone: '(945) 319-7628',
customerEmail: 'e.okafor@outlook.com',
contractorId: 'con_001',
subcontractorIds: [],
@@ -3297,12 +3317,13 @@ const MOCK_PROJECTS = [
propertyId: 'P-9017',
address: '1820 Custer Rd, Plano, TX 75075',
customerName: 'Adriana Voss',
customerPhone: '(972) 555-0127',
customerPhone: '(972) 541-8203',
customerEmail: 'adriana.v@gmail.com',
contractorId: 'con_001',
subcontractorIds: [],
projectType: 'Roof Replacement',
status: 'active',
demoScenario: 2,
phase: 'Pre-Construction',
budget: 19600,
approvedBudget: 19600,
@@ -3372,12 +3393,13 @@ const MOCK_PROJECTS = [
propertyId: 'P-9018',
address: '6820 Windhaven Pkwy, Plano, TX 75024',
customerName: 'Marvin Delgado',
customerPhone: '(972) 555-0128',
customerPhone: '(469) 782-3954',
customerEmail: 'mdelgado@gmail.com',
contractorId: 'con_001',
subcontractorIds: [],
projectType: 'Roof Replacement',
status: 'active',
demoScenario: 1,
phase: 'Structural',
budget: 16800,
approvedBudget: 16800,
@@ -3453,20 +3475,21 @@ const MOCK_PROJECTS = [
propertyId: 'P-9019',
address: '2506 Springpark Dr, Plano, TX 75023',
customerName: 'Sandra Tran',
customerPhone: '(972) 555-0129',
customerPhone: '(214) 631-9047',
customerEmail: 's.tran@yahoo.com',
contractorId: 'con_001',
subcontractorIds: [],
projectType: 'Siding Replacement',
status: 'active',
demoScenario: 6,
phase: 'Structural',
budget: 28500,
approvedBudget: 28500,
committedCost: 27000,
committedCost: 31400,
actualCost: 15600,
spent: 15600,
variancePercent: -45.3,
margin: 0.05,
margin: -0.10,
commissionType: 'percent_gross',
commissionRate: 10,
commission: 2850,
@@ -3475,16 +3498,17 @@ const MOCK_PROJECTS = [
completionPercentage: 55,
healthScore: 78,
openRFIs: 0,
changeOrderCount: 1,
changeOrderCount: 2,
pendingInvoiceCount: 0,
budgetBreakdown: [
{ name: 'Owens Corning', category: 'Materials', allocated: 15400, committed: 15400, actual: 14200 },
{ name: 'Plano Siding Crew', category: 'Labor', allocated: 10400, committed: 10400, actual: 600 },
{ name: 'Plano Siding Crew', category: 'Labor', allocated: 10400, committed: 14200, actual: 600 },
{ name: 'City of Plano', category: 'Permits', allocated: 800, committed: 800, actual: 800 },
{ name: 'Reserve Fund', category: 'Contingency', allocated: 1900, committed: 400, actual: 0 },
{ name: 'Reserve Fund', category: 'Contingency', allocated: 1900, committed: 1000, actual: 0 },
],
changeOrders: [
{ id: 'CO-019-01', title: 'Rot Repair — 2 Panels', amount: 380, status: 'approved', description: 'Two panels of rotted OSB substrate discovered during demo. Repaired.' },
{ id: 'CO-019-02', title: 'Hidden Rot & Structural Sheathing Replacement', amount: 3800, status: 'approved', dateSubmitted: '2026-03-28', description: 'Full west wall sheathing found severely rotted behind old siding — 320 sq ft of OSB substructure replaced plus additional labor days. Exceeds original labor budget by $3,800.' },
],
rfis: [],
riskLog: [],
@@ -3534,7 +3558,7 @@ const MOCK_PROJECTS = [
propertyId: 'P-9020',
address: '1504 Estates Dr, Plano, TX 75093',
customerName: 'Reginald Hopper',
customerPhone: '(972) 555-0130',
customerPhone: '(972) 487-2815',
customerEmail: 'reg.hopper@icloud.com',
contractorId: 'con_001',
subcontractorIds: [],
@@ -3620,7 +3644,7 @@ const MOCK_PROJECTS = [
propertyId: 'P-9021',
address: '5150 Preston Rd, Plano, TX 75024',
customerName: 'Nadia Thornton',
customerPhone: '(972) 555-0131',
customerPhone: '(469) 354-7192',
customerEmail: 'nadia.t@gmail.com',
contractorId: 'con_001',
subcontractorIds: [],
@@ -3698,7 +3722,7 @@ const MOCK_PROJECTS = [
propertyId: 'P-9022',
address: '3822 Haverwood Ln, Plano, TX 75023',
customerName: 'Clifford Aguilar',
customerPhone: '(972) 555-0132',
customerPhone: '(214) 926-5483',
customerEmail: 'c.aguilar@outlook.com',
contractorId: 'con_001',
subcontractorIds: [],
@@ -3775,7 +3799,7 @@ const MOCK_PROJECTS = [
propertyId: 'P-9023',
address: '2010 Oak Creek Blvd, Plano, TX 75023',
customerName: 'Tamara Owens',
customerPhone: '(972) 555-0133',
customerPhone: '(972) 748-6130',
customerEmail: 'tamara.o@yahoo.com',
contractorId: 'con_001',
subcontractorIds: [],
@@ -3855,7 +3879,7 @@ const MOCK_PROJECTS = [
propertyId: 'P-9024',
address: '4110 Lorimar Dr, Plano, TX 75093',
customerName: 'Craig Singleton',
customerPhone: '(972) 555-0134',
customerPhone: '(945) 261-8374',
customerEmail: 'craig.s@gmail.com',
contractorId: 'con_001',
subcontractorIds: [],
@@ -3935,7 +3959,7 @@ const MOCK_PROJECTS = [
propertyId: 'P-9025',
address: '6230 West Parker Rd, Plano, TX 75093',
customerName: 'Bertha Fleming',
customerPhone: '(972) 555-0135',
customerPhone: '(469) 815-4027',
customerEmail: 'bertha.f@hotmail.com',
contractorId: 'con_001',
subcontractorIds: [],
@@ -4014,12 +4038,13 @@ const MOCK_PROJECTS = [
propertyId: 'P-9026',
address: '3750 Legacy Dr, Plano, TX 75023',
customerName: 'Oliver Stanton',
customerPhone: '(972) 555-0136',
customerPhone: '(214) 573-9618',
customerEmail: 'oliver.st@outlook.com',
contractorId: 'con_001',
subcontractorIds: [],
projectType: 'Roof Replacement',
status: 'completed',
demoScenario: 9,
phase: 'Handover',
budget: 22100,
approvedBudget: 22100,
@@ -4090,7 +4115,7 @@ const MOCK_PROJECTS = [
propertyId: 'P-9027',
address: '1912 Mira Vista Dr, Plano, TX 75025',
customerName: 'Daphne Garrett',
customerPhone: '(972) 555-0137',
customerPhone: '(972) 361-8459',
customerEmail: 'daphne.g@gmail.com',
contractorId: 'con_001',
subcontractorIds: [],
@@ -4168,7 +4193,7 @@ const MOCK_PROJECTS = [
propertyId: 'P-9028',
address: '5808 Tennyson Pkwy, Plano, TX 75024',
customerName: 'Nathaniel Cruz',
customerPhone: '(972) 555-0138',
customerPhone: '(469) 247-8613',
customerEmail: 'ncruz@icloud.com',
contractorId: 'con_001',
subcontractorIds: [],
@@ -5892,6 +5917,22 @@ const KANBAN_LEADS_INITIAL = [
{ from: 'Signed', to: 'Follow-up', by: 'Travis Boone', date: '2026-03-28', note: 'HOA review pending. Follow-up Apr 20 for approval status.' },
],
},
{
id: 'kl_045', name: 'Greg Lindfors', address: '6601 Phoenix Pl, Plano, TX 75023',
phone: '(972) 483-7162', email: 'g.lindfors@gmail.com',
jobType: 'Roof Replacement', insuranceType: 'Insurance', value: 18000, stormSource: true,
assignedAgentId: 'e1', assignedAgentName: 'Cody Tatum',
columnId: 'kc_lost', outcome: 'lost', demoScenario: 3,
notes: 'Inspection found major hail damage; revised estimate to $18k. Customer declined — sticker shock after deductible.',
createdDate: '2026-04-02',
activity: [
{ from: null, to: 'New Lead', by: 'Cody Tatum', date: '2026-04-02', note: 'Storm canvassing — homeowner reported a small leak.' },
{ from: 'New Lead', to: 'Contacted', by: 'Cody Tatum', date: '2026-04-04', note: 'Scheduled inspection.' },
{ from: 'Contacted', to: 'Appt Scheduled', by: 'Cody Tatum', date: '2026-04-06', note: 'Inspection Apr 9.' },
{ from: 'Appt Scheduled', to: 'Estimate Sent', by: 'Cody Tatum', date: '2026-04-11', note: 'Inspection found major hail damage across the slope — revised estimate $18k.' },
{ from: 'Estimate Sent', to: 'Lost', by: 'Cody Tatum', date: '2026-04-20', note: 'Customer declined after seeing out-of-pocket deductible. Marked lost.' },
],
},
];
// Enriched project data for signed/in-progress/complete leads