System and Audit
How everything connects, how healthy each part is, what is missing and what to do first. Every line says if it was checked live or comes from our docs.
Summary
Where we stand in one screen.
The data pipeline works end to end: county file to Airtable to sales. Airtable automations run daily without failing. The hooks that block bad commands work. The KPI weekly tab and the new site are live.
Nothing alerts when something breaks (3 of 9 Lambdas have an alarm). Recent work lives on one laptop. Some security items need cleanup (details kept private). The same KPI has four different answers. Deploys are by hand.
Of 15 gaps, 6 are planned but not started, 4 are partly planned, 4 have no step and 1 conflicts with your own decision. Only 6 of 33 blueprint steps have receipts.
The map
How everything connects. Left border colour = health. Read top to bottom: data goes down.
Every connection, one line each
| From | To | How |
|---|---|---|
| County files / portals | Task K scripts | manual download or API |
| Task K scripts | County Google Sheet | script writes tabs |
| County Sheet "For Smart Skip" tab | Smart Skip | manual email + CSV |
| Smart Skip results | Task K scripts (deceased, occupancy, tier) | manual |
| Task K push scripts | Airtable MASTER | REST, 25 per batch, needs sign-off |
| Airtable formulas + [RS-Auto] automations | Research Priority | blank-to-filled only |
| Airtable Automation 2 | Jera / Carmen queues | Mondays 6 AM CT, tops up to 125 |
| GHL | Airtable (daily stage sync, call KPI, dates-sync Lambda) | API pull on a schedule |
| GHL "Opportunity Changed" webhook | opportunity-mirror Lambda | webhook, 11 s to 7+ min late |
| EventBridge (2 min) | mirror-sweep Lambda | backstop for the webhook |
| Airtable | Make.com | "AT to Make" automation, downstream unknown |
| Airtable + GHL | KPI Google Sheet | scripts/kpi, run by hand weekly |
| Airtable dashboards .tsx files | Airtable Interface pages | manual copy-paste, no API |
| Claude sessions | Everything above | hooks check each command; receipts prove steps |
Inventory: what we built and how it is doing
Filter by status. "Checked 27 Oct" means I looked at the running system. "From our docs" means the docs say so and I did not re-check.
| Name | What it does | Status | What I found | Action |
|---|---|---|---|---|
| MASTER table Airtable | 6,035 leads, 415 fields. The one table everything reads. | Working checked 27 Oct | Record count read today. 415 fields in one table is a risk: nobody can name what each field is for. | Keep |
| Stamp automations (dates entered/left) Airtable | 14 small automations that write a date when a status changes. | Partly working checked 27 Oct | Two automations stamp nearly the same Deal Review date into two fields (687 vs 111 leads filled), so the same KPI gives two answers. | Needs a decision |
| Automation 2 (weekly top-up) Airtable | Mondays 6 AM CT, fills each researcher to 125 open leads. | Working checked 27 Oct | No failed runs in its history; 116 leads assigned at 6:00 AM on 10/26. | Watch |
| GHL Call KPI - Daily Airtable | Daily call counts into the GHL Call KPI table. | Partly working checked 27 Oct | Runs fine (last 3 days ok), but the numbers do not match Nakul's method: 10/23 shows 122 call messages, GHL on Yader's numbers shows 0 calls; week 10/19-25 shows 1,045 vs 472. | Fix |
| Sync GHL Pipeline Stages (daily) Airtable | Copies GHL stage into 8 MASTER fields. | Working checked 27 Oct | Succeeded 10/25, 10/26, 10/27. One failure on 20 Aug. | Keep |
| Log Research Priority Overrides Airtable | Logs when a researcher changes a priority. | Working checked 27 Oct | Docs say broken since 4 Sep. Live runs: failed on 21 Oct, succeeding every run since 26 Oct. The docs are out of date. | Watch |
| Weekly Tier / Deal Review / Capacity snapshots Airtable | Mondays: freeze counts into snapshot tables. | Broken checked 27 Oct | Deal Review snapshot is cut off at 1,000 (weeks 9/21 and 10/12 identical: 1,000 unset, 1,426 total). Capacity shows Deal Review actual = 0 (date filled for 0.4% of leads). | Fix |
| 5 undeployed automations Airtable | AUTO DATE, Deletion for Pass-off, Set Push to Sales CRM, Model D on update, hourly Sweep. | Stale checked 27 Oct | Built, never switched on. Nobody has decided: deploy or archive. | Needs a decision |
| "AT to Make" Airtable | Sends a record to Make.com. | Not checked checked 27 Oct | Fires many times a day (3 runs between 22:12 and 23:27 on 10/26). Nobody has inspected what Make does with it. | Needs a decision |
| Snapshot tables + overrides + targets Airtable | Weekly Tier, Deal Review, Capacity, Outreach, Meaningful by RM, Pipeline Aging, Stage Targets, Weekly Goals. | Partly working checked 27 Oct | Stage Targets are auto-seeded placeholders, so most dashboard health cards read a meaningless 150%. | Fix |
| MASTER copy table (346 fields) Airtable | A second copy of the lead table. | Stale checked 27 Oct | None of the docs I read mention it. | Needs a decision |
| 5 Interface dashboards (.tsx) Airtable | Executive, Department, Conversion, Researcher, Pipeline Aging. | Not checked from our docs | Deploy is a manual paste. Whether the latest version is pasted is unknown. Exec Dashboard was a draft on 15 Sep. | Needs a decision |
| KPI sheet: weekly tab | Weekly KPI numbers per week, column per week. | Working checked 27 Oct | Updated by scripts; 10/19 and 10/12 checked against sources. Rows move when people insert rows, so scripts find rows by name. | Keep |
| KPI sheet: Daily Input tabs | Two tabs where people typed daily numbers. | Stale checked 27 Oct | Columns stop at Sep 30. Last typed cell: Jul 31 and Jul 28. | Retire (archive) |
| KPI sheet: old tabs | Copy of Sale Team KPi, Team Wide KPIs - Archive, Department, KPIs, and more (14+ tabs). | Stale checked 27 Oct | Several are copies or archives. Nobody has listed which are still read. | Needs a decision |
| County sheets (12 tabs each) | Per-county staging before Airtable. | Working from our docs | No write guard on Sheets. | Keep |
| 9 Lambdas (not 10) AWS | dates-sync, meaningful-conversations, daily-checklist, pipeline-aging, mirror-sweep, webhook-test-receiver, task-m puller, task-m dashboard, task-n. | Partly working checked 27 Oct | The docs say 10 and name a separate opportunity-mirror. Only 9 exist. 0 throttles. Errors in 14 days: mirror-sweep 14 (hit its 60 s timeout on 14 Oct), meaningful-conversations 3. Sales-kpi peaked at 277 s of its 300 s limit (92%). | Watch |
| Schedules (7 triggers) AWS | EventBridge rules and Schedulers. | Working checked 27 Oct | All 7 enabled, none point at a missing function. 5 already use America/Chicago time. Only the daily-checklist (cron in UTC) will shift an hour on 1 Nov. | Fix |
| Error alarms AWS | CloudWatch alarms with an email topic. | Partly working checked 27 Oct | 3 alarms exist (dates-sync, meaningful-conversations, pipeline-aging), all OK. The docs said none. The other 6 Lambdas have no alarm, including mirror-sweep (14 errors) and sales-kpi (92% of its time limit). | Fix |
| task-m dashboard Lambda AWS | HTML KPI page. | Unused checked 27 Oct | 0 calls in 14 days. Candidate to retire. | Retire (archive) |
| webhook-test-receiver AWS | Named a test stub. | Partly working checked 27 Oct | In real use (229 calls in 14 days) despite the test name. Access rules need review (details private). | Needs a decision |
| EC2 montgomery-scraper (t3.small) AWS | County portal scraping. | Working checked 27 Oct | Running, launched 19 Oct. Access rules need tightening (details private). | Fix |
| EC2 hermes-agent (t3.micro) AWS | Unknown. In no doc. | Not checked checked 27 Oct | Running since 9 Aug. Nobody has documented what it does. Access rules need tightening (details private). | Needs a decision |
| AWS access keys AWS | Account access keys. | Broken checked 27 Oct | Need cleanup. Details kept private for security. | Fix |
| Secrets Manager (8), S3 (1), logs (9) AWS | Credentials, one 26 MB bucket, Lambda logs. | Working checked 27 Oct | Secrets cost about $3 a month. Logs never expire but total 20 MB, so negligible. | Keep |
| src/task-k county scripts Repo | All county work. 822 files. | Partly working checked 27 Oct | Audit on 4 Oct: 351 of 509 entry scripts have no caller and 0 tests. Per-county copies of the same rules (government-owner filter, groups). | Fix |
| Tasks A-J, L (old) Repo | First-generation tasks. | Unused checked 27 Oct | Last commit Jul-Aug 2026. Some unfinished (Task A Jr RM, Task E recovery). | Needs a decision |
| Loose files at the repo root Repo | 19 _scratch files, build scripts, json. | Stale checked 27 Oct | All tracked in git. | Retire (archive) |
| output/ folder Repo | 2,661 files, 346 MB (task-k 286 MB). | Partly working checked 27 Oct | Mix of results and throwaways, not separated. | Needs a decision |
| git on GitHub (private) Repo | The backup and history. | Partly working checked 27 Oct | 28 commits (24-27 Oct) are only on this Mac. No CI, no branch protection (GitHub Free). | Fix |
| Secrets scan report Repo | Report of a secrets scan. | Broken checked 27 Oct | Needs cleanup. Details kept private for security. | Needs a decision |
| Hooks (5 types, 7 files) Claude control plane | Block bad commands, save context, check on stop. | Working checked 27 Oct | Blocked a deploy flag and a delete command in this very session. They work. | Keep |
| Skills (13) + knowledge/ + STATE/GATES Claude control plane | Memory and routines between sessions. | Working checked 27 Oct | Some docs older than code (INDEX, ARCHITECTURE, systems pages). | Fix |
| Receipts + capabilities.json Claude control plane | Proof a blueprint step is done. | Partly working checked 27 Oct | 6 receipts (P0.0, P0.1, P0.2, P0.3, P1.1, P2.5). 27 capabilities, only 3 required. | Keep |
| Decision Mode site (Cloudflare) New this week | Lead Speed plan, feedback on every section, chat. | Working checked 27 Oct | Free tier. Name-only sign-in. Chat is keyword lookup; AI binding not added. | Keep |
| Lead-speed stage log prototype New this week | Pure code, 17 tests. | Working checked 27 Oct | Runs locally, writes nothing. | Keep |
How the automations perform
Numbers from today, not from the docs.
- 44 deployed, 5 switched off.
- Automation 2: no failed runs in history. It assigned 116 leads at 6:00 AM on 10/26.
- GHL Call KPI (daily): ok 24, 25 and 26 Oct. Last failure 19 Aug (secret not found).
- Sync GHL Pipeline Stages (daily): ok 25, 26, 27 Oct. Last failure 20 Aug.
- Log Research Priority Overrides: failed 21 Oct, ok on every run since 26 Oct.
- "AT to Make": runs about every 35 minutes on busy days.
- No. Weekly Deal Review snapshot stops at 1,000 leads, so two different weeks show the same total (1,426).
- No. The GHL Call KPI table counts 1,045 for the week of 10/19. GHL on Yader's two numbers shows 472 calls.
- Partly. Capacity snapshot: Deal Review actual is 0 because the date it reads is filled for 0.4% of leads.
AWS
Lambdas, last 14 days
| Function | Calls | Errors | Slowest run | Limit | Note |
|---|---|---|---|---|---|
| dates-sync | 14 | 0 | 30 s | 60 s | ok, daily 9:00 Chicago |
| meaningful-conversations | 16 | 3 | 90 s | 300 s | 3 errors on 16 Oct, cause not found; daily 9:30 Chicago (docs said weekly) |
| daily-checklist | 15 | 0 | 240 s | 300 s | UTC cron, shifts on 1 Nov; no alarm |
| pipeline-aging-refresh | 14 | 0 | 9 s | 90 s | ok, daily 9:15 Chicago |
| task-m sales-kpi | 14 | 0 | 277 s | 300 s | 92% of limit, no alarm |
| task-n outreach | 2 | 0 | 623 s | 850 s | weekly Monday, as designed |
| opportunity-mirror-sweep | 10,292 | 14 | 60 s (timeout) | 60 s | every 2 min; 14 errors on 14 Oct; no alarm |
| webhook-test-receiver | 229 | 0 | 4 s | 30 s | real traffic, named test |
| task-m dashboard | 0 | 0 | - | 15 s | unused |
Cost, last 30 days (gross usage)
| Service | USD |
|---|---|
| EC2 compute | 15.92 |
| VPC | 5.62 |
| Secrets Manager (8 secrets) | 3.08 |
| EBS and other EC2 | 3.05 |
| Cost Explorer | 0.14 |
| Lambda, EventBridge, S3, CloudWatch | about 0 |
| Credits applied | -27.80 |
| Net charged | 0.00 |
Stale, unused or needing a decision
Nothing here is deleted. "Retire" means archive. Tell me keep or retire for each.
| Name | Why | Suggested |
|---|---|---|
| Stamp automations (dates entered/left) | Two automations stamp nearly the same Deal Review date into two fields (687 vs 111 leads filled), so the same KPI gives two answers. | Needs a decision |
| 5 undeployed automations | Built, never switched on. Nobody has decided: deploy or archive. | Needs a decision |
| "AT to Make" | Fires many times a day (3 runs between 22:12 and 23:27 on 10/26). Nobody has inspected what Make does with it. | Needs a decision |
| MASTER copy table (346 fields) | None of the docs I read mention it. | Needs a decision |
| 5 Interface dashboards (.tsx) | Deploy is a manual paste. Whether the latest version is pasted is unknown. Exec Dashboard was a draft on 15 Sep. | Needs a decision |
| KPI sheet: Daily Input tabs | Columns stop at Sep 30. Last typed cell: Jul 31 and Jul 28. | Retire (archive) |
| KPI sheet: old tabs | Several are copies or archives. Nobody has listed which are still read. | Needs a decision |
| task-m dashboard Lambda | 0 calls in 14 days. Candidate to retire. | Retire (archive) |
| webhook-test-receiver | In real use (229 calls in 14 days) despite the test name. Access rules need review (details private). | Needs a decision |
| EC2 hermes-agent (t3.micro) | Running since 9 Aug. Nobody has documented what it does. Access rules need tightening (details private). | Needs a decision |
| Tasks A-J, L (old) | Last commit Jul-Aug 2026. Some unfinished (Task A Jr RM, Task E recovery). | Needs a decision |
| Loose files at the repo root | All tracked in git. | Retire (archive) |
| output/ folder | Mix of results and throwaways, not separated. | Needs a decision |
| Secrets scan report | Needs cleanup. Details kept private for security. | Needs a decision |
How we work, and what we use
The working method, then the resources.
Harsh is the only approver. Ralph is the SOP and review authority. Nakul owns KPI definitions.
Each task runs in its own session. Memory carries over through knowledge/STATE.md, GATES.md and a ledger.
Every command is checked. Deletes, live writes and secrets are blocked or need a plan id.
Read-only first, dry run, backup, write, read back. Rows are found by name, never by number.
A receipt must pass. Without one the step is not done, however green the tests look.
Smart Skip emails, dashboard pastes, EOD typing, merges.
Resources
| Resource | Used for | Cost known? |
|---|---|---|
| Smart Skip / Skip Genie | Skip tracing | About $0.16 a row (Montgomery Group 1 about $258) |
| AWS (acct ending 2485) | 10 Lambdas, EventBridge, S3, one EC2 | $27.80 a month gross (EC2 $15.92, VPC $5.62, Secrets $3.08, EBS $3.05). Credits cover all of it; net bill $0. Credit expiry not checked. |
| Airtable | Lead table, automations, dashboards | Plan and bill not stated |
| GHL / Pathwaize | Sales CRM | Plan and bill not stated |
| Cloudflare Pages | This site, 2 key-value stores | Free tier |
| GitHub (Free) | Backup and history | Free. Branch protection needs Pro, about $4 a month |
| Google Workspace | Sheets, Docs, service account | Not stated |
| NVIDIA vision API | Occupancy check from Street View | Not stated |
| CapSolver | Travis court portal captcha; key needs rotation | Not stated |
| Make.com | Receives "AT to Make" | Account and plan unknown |
| Monday.com | Task F source; connector disabled by admin | Unused |
| RentCast (free tier) | Phase 2 foreclosure, waiting on a key | Free |
| Claude subscription | All sessions | Not stated |
Gaps, and is there a fix in the blueprint?
Blue = the blueprint plans it but has not started. Red = no fix planned or it conflicts with a decision.
G1. Nothing watches the automations
Evidence
Only 3 of 9 Lambdas have an error alarm. mirror-sweep (14 errors, hit its timeout) and sales-kpi (92% of its time limit) have none. No Airtable automation has any alert; the overrides log was failing from 4 Sep until the 20 Oct fix.
Blueprint
P6.5 daily check + dead-man alarms; P6.2 scheduler Planned
Not started. The 24x7 layer does not exist (no ops/ folder).
What I recommend
Build a small read-only morning check first (it reads Lambda errors, Airtable runs, sheet freshness). Do not wait for the full P6 build.
G2. One laptop holds recent work
Evidence
28 commits (24-27 Oct) exist only on this Mac. The KPI fixes, plan, prototype and this audit are in them.
Blueprint
P0.2 safety floor, P2.5 new-laptop bootstrap Partly planned
Backup push is not a blueprint step.
What I recommend
Push to a claude/ branch today (needs your Y).
G3. Secrets and keys need cleanup
Evidence
Details kept private for security. Owner: Harsh.
Blueprint
P8 security hardening Conflicts with a decision
Blueprint and your decision contradict each other.
What I recommend
Reviewed with Harsh privately.
G4. The same KPI has four answers
Evidence
GHL Call KPI table, Task N Lambda, Meaningful-by-RM table and the sheet all count calls differently (week 10/19: 1,045 vs 472 vs 378 vs 462). Week meaning differs too (current week vs previous week).
Blueprint
P5.1 KPI registry, P3.1 reconcile Planned
Not started. Week-meaning mismatch is not in the blueprint.
What I recommend
Our KPI daily/weekly plan is the practical start: one definition per KPI, one source, a morning recount.
G5. Lead-speed dates are missing or overwritten
Evidence
Only 2 stage ends are trustworthy. Date Entered Research is 88% bulk-stamped. Assignment date is overwritten.
Blueprint
Not covered (STATE mentions a "Phase Time Log" as the fix) No fix planned
No blueprint step.
What I recommend
Our Lead Speed plan fills this. Add it to the blueprint as its own step.
G6. Business rules are copied in 4+ places
Evidence
The P0-P14 tier waterfall lives in code, an Airtable formula, two Lambdas and a dashboard file. Government-owner filter is copied per county. A snapshot file the sync scripts need is missing, so two scripts crash on this Mac.
Blueprint
P5.2 county framework (partly) Partly planned
Tier duplication has no step.
What I recommend
Pick one source of truth for tiers and add a test that fails when the copies disagree.
G7. Scripts bypass the write guard
Evidence
129 Task K scripts call Airtable directly. The guard only blocks the old bases, not the live one.
Blueprint
P4.1 write gateway Planned
Not started.
What I recommend
Keep the hook guard as the interim control. Gateway when the daily check exists.
G8. Daylight saving on 1 Nov
Evidence
Of 7 triggers, 5 already use America/Chicago. Only the daily-checklist rule (cron in UTC) will run an hour earlier after 1 Nov (6 AM becomes 5 AM). Airtable automations also need a check on Mon 2 Nov. 5 days away.
Blueprint
P6.2 EventBridge Scheduler with America/Chicago Planned
Not started.
What I recommend
Move the checklist to a Scheduler entry with America/Chicago, like the other five. Check Automation 2 and the snapshots on Mon 2 Nov.
G9. Dead and half-built things are not retired
Evidence
5 undeployed automations, Tasks A-J unused, Daily Input tabs dead, 19 scratch files, a public unused Lambda URL, an unexplained MASTER copy.
Blueprint
P0.3 lists them; no retire step No fix planned
No archive pass is planned.
What I recommend
One archive pass: move, never delete. Needs a keep/retire decision per row on this page.
G10. Deploys are by hand, drift goes unseen
Evidence
No IaC, no CI. Two Lambdas ran old tier code until redeployed on 22 Oct. Docs list 10 Lambdas, AWS has 9.
Blueprint
P1.5 CI (blocked by GitHub Free), P8 least privilege Partly planned
Drift check is not a step.
What I recommend
Add a deployed-code-equals-repo check to the morning check.
G11. Docs disagree with each other and with the system
Evidence
Overrides log "broken" in docs, working live. INDEX says meaningful-conversations broken, its page says fixed. ARCHITECTURE says 4 capabilities, there are 27. Tier range P0-P11 vs P0-P14.
Blueprint
P2.1 knowledge consolidation Planned
Partial.
What I recommend
Make this page the status source and date every claim.
G12. Cost is invisible
Evidence
AWS usage is $27.80 a month gross (EC2 $15.92, VPC $5.62, Secrets $3.08, EBS $3.05). Credits cover all of it, so the bill is $0 today. Nobody has checked when the credits run out. Airtable, GHL and Google costs are not stated anywhere.
Blueprint
Not covered No fix planned
No step.
What I recommend
Find the credit balance and expiry in the AWS console. Add Airtable and GHL plan costs.
G13. Human steps are hidden single points
Evidence
Dashboard deploy (paste), Smart Skip (email), EOD numbers (typed), GitHub merges (you). Each waits on one person.
Blueprint
P6.6 dashboard reader (partly) Partly planned
Smart Skip has no API, so it stays manual.
What I recommend
Name an owner and a backup for each, on the board.
G14. AWS access needs tightening
Evidence
Details kept private for security.
Blueprint
P8 security hardening (least privilege, IAM) Planned
Not started.
What I recommend
Reviewed with Harsh privately.
G15. A running server nobody documented, and a credit cliff
Evidence
EC2 "hermes-agent" has run since 9 Aug and appears in no doc. Credits currently pay the whole $27.80 a month; expiry unknown.
Blueprint
Not covered No fix planned
No step.
What I recommend
Tell me what hermes-agent is. If it is unused, stop it (not delete). Check the credit expiry date.
Blueprint scoreboard
The blueprint has about 33 steps. Receipts exist for 6. They were run on 22-23 Oct and pass today only if re-run inside 7 days.
- P0.0 Referee
- P0.1 Dead-feature audit
- P0.2 Safety floor
- P0.3 Seed capabilities
- P1.1 Settings + hooks
- P2.5 New laptop
- P1.2 Receipts self-test
- P2.2 Compaction-proof
- P2.3 Skills
- P1.5 CI judge (GitHub Free returns 403 on branch protection)
- P1.4 Seal (only you can do it)
- P3 Verify suite, ledger, registry
- P4 Write gateway, Jev/Laya
- P5 KPI registry, county framework
- P6 Agents, daily check, TODAY page
- P7 Scale
- P8 Security hardening
What to do first
In order. The first three take under an hour each.
- Push the 28 unpushed commits to a backup branch (needs your Y). Removes the one-laptop risk.
- Security cleanup (details are shared privately with Harsh).
- Before 1 Nov: fix the checklist schedule to Chicago time, and check Automation 2 on Mon 2 Nov.
- Build the read-only morning check: Lambda errors, Airtable runs, sheet freshness, one message a day. This closes G1 without the full blueprint.
- Fix the numbers: repair the 1,000 cap in the snapshot, pick one Deal Review date, then the KPI daily tab.
- One archive pass on everything marked retire or decide.
- Add Lead Speed and this audit to the blueprint as steps, so the plan covers what we actually do.