Products
Business management SaaS
Phase 3 — Stripe Checkout. Q2 Rock #1.
Cold outreach engine
Concept / early infrastructure. Needs Supabase project.
Local AI appliance ecosystem
Concept stage — infrastructure building.
Project management layer
In planning.
Infrastructure
Headless API server — health, terminal, Claude proxy
PM2 id 3. Running on beachlifevs (temp host). Needs dedicated NUC.
Master cockpit — links to all tools
Built 2026-04-02. Port 3004.
Dedicated node for spark-core
Move spark-core off beachlifevs. Dashed on diagram.
Power + solar monitoring
Off-grid capability. No timeline yet.
Power protection for all nodes
Known gap — critical for production uptime.
Remote backup of NAS data
Known gap. Data only on beachlifevs currently.
Advisory
Spark Wonder Advisory — current engagement
Active. 1 of target 10.
$2,400/month per client
Active pipeline building.
Documented delivery framework
To be built as advisory scales.
Recent Build History
- spark-web-tests repo created and pushed to github.com/daensimmat/spark-web-tests (private) - Git credentials configured on spark-web-test via credential store (gho_ OAuth token) - Full test loop ready: Spark Test tab → SSH → spark-web-test → Playwright → results back to Supabase → Think context
- Created /home/beach/sparkast — Next.js 16, Tailwind CSS v4, JetBrains Mono, port 3004 - Landing page: SPARK WONDER header, status bar polling spark-core health every 60s, 8 nav cards - /diagram: interactive vis-network infrastructure diagram (hardware + services + cloud + gaps) - /roadmap: swimlane roadmap from projects.md and build-journal.md (Products/Infrastructure/Advisory) - /context: read-only collapsible viewer for all spark-context files, copy button per card - /think: idea capture tool — text, project tag, effort, notes, status workflow, search/filter - API routes: /api/health (spark-core proxy), /api/status (port checker), /api/think (CRUD → data/think.json) - PM2 id 5 — sparkast online, pm2 save done - Cloudflare tunnel config updated: sparkast.ai → localhost:3004 (written to /tmp/cloudflared-config.yml — needs sudo apply + cloudflared restart) - ports.md and stack.md updated in spark-context - spark-reach port conflict resolved: stack.md listed 3004 for spark-reach (not yet created) — reassigned to sparkast; spark-reach will need a new port when built - Phase 2 Think (Claude evaluate) noted in code comments — not built ---
Full audit of spark, ovrsight, spark-core, pocket-spark for context bloat, unbounded output, and model misuse. Nine fixes applied:
1. **spark/api/think/route.ts** — Added module-level context file cache (5-min TTL), converted system prompt to array with `cache_control: ephemeral` on the static context block (opsp/projects/stack), added `anthropic-beta: prompt-caching-2024-07-31` header. Static context block (~3,000 tokens) now cached across all turns in a Think session.
2. **spark-core/server.js** — Capped all terminal command output at 200 lines. Truncation notice appended if capped. Protects against unbounded dumps from `cat`, `git log`, `journalctl`, etc.
3. **ovrsight/lib/analyser.ts** — Extracted 250-line static Ovrsight framework as `OVRSIGHT_STATIC_SYSTEM` module constant. Moved to `system` parameter with `cache_control: ephemeral`. Only dynamic step 4 + financial data stay in user message.
4. **ovrsight/lib/prompts/paidAnalysisPrompt.ts** — Extracted ~300-line static framework (8 steps, 6 paid sections, scoring, voice rules, output schema) as `PAID_ANALYSIS_STATIC_SYSTEM` constant. Changed `buildPaidAnalysisPrompt` return type to `{systemStatic, systemDynamic, userMessage}`. Dynamic industry context + add-backs go in uncached second system block. Financial data is user message only.
5. **ovrsight/api/analyse/route.ts** — Updated `handleSessionFlow` to use split prompt structure from `buildPaidAnalysisPrompt` with cached system array. Model updated from `claude-sonnet-4-20250514` (Claude 3.7) to `claude-sonnet-4-6` throughout (3 occurrences).
6. **ovrsight/api/deeper/route.ts** — Added static advisor role as cached system block. Model updated to `claude-sonnet-4-6`.
7. **ovrsight/lib/analyser.ts** — Model updated from `claude-sonnet-4-20250514` to `claude-sonnet-4-6`.
8. **ovrsight/api/pocket-chat/route.ts** — Model downgraded to `claude-haiku-4-5-20251001` (dev-assist chat doesn't need Sonnet). History capped at 20 turns server-side.
9. **spark/api/opsp/coach/route.ts** — History capped at 20 turns server-side.
Principles added to stack.md and mind.md. All changes include `// TOKEN:` inline comments explaining the reason for each limit/cache/truncation.
------