Finance Vault / AI Tax Strategist
Full Evaluation Report

Phase 1 — Evaluation Only Date: 2026-07-02 Model: Claude Opus 4.8 No Build Actions Taken Status: Awaiting 7 Decisions

Table of Contents

  1. Executive Summary
  2. System Architecture Overview
  3. Security Findings (C1–C5)
  4. Phase 1 Evaluation — 17-Section Report Summary
  5. Opus 4.8 Extended Analysis — Additional Build Recommendations
  6. Recommended Architecture
  7. 7 Decisions Required Before Phase 2
  8. Phase 2 Build Plan — 11 Steps
  9. Agent System Prompt Design
  10. Feasibility Verdict

1. Executive Summary

Dexter Williams (operator of Estate Solutions LLC, Estate Realty Group, Ahvino Enterprises LLC, and personal accounts) requested an evaluation of building a Finance Vault and AI Tax Strategist module integrated into his existing OpenClaw / Claude Code platform on a Hostinger VPS.

This document is a full evaluation report covering system feasibility, security risks, architecture recommendations, and a detailed build plan. No build actions have been taken. All findings are advisory only. Phase 2 build requires Dexter's explicit approval on 7 decisions documented in Section 7.

Verdict: Feasible with targeted mitigations. The infrastructure to support an AI tax strategist exists on this VPS. The critical constraint is that financial documents must NOT be stored on the VPS. The processing engine can live on-VPS; the documents live off-VPS (encrypted on Dexter's PC or Backblaze B2).

2. System Architecture Overview

The existing platform consists of:

ComponentLocationRole
Claude Code Bridge/opt/claude-bridge/bridge.jsDiscord bot → headless Claude Code sessions via Anthropic SDK
OpenClaw (COS)/opt/openclaw/ (root-owned)Multi-agent orchestration platform; manages Estelle, Aria, Atlas
Workspace/home/coder/workspace/Git-tracked workspace; daily backup to GitHub at 5 AM
Channel Memory/home/coder/workspace/channel-memory/Per-channel MEMORY.md + message-log.jsonl for persistence
9 Discord ChannelsBridge-wired#claude-code, #trading, #realestate, #estate-solutions, #ellie-email, #dexter-inbox, #platform, #fcs, #emerys-fashion
Public File Hosting/docker/public-drops/https://drops.srv1617495.hstgr.cloud/
Docker Containers19 runningn8n, traefik, openclaw, est8-web, a4p, serpbear, etc.

Key Bridge.js Behavior

Every Claude Code session spawned by bridge.js uses:

const options = {
  model,
  permissionMode: "bypassPermissions",  // ← ALL permission checks skipped
  cwd: WORKSPACE,                        // ← /home/coder/workspace
  maxTurns: 400
};

Critical: permissionMode: "bypassPermissions" means any Claude Code session on any channel can read, write, or modify any file accessible to the coder user — including files from other channels.

3. Security Findings

C1 — No Attachment Cleanup

Discord attachments auto-download to /tmp/discord-attachments/<timestamp>-<name> with no cleanup, no TTL, no expiry. Files persist indefinitely. Tax documents, bank statements, and K-1s dropped into Discord would accumulate on the VPS in plaintext.

C2 — GitHub Backup Exposes Financial Documents

backup.sh runs git add -A daily at 5 AM and pushes to GitHub. .gitignore only excludes node_modules/, *.log, .env, .env.*. Any financial document placed in /home/coder/workspace/ would be committed and pushed to GitHub automatically.

C3 — bypassPermissions Cross-Channel Access

All 9 Discord channel sessions share permissionMode: "bypassPermissions". A Finance Vault session and a #trading session run with identical permissions. No file isolation between channels exists at the bridge level.

C4 — PermitRootLogin Yes

/etc/ssh/sshd_config has PermitRootLogin yes. This is a VPS-wide security gap independent of the Finance Vault. Should be remediated via COS regardless of vault timeline.

C5 — No Encryption at Rest

No workspace files are encrypted at rest. The age encryption tool is installed at /usr/bin/age and available for use. It is not currently used for any file-level encryption.

4. Phase 1 Evaluation Summary — All 17 Sections

S1 — Request Classification

A Finance Vault / AI Tax Strategist module for a multi-entity small business operator. Entities: Estate Solutions LLC (GA), Estate Realty Group (GA), Ahvino Enterprises LLC (MS), Personal. Use cases: tax strategy planning, deduction categorization, entity-level analysis, CPA collaboration prep.

S2 — Platform Capability Assessment

Claude Opus 4.8 has sufficient reasoning capability for tax strategy at the small-business level. The bridge and channel memory system provides adequate persistence for multi-session work. The age encryption tool supports file-level security. Capability gap: no ZDR (Zero Data Retention) — API calls are subject to Anthropic standard data handling.

S3 — Data Classification

Data TypeClassificationWhere It Can Live
Tax strategy discussions (no PII)SensitiveOn-VPS vault dir, encrypted at rest
Research outputs (IRC citations, entity analysis)Low sensitivityOn-VPS vault dir
Financial documents (returns, statements, K-1s)High sensitivity / PIIOFF-VPS only (Dexter's PC or B2 encrypted)
CPA packagesMedium-highage-encrypted export, local + B2 backup

S4 — Entity Architecture

Four entities with cross-cutting relationships require the agent to reason about: shared owners, shared vendors, equipment usage across entities (triggers IRC §267 related-party rules), and multi-state nexus (GA + MS). The agent must always ask "does this transaction involve another entity in the Dexter Williams group?" before responding about deductions, basis, or elections.

S5 — Jurisdiction Stack

Processing order: Federal (IRS) → Georgia DOR → Mississippi DOR. Source priority: IRS.gov → Treasury Regs (26 CFR) → GA DOR → MS DOR → Tax Court/Revenue Rulings → CPA-reviewed secondaries. Agent must never invert the jurisdiction stack.

S6 — Isolation Model (4 Layers)

  1. Filesystem Isolation: Vault directory at /home/coder/finance-vault/ with 0700 permissions, outside workspace git tree
  2. Bridge Session Isolation: Vault handler uses permissionMode: "default" + explicit allowedTools
  3. Agent Rule Isolation: System prompt prohibits writing PII to persistent memory
  4. OpenClaw Exclusion: COS, Estelle, Aria, and Atlas are explicitly excluded from Finance Vault scope

S7 — Document Handling Model

Documents live OFF the VPS. Dexter decrypts on his PC and pastes relevant text into the vault Discord channel manually. The agent works from text pastes — never from raw financial document files. This keeps PII off the VPS processing pipeline.

S8 — CPA Integration Layer

The agent does strategy and planning. The CPA does execution and filing. The agent produces "CPA-ready packages" — structured summaries with citations, entity breakdown, and flagged questions. A !export-for-cpa command formats session findings into /home/coder/finance-vault/cpa-packages/. CPA corrections flow back in via Dexter paste; stored as authoritative overrides with higher confidence weight.

S9 — Backup Strategy

Data TypeSensitivityBackup Method
Tax research (no PII)LowWorkspace git (after vault exclusion rules set)
Strategy outputsMediumage-encrypted Backblaze B2
Document transcriptions (PII possible)HighNEVER backed up — delete after processing
CPA packagesMedium-highage-encrypted, local + B2

S10 — OpenClaw Exclusion

COS, Estelle (Estate Solutions GHL agent), Aria (A4P), and Atlas (Platform) must have no access to Finance Vault content. COS has ssh_exec and file_write tools — the vault directory's 0700 permissions block COS (which runs as root/ubuntu, not coder... actually COS may run with elevated perms — verify). Explicit prohibition must be added to CLAUDE.md, COS operating doc, and each specialist agent's system prompt.

S11 — Encryption Architecture

The age tool is installed at /usr/bin/age. Key pair: generate on Dexter's PC; private key stays on Dexter's PC only; public key stored at /home/coder/finance-vault/.age-public-key. Encryption command: age -r $(cat /home/coder/finance-vault/.age-public-key) -o output.age input.txt. VPS only ever stores encrypted outputs.

S12 — Confidence Scoring

Every vault agent response includes a machine-parseable metadata block:

[TAX-CONFIDENCE: SETTLED | THRESHOLD | UNCERTAIN]
[ENTITY: Estate Solutions LLC]
[TAX-YEAR: 2025]
[JURISDICTION: Federal + GA]
[CPA-REVIEW-REQUIRED: YES/NO]
[CITATIONS: IRC §179(b)(1), Rev. Proc. 2024-38]

S13 — Forbidden Operations (Hard Refusals)

S14 — S-Corp Complexity

At least one entity is likely S-Corp elected or evaluating election. S-Corp strategies (reasonable compensation, basis tracking, QBID interaction, shareholder loans) are the single most complex area. Every S-Corp response must be prefaced with: "S-Corp planning requires current-year basis calculation. Confirm basis with your CPA before relying on this analysis." CPA escalation threshold is lower for S-Corp questions than for other tax areas.

S15 — Corrections Feedback Loop

When the agent gives wrong advice and the CPA corrects it: a !correct command records the correction alongside the original recommendation in corrections-log.md. The corrections log is injected into every session start (alongside MEMORY.md). The corrections log is included in every CPA package. This is the mechanism by which the vault agent improves over time.

S16 — Decisions Required (5 from Phase 1, 2 added by Opus 4.8)

See Section 7 of this document for full decision list.

S17 — Build Plan

See Section 8 of this document for the revised 11-step build plan.

5. Opus 4.8 Extended Analysis

What Phase 1 Underweighted

The Agent System Prompt Is the Most Critical Build Artifact

Phase 1 listed "write the system prompt" as Step 6 of 9. This undersells it by a factor of 10. The system prompt IS the tax strategist. Everything else is infrastructure. A poorly-written system prompt produces hallucinated citations, cross-entity contamination, jurisdiction bleed, and overconfident output that bypasses CPA review gates.

The system prompt needs 12 distinct constraint blocks:

  1. [ENTITY ISOLATION] — Never mix deductions, basis, or elections across entities
  2. [TAX YEAR SPECIFICITY] — Always specify tax year; IRC sections change annually
  3. [JURISDICTION STACK] — Federal → GA → MS; cite jurisdiction for every rule
  4. [CITATION STANDARD] — IRC section + subsection + current year; never cite a "summary site"
  5. [CONFIDENCE TIERING] — 3 tiers: Settled law | Active litigation/changing | Requires CPA judgment
  6. [ESTIMATE LABELING] — Every dollar figure carries ±range and "estimate, not a tax opinion"
  7. [HARD REFUSALS] — Specific list of what agent never does
  8. [DOCUMENT HANDLING] — Process attachments without storing PII in memory
  9. [MEMORY HYGIENE] — What gets written to MEMORY.md vs. discarded after session
  10. [CPA ESCALATION TRIGGERS] — Exact conditions that force "take this to your CPA"
  11. [STRATEGY vs. COMPLIANCE] — Agent does planning; CPA does execution/filing
  12. [DISASTER RECOVERY] — If agent is wrong, how is it captured and corrected?

The bypassPermissions Fix Needs Specificity

Switching to permissionMode: "default" alone is insufficient. Without specifying which tools are allowed, default mode will pop permission prompts in a headless session and hang silently. The vault channel handler must include an explicit allowedTools list:

allowedTools: ["Read", "Write", "Bash", "Glob", "Grep"],
// Blocked: WebSearch, Agent, WebFetch, Edit
// Edit blocked → use Write for full-file rewrites (better audit trail)
// WebSearch blocked → local tax knowledge base instead
// Agent blocked → no sub-agent spawning from vault sessions

The #trading Channel Is an Undocumented Risk

Trading crons are paused but the channel still has a MEMORY.md. If it contains financial strategy data that could contaminate vault sessions, it should be purged before Phase 2 begins.

Attachment Pipeline Is a Data Classification Problem

When a Discord attachment is read by a Claude Code session, the content flows through the session context window → potentially into MEMORY.md and message-log.jsonl → potentially into Anthropic API logs (no ZDR on this account). The system prompt must explicitly prohibit writing PII from documents to persistent memory.

New Recommendations (Not in Phase 1)

Rec A — Structured Tax Year Workspace Model

/home/coder/finance-vault/
├── entities/
│   ├── estate-solutions-llc/
│   │   ├── 2024/
│   │   ├── 2025/
│   │   └── active/
│   ├── estate-realty-group/
│   ├── ahvino-enterprises/
│   └── personal/
├── research/
│   ├── federal/
│   ├── georgia/
│   └── mississippi/
├── cpa-packages/
├── session-logs/
├── corrections-log.md
└── vault.config.json

This structure forces every agent action to be scoped to a specific entity and tax year. vault.config.json holds entity metadata (type, state, fiscal year, member references) — NO actual EINs or SSNs in plaintext.

Rec B — Local Tax Knowledge Base

The agent works from downloaded, verified source documents in /research/ — not live web search. Documents: IRS Pub. 334, IRS Pub. 535, GA Form 600S instructions, MS Form 84-105 instructions, current-year Rev. Procs. relevant to construction/restoration. Agent cites by document name and page number. More reliable than web search — tax law doesn't change mid-session but web results do.

Rec C — Confidence Metadata on Every Response

Machine-parseable block on every response (already detailed in S12 above). Allows Dexter to filter responses by confidence level and quickly identify what needs CPA review.

Rec D — S-Corp as a Separate Skill Tier

S-Corp questions (basis, reasonable compensation, QBID, shareholder loans) are the highest-complexity area. They should be recognized as a distinct trigger with higher CPA-escalation thresholds and a mandatory basis confirmation disclaimer on every response.

Rec E — Corrections Log Feedback Loop

Already described in S15. This is the single most important mechanism for long-term vault agent quality. Without it, the agent will repeat the same wrong answers indefinitely.

Rec F — Wife Upload Portal: Client-Side Encryption

The upload portal encrypts documents in the browser using Dexter's age public key BEFORE upload. The VPS only receives encrypted blobs. The agent never processes the encrypted blob — Dexter decrypts on his PC and pastes relevant text into the vault channel. VPS never touches plaintext financials.

Rec G — Disaster Case Protocol

If the agent confidently gives wrong tax advice and the CPA corrects it:

6. Recommended Architecture

LayerWhatWhere
Processing EngineClaude Opus 4.8 via bridgeOn-VPS, /home/coder/finance-vault/
Document StorageFinancial documents (returns, statements, K-1s)OFF-VPS — Dexter's PC (encrypted folder) or Backblaze B2 (age encrypted)
Research LibraryIRS publications, state tax authority docsOn-VPS, /home/coder/finance-vault/research/
Strategy OutputsAnalysis, recommendations, citationsOn-VPS vault dir (age encrypted for CPA packages)
Persistent MemoryChannel MEMORY.md (no PII)On-VPS, /home/coder/finance-vault/memory/
BackupStrategy/research only — no PIIage-encrypted to Backblaze B2 (separate from workspace git)
Agent AccessCOS, Estelle, Aria, AtlasEXCLUDED — zero access to vault

The key principle: The VPS processes but doesn't store sensitive financials. Processing stays on-VPS for speed and integration. Documents stay off-VPS for security. The agent works from text pastes curated by Dexter — not from raw document files.

7. 7 Decisions Required Before Phase 2

Decision 1Where do financial documents live?

Options: (A) Dexter's PC in an encrypted local folder, or (B) Backblaze B2 with age encryption. Recommendation: Dexter's PC as primary, B2 as backup. Documents never stored on VPS.

Decision 2Wife upload method?

Options: (A) LAN uploader on Dexter's PC (wife uploads to local folder via browser on home network), or (B) Cloudflare-tunneled HTTPS portal. Recommendation: LAN uploader — simpler, no external exposure. Client-side encryption either way.

Decision 3Finance Vault Discord channel — who has access?

Options: (A) Dexter-only private channel, or (B) Dexter + wife. Recommendation: Dexter-only — simpler to secure. Wife uploads to local portal; Dexter pastes context into vault channel.

Decision 4CPA status?

Is there an active CPA relationship currently? This determines how the CPA escalation triggers and CPA package export features are prioritized in the build. If no current CPA: the vault agent can still operate for strategy and planning, but all output carries higher CPA-required flags.

Decision 5Approve bypassPermissions → default hardening for vault sessions?

Switching vault bridge handler to permissionMode: "default" + explicit allowedTools is strongly recommended and is a prerequisite for secure operation. Requires bridge.js modification. Approve?

Decision 6Local IRS PDFs vs. training knowledge for tax law?

Options: (A) Download relevant IRS publications to /research/ as the agent's authoritative source (more reliable for year-specific rules, requires download step), or (B) Agent uses Claude's training knowledge for tax basics + web search for current-year specifics. Recommendation: Option A — local PDFs for anything that changes year-to-year; training knowledge for foundational concepts only.

Decision 7Should wife have direct Discord vault channel access?

If Decision 3 is Dexter-only: she uses the upload portal and Dexter pastes context. If Decision 3 includes wife: she can interact directly with the vault agent. Affects channel permissions design and upload portal scope.

8. Phase 2 Build Plan — 11 Steps

Step 1Create vault directory structure

Create /home/coder/finance-vault/ with entity/year subdirectories at 0700 permissions. Outside workspace git tree. Add to backup.sh exclusion. Write vault.config.json with entity metadata.

Step 2Add attachment cleanup cron

Daily cron to delete files from /tmp/discord-attachments/ older than 24 hours. Prevents indefinite accumulation of sensitive files. Also configure vault sessions to NOT auto-read attachments — Dexter must explicitly paste or instruct.

Step 3 — LONGEST STEPBuild the vault agent system prompt

Write the full 12-constraint-block prompt, entity isolation model, forbidden operations list, confidence scoring format, CPA escalation triggers, corrections log injection pattern, jurisdiction stack, and structured workspace model. Estimated 2–3 sessions.

Step 4Build local tax knowledge base

Download IRS Pub. 334, Pub. 535, GA Form 600S instructions, MS Form 84-105 instructions, current-year relevant Rev. Procs. to /home/coder/finance-vault/research/. Configure agent to cite these by document name/page rather than using WebSearch.

Step 5Create Finance Vault Discord channel

Create new private Discord channel. Set permissions per Decision 3 (Dexter-only or include wife). Note the channel ID for bridge.js configuration.

Step 6Add Finance Vault channel handler to bridge.js

New channel handler with: cwd: '/home/coder/finance-vault', permissionMode: "default", explicit allowedTools: ["Read", "Write", "Bash", "Glob", "Grep"], blocked tools including WebSearch, Agent, WebFetch. Test with sandbox question before live use.

Step 7Wife's upload portal

Client-side encryption model. Browser loads Dexter's age public key. Encrypts document before upload. VPS receives encrypted blob only. Dexter decrypts on his PC. No plaintext financials on VPS. Delivery method per Decision 2 (LAN or Cloudflare tunnel).

Step 8Set up age encryption

Generate age keypair on Dexter's PC. Private key stays on Dexter's PC only — never on VPS. Public key stored at /home/coder/finance-vault/.age-public-key. !export-for-cpa command encrypts output before writing to cpa-packages/.

Step 9Finance Vault backup pipeline

Separate from workspace git backup. Includes only research/ and strategy outputs (no session transcripts with PII). age-encrypted before upload to Backblaze B2. Separate cron schedule from workspace 5 AM backup.

Step 10Update governance documents

Add Finance Vault rules to CLAUDE.md: vault channel isolation, cross-agent access prohibition, corrections-log requirement, CPA escalation rule. Add to DO_NOT_REPEAT.md: "Finance Vault agent must never write PII from documents to MEMORY.md." Add vault exclusion to COS operating doc and each specialist agent system prompt.

Step 11Test run and validation

Dexter pastes a single, known tax scenario into vault channel. Verify: correct entity isolation, correct citations, correct confidence tier, correct CPA escalation if warranted, no PII in MEMORY.md after session. Fix before declaring done and operational.

9. Agent System Prompt Design Notes

CPA Escalation Triggers (Non-Exhaustive)

Memory Hygiene Rules

The agent MUST write to MEMORY.md: entity context, open strategy questions, decisions made in prior sessions, elected tax positions.

The agent MUST NOT write to MEMORY.md: specific dollar amounts from statements, account numbers, Social Security numbers, EINs, names of specific transactions, anything that would constitute a PII exposure if MEMORY.md were accessed by another session.

Confidence Tier Definitions

TierMeaningCPA Required?
SETTLEDBlack-letter law, no active controversy, established by statute or long-standing IRS guidanceNo (but always wise)
THRESHOLDSettled law with fact-dependent application, or subject to reasonableness tests (e.g., reasonable compensation)Strongly recommended
UNCERTAINActive litigation, changing guidance, novel application, or aggressive positionRequired — flag explicitly

10. Feasibility Verdict

Feasible — with the following conditions:

1. Financial documents stored off-VPS (Dexter's PC or Backblaze B2 with age encryption)
2. Agent system prompt written with full 12-constraint-block structure before any strategy sessions
3. Bridge.js vault handler uses permissionMode: "default" with explicit allowedTools
4. OpenClaw (COS, Estelle, Aria, Atlas) explicitly excluded from vault access
5. Corrections-log feedback loop implemented from day one
6. Vault directory outside workspace git tree (excluded from GitHub backup)

Do not rush the system prompt. The gap between "an AI that can talk about taxes" and "an AI tax strategist you'd trust for actual planning" is entirely in the system prompt quality. The infrastructure build is a half-day. The system prompt is a 2–3 session design effort. Budget accordingly.

Separate COS action packet (regardless of vault timeline): PermitRootLogin yes in /etc/ssh/sshd_config is a VPS-wide security gap that should be remediated independently. Route to COS: change to PermitRootLogin prohibit-password and verify key-based auth is working before applying.


Current Status

This evaluation is complete. No build actions have been taken. The vault does not exist yet. All findings are advisory.

Phase 2 build begins when Dexter provides answers to all 7 decisions in Section 7 of this document.