principle: Platform portal before code: when an external service connection fails, always check provider dashboard FIRST before touching client code. Provider portal config (checkbox, toggle, module activation) is often the cause, not the SDK.

evidence: 4 hours lost debugging Telnyx JS SDK in session 80-81 when a Cloudflare portal toggle was the fix. Telnyx telephony_settings API returns 200 but has zero effect if parent Telephony module is OFF.

strength: high


principle: Use the official widget: when a provider offers a managed web component (e.g. <telnyx-ai-agent>), use it. Custom SDK wiring adds infinite failure surface with zero value. One HTML tag beats 100 lines of WebRTC code.

evidence: Session 80-82 voice widget journey: spent sessions on custom WebRTC, then discovered <telnyx-ai-agent> CDN component solves entire use case in one line. All custom WebRTC code deleted.


principle: Verify parent toggles after every API call: API PATCH success does not equal functional enablement. Always check that the parent module/feature is active in the provider portal before trusting sub-setting configuration.

evidence: Telnyx telephony_settings PATCH returned 200 OK but voice was non-functional because parent Telephony module toggle was OFF in portal. API success was misleading.


principle: Collaborative browser handoff for Cloudflare: AI opens browser to login page → human authenticates → AI takes over session. This is a first-class workflow, not an improvisation. Never ask Kinan to navigate manually.

evidence: Standard pattern required for Telnyx portal, GHL admin, Anthropic console — all Cloudflare-protected. Playwright cannot bypass Turnstile. Human handles auth step only.


principle: Canonical pricing is the anchor, not a ceiling: the LocalSearch/Sensis invoice (~$400/mo) is the psychological floor. 'Same budget, 10x the engine.' Never discount below prospect's current marketing spend.

evidence: DT25v2 locked pricing. George was paying LocalSearch $400/mo and transitioned to ReceptionistAI at $497/mo — same budget framing. Every $0 discount is margin compression.


principle: Memory is multi-layer: effective AI memory requires 4 storage tiers working together — Qdrant (vector/semantic), PostgreSQL (relational/state), Redis (cache/queue), FalkorDB+Graphiti (episodic/relational graph). Missing any tier leaves a blind spot.

evidence: Session discovery that FalkorDB exists as 4th tier not consistently used. Qdrant alone misses temporal relationship queries. PostgreSQL alone misses semantic similarity. All 4 are mandatory.


principle: Check existing before build: before any implementation task, spawn an Explore agent to audit Skills, Files, Worktrees, KG, and Research reports IN PARALLEL with initial planning. Never rebuild what Genesis already built.

evidence: Session 80: website_factory_orchestrator.py already existed (252 lines) when agent was tasked to build it. Session 82: demo-v2.html was foundation for demo-v3.html. TRADIES/ research had pre-built lead lists.


principle: Zero-build-until-engagement: never build a full product deliverable (website, integration, feature) until the client is engaged. Demo/preview generation costs pennies. Full build only triggered post-commitment.

evidence: Website factory pipeline: demo_site_generator.py creates demo in <1 second with no AI. Full site via website_factory_orchestrator.py only after 14-day trial signup. CAC collapses because build cost is near zero at outreach stage.


principle: Australian professional voice is warm and clear, never folkloric: 'Australian does not mean G'day mate. We run a business, not a pub.' All customer-facing language must be professional Australian — confident, helpful, not folksy.

