Skip to main content

Engineering Principles for Non-Engineers

12 System Design Patterns from the Second Brain Architecture


Category 1: Human-Centric Design

Principle 1: Reduce Human's Job to One Reliable Behavior

The Rule: If your system requires three behaviors, you don't have a system—you have a self-improvement program.

Application:

Human does:    Capture to Slack (1 behavior)
System does: Classification, filing, surfacing, review generation

Anti-pattern: Requiring users to capture AND categorize AND tag AND review regularly. Each additional behavior reduces adoption probability multiplicatively.

Design Test: Can you describe the user's responsibility in one sentence with one verb?

SystemAnswerPass/Fail
Second Brain"Post thoughts to Slack."✅ PASS
Traditional Notion"Capture, categorize, tag, file, and review notes."❌ FAIL (5 verbs)
Evernote"Capture and organize notes."❌ FAIL (2 verbs)
Coditect Target"Submit requirements."✅ PASS

Principle 2: Default to Safe Behavior When Uncertain

The Rule: A real system must know how to fail gracefully.

Application:

if confidence < 0.6:
log_to_review_queue() # Safe: no pollution
ask_for_clarification() # Safe: human decides
else:
file_to_database() # Only when confident

Anti-pattern: Filing everything regardless of confidence, then requiring cleanup.

Design Test: What happens when the system isn't sure? If the answer involves polluting the database, redesign.

SystemUncertain BehaviorPass/Fail
Second BrainLogs to inbox_log with "needs_review" status, replies asking for clarification, does NOT file to main databases✅ PASS
Naive AI filingFiles to "Uncategorized" folder, user must clean up later❌ FAIL
Gmail filtersApplies label anyway, user discovers misfiles weeks later❌ FAIL
Coditect TargetHalts execution, generates review ticket, notifies human✅ PASS

Principle 3: Design for Restart, Not Perfection

The Rule: Assume users will fall off. Life happens.

Application:

  • No guilt-inducing backlog accumulation
  • "Don't catch up, just restart" as explicit policy
  • 10-minute brain dump re-engagement path
  • System continues functioning during user absence

Anti-pattern: Systems that create cleanup debt, making restart feel overwhelming.

Design Test: If a user disappears for 2 weeks, what's the re-engagement friction? Should be < 15 minutes.

System2-Week Absence Re-engagementTimePass/Fail
Second BrainOpen Slack, brain-dump 5-10 thoughts, automation handles rest. No backlog review required.~10 min✅ PASS
Traditional GTDReview all inboxes, process backlog, update contexts, do weekly review2-4 hours❌ FAIL
Email-based system200+ unread emails requiring triage1-3 hours❌ FAIL
Coditect TargetResume from last checkpoint, no manual state reconciliation~5 min✅ PASS

Category 2: Architectural Separation

Principle 4: Separate Memory from Compute from Interface

The Rule: Each layer has one job. They connect through clear boundaries.

Application:

┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│ INTERFACE │ → │ COMPUTE │ → │ MEMORY │
│ (Slack) │ │(Zapier+AI) │ │ (Notion) │
└──────────────┘ └──────────────┘ └──────────────┘

Swappable: Swappable: Swappable:
- Teams - Make - Airtable
- Discord - n8n - Coda
- Custom UI - Different LLM - Supabase

Benefits:

  • Portability: Change one layer without rebuilding
  • Testing: Verify each layer independently
  • Vendor flexibility: Avoid lock-in

Anti-pattern: Obsidian for non-engineers (local files require sync plumbing that breaks abstraction).

Design Test: Can you swap one layer without touching the others?

Layer SwapSecond Brain ImpactPass/Fail
Slack → TeamsChange Zapier trigger only. Notion + prompts unchanged.✅ PASS
Claude → GPT-4Change Zapier AI action only. Slack + Notion unchanged.✅ PASS
Notion → AirtableChange Zapier destination actions. Slack + prompts unchanged.✅ PASS
Zapier → MakeRebuild workflows, but Slack/Notion/prompts unchanged.✅ PASS

