sync: auto-sync from GURU-5070 at 2026-07-23 08:16:27

Author: Mike Swanson
Machine: GURU-5070
Timestamp: 2026-07-23 08:16:27
This commit is contained in:
2026-07-23 08:17:10 -07:00
parent 61cc7eca5c
commit 1f045572a2
10 changed files with 70 additions and 18 deletions

View File

@@ -35,6 +35,20 @@ competitor, or a prospect ACG would refuse to onboard is an embarrassment ACG pa
hardcoded page guard silently capped a customer pull at 3000 of 5082 and the dedupe looked
complete while missing 41% of the tenant. `/contacts` also caps ~50/page regardless of
`per_page=100` — verify against `total_entries`, never trust the loop terminator alone.
**Autotask is the pre-Syncro PSA (ACG migrated AT -> RepairShopr/Syncro ~2016) but Mike says
it is NOT a complete record — do not treat it as authoritative for former clients.** Checking
it is cheap corroboration, not clearance. Creds `msp-tools/autotask.sops.yaml`, 5521 companies.
Two gotchas: `webAddress` is empty on 5519 of 5521 rows (name matching is the ONLY channel),
and `pageDetails.nextPageUrl` returns 0 items — page with an `id` cursor
(`{"op":"gt","field":"id","value":LAST}`, MaxRecords 500) and check against
`GET Companies/query/count`. On the 2026-07 list it matched 10 companies, all already found
via Syncro, and added zero. Local `clients/` + `wiki/clients/` + `vault/clients/` (116 slugs)
are all CURRENT clients — Syncro already covers them, so they add nothing. Grepping session
logs for company-name tokens is pure noise; don't bother.
**Residual gap to state plainly: a client predating Autotask, or never entered in either PSA,
is undetectable. Ask Mike to eyeball the kept-name list — that caught Open Enclose.**
2. **Active vs former:** a Syncro record alone means nothing — many have zero tickets. Pull
ticket + invoice counts and max dates per matched customer. Recent invoices = ACTIVE
(exclude). Dormant = FORMER (keep on the list, flagged, as a warm re-approach).

View File