evidence: RULE 13 enforced in all voice agent prompts, outreach copy, and SMS templates. Any slang (G'day, Too easy, Righto, Sweet as) triggers immediate rework. George's AI receptionist Sarah follows this persona.


principle: Context injection is multi-source: effective session context requires pulling from 5 sources simultaneously — Qdrant semantic search, PostgreSQL recent entities, PostgreSQL bloodstream knowledge, KG JSONL files, Titan Memory axioms. Any single source gives partial context.

evidence: session_context_injector.py implements all 5 sources. Memory tests showed Qdrant alone misses recently written entities. KG files alone misses semantic relevance. All 5 needed for complete context recovery.


principle: Deep Think is the strategy oracle, not the platform configurator: DT sessions set direction and identify architectural gaps. DT does not know what Telnyx/GHL/n8n can do natively. Always audit native platform BEFORE formulating DT questions.

evidence: DT18 prescribed custom Node.js WebSocket bridge — wrong because Telnyx already has native MCP Server. 4 hours wasted before discovering native solution. DT corrected in DT bulk axioms as critical CORRECTION entry.


principle: Map-Reduce over direct LLM attention for large corpora: never feed massive datasets directly into LLM context. Mount as external state, use root model to write Map-Reduce logic, run micro-chunk workers in parallel. O(n^2) → O(n).

evidence: DT19b architectural principle. genesis_memory_cortex.py and rlm_army.py both implement chunked processing. Research report batch ingestion uses 800-char chunks, not full document injection.


principle: Playwright is for stateful flows; Computer Use API is for single-action GUI clicks: multi-step browser automation (logins, form fills, portal navigation) always uses Playwright. Computer Use = single screenshot-click-return only.

evidence: DT19 axiom. All GHL logins, Telnyx portal config, Anthropic console work uses Playwright MCP. Computer Use reserved for non-web desktop UI or visual verification only.


principle: JITSG creates real-time product-market fit: detect capability gap on live call, build the integration during the call, close the deal before hanging up. $2 compute → $497/mo MRR. Speed of build IS the moat.

evidence: DT19 Ouroboros Loop: Gemini Pro writes MCP server → Jules tests → Bash deploys → Stripe creates product → avatar closes — all in 60 seconds. Concept proven by genesis-voice-bridge being built in one session.

strength: medium


principle: RLM means Recursive Language Models (memory system), not Reinforcement Learning: when Kinan says RLM, he always means the recursive memory processing pipeline. AIVA's rlm_01-05 = separate Reinforcement Learning modules. Never conflate the two.

evidence: RULE 15 created after ambiguity caused confusion in session communications. Two entirely different systems. All code comments, KG entities, and verbal communication must use the correct term.


principle: Email timing for tradies: send at 5:15 AM AEST (tradies check phones in the ute before the job) and 4:30 PM AEST (smoko/end of day invoices). Plain text only — HTML looks like marketing and gets filtered.

evidence: Danny Harris formula extracted from research. George signed as first client via warm outreach. tradie_outreach_automation.py schedules sends at these exact times. Plain text open rates 3-5x higher than HTML.


principle: Failure is living data: every failure must be processed through 4 steps (DIAGNOSE → ROOT CAUSE → PRE-MORTEM → EVOLVE) and committed to KG. Unprocessed failures compound into systemic rot. Genesis never falls into the same hole twice.

evidence: RULE 14. DT18 WebSocket failure processed into axiom_dt18_critical. Telnyx parent toggle failure processed into rlm_axiom_003. Each failure spawns specific guardrail. Failure log at KNOWLEDGE_GRAPH/entities/failure_evolution_log.jsonl.


principle: Tradie PRIME targets (no website) have highest conversion probability: 40-60% of scraped tradie businesses have poor or no web presence. Zero-website tradies are PRIME tier — they have the most to gain and the fewest objections to modernization.

evidence: Website factory audit scoring: no website = score 100 (PRIME). These businesses have no existing investment to protect. George (concreter) had a low-quality site (score 52) and converted — PRIME targets are even easier.


principle: Cross-session memory requires explicit materialization: session context does not persist automatically. Effective cross-session continuity requires explicit CTM writes at session end + context injection at session start. Relying on implicit memory = starting blind.

evidence: Session 80 CTM (session_80_ctm_2026_02_23.jsonl) and Session 81 CTM (session_81_ctm_2026_02_23.jsonl) demonstrate the pattern. Without these writes, post-compaction sessions (charming-dirac) would lose all state. Memory inject hook (memory_context_inject.py) is the other half.


principle: Capability audit before every mission: check Model (context/output limits), MCPs (available tools), Beta features (1M context, computer use), and Capability Manifest. An agent that does not know what it can do will always underperform.

evidence: RULE 10. capability_audit.py runs on every SessionStart. capability_manifest.json is the source of truth. Model was incorrectly set to sonnet in session 80 (fixed to opus) — caught by audit.


principle: Build on request: 'Research X' = build X. 'Can we do X?' = do X. Never present research without dispatching the build agent. Research agent + build agent fire IN PARALLEL, always. Asking 'should I build it?' is a violation.

evidence: Kinan Directive 2026-02-19. All session 80-82 builds followed this pattern: scraper was being built while research was being done. website factory pipeline built while DT sessions happened in parallel.


principle: The Genesis flywheel: CreatorDashboard captures email list (business owners) → ReceptionistAI cross-sell converts to $497/mo → revenue funds more Genesis product development → more products attract more email subscribers. Each product feeds every other product.

evidence: CreatorDashboard.ai architecture: freemium tools capture email → 5-email nurture sequence includes ReceptionistAI demo CTA at email 4 → 5% of 8,000 subscribers = 400 voice AI clients potential. This is designed intentionally.


principle: No SQLite anywhere in Genesis: all persistent storage must use Elestio Core (PostgreSQL for relational, Qdrant for vectors, Redis for cache, FalkorDB for graphs). SQLite = local file = cannot support multi-agent distributed coordination.

evidence: RULE 7. All 5 new database tables in session 82 (tradie_leads, agent_execution_log, etc.) deployed to Elestio PostgreSQL. Zero SQLite usage across all scripts. memory_digestion.py explicitly uses psycopg2 to Elestio PostgreSQL.


principle: All work on E: drive only: C: drive is critically low on space. Git worktrees go to E:/genesis-workers/. Temp files to E: drive only. Any C: drive operation = system destruction risk.

evidence: RULE 6. C: drive space exhaustion crashes Windows. Worktrees at E:/genesis-system/.claude/worktrees/ (charming-dirac active). All scripts, logs, and data on E: drive confirmed across sessions 80-82.


principle: Async webhook pattern prevents voice AI freeze: CRM lookups that take >2 seconds will freeze the AI during a call. Always configure Telnyx tool webhooks as async (request_mode: async). AI keeps talking while data fetches in background, then injects result.

evidence: Telnyx async webhook axiom from telnyx_mastery.jsonl. Live call experience: AI assistant must keep speaking while GHL CRM lookup happens. 2+ second silence = terrible UX. Async mode = seamless.