Coditect Validation:

Layer SwapImpact
Theia → VS CodeInterface only, agent layer untouched
Claude → GPT-4Compute layer prompts, memory layer untouched
FoundationDB → PostgreSQLMemory layer, compute logic unchanged

Principle 5: Build One Workflow, Then Attach Modules

The Rule: Core loop first. Optional capabilities later.

Core Loop (build this first):

Capture → Classify → File → Daily Digest → Weekly Review

Modules (add after trust established):

  • Voice capture integration
  • Calendar-based meeting prep
  • Email forwarding to inbox
  • Birthday/anniversary reminders
  • Project deadline alerts

Anti-pattern: Building all features before validating the core loop works.

Design Test: Can you draw the minimum viable loop in 5 boxes? If not, you're over-engineering.

SystemMVP LoopBox CountPass/Fail
Second BrainSlack → Classify → File → Digest → Review5 boxes✅ PASS
Over-engineeredSlack → Parse → Validate → Classify → Route → File → Tag → Link → Digest → Review → Archive11 boxes❌ FAIL
Coditect MVPRequirements → Decompose → Implement → Test → Review5 boxes✅ PASS
Second Brain MVP:
┌─────────┐ ┌──────────┐ ┌──────┐ ┌────────┐ ┌────────┐
│ Capture │ → │ Classify │ → │ File │ → │ Digest │ → │ Review │
└─────────┘ └──────────┘ └──────┘ └────────┘ └────────┘

Category 3: Data & Schema Design

Principle 6: Keep Categories and Fields Painfully Small

The Rule: Richness creates friction. Friction kills adoption.

Application:

DatabaseRecommended FieldsNot More Than
People5 fields7 fields
Projects5 fields6 fields
Ideas4 fields5 fields
Admin4 fields5 fields

Categories: 4 total (People, Projects, Ideas, Admin). Resist expansion.

Anti-pattern: Starting with 10 categories because "my work is complex."

Design Test: Can a 5-year-old understand your category names?

Category5-Year-Old TestPass/Fail
"People""That's about friends and family!"✅ PASS
"Projects""Things you're working on!"✅ PASS
"Ideas""Thoughts you want to remember!"✅ PASS
"Admin""Stuff you have to do."✅ PASS
"Strategic Initiatives""What?"❌ FAIL
"Stakeholder Engagement""Huh?"❌ FAIL
"Reference Material""Is that a book?"❌ FAIL

Coditect Equivalent:

Category5-Year-Old TestPass/Fail
"Requirements""What you want built"✅ PASS
"Code""The program"✅ PASS
"Tests""Checking it works"✅ PASS
"Docs""Instructions"✅ PASS

Principle 7: Use Next Action as the Unit of Execution

The Rule: Store actions, not intentions.

Good vs Bad:

Intention (Bad)Action (Good)
"Work on website""Email Sarah to confirm copy deadline by EOD Friday"
"Finish proposal""Draft executive summary section (30 min block)"
"Handle client feedback""Schedule 30-min call with Alex to review revision 3"

Application: Classification prompt must extract concrete, executable next actions from vague inputs.

Design Test: Could you do this action in the next 30 minutes if you had to? If not, decompose further.

Action30-Minute Executable?Pass/Fail
"Email Sarah to confirm copy deadline"Yes, takes 5 minutes✅ PASS
"Draft executive summary section"Yes, 30-min focused work✅ PASS
"Work on website"No, undefined scope❌ FAIL
"Improve documentation"No, where do you start?❌ FAIL
"Research competitors"No, could take hours❌ FAIL
"Spend 25 min reviewing competitor X's pricing page"Yes, bounded✅ PASS

Coditect Translation:

Vague RequirementExecutable Action
"Add user authentication""Implement JWT token validation middleware for /api/* routes"
"Fix the bug""Add null check in UserService.getProfile() line 47"
"Improve performance""Add Redis cache to ProductRepository.findByCategory()"

Principle 8: Prefer Routing Over Organizing