@@ -10,7 +10,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Anton&family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="css/v2.css" />
<link rel="icon" href="assets/acg-mark.svg" type="image/svg+xml" />
<link rel="icon" type="image/svg+xml" href="assets/acg-g-mark.svg" />
<script>
(function () { try {
var s = localStorage.getItem("acg-theme");
@@ -26,7 +26,7 @@
<header class="site-header">
<div class="header-grid">
<a class="brand" href="index.html" aria-label="Arizona Computer Guru home">
<span class="brand__mark" aria-hidden="true"><svg viewBox="0 0 100 104" fill="none" stroke="currentColor" stroke-width="11" stroke-linecap="round" stroke-linejoin="round"><g transform="rotate(20 50 54)"><path d="M61.2 26.2 A30 30 0 1 1 38.8 26.2"/><line x1="50" y1="14" x2="50" y2="50"/></g></svg></span>
<span class="brand__mark" aria-hidden="true"><svg viewBox="0 0 101 96" fill="none" stroke-linecap="round" stroke-linejoin="round"><g stroke="currentColor" stroke-width="19.75"><path d="M67 15.09A38 38 0 1 0 85.17 40.1"/><path d="M51.64 45.35 92.5 15.67"/></g><g stroke="var(--accent, #E24A12)" stroke-width="7.75"><path d="M67 15.09A38 38 0 1 0 85.17 40.1"/><path d="M51.64 45.35 92.5 15.67"/></g></svg></span>
<span class="brand__text">
<span class="brand__name">Arizona Computer Guru</span>
<span class="brand__since">Concierge IT / Tucson / Est. 2001</span>

View File

@@ -0,0 +1,23 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 101 96" role="img" aria-label="Arizona Computer Guru">
<!-- Power-button G mark, traced from the ACG wordmark (ring R38, gap 12deg-60deg,
power stroke at 36deg; orange core over a contrast outline, as in the source logo).
Outline follows currentColor so the mark adapts: ink-on-bone light, bone-on-charcoal dark. -->
<style>
:root { color: #16120F; }
.core { stroke: #E24A12; }
@media (prefers-color-scheme: dark) {
:root { color: #F4EDE1; }
.core { stroke: #FF5A1F; }
}
</style>
<g fill="none" stroke-linecap="round" stroke-linejoin="round">
<g stroke="currentColor" stroke-width="19.75">
<path d="M67 15.09A38 38 0 1 0 85.17 40.1"/>
<path d="M51.64 45.35 92.5 15.67"/>
</g>
<g class="core" stroke="#E24A12" stroke-width="7.75">
<path d="M67 15.09A38 38 0 1 0 85.17 40.1"/>
<path d="M51.64 45.35 92.5 15.67"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 973 B

View File

@@ -1,6 +1,21 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 104" role="img" aria-label="Arizona Computer Guru">
<g transform="rotate(20 50 54)" fill="none" stroke="#F2922E" stroke-width="11" stroke-linecap="round" stroke-linejoin="round">
<path d="M61.2 26.2 A30 30 0 1 1 38.8 26.2" />
<line x1="50" y1="14" x2="50" y2="50" />
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 101 96" role="img" aria-label="Arizona Computer Guru">
<!-- Superseded by acg-g-mark.svg; kept in sync so stale references show the real mark. -->
<style>
:root { color: #16120F; }
.core { stroke: #E24A12; }
@media (prefers-color-scheme: dark) {
:root { color: #F4EDE1; }
.core { stroke: #FF5A1F; }
}
</style>
<g fill="none" stroke-linecap="round" stroke-linejoin="round">
<g stroke="currentColor" stroke-width="19.75">
<path d="M67 15.09A38 38 0 1 0 85.17 40.1"/>
<path d="M51.64 45.35 92.5 15.67"/>
</g>
<g class="core" stroke="#E24A12" stroke-width="7.75">
<path d="M67 15.09A38 38 0 1 0 85.17 40.1"/>
<path d="M51.64 45.35 92.5 15.67"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 348 B

After

Width:  |  Height:  |  Size: 789 B

View File

@@ -10,7 +10,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Anton&family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="css/v2.css" />
<link rel="icon" href="assets/acg-mark.svg" type="image/svg+xml" />
<link rel="icon" type="image/svg+xml" href="assets/acg-g-mark.svg" />
<script>
(function () { try {
var s = localStorage.getItem("acg-theme");
@@ -26,7 +26,7 @@
<header class="site-header">
<div class="header-grid">
<a class="brand" href="index.html" aria-label="Arizona Computer Guru home">
<span class="brand__mark" aria-hidden="true"><svg viewBox="0 0 100 104" fill="none" stroke="currentColor" stroke-width="11" stroke-linecap="round" stroke-linejoin="round"><g transform="rotate(20 50 54)"><path d="M61.2 26.2 A30 30 0 1 1 38.8 26.2"/><line x1="50" y1="14" x2="50" y2="50"/></g></svg></span>
<span class="brand__mark" aria-hidden="true"><svg viewBox="0 0 101 96" fill="none" stroke-linecap="round" stroke-linejoin="round"><g stroke="currentColor" stroke-width="19.75"><path d="M67 15.09A38 38 0 1 0 85.17 40.1"/><path d="M51.64 45.35 92.5 15.67"/></g><g stroke="var(--accent, #E24A12)" stroke-width="7.75"><path d="M67 15.09A38 38 0 1 0 85.17 40.1"/><path d="M51.64 45.35 92.5 15.67"/></g></svg></span>
<span class="brand__text">
<span class="brand__name">Arizona Computer Guru</span>
<span class="brand__since">Concierge IT / Tucson / Est. 2001</span>

View File

@@ -10,7 +10,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Anton&family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="css/v2.css" />
<link rel="icon" href="assets/acg-mark.svg" type="image/svg+xml" />
<link rel="icon" type="image/svg+xml" href="assets/acg-g-mark.svg" />
<script>
(function () { try {
var s = localStorage.getItem("acg-theme");
@@ -29,7 +29,7 @@
<header class="site-header">
<div class="header-grid">
<a class="brand" href="index.html" aria-label="Arizona Computer Guru home">
<span class="brand__mark" aria-hidden="true"><svg viewBox="0 0 100 104" fill="none" stroke="currentColor" stroke-width="11" stroke-linecap="round" stroke-linejoin="round"><g transform="rotate(20 50 54)"><path d="M61.2 26.2 A30 30 0 1 1 38.8 26.2"/><line x1="50" y1="14" x2="50" y2="50"/></g></svg></span>
<span class="brand__mark" aria-hidden="true"><svg viewBox="0 0 101 96" fill="none" stroke-linecap="round" stroke-linejoin="round"><g stroke="currentColor" stroke-width="19.75"><path d="M67 15.09A38 38 0 1 0 85.17 40.1"/><path d="M51.64 45.35 92.5 15.67"/></g><g stroke="var(--accent, #E24A12)" stroke-width="7.75"><path d="M67 15.09A38 38 0 1 0 85.17 40.1"/><path d="M51.64 45.35 92.5 15.67"/></g></svg></span>
<span class="brand__text">
<span class="brand__name">Arizona Computer Guru</span>
<span class="brand__since">Concierge IT / Tucson / Est. 2001</span>

View File

@@ -145,8 +145,8 @@ a:focus-visible, button:focus-visible {
min-height: 4.25rem;
}
.brand { display: flex; align-items: center; gap: 0.7rem; text-decoration: none; color: var(--ink); }
.brand__mark { color: var(--accent); line-height: 0; }
.brand__mark svg { width: 32px; height: 33px; }
.brand__mark { color: var(--ink); line-height: 0; } /* outline ring; orange core reads var(--accent) */
.brand__mark svg { width: 34px; height: 33px; }
.brand__text { display: flex; flex-direction: column; line-height: 1.15; }
.brand__name {
font-family: var(--f-display); font-weight: 400; font-size: 1.15rem;

View File

@@ -10,7 +10,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Anton&family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="css/v2.css" />
<link rel="icon" href="assets/acg-mark.svg" type="image/svg+xml" />
<link rel="icon" type="image/svg+xml" href="assets/acg-g-mark.svg" />
<script>
(function () { try {
var s = localStorage.getItem("acg-theme");
@@ -29,7 +29,7 @@
<header class="site-header">
<div class="header-grid">
<a class="brand" href="index.html" aria-label="Arizona Computer Guru home">
<span class="brand__mark" aria-hidden="true"><svg viewBox="0 0 100 104" fill="none" stroke="currentColor" stroke-width="11" stroke-linecap="round" stroke-linejoin="round"><g transform="rotate(20 50 54)"><path d="M61.2 26.2 A30 30 0 1 1 38.8 26.2"/><line x1="50" y1="14" x2="50" y2="50"/></g></svg></span>
<span class="brand__mark" aria-hidden="true"><svg viewBox="0 0 101 96" fill="none" stroke-linecap="round" stroke-linejoin="round"><g stroke="currentColor" stroke-width="19.75"><path d="M67 15.09A38 38 0 1 0 85.17 40.1"/><path d="M51.64 45.35 92.5 15.67"/></g><g stroke="var(--accent, #E24A12)" stroke-width="7.75"><path d="M67 15.09A38 38 0 1 0 85.17 40.1"/><path d="M51.64 45.35 92.5 15.67"/></g></svg></span>
<span class="brand__text">
<span class="brand__name">Arizona Computer Guru</span>
<span class="brand__since">Concierge IT / Tucson / Est. 2001</span>

View File

@@ -10,7 +10,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Anton&family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="css/v2.css" />
<link rel="icon" href="assets/acg-mark.svg" type="image/svg+xml" />
<link rel="icon" type="image/svg+xml" href="assets/acg-g-mark.svg" />
<script>
(function () { try {
var s = localStorage.getItem("acg-theme");
@@ -26,7 +26,7 @@
<header class="site-header">
<div class="header-grid">
<a class="brand" href="index.html" aria-label="Arizona Computer Guru home">
<span class="brand__mark" aria-hidden="true"><svg viewBox="0 0 100 104" fill="none" stroke="currentColor" stroke-width="11" stroke-linecap="round" stroke-linejoin="round"><g transform="rotate(20 50 54)"><path d="M61.2 26.2 A30 30 0 1 1 38.8 26.2"/><line x1="50" y1="14" x2="50" y2="50"/></g></svg></span>
<span class="brand__mark" aria-hidden="true"><svg viewBox="0 0 101 96" fill="none" stroke-linecap="round" stroke-linejoin="round"><g stroke="currentColor" stroke-width="19.75"><path d="M67 15.09A38 38 0 1 0 85.17 40.1"/><path d="M51.64 45.35 92.5 15.67"/></g><g stroke="var(--accent, #E24A12)" stroke-width="7.75"><path d="M67 15.09A38 38 0 1 0 85.17 40.1"/><path d="M51.64 45.35 92.5 15.67"/></g></svg></span>
<span class="brand__text">
<span class="brand__name">Arizona Computer Guru</span>
<span class="brand__since">Concierge IT / Tucson / Est. 2001</span>

View File

@@ -10,7 +10,7 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Anton&family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="css/v2.css" />
<link rel="icon" href="assets/acg-mark.svg" type="image/svg+xml" />
<link rel="icon" type="image/svg+xml" href="assets/acg-g-mark.svg" />
<script>
(function () { try {
var s = localStorage.getItem("acg-theme");
@@ -26,7 +26,7 @@
<header class="site-header">
<div class="header-grid">
<a class="brand" href="index.html" aria-label="Arizona Computer Guru home">
<span class="brand__mark" aria-hidden="true"><svg viewBox="0 0 100 104" fill="none" stroke="currentColor" stroke-width="11" stroke-linecap="round" stroke-linejoin="round"><g transform="rotate(20 50 54)"><path d="M61.2 26.2 A30 30 0 1 1 38.8 26.2"/><line x1="50" y1="14" x2="50" y2="50"/></g></svg></span>
<span class="brand__mark" aria-hidden="true"><svg viewBox="0 0 101 96" fill="none" stroke-linecap="round" stroke-linejoin="round"><g stroke="currentColor" stroke-width="19.75"><path d="M67 15.09A38 38 0 1 0 85.17 40.1"/><path d="M51.64 45.35 92.5 15.67"/></g><g stroke="var(--accent, #E24A12)" stroke-width="7.75"><path d="M67 15.09A38 38 0 1 0 85.17 40.1"/><path d="M51.64 45.35 92.5 15.67"/></g></svg></span>
<span class="brand__text">
<span class="brand__name">Arizona Computer Guru</span>
<span class="brand__since">Concierge IT / Tucson / Est. 2001</span>