Print or save as PDF: use your browser’s Print dialog.
One portal.
Every surface a consulting business needs.
How I turned scattered business data into a knowledge system that compounds — with markdown, vanilla JS, and AI. A case study in building a business operating layer you own.
Running a design consultancy means juggling CRM, finances, strategy, operations, and marketing at once. The default is fragmentation: a spreadsheet here, a slide deck there, context buried in email. This page is the story of the opposite — a single portal where raw inputs become structured knowledge, and knowledge becomes insights and decisions.
The three-layer model
Inputs
Raw business data from many sources — scattered across tools by default. The portal gives them a home.
- CRM / contactsDex, LinkedIn exports, event tagging
- Financial dataMonarch CSV, invoices, running costs, budget
- StrategyBMC, competitor swipes, persona research
- OperationsPipeline deals, session notes, tasks, OKRs
- MarketingEmail copy, social, elevator speeches, brand voice, lead magnets
Knowledge
Markdown is the source of truth. Ten-plus sync scripts compile it into portal data. The AI maintains it — you direct.
- Offers catalog
messaging/offers.md→ priced, linked pages - Competitive landscapeSwipe notes → normalized cards
- Personas & strategyBMC, positioning, research hub
- Pipeline & contactsStaged deals, qualification, tags
- Session resourcesNotes → tasks, messaging, library
- Finance viewsCategorized, date-ranged transparency
Insights & decisions
The portal is not a dashboard you stare at. It’s a system you operate through.
- Pricing emulatorModel scenarios before a proposal call
- Engagement calculatorScope and price in real time
- Finance dashboardRevenue, variance, running costs, pipeline forecast
- Pipeline kanbanEst. value feeding projections
- OKRs & 90-day trackerOn track at a glance
- Discovery configStructured qualification on sales calls
- Email sequencesKit-ready copy, PDF export for review
Layer 1 — detail
What goes in
- CRM / contacts — Contacts from Dex, LinkedIn exports, and event tags land as data the portal can browse and qualify.
- Financial data — Monarch Money exports, invoice metadata, running-cost configs, and budget JSON power revenue and spend views.
- Strategy — Business Model Canvas, competitor swipe files, and persona work become linked strategy pages.
- Operations — Pipeline markdown, cohort session notes, Linear-linked tasks, and OKR docs stay authoritative in the repo.
- Marketing — Elevator speeches, stories, email sequences, social campaigns, and brand voice live as markdown and JSON sources.
Key point: Inputs start life in specialist tools. The portal is the layer where they converge — same navigation, same design system, same truth.
Layer 2 — detail
What gets organized
- Offer definitions in markdown sync to a browsable catalog with positioning and cross-links.
- Session and cohort notes propagate into task lists, resource stubs, and portal HTML exports.
- Competitor research normalizes into a matrix-friendly data shape for the competitive landscape page.
- Financial CSVs and configs drive filtered dashboards — business vs personal, hygiene rules, duplicate handling.
- Contacts merge snapshot data with browser-side qualification (stage, score, next action) without locking you into one SaaS UI.
Key point: Knowledge is compiled, not copy-pasted. One edit in source can refresh every surface that depends on it.
Layer 3 — detail
What comes out
- Pricing & engagement tools — Emulators and calculators turn offer math into something you can use on a live call.
- Finance transparency — Paid, invoiced, and pipeline-estimated revenue in one bar; rolling charts and client rollups when you need depth.
- Planning surfaces — OKRs and a 90-day tracker connect execution to the quarter you’re in.
- Sales readiness — Discovery configuration and proposals index support consistent qualification and packaging.
- Campaign ops — Email sequences with export paths for signoff; social content synced from structured JSON.
Key point: The output isn’t “more reports.” It’s decision-grade views you open when you’re about to act.
How it’s built
Architecture (compact)
- 50+Portal pages across strategy, finance, sales, messaging, ops, cohort, system
- 5×2Design palettes × light/dark modes
- 28JS modules · 0 frameworks
- 10+Sync scripts from markdown & exports
- 15+Cursor skills for recurring workflows
Design system
One token file, every page
Palette and mode are orthogonal: pick a brand axis (Atelier, Courage, Minimal, SQDL, Blueprint) and a luminance axis (light / dark). tokens.css holds the custom properties — change a token, and the whole portal moves together.
Before & after
Before
Strategy in a Google Doc updated twice a year. Pipeline in a spreadsheet. Finances in Monarch with no unified business view. Messaging scattered across drafts. Session notes in a folder nobody reopens.
After
One portal. Pull up the one-sheet before a call. Check pipeline and finance in the same session. Draft an email sequence and export it for Kit. Process a cohort session and watch tasks, messaging, and resources stay in sync.
Principles
- —Markdown is the source of truth — portable, diffable, AI-friendly.
- —Compile, don’t copy — one edit propagates everywhere via sync scripts.
- —AI maintains; you direct — the model handles tedious syncing; you own the decisions.
- —Own your infrastructure — no SaaS lock-in; everything lives in a git repo you control.
- —Every exploration adds up — sessions and research feed back into the knowledge base instead of evaporating in chat.