The Rule: Humans hate organizing. AI is good at routing.

Traditional Approach (fails):

Human captures → Human decides folder → Human maintains hierarchy

Routing Approach (works):

Human captures → AI routes to stable bucket → Human never organizes

Application: Fixed 4-bucket taxonomy. AI decides routing. User just captures.

Anti-pattern: Giving users a tagging system and expecting them to use it consistently.

Design Test: How many taxonomy decisions does the user make per capture?

SystemTaxonomy Decisions Per CapturePass/Fail
Second Brain0 (AI routes automatically)✅ PASS
Notion manual2-3 (folder + tags + properties)❌ FAIL
Evernote1-2 (notebook + tags)❌ FAIL
Apple Notes1 (folder selection)⚠️ BORDERLINE
Coditect Target0 (system decomposes requirements)✅ PASS

Category 4: Trust Engineering

Principle 9: Build Trust Mechanisms, Not Just Capabilities

The Rule: Capability = "it does X." Trust = "I believe it does X correctly because Y."

Trust Mechanisms:

MechanismPurpose
Inbox LogShows what happened (transparency)
Confidence scoresShows certainty level (calibration)
Fix buttonShows corrections are easy (control)
Confirmation repliesShows what was filed (verification)

Capability Without Trust: System files notes automatically. Capability With Trust: System files notes, logs every action, shows confidence, makes fixes trivial.

Design Test: If something goes wrong, can the user trace what happened and fix it in < 2 minutes?

ScenarioSecond Brain ResponseTime to FixPass/Fail
Wrong categoryView Slack confirmation → Reply "fix: should be projects"30 seconds✅ PASS
Missing entryCheck Inbox Log → See confidence was low → Entry in review queue1 minute✅ PASS
Duplicate filingCheck Inbox Log → See both entries → Delete one in Notion2 minutes✅ PASS
Garbled extractionView original text in Inbox Log → Reply with clarification1 minute✅ PASS

Coditect Equivalent:

ScenarioTrace + Fix PathTarget Time
Wrong code generatedView decision log → See confidence + rationale → Override< 2 min
Test failureView provenance → Trace to requirement → Adjust spec< 5 min
Compliance gapView audit trail → Identify missing evidence → Regenerate< 10 min

Principle 10: Treat Prompts Like APIs, Not Creative Writing

The Rule: Reliable beats creative in automated systems.

API-Style Prompt:

You are a classification system. Given input text, return JSON only.

Schema:
{
"category": "people" | "projects" | "ideas" | "admin",
"title": "string (max 50 chars)",
"confidence": 0.0-1.0,
"extracted_fields": { ... }
}

Rules:
- Return ONLY valid JSON
- No explanation, no markdown
- If uncertain, set confidence < 0.6

Input: {user_message}

Anti-pattern: "Please help me categorize this thoughtfully and explain your reasoning..."

Design Test: Is your prompt output parseable by JSON.parse() without any cleanup?

Prompt StyleExample OutputJSON.parse() ResultPass/Fail
API-style{"category":"projects","title":"Website relaunch","confidence":0.87}✅ Parses✅ PASS
CreativeI think this is a project. Here's my analysis...❌ Error❌ FAIL
Markdown-wrapped```json\n{"category":"projects"}\n```❌ Error (needs cleanup)❌ FAIL
Explanatory{"category":"projects"} // This seems like a project because...❌ Error❌ FAIL

Coditect Prompt Validation:

// Test every agent prompt
const output = await agent.execute(input);
try {
const parsed = JSON.parse(output);
assert(parsed.confidence !== undefined);
assert(parsed.files !== undefined);
console.log("✅ PASS: Output is valid JSON");
} catch (e) {
console.log("❌ FAIL: Output requires cleanup");
}

Category 5: Output Design

Principle 11: Make Outputs Small, Frequent, and Actionable

The Rule: Non-engineers want a top-3 list that fits on a phone screen.

Constraints:

