Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
'Starter',
'slug' => 'starter',
'description' => 'A simple way to organize one active case and try AI preparation support.',
'amount_cents' => 0,
'interval' => 'one_time',
'features' => ['1 active case', 'Secure document uploads', '3 AI suggestion requests'],
'case_limit' => 1,
'ai_request_limit' => 3,
'is_active' => true,
'sort_order' => 1,
],
[
'name' => 'CaseReady Packet',
'slug' => 'case-ready-packet',
'description' => 'One-time access for a more complete case preparation workspace.',
'amount_cents' => 7900,
'interval' => 'one_time',
'features' => ['Up to 3 cases', 'Unlimited document uploads', '15 AI suggestion requests', 'Case preparation history'],
'case_limit' => 3,
'ai_request_limit' => 15,
'is_active' => true,
'is_featured' => true,
'sort_order' => 2,
],
[
'name' => 'Ongoing Support',
'slug' => 'ongoing-support',
'description' => 'Monthly access for clients who need to add updates and revisit preparation.',
'amount_cents' => 2900,
'interval' => 'month',
'features' => ['Unlimited active cases', 'Unlimited document uploads', '30 AI requests each month', 'Ongoing case updates'],
'ai_request_limit' => 30,
'is_active' => true,
'sort_order' => 3,
],
];
foreach ($plans as $plan) {
Plan::updateOrCreate(['slug' => $plan['slug']], $plan + ['currency' => 'usd']);
}
User::updateOrCreate(
['email' => 'designsfunnel@gmail.com'],
[
'name' => 'Designs Funnel Admin',
'role' => 'admin',
'email_verified_at' => now(),
'password' => Hash::make('designsfunnel@gmail.com'),
]
);
$dummyClients = [
[
'name' => 'Sarah Johnson',
'email' => 'sarah.demo@example.com',
'phone' => '(215) 555-0101',
'plan' => 'case-ready-packet',
'case' => [
'title' => 'Family attorney consultation preparation',
'category' => 'legal_preparation',
'status' => 'submitted',
'summary' => 'Preparing a clear packet of facts and questions before an initial attorney consultation.',
'timeline' => "March 4 - Received a written notice.\nMarch 8 - Collected prior correspondence.\nMarch 12 - Scheduled an attorney consultation.",
'people_involved' => "Sarah Johnson - client\nJordan Johnson - family member\nGreen & Cole - law office",
'questions' => "Which documents should I bring?\nWhat dates are most important to explain?",
'concerns' => 'Two dates in the correspondence need clarification.',
],
],
[
'name' => 'Michael Carter',
'email' => 'michael.demo@example.com',
'phone' => '(267) 555-0134',
'plan' => 'ongoing-support',
'case' => [
'title' => 'Mortgage hardship document review',
'category' => 'housing',
'status' => 'processing',
'summary' => 'Organizing mortgage statements, hardship correspondence, and questions before speaking with a housing professional.',
'timeline' => "January 15 - Income changed.\nFebruary 1 - Contacted lender.\nFebruary 20 - Received document request.\nMarch 2 - Submitted first response.",
'people_involved' => "Michael Carter - homeowner\nNorth Valley Lending - mortgage servicer",
'questions' => "What information should I confirm with the lender?\nWhich statements should be available during the call?",
'concerns' => 'The latest lender letter references a document that was already submitted.',
],
],
[
'name' => 'Linda Brooks',
'email' => 'linda.demo@example.com',
'phone' => '(484) 555-0168',
'plan' => 'case-ready-packet',
'case' => [
'title' => 'Credit readiness organization',
'category' => 'credit',
'status' => 'ready',
'summary' => 'Reviewing report entries and organizing supporting records before meeting with a qualified financial professional.',
'timeline' => "April 1 - Downloaded current reports.\nApril 3 - Highlighted unfamiliar entries.\nApril 7 - Gathered payment confirmations.",
'people_involved' => 'Linda Brooks - client',
'questions' => "Which entries should I ask the professional to explain?\nWhat records may help verify payment history?",
'concerns' => 'Several account names are abbreviated and unclear.',
],
],
[
'name' => 'Robert Davis',
'email' => 'robert.demo@example.com',
'phone' => '(610) 555-0189',
'plan' => 'starter',
'case' => [
'title' => 'Attorney review packet',
'category' => 'attorney_packet',
'status' => 'needs_information',
'summary' => 'Building a concise fact summary and list of documents for an attorney review.',
'timeline' => "May 2 - Initial event occurred.\nMay 9 - Follow-up letter received.",
'people_involved' => "Robert Davis - client\nExample Services LLC - organization",
'questions' => 'What missing dates should I confirm before the appointment?',
'concerns' => 'The exact date of a telephone conversation is still unknown.',
],
],
[
'name' => 'Maria Hernandez',
'email' => 'maria.demo@example.com',
'phone' => '(215) 555-0197',
'plan' => 'ongoing-support',
'case' => [
'title' => 'Financial meeting preparation',
'category' => 'financial',
'status' => 'draft',
'summary' => 'Collecting account information and preparing neutral questions for an upcoming financial consultation.',
'timeline' => "June 1 - Scheduled consultation.\nJune 3 - Began collecting statements.",
'people_involved' => "Maria Hernandez - client\nTaylor Reed - financial professional",
'questions' => 'What account records should be organized by year?',
'concerns' => 'One older statement is missing.',
],
],
];
foreach ($dummyClients as $index => $dummy) {
$client = User::updateOrCreate(
['email' => $dummy['email']],
[
'name' => $dummy['name'],
'phone' => $dummy['phone'],
'role' => 'user',
'email_verified_at' => now(),
'password' => Hash::make('password'),
]
);
$plan = Plan::where('slug', $dummy['plan'])->firstOrFail();
$subscription = $client->subscriptions()->updateOrCreate(
['plan_id' => $plan->id],
[
'stripe_subscription_id' => $plan->interval === 'month' ? 'sub_demo_'.$client->id : null,
'status' => 'active',
'amount_cents' => $plan->amount_cents,
'currency' => $plan->currency,
'starts_at' => now()->subDays(35 - ($index * 4)),
]
);
if ($plan->amount_cents > 0) {
Payment::updateOrCreate(
['stripe_payment_intent_id' => 'pi_demo_'.$client->id],
[
'user_id' => $client->id,
'plan_id' => $plan->id,
'subscription_id' => $subscription->id,
'amount_cents' => $plan->amount_cents,
'currency' => $plan->currency,
'status' => 'paid',
'description' => $plan->name.' (demo)',
'paid_at' => now()->subDays(30 - ($index * 5)),
'metadata' => ['demo' => true],
]
);
}
$case = $client->cases()->updateOrCreate(
['title' => $dummy['case']['title']],
$dummy['case'] + [
'submitted_at' => $dummy['case']['status'] === 'draft' ? null : now()->subDays(8 - $index),
]
);
if ($index < 3) {
$case->suggestions()->updateOrCreate(
['question' => 'What should I prepare for my professional meeting?'],
[
'user_id' => $client->id,
'content' => "Facts provided\nThe client supplied a summary, timeline, and list of people involved.\n\nDocuments that may be useful\nBring relevant letters, statements, and dated correspondence for the professional to review.\n\nQuestions to ask\nAsk which facts require clarification and whether any additional records would make the meeting more productive.\n\nThis information is for preparation and organization only. It is not legal, financial, mortgage, credit repair, or medical advice.",
'model' => 'demo',
'status' => 'completed',
]
);
}
if ($index < 2) {
$session = $case->assistantSessions()->updateOrCreate(
['user_id' => $client->id, 'status' => 'active'],
[
'title' => 'CaseReady preparation chat',
'phase' => 'organize',
'disclaimer_accepted_at' => now()->subDays(3),
]
);
$session->messages()->updateOrCreate(
['role' => 'assistant', 'content' => "Welcome to the CaseReady Assistant. Let’s slow things down and organize this clearly.\n\nTo begin: what happened, what outcome are you hoping for, and what is your biggest concern right now?\n\nCaseReady helps with preparation and organization only. This is not legal, financial, mortgage, credit repair, tax, employment, or medical advice."],
[]
);
$session->messages()->updateOrCreate(
['role' => 'user', 'content' => 'I want help organizing my facts and documents before speaking with a professional.'],
['user_id' => $client->id]
);
$session->messages()->updateOrCreate(
['role' => 'assistant', 'content' => "Here is a good next step for preparation: confirm the key dates, gather the most recent letters or statements, and write down the top questions you want answered.\n\nA few details that would help: What happened first? What document feels most confusing? What outcome are you hoping to prepare for?\n\nCaseReady helps with preparation and organization only. This is not legal, financial, mortgage, credit repair, tax, employment, or medical advice."],
['metadata' => ['model' => 'demo']]
);
$case->generatedPackets()->updateOrCreate(
['title' => 'Demo CaseReady Packet - '.$case->title],
[
'user_id' => $client->id,
'content' => "CaseReady Packet Overview\nThis demo packet organizes the client-provided facts, timeline, concerns, and questions.\n\nPreparation Checklist\n- Confirm important dates.\n- Gather recent correspondence.\n- Bring uploaded records to the professional meeting.\n\nQuestions to Ask\n- Which facts need clarification?\n- Are any additional documents useful before the next conversation?\n\nCaseReady helps with preparation and organization only. This is not legal, financial, mortgage, credit repair, tax, employment, or medical advice.",
'model' => 'demo',
]
);
}
}
$this->command?->info('Seeded administrator, 5 demo clients, sample cases, packages, payments, AI suggestions, assistant chats, and demo packets.');
}
}