Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
1207 lines (1042 loc) · 59.6 KB
/
Copy pathindex.html
File metadata and controls
1207 lines (1042 loc) · 59.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cheever Insurance — AI Skills</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.7;
color: #1a1a2e;
background: #f5f5f7;
}
/* Password gate */
#gate {
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
padding: 20px;
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
}
.gate-box {
background: white;
border-radius: 20px;
padding: 48px;
max-width: 400px;
width: 100%;
box-shadow: 0 30px 80px rgba(0,0,0,0.3);
text-align: center;
}
.gate-logo {
font-size: 32px;
font-weight: 800;
margin-bottom: 4px;
background: linear-gradient(135deg, #1a1a2e, #0f3460);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.gate-box p {
color: #888;
margin-bottom: 28px;
font-size: 14px;
}
.gate-box input {
width: 100%;
padding: 16px 20px;
border: 2px solid #e8e8e8;
border-radius: 12px;
font-size: 16px;
text-align: center;
letter-spacing: 3px;
outline: none;
transition: all 0.3s;
}
.gate-box input:focus { border-color: #1a1a2e; box-shadow: 0 0 0 4px rgba(26,26,46,0.08); }
.gate-box .error {
color: #ef4444;
font-size: 13px;
margin-top: 12px;
display: none;
}
/* Main content */
#content { display: none; }
.container { max-width: 860px; margin: 0 auto; padding: 0 24px; }
/* Header */
.header {
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
color: white;
padding: 56px 0 44px;
}
.header h1 { font-size: 30px; font-weight: 800; margin-bottom: 6px; letter-spacing: -0.5px; }
.header .subtitle { font-size: 16px; opacity: 0.65; margin-bottom: 28px; font-weight: 400; }
.header .meta {
display: flex;
gap: 48px;
font-size: 14px;
}
.header .meta .label {
font-size: 10px;
text-transform: uppercase;
letter-spacing: 2px;
opacity: 0.45;
margin-bottom: 2px;
}
/* Navigation */
.nav-bar {
background: rgba(255,255,255,0.95);
backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(0,0,0,0.06);
padding: 14px 0;
position: sticky;
top: 0;
z-index: 10;
}
.nav-bar .container { display: flex; gap: 6px; flex-wrap: wrap; }
.nav-pill {
padding: 8px 18px;
border-radius: 100px;
font-size: 13px;
font-weight: 600;
cursor: pointer;
border: none;
background: transparent;
color: #666;
transition: all 0.2s;
}
.nav-pill:hover { background: #f0f0f0; color: #333; }
.nav-pill.active { background: #1a1a2e; color: white; }
/* Sections */
.section { padding: 48px 0; }
.section + .section { border-top: 1px solid #e8e8e8; }
h2 { font-size: 24px; margin-bottom: 8px; font-weight: 700; letter-spacing: -0.3px; }
.section-desc { color: #666; margin-bottom: 28px; font-size: 15px; }
h3 { font-size: 17px; margin: 0 0 6px; font-weight: 700; }
p { margin: 10px 0; color: #444; font-size: 15px; }
/* Skill cards */
.recipe {
background: white;
border: 1px solid #e4e4e7;
border-radius: 16px;
margin: 16px 0;
overflow: hidden;
transition: box-shadow 0.2s;
}
.recipe:hover { box-shadow: 0 4px 20px rgba(0,0,0,0.06); }
.recipe-header {
padding: 24px 28px;
cursor: pointer;
display: flex;
align-items: flex-start;
gap: 16px;
user-select: none;
}
.recipe-icon {
width: 44px;
height: 44px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
flex-shrink: 0;
margin-top: 2px;
}
.recipe-icon.green { background: #dcfce7; }
.recipe-icon.blue { background: #dbeafe; }
.recipe-icon.orange { background: #ffedd5; }
.recipe-icon.purple { background: #f3e8ff; }
.recipe-icon.red { background: #fee2e2; }
.recipe-icon.teal { background: #ccfbf1; }
.recipe-info { flex: 1; }
.recipe-info h3 { margin: 0 0 4px; }
.recipe-info .desc { color: #666; font-size: 13px; margin: 0; line-height: 1.5; }
.recipe-arrow {
color: #ccc;
font-size: 14px;
transition: transform 0.2s;
margin-top: 14px;
}
.recipe.open .recipe-arrow { transform: rotate(90deg); color: #1a1a2e; }
.recipe-body {
display: none;
padding: 0 28px 28px;
border-top: 1px solid #f0f0f0;
}
.recipe.open .recipe-body { display: block; }
.recipe-body .when { color: #666; font-size: 13px; font-style: italic; margin: 16px 0 12px; }
/* Prompt blocks inside skill cards */
.prompt-block {
background: #1a1a2e;
border-radius: 12px;
padding: 20px 24px;
margin: 12px 0;
position: relative;
overflow: hidden;
}
.prompt-block pre {
color: #e2e8f0;
font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
font-size: 13px;
line-height: 1.7;
white-space: pre-wrap;
word-wrap: break-word;
margin: 0;
}
.prompt-label {
font-size: 10px;
text-transform: uppercase;
letter-spacing: 1.5px;
color: #64748b;
margin-bottom: 10px;
font-weight: 600;
}
.copy-btn {
position: absolute;
top: 12px;
right: 12px;
padding: 6px 14px;
border-radius: 8px;
border: 1px solid rgba(255,255,255,0.15);
background: rgba(255,255,255,0.08);
color: rgba(255,255,255,0.7);
font-size: 12px;
cursor: pointer;
font-weight: 600;
transition: all 0.2s;
}
.copy-btn:hover { background: rgba(255,255,255,0.15); color: white; }
.copy-btn.copied { background: #16a34a; border-color: #16a34a; color: white; }
/* Example output blocks */
.output-block {
background: #f8fafc;
border: 1px solid #e2e8f0;
border-radius: 12px;
padding: 20px 24px;
margin: 12px 0;
font-size: 14px;
color: #334155;
}
.output-block .output-label {
font-size: 10px;
text-transform: uppercase;
letter-spacing: 1.5px;
color: #94a3b8;
margin-bottom: 10px;
font-weight: 600;
}
/* Tags */
.tag {
display: inline-block;
padding: 3px 12px;
border-radius: 100px;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.3px;
text-transform: uppercase;
}
.tag.ready { background: #dcfce7; color: #166534; }
.tag.setup { background: #dbeafe; color: #1e40af; }
/* Table */
table { width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 14px; }
th { background: #f1f5f9; color: #475569; padding: 10px 14px; text-align: left; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; }
td { padding: 10px 14px; border-bottom: 1px solid #f1f5f9; }
td.flag { color: #ef4444; font-weight: 700; }
/* Escalation steps */
.esc-step {
display: flex;
gap: 14px;
padding: 10px 0;
border-bottom: 1px solid #f5f5f5;
align-items: flex-start;
font-size: 14px;
}
.esc-step:last-child { border-bottom: none; }
.esc-day {
background: #1a1a2e;
color: white;
padding: 3px 12px;
border-radius: 100px;
font-size: 12px;
font-weight: 700;
white-space: nowrap;
min-width: 64px;
text-align: center;
}
/* Big collapsible for setup prompts */
.big-collapsible {
margin: 20px 0;
border: 2px solid #e4e4e7;
border-radius: 16px;
overflow: hidden;
background: white;
}
.big-collapsible-header {
padding: 20px 28px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: space-between;
font-weight: 700;
font-size: 15px;
user-select: none;
transition: background 0.2s;
}
.big-collapsible-header:hover { background: #fafafa; }
.big-collapsible-header .arrow { transition: transform 0.2s; color: #aaa; font-size: 14px; }
.big-collapsible.open .big-collapsible-header .arrow { transform: rotate(90deg); color: #1a1a2e; }
.big-collapsible-body { display: none; }
.big-collapsible.open .big-collapsible-body { display: block; }
/* Callout */
.callout {
background: #eff6ff;
border: 1px solid #bfdbfe;
padding: 18px 24px;
border-radius: 12px;
margin: 20px 0;
font-size: 14px;
}
.callout strong { color: #1e40af; }
.callout p { color: #1e3a5f; margin: 4px 0; }
/* CTA */
.cta-box {
background: linear-gradient(135deg, #1a1a2e 0%, #0f3460 100%);
color: white;
padding: 36px 32px;
border-radius: 16px;
margin: 32px 0;
text-align: center;
}
.cta-box h3 { color: white; font-size: 20px; margin-bottom: 8px; }
.cta-box p { color: rgba(255,255,255,0.75); margin: 8px 0 0; font-size: 15px; }
/* Footer */
.footer {
background: #1a1a2e;
color: rgba(255,255,255,0.6);
padding: 32px 0;
text-align: center;
font-size: 14px;
}
.footer strong { color: white; }
@media (max-width: 600px) {
.header { padding: 40px 0 30px; }
.header .meta { flex-direction: column; gap: 12px; }
.gate-box { padding: 32px 20px; }
.recipe-header { padding: 18px 20px; }
.recipe-body { padding: 0 20px 20px; }
}
</style>
</head>
<body>
<!-- PASSWORD GATE -->
<div id="gate">
<div class="gate-box">
<div class="gate-logo">Cheever Insurance</div>
<p>AI Skills for Your Agency</p>
<input type="password" id="pw" placeholder="Access code" autofocus>
<div class="error" id="pw-error">Incorrect code. Try again.</div>
</div>
</div>
<!-- MAIN CONTENT -->
<div id="content">
<div class="header">
<div class="container">
<h1>AI Skills for Your Agency</h1>
<div class="subtitle">From manual follow-ups to full autonomy — start here</div>
<div class="meta">
<div><div class="label">For</div>Matt, Cheever Insurance</div>
<div><div class="label">From</div>Go2 AI (go2.io)</div>
<div><div class="label">Date</div>March 2026</div>
</div>
</div>
</div>
<div class="nav-bar">
<div class="container">
<div class="nav-pill active" onclick="scrollToSection('whatisthis')">What Is This</div>
<div class="nav-pill" onclick="scrollToSection('ready')">Ready Now</div>
<div class="nav-pill" onclick="scrollToSection('automation')">Full Automation</div>
<div class="nav-pill" onclick="scrollToSection('explainer')">Under the Hood</div>
<div class="nav-pill" onclick="scrollToSection('setup')">Setup Files</div>
<div class="nav-pill" onclick="scrollToSection('next')">Next Step</div>
</div>
</div>
<!-- WHAT IS THIS -->
<div class="section" id="whatisthis">
<div class="container">
<h2>What Is This</h2>
<p class="section-desc">We took what you told us about your agency, went and confirmed what's possible, and built you a starting point. Here's the idea.</p>
<p>You have processes that repeat. Renewal chasing, claims follow-up, underwriter submissions — you do them the same way every time. Right now a person does each step manually. What if they didn't have to?</p>
<p>That's what this is. Each item below is a <strong>skill</strong> — not just a prompt you paste once, but a workflow that can evolve into full automation. You start by using it manually. Then you refine it, connect it to your tools, and eventually it runs itself.</p>
<h3 style="margin-top: 28px; margin-bottom: 12px;">What's a Skill?</h3>
<p>You already write prompts in ChatGPT. A skill is the next step — but instead of pasting a prompt and copying the output, you open Claude Code and <strong>tell it to build the skill for you</strong>. Say "create a renewal chasing skill that sends 5 follow-up emails." It builds it. You refine it — "that Day 14 email is too aggressive, soften it." It learns your voice. Then you push it: "now connect this to my Outlook and send them automatically." Claude writes the code, connects the tools, and sets the schedule. You didn't paste a prompt. You told your computer to be an engineer.</p>
<p><strong>The progression looks like this:</strong></p>
<div style="margin: 20px 0;">
<div class="esc-step"><span class="esc-day" style="background:#6366f1; min-width: 80px;">Step 1</span><span><strong>Tell Claude Code what you need.</strong> "Create a renewal chasing skill for commercial clients." It drafts the emails, you see what it can do. Takes 30 seconds.</span></div>
<div class="esc-step"><span class="esc-day" style="background:#6366f1; min-width: 80px;">Step 2</span><span><strong>Argue with it.</strong> "That Day 14 email is too aggressive." "Make the subject lines shorter." "Run it with Bill Thompson's real info." Push it until it sounds exactly like you. The skill gets better every time.</span></div>
<div class="esc-step"><span class="esc-day" style="background:#6366f1; min-width: 80px;">Step 3</span><span><strong>Tell it to connect.</strong> "Now connect this to my Outlook so it sends automatically." Claude builds the connection, sets up a database, creates the schedule. Takes about 5 minutes. You don't write the code — you tell it what to do and it figures out how.</span></div>
<div class="esc-step"><span class="esc-day" style="background:#6366f1; min-width: 80px;">Step 4</span><span><strong>Batch and check.</strong> Import 50 renewals at once. Review what's going out each morning. Approve in 30 seconds. This is you building confidence.</span></div>
<div class="esc-step"><span class="esc-day" style="background:#16a34a; min-width: 80px;">Step 5</span><span><strong>Set it and forget it.</strong> Once you trust it — could be days — you flip one switch and it runs completely on its own. You never check another renewal chase again. Full autonomy.</span></div>
</div>
<p><strong>That's the whole concept.</strong> Human in the loop → human checks the loop → human leaves the loop. And this is just renewal chasing — once you see how it works, you'll start doing it with everything. "Create a claims follow-up skill." "Now connect it." "What else can you automate for me?" That's the conversation you'll be having.</p>
<h3 style="margin-top: 28px; margin-bottom: 12px;">Connectors (MCPs)</h3>
<p>Claude Code connects to your tools through <strong>connectors</strong> (technically called MCPs — Model Context Protocol). Think of them as bridges. There's one for Microsoft (Outlook, Calendar, Teams), one for databases, one for scheduling. Some already exist. Some we build custom — and building a connector takes minutes, not days.</p>
<p>When you tell Claude Code "connect this to my Outlook," it's using a connector under the hood. You don't need to understand how they work. If there isn't one for something you use, tell Claude Code: "I need you to connect to [software]. Figure it out." It'll look up the API docs, build a custom connector on your computer, and get it working. That's what I told you on the call — argue with your computer to be an engineer. If it says "I need the API documentation for that software," you give it. It handles the rest.</p>
<div class="callout">
<p><strong>What you're looking at below:</strong> The "Ready Now" section shows you what Claude Code can do right now — start talking to it and see the results. The "Full Automation" section is where you tell it to connect those skills to your tools so they run themselves. The rest shows what we confirmed — what connects to what, and why we're confident you can do this without a developer.</p>
</div>
</div>
</div>
<!-- READY NOW -->
<div class="section" id="ready">
<div class="container">
<span class="tag ready">Ready Now</span>
<h2>Skills That Work Today</h2>
<p class="section-desc">Install Claude Code, drop in the config file, and start talking to it. Tell it what you need. These examples show you what to say — but don't just paste them. Use them as a starting point and push Claude Code further. Ask it what else it can do. Tell it to connect things. Argue with it like an engineer.</p>
<!-- Skill 1: Client Email -->
<div class="recipe" onclick="toggleRecipe(this)">
<div class="recipe-header">
<div class="recipe-icon green">✉</div>
<div class="recipe-info">
<h3>Draft a Client Email</h3>
<p class="desc">Any client communication — renewal reminders, coverage questions, welcome letters. Adjusts tone automatically.</p>
</div>
<span class="recipe-arrow">▶</span>
</div>
<div class="recipe-body">
<p class="when">When to use: Any time you need to email a client about anything.</p>
<div class="prompt-block">
<div class="prompt-label">Tell Claude Code something like</div>
<button class="copy-btn" onclick="event.stopPropagation(); copyCode(this)">Copy</button>
<pre>Draft an email to Bill Thompson at Thompson Plumbing
letting him know his commercial policy renews May 15
and we need his updated app back.
Keep it friendly and simple — no jargon.</pre>
</div>
<div class="output-block">
<div class="output-label">What you get back</div>
<strong>Subject:</strong> Quick heads up — your renewal is coming up May 15<br><br>
Hi Bill,<br><br>
Your commercial policy is up for renewal on May 15. We've already pre-filled most of the application — just need you to review it, update anything that's changed, and send it back.<br><br>
The sooner we get it, the more time we have to shop around and make sure you're getting the best rate.<br><br>
I'll attach the app in a separate email. Any questions, just give me a call.<br><br>
Thanks, Matt — Cheever Insurance
</div>
<p><strong>Works for any audience:</strong> Clients get warm and simple. Underwriters get technical and bulleted. Adjusters get professional but firm. Just tell Claude who you're writing to.</p>
</div>
</div>
<!-- Skill 2: Underwriter Submission -->
<div class="recipe" onclick="toggleRecipe(this)">
<div class="recipe-header">
<div class="recipe-icon blue">📝</div>
<div class="recipe-info">
<h3>Draft an Underwriter Submission</h3>
<p class="desc">Submit a risk to an underwriter. Technical, concise, explains why this is good business.</p>
</div>
<span class="recipe-arrow">▶</span>
</div>
<div class="recipe-body">
<p class="when">When to use: Submitting a new account or renewal to underwriting.</p>
<div class="prompt-block">
<div class="prompt-label">Tell Claude Code something like</div>
<button class="copy-btn" onclick="event.stopPropagation(); copyCode(this)">Copy</button>
<pre>Draft a submission email to the underwriter at Hartford
for Thompson Plumbing LLC. They're a 20-year-old plumbing
company, $2.1M revenue, 12 employees, no claims in the
last 5 years. Looking for GL + commercial property.
Current premium is $12,400 with Travelers and they want
to shop it.</pre>
</div>
<p>Claude formats it the way underwriters want to read it — key risk details bulleted, loss history highlighted, clear ask at the end.</p>
</div>
</div>
<!-- Skill 3: Adjuster Escalation -->
<div class="recipe" onclick="toggleRecipe(this)">
<div class="recipe-header">
<div class="recipe-icon red">🚨</div>
<div class="recipe-info">
<h3>Draft an Adjuster Escalation</h3>
<p class="desc">Adjuster's gone silent. Push for your client — professional but firm.</p>
</div>
<span class="recipe-arrow">▶</span>
</div>
<div class="recipe-body">
<p class="when">When to use: Client filed a claim, adjuster hasn't been in touch, and you need to advocate.</p>
<div class="prompt-block">
<div class="prompt-label">Tell Claude Code something like</div>
<button class="copy-btn" onclick="event.stopPropagation(); copyCode(this)">Copy</button>
<pre>Draft a firm email to the adjuster at Liberty Mutual about
my client Sarah Miller's claim. Claim CL-20260315, water
damage, filed 10 days ago. The adjuster hasn't been in touch
with Sarah at all. I need an update on status and expected
timeline.</pre>
</div>
<p>References the claim number, states the timeline, asks for specific action. The kind of email that gets adjusters moving.</p>
</div>
</div>
<!-- Skill 4: Renewal Chase Sequence -->
<div class="recipe" onclick="toggleRecipe(this)">
<div class="recipe-header">
<div class="recipe-icon orange">📅</div>
<div class="recipe-info">
<h3>Generate a Full Renewal Chase Sequence</h3>
<p class="desc">All 5 follow-up emails for a commercial renewal — tone escalating from friendly to urgent over 21 days.</p>
</div>
<span class="recipe-arrow">▶</span>
</div>
<div class="recipe-body">
<p class="when">When to use: Commercial renewal coming up, you need the full nag sequence ready to go.</p>
<div class="prompt-block">
<div class="prompt-label">Tell Claude Code something like</div>
<button class="copy-btn" onclick="event.stopPropagation(); copyCode(this)">Copy</button>
<pre>Generate all 5 renewal chase emails for:
- Client: Bill Thompson
- Company: Thompson Plumbing LLC
- Policy: COM-2024-112
- Renews: May 15, 2026
- Email: bill@thompsonplumbing.com
Day 1, Day 3, Day 7, Day 14, and Day 21 —
tone escalating from friendly to urgent.
Include subject lines and send dates.</pre>
</div>
<div style="margin: 16px 0;">
<div class="esc-step"><span class="esc-day">Day 1</span><span>Friendly — "Your renewal is coming up, here's the pre-filled app."</span></div>
<div class="esc-step"><span class="esc-day">Day 3</span><span>Gentle — "Did you get a chance to look at the renewal app?"</span></div>
<div class="esc-step"><span class="esc-day">Day 7</span><span>Direct — "We need this back soon to shop the market."</span></div>
<div class="esc-step"><span class="esc-day">Day 14</span><span>Firm — "We can't get competitive quotes without it."</span></div>
<div class="esc-step"><span class="esc-day">Day 21</span><span>Urgent — "Your policy expires [date]. Without the app, we can't bind renewal coverage."</span></div>
</div>
<p><strong>Batch it:</strong> Paste a list of 5-10 clients. You get all the emails for all of them at once. Copy each one into an Outlook draft, set calendar reminders for the send dates.</p>
</div>
</div>
<!-- Skill 5: Compare Policies -->
<div class="recipe" onclick="toggleRecipe(this)">
<div class="recipe-header">
<div class="recipe-icon purple">🔍</div>
<div class="recipe-info">
<h3>Compare Two Policies</h3>
<p class="desc">New policy came in — what changed? Premiums, deductibles, exclusions, all in a table.</p>
</div>
<span class="recipe-arrow">▶</span>
</div>
<div class="recipe-body">
<p class="when">When to use: Renewal policy arrives and you need to know what's different.</p>
<div class="prompt-block">
<div class="prompt-label">Tell Claude Code something like</div>
<button class="copy-btn" onclick="event.stopPropagation(); copyCode(this)">Copy</button>
<pre>Compare old_policy.pdf vs new_policy.pdf.
Show me a table of what changed — premiums, deductibles,
coverage limits, exclusions. Cite the page numbers so I
can verify. Flag anything I should review with the client.</pre>
</div>
<table>
<thead><tr><th>Item</th><th>Old</th><th>New</th><th>Change</th></tr></thead>
<tbody>
<tr><td>Annual Premium</td><td>$12,400</td><td>$13,800</td><td>+$1,400 (+11.3%)</td></tr>
<tr><td>Property Deductible</td><td>$1,000</td><td>$2,500</td><td>+$1,500</td></tr>
<tr><td>Cyber Coverage</td><td>Included</td><td class="flag">Excluded</td><td class="flag">REVIEW</td></tr>
</tbody>
</table>
<p><strong>Important:</strong> Works best with clean digital PDFs. Scanned paper docs are less reliable. Always verify exclusion and coverage changes against the original — this saves 80% of reading time but your judgment is the final check.</p>
</div>
</div>
<!-- Skill 6: Claims Check-In -->
<div class="recipe" onclick="toggleRecipe(this)">
<div class="recipe-header">
<div class="recipe-icon teal">🤝</div>
<div class="recipe-info">
<h3>Generate Claims Check-In Emails</h3>
<p class="desc">Client filed a claim. Stay in touch with warm check-ins and adjuster escalations.</p>
</div>
<span class="recipe-arrow">▶</span>
</div>
<div class="recipe-body">
<p class="when">When to use: Client just filed a claim and you want to make sure they feel supported.</p>
<div class="prompt-block">
<div class="prompt-label">Tell Claude Code something like</div>
<button class="copy-btn" onclick="event.stopPropagation(); copyCode(this)">Copy</button>
<pre>Generate claims follow-up emails for:
- Client: Sarah Miller
- Claim: CL-20260315
- Type: water damage
- Filed: March 15, 2026
- Adjuster: Jim Parker, jparker@libertymutual.com
- Carrier: Liberty Mutual
Give me check-ins for Day 3, Day 7, Day 14, Day 21.
Include an adjuster escalation at Day 7 if they've
been unresponsive.</pre>
</div>
<p>Warm and empathetic early on. Firm and advocating when adjusters go silent. A documented follow-up trail is also E&O protection — evidence that your agency stayed engaged.</p>
</div>
</div>
</div>
</div>
<!-- FULL AUTOMATION -->
<div class="section" id="automation">
<div class="container">
<span class="tag setup">Full Automation</span>
<h2>Set It Up Once, It Runs Automatically</h2>
<p class="section-desc">Everything above is manual — you paste, Claude drafts, you copy into Outlook. This section connects those skills to your tools. One setup session, and your follow-ups send themselves.</p>
<div class="callout">
<p><strong>What it takes:</strong> About an hour total. Each step — registering the Azure app, creating the database, connecting Outlook — takes about 5 minutes. You tell Claude Code what to build and it walks you through everything. You check in, answer its questions, approve the email tone. By the end it's running.</p>
<p style="margin-top: 8px;"><strong>Then what?</strong> You check the daily preview for a few days. Once you trust it, you flip one switch (<code>AUTO_APPROVE=true</code>) and you never look at it again. It sends on schedule, logs what it does, and you only step in when a client actually responds. That's full autonomy — could happen in days.</p>
</div>
<div class="recipe" onclick="toggleRecipe(this)">
<div class="recipe-header">
<div class="recipe-icon green">⚡</div>
<div class="recipe-info">
<h3>How It Works After Setup</h3>
<p class="desc">What your day looks like once the automation is running.</p>
</div>
<span class="recipe-arrow">▶</span>
</div>
<div class="recipe-body">
<p><strong>Starting a chase:</strong></p>
<div class="prompt-block">
<pre>Start a renewal chase for Bill Thompson, Thompson Plumbing,
policy COM-2024-112, renews May 15,
email bill@thompsonplumbing.com</pre>
</div>
<p>Claude generates all 5 emails, stores them in a database, schedules them. Done in 10 seconds.</p>
<p><strong>Every morning:</strong> You get a preview email of what's going out that day. Approve in 30 seconds. Once you trust it, flip to auto-send and skip the preview.</p>
<p><strong>When someone responds:</strong></p>
<div class="prompt-block">
<pre>Bill Thompson responded, close it out</pre>
</div>
<p>All remaining scheduled emails cancel instantly.</p>
<p><strong>Checking status:</strong></p>
<div class="prompt-block">
<pre>What's due this week?
Show me all active renewals
What went out yesterday?</pre>
</div>
<p>Claude queries the actual database every time — no guessing, no memory issues.</p>
<p><strong>Batch import:</strong> Export your renewal list from AMS360 as a CSV (Activity List → filter by date → Export), drop it in the folder, tell Claude "import this month's renewals." All emails generated and scheduled at once.</p>
<p><strong>What it does NOT do:</strong> It doesn't automatically detect inbox replies. When a client responds, you tell Claude to close that chase. Everything else is automatic.</p>
</div>
</div>
<div class="recipe" onclick="toggleRecipe(this)">
<div class="recipe-header">
<div class="recipe-icon blue">🛠</div>
<div class="recipe-info">
<h3>What You Need for Setup</h3>
<p class="desc">Prerequisites before you start the setup.</p>
</div>
<span class="recipe-arrow">▶</span>
</div>
<div class="recipe-body">
<ul style="margin: 12px 0 12px 20px;">
<li><strong>Admin access to your Microsoft 365 account</strong> — to connect Outlook. If you're not sure if you're admin, go to admin.microsoft.com and see if you can access it.</li>
<li><strong>A list of upcoming renewals</strong> — CSV export from AMS360 is ideal. A spreadsheet works too. Even reading names off a screen works for the first few.</li>
<li><strong>About an hour</strong> — Claude walks you through every step. You or someone on your team just needs patience and determination.</li>
<li><strong>Your computer</strong> — everything runs locally. Sleeping is OK on Mac (it catches up). Just needs to be on.</li>
</ul>
<p>Claude walks you through installing everything — Homebrew, Python, Claude Code — one step at a time. Each step takes about 5 minutes. It'll feel unfamiliar for the first one, then it's just pasting commands.</p>
</div>
</div>
</div>
</div>
<!-- HOW IT WORKS / EXPLAINER -->
<div class="section" id="explainer">
<div class="container">
<h2>How This Actually Works</h2>
<p class="section-desc">We didn't just write prompts. We confirmed what connects to what, tested the APIs, and mapped the path from skills to full automation. Here's what we found.</p>
<div class="recipe" onclick="toggleRecipe(this)">
<div class="recipe-header">
<div class="recipe-icon green">✓</div>
<div class="recipe-info">
<h3>What We Confirmed</h3>
<p class="desc">The systems we verified have API access and can be connected.</p>
</div>
<span class="recipe-arrow">▶</span>
</div>
<div class="recipe-body">
<div style="margin: 12px 0;">
<div class="esc-step"><span class="esc-day" style="background:#16a34a;">Confirmed</span><span><strong>Microsoft Outlook (Graph API)</strong> — Send emails, read sent items, manage folders. Microsoft Graph is a documented, public API. Your Microsoft 365 account already has access. No extra license needed.</span></div>
<div class="esc-step"><span class="esc-day" style="background:#16a34a;">Confirmed</span><span><strong>AMS360 (Vertafore)</strong> — Has a real WSAPI (WCF-based). CSV export works today for renewal lists. Direct API integration is a v2 possibility — for now, CSV is reliable and fast.</span></div>
<div class="esc-step"><span class="esc-day" style="background:#16a34a;">Confirmed</span><span><strong>Claude Code Scheduled Tasks</strong> — Built-in feature. Set a schedule, it runs your scripts automatically. No cron jobs, no Task Scheduler — Claude handles it.</span></div>
<div class="esc-step"><span class="esc-day" style="background:#16a34a;">Confirmed</span><span><strong>SQLite Database</strong> — Runs locally on your machine. No server, no cloud, no monthly fee. Stores your clients, follow-ups, scheduled emails, and logs.</span></div>
<div class="esc-step"><span class="esc-day" style="background:#16a34a;">Confirmed</span><span><strong>Python + MSAL</strong> — Microsoft's own authentication library. Uses PKCE (no passwords or secrets that expire). Token refreshes automatically every day.</span></div>
</div>
</div>
</div>
<div class="recipe" onclick="toggleRecipe(this)">
<div class="recipe-header">
<div class="recipe-icon blue">🔑</div>
<div class="recipe-info">
<h3>What Are API Keys and Why Do They Matter?</h3>
<p class="desc">Plain English explanation of how software talks to software.</p>
</div>
<span class="recipe-arrow">▶</span>
</div>
<div class="recipe-body">
<p>An <strong>API</strong> is just a way for one piece of software to talk to another. When Claude Code sends an email through Outlook, it's using Microsoft's API — a set of rules Microsoft published that say "if you send me this request in this format, I'll send that email for you."</p>
<p>An <strong>API key</strong> (or credential) is like a password that proves your software is allowed to use that API. When you register an app in Azure, you're getting a credential that says "this app is authorized to send emails from Matt's Outlook account."</p>
<p><strong>Why this matters:</strong> Every skill in this portal that involves sending emails, reading data, or automating a process uses an API under the hood. The connectors bridge Claude to those APIs. The setup prompt walks you through connecting each one — you don't write any code, you just follow the steps and paste what Claude tells you to paste.</p>
<p><strong>What you need to know:</strong></p>
<ul style="margin: 8px 0 8px 20px;">
<li>You register one app in Azure (5 minutes, Claude walks you through it)</li>
<li>No passwords or secrets that expire — we use a modern method called PKCE</li>
<li>You sign in once through your browser, then the token refreshes automatically</li>
<li>Everything stays on your machine — nothing goes through a third-party server</li>
</ul>
</div>
</div>
<div class="recipe" onclick="toggleRecipe(this)">
<div class="recipe-header">
<div class="recipe-icon purple">🚀</div>
<div class="recipe-info">
<h3>From Skills to Full Automation</h3>
<p class="desc">The skills are step one. Here's the path to a system that runs your follow-ups permanently.</p>
</div>
<span class="recipe-arrow">▶</span>
</div>
<div class="recipe-body">
<p>The skills in the "Ready Now" section are useful today — but they're also the <strong>starting point</strong> for full automation. Here's how a skill evolves:</p>
<div style="margin: 16px 0;">
<div class="esc-step"><span class="esc-day" style="background:#6366f1;">Ask</span><span><strong>Tell Claude Code what you need.</strong> "Create a renewal chasing skill for commercial clients." Same thing you'd do in ChatGPT, but now you're talking to an engineer on your computer.</span></div>
<div class="esc-step"><span class="esc-day" style="background:#6366f1;">Refine</span><span><strong>Argue with it.</strong> "That Day 14 email is too aggressive — soften it." "Make it sound more like me." Push it until it's exactly right. It learns your voice.</span></div>
<div class="esc-step"><span class="esc-day" style="background:#6366f1;">Connect</span><span><strong>Tell it to connect.</strong> "Now hook this up to my Outlook so it sends automatically." Claude builds the connector, sets up a database, creates the schedule. You don't write any of this — you tell it what to do.</span></div>
<div class="esc-step"><span class="esc-day" style="background:#6366f1;">Batch</span><span><strong>Import 50 renewals at once.</strong> Export from AMS360, drop it in the folder, tell Claude "import this month's renewals." Every client gets a personalized chase sequence. You review once in the morning, approve, done.</span></div>
<div class="esc-step"><span class="esc-day" style="background:#16a34a;">Forget</span><span><strong>Set it and forget it.</strong> Flip one switch. It runs on its own. You only step in when a client actually responds. Full autonomy — could happen in days.</span></div>
</div>
<p><strong>This is not theoretical.</strong> The setup prompt in this portal gives Claude Code the full blueprint. You tell it to start building, it walks you through every step, and by the end you have a working automation.</p>
<p><strong>You don't need coding skills.</strong> You need patience and about an hour. Each individual step takes about 5 minutes. You already argue with ChatGPT to get what you want — this is the same thing, but instead of arguing with a chatbot you're arguing with an engineer on your computer. And this engineer can actually connect to your tools and build real systems.</p>
</div>
</div>
<div class="recipe" onclick="toggleRecipe(this)">
<div class="recipe-header">
<div class="recipe-icon orange">💫</div>
<div class="recipe-info">
<h3>Why We Believe This Works for You</h3>
<p class="desc">Our confidence level and what it's based on.</p>
</div>
<span class="recipe-arrow">▶</span>
</div>
<div class="recipe-body">
<p><strong>High confidence:</strong></p>
<ul style="margin: 8px 0 8px 20px;">
<li>Microsoft Graph API is well-documented, widely used, and your M365 account already supports it</li>
<li>SQLite + Python is battle-tested infrastructure — runs on millions of machines</li>
<li>Claude Code's setup prompt format has been tested and refined across multiple builds</li>
<li>The approval workflow protects you from bad emails going out (E&O protection)</li>
<li>Insurance guardrails are built into the config — no coverage promises, no invented details</li>
</ul>
<p><strong>Honest limitations:</strong></p>
<ul style="margin: 8px 0 8px 20px;">
<li>Reply detection is manual in v1 — you tell Claude when a client responds</li>
<li>AMS360 integration starts with CSV export, not live sync</li>
<li>Your machine needs to be on for scheduled sends (it catches up if it was off)</li>
<li>Scanned paper PDFs are less reliable for policy comparison</li>
</ul>
<p>Every limitation listed above is solvable. V1 gets you running. V2 makes it hands-free.</p>
</div>
</div>
</div>
</div>
<!-- SETUP FILES -->
<div class="section" id="setup">
<div class="container">
<h2>Setup Files</h2>
<p class="section-desc">The config file and the automation setup prompt. Copy them from here.</p>
<div class="big-collapsible" onclick="toggleBig(this)">
<div class="big-collapsible-header">
<span><span class="tag ready" style="margin-right: 8px;">Step 1</span> Config File (CLAUDE.md) — Save this in your project folder</span>
<span class="arrow">▶</span>
</div>
<div class="big-collapsible-body">
<div class="prompt-block" style="border-radius: 0;">
<button class="copy-btn" onclick="event.stopPropagation(); copyCode(this)">Copy</button>
<pre id="claudemd-content"></pre>
</div>
</div>
</div>
<div class="big-collapsible" onclick="toggleBig(this)">
<div class="big-collapsible-header">
<span><span class="tag setup" style="margin-right: 8px;">Step 2</span> Automation Setup Prompt — Paste into Claude Code</span>
<span class="arrow">▶</span>
</div>
<div class="big-collapsible-body">
<div class="prompt-block" style="border-radius: 0;">
<button class="copy-btn" onclick="event.stopPropagation(); copyCode(this)">Copy</button>
<pre id="setup-content"></pre>
</div>
</div>
</div>
</div>
</div>
<!-- NEXT STEP -->
<div class="section" id="next">
<div class="container">
<div class="cta-box">
<h3>Ready to try it?</h3>
<p>Open Claude Code and start talking to it. Try the examples below — then push it further. Tell it to connect to your Outlook. Tell it to build a database. Ask it what else it can do. Each step takes about 5 minutes. The whole thing's done in under an hour. Once you trust it, schedule it and never think about it again. If you get stuck, email Scott at s@go2.io.</p>
</div>
<h3>This Compounds</h3>
<p>Renewal chasing is your first skill. The second one — claims follow-up — takes less time because the database is already there, Outlook's already connected, the scheduler's already running. You're just adding a new workflow to an existing system. The third takes even less. By the fifth, you describe a process and it's automated the same day.</p>
<p>COI requests, underwriter submissions, monthly reports, data entry between AMS360 and Outlook — every process that repeats becomes a system that runs itself. Each one you build makes the next one faster.</p>
<h3 style="margin-top: 28px;">Why This Matters</h3>
<p>This isn't just about renewal chasing. It's about learning a pattern. Once you see a skill go from "create this for me" to full autonomy, you'll start doing it with everything. "Create a claims follow-up skill." "Build me something that compares policies automatically." "What else can you connect to?" That's the conversation. And every time you do it, you get faster because the infrastructure is already there.</p>
<p>That's the shift. Automation feels like something you'd need a developer for. It's not. You have a developer — it's Claude Code, sitting on your computer, waiting for you to tell it what to build. You already know how to prompt. This is the same thing, pointed at real tools that actually do things.</p>
<p style="margin-top: 24px; color: #888; font-size: 13px;"><strong>Cost:</strong> The pilot is free. Claude Code itself runs about $20-50/month in API usage depending on how much you use it.</p>
</div>
</div>
<div class="footer">
<div class="container">
<strong>Scott Moran</strong> — Go2 | s@go2.io
</div>
</div>
</div>
<script>
// Password gate
const HASH = 'd1e58adff4c12d9f5d50523783d798ad40870d1ba8b5fa43d93a7ac310e5477b'; // sha256('sorryfordelay')
document.getElementById('pw').addEventListener('keyup', async function(e) {
if (e.key === 'Enter') {
const hash = await sha256(this.value);
if (hash === HASH) {
document.getElementById('gate').style.display = 'none';
document.getElementById('content').style.display = 'block';
loadContent();
} else {
document.getElementById('pw-error').style.display = 'block';
this.value = '';
}
}
});
async function sha256(msg) {
const buf = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(msg));
return Array.from(new Uint8Array(buf)).map(b => b.toString(16).padStart(2, '0')).join('');
}
function loadContent() {
document.getElementById('claudemd-content').textContent = CLAUDEMD;
document.getElementById('setup-content').textContent = SETUP_PROMPT;
}
// Skill card toggle
function toggleRecipe(el) {
if (el.classList.contains('recipe')) el.classList.toggle('open');
}
// Big collapsible toggle
function toggleBig(el) {
if (el.classList.contains('big-collapsible')) el.classList.toggle('open');
}
// Copy
function copyCode(btn) {
const pre = btn.parentElement.querySelector('pre');
navigator.clipboard.writeText(pre.textContent).then(() => {
btn.textContent = 'Copied!';
btn.classList.add('copied');
setTimeout(() => { btn.textContent = 'Copy'; btn.classList.remove('copied'); }, 2000);
});
}
// Scroll
function scrollToSection(id) {
document.getElementById(id).scrollIntoView({ behavior: 'smooth', block: 'start' });
document.querySelectorAll('.nav-pill').forEach(p => p.classList.remove('active'));
event.target.classList.add('active');
}
// Scroll spy
window.addEventListener('scroll', () => {
const ids = ['whatisthis', 'ready', 'automation', 'explainer', 'setup', 'next'];
const pills = document.querySelectorAll('.nav-pill');
let cur = 0;
ids.forEach((id, i) => {
const el = document.getElementById(id);
if (el && window.scrollY >= el.offsetTop - 120) cur = i;
});
pills.forEach(p => p.classList.remove('active'));
if (pills[cur]) pills[cur].classList.add('active');
});
// Embedded content
const CLAUDEMD = `# Cheever Insurance — Claude Code Config
> This file tells Claude how to help you. It loads automatically every time you open Claude Code in this folder. You don't need to edit it — just talk to Claude naturally.
---
## Who You Are
You are the AI assistant for Cheever Insurance Agency, a 15-person independent agency in Ohio. Matt is the owner. The agency handles homeowners, commercial, employee benefits, life, and health insurance.
## Tools & Systems
- **AMS360** (Vertafore) — client and policy management system
- **Microsoft Outlook** — all email communication (connected via Microsoft Graph API)
- **SQLite Database** (\`cheever.db\`) — stores clients, follow-ups, scheduled emails, and logs
- **Scheduled Tasks** — daily email sender runs automatically every morning; weekly summary runs every Friday
## Your Job
Manage automated follow-up sequences, draft emails, and compare policies. Everything you draft should sound like it came from a real person at a small Midwestern insurance agency — professional, warm, and neighborly. Not corporate. Not form letters.
When drafting any email, always output both the **Subject Line** and the **Body** clearly separated.
## Email Style Rules
- First name basis with clients. "Hi Bill," not "Dear Mr. Johnson."
- Short paragraphs. Nobody reads walls of text.
- Clear ask in every email — what do you need them to do?
- Sign off: "Thanks, [name] — Cheever Insurance" or "Best, [name] — Cheever Insurance"
- Never use jargon without explaining it. If you say "endorsement," follow it with what that means for the client.
- Sound like a helpful neighbor, not a form letter.
## Insurance Guardrails
- **Never make coverage promises.** Don't say "you'll be covered" or "we'll make sure you're protected." Use factual language: "so we can work on your renewal options," "so we can get competitive quotes."
- **Never invent policy details.** If a coverage limit, exclusion, or premium amount isn't in the database or the documents Matt provides, say you don't have that information. Don't guess.
- **When comparing policies, cite the page or section** from the original document so Matt can verify.
- **Flag uncertainty.** If you're not sure about a coverage detail, say so clearly. Separate "the document says" from "recommended next step."
- **Require human review** before any client-facing coverage advice. Draft it, show it, let Matt or his team confirm.
---
## Managing Follow-Ups
You have a SQLite database (\`cheever.db\`) in this folder. **Always query it directly** — don't guess or rely on memory.
### Starting a Renewal Chase
Matt says something like:
- "Start a renewal chase for Bill Thompson, Thompson Plumbing, policy COM-2024-112, renews May 15, email bill@thompsonplumbing.com"
You:
1. Add the client to the database (or find them if they already exist)
2. Create a follow-up record (type: renewal)
3. Generate all 5 emails with escalating tone (Day 1, 3, 7, 14, 21)
4. Schedule them in the database with the correct dates
5. Show Matt all 5 emails and the schedule
6. Mark them as pending approval
### Starting a Claims Follow-Up
Matt says something like:
- "Sarah Miller filed a claim for water damage, claim CL-20260315, email sarah@gmail.com, adjuster is Jim Parker at jparker@libertymutual.com"
You:
1. Add the client and the adjuster contact to the database
2. Create a follow-up record (type: claim)
3. Generate the check-in sequence (Day 3, 7, 14, 21) — client emails AND adjuster emails where needed
4. Schedule them and show Matt the full sequence
5. Mark them as pending approval
### Checking Status
- "What's due this week?" → query scheduled_emails for the next 7 days