OutputWord LimitFrequencyFormat
Daily digest~150 wordsEvery morning3 actions + 1 insight
Weekly review~250 wordsEvery SundaySummary + 3 next-week actions
Confirmation~30 wordsPer captureFiled to X, confidence Y

Why Small:

  • Reduces cognitive load
  • Increases read-through rate
  • Improves follow-through
  • Builds trust through consistent delivery

Anti-pattern: Weekly 2,000-word analysis that no one reads.

Design Test: Does the output fit on a phone screen without scrolling?

OutputCharacter CountPhone Screen (≈500 chars visible)Pass/Fail
Daily digest (150 words)~900 charsSlight scroll, acceptable✅ PASS
Weekly review (250 words)~1500 chars3 screens, still scannable✅ PASS
Confirmation (30 words)~180 charsNo scroll✅ PASS
Detailed analysis (2000 words)~12000 chars24 screens❌ FAIL

Coditect Application:

OutputTargetRationale
Sprint summary≤ 250 wordsFits in Slack message
Commit message≤ 72 chars subjectGit convention
PR description≤ 500 wordsReviewable in 2 min
Status notification≤ 30 wordsGlanceable

Principle 12: Optimize for Maintainability Over Cleverness

The Rule: Moving parts are failure points.

Maintainability Checklist:

  • Fewer tools (4 max in the stack)
  • Clear logs (every action visible)
  • Easy reconnects (5-minute fix for auth issues)
  • Minimal custom code (prefer no-code where possible)
  • Documented workflows (someone else could fix it)

Anti-pattern: Beautiful, elegant system with 12 integrations that breaks mysteriously.

Design Test: If your Slack token expires, how long to fix? Target: < 5 minutes.

Failure ScenarioSecond Brain Fix PathTimePass/Fail
Slack token expiredZapier → Reconnect Slack → Test3 min✅ PASS
Notion permissions changedZapier → Reconnect Notion → Verify page access4 min✅ PASS
Claude API key rotatedZapier → Update AI action credentials2 min✅ PASS
Zapier workflow disabledZapier → Dashboard → Turn on1 min✅ PASS
Complex custom integration breaksDebug code → Find issue → Deploy fix30+ min❌ FAIL

Coditect Maintainability Targets:

ComponentRecovery Target
LLM API key rotation< 5 min
FoundationDB reconnect< 2 min (automatic)
Agent restart after crash< 1 min (checkpoint restore)
Full system cold start< 10 min

Principle Summary Matrix

#PrincipleCategoryKey MetricSecond Brain Status
1One reliable behaviorHuman-CentricUser actions ≤ 1✅ 1 verb: "Post"
2Safe defaults when uncertainHuman-CentricLow-confidence → queue✅ < 0.6 → review
3Design for restartHuman-CentricRe-engagement < 15 min✅ ~10 min
4Separate memory/compute/interfaceArchitectureLayers independently swappable✅ All 3 swappable
5Core loop → modulesArchitectureMVP = 5 components✅ 5 boxes
6Minimal categories and fieldsDataCategories ≤ 4, fields ≤ 6✅ 4 categories
7Next action as execution unitDataAll actions executable✅ 30-min test
8Route, don't organizeDataZero user taxonomy decisions✅ 0 decisions
9Trust mechanismsTrustErrors traceable in < 2 min✅ Fix in 30 sec
10Prompts as APIsTrustOutput = valid JSON✅ JSON.parse() works
11Small, frequent outputsOutputDaily ≤ 150 words✅ Phone-readable
12Maintainability > clevernessOutputAuth fix < 5 min✅ 3 min recovery

Application to Other Systems

These principles generalize beyond second brains to any human-AI workflow system:

CRM Automation: Principles 1, 4, 6, 8, 10 Meeting Notes Processing: Principles 1, 5, 7, 11, 12 Email Triage: Principles 2, 3, 8, 9, 10 Task Management: Principles 3, 6, 7, 11, 12 Knowledge Base Maintenance: Principles 4, 5, 6, 8, 9 Autonomous Development (Coditect): All 12 principles apply