Solara Global Capital
Operating System
The complete master plan and full wireframe for a fast, integrated, two-stack capital advisory platform — uniting the CRM (Render/Mongo) with the new AI workload stack at apps.sgcap.au.
Version · 1.0 Final
Date · 24 May 2026
Document Map
This master plan consolidates the 7-Day Implementation Pack, the Solara Operating System v5, and the AI Workflow Roadmap into one integrated document. The order is decision-first: architecture, then current-state review, then the staged plan, then the full wireframe re-cut, then governance.
The plan in one page
Solara already runs a working capital advisory CRM at app.solaraglobal.au with a $102.48M pipeline, 27 live applications, 15-tab deal modal, mirrored Drive sync (395 documents on the largest deal), settlements queue, finance with mandates and brokerage, introducer role, Go-Live readiness dashboard and bulk import. The shell is strong. The spine is missing — and the AI horsepower needed to scale belongs on a separate runtime so the CRM stays fast.
This document does three things. One, it reviews everything currently planned across the 7-Day Pack, the Operating System v5, and the AI Workflow Roadmap — with checkpoint status for each component. Two, it consolidates the build into a single two-stack master plan that respects Solara's architectural decision: keep the CRM lean and fast, push every heavy or slow workload onto apps.sgcap.au. Three, it provides a full wireframe re-cut for all surfaces on both stacks, with the integration touchpoints explicitly drawn.
The Five Anchors (governance for every decision)
What the live audit shows
1. Preserve. Keep the 15-tab modal, Drive sync, finance, introducer role, settlements queue, Go-Live dashboard, bulk import. They work.
2. Adopt the six-stage spine. Triage → Case Assembly → Solution Design → Capital Matching → Execution → Monitoring.
3. Add the Strategy & Pattern layer. A Strategy tab on every case plus a Solution Pattern Library (AJM-001, TAR-002) for reusable IP.
4. Split the workloads. Operational reads/writes on the CRM; AI batches, doc summarisation, autofill, scraping, content on apps.sgcap.au.
5. Activate the people surfaces. Client portal, partner portal with commissions, user profile with email intelligence, PWA shell, portfolio monitoring.
What's new in this master plan vs v5
| Element | v5 Operating System position | This master plan position |
|---|---|---|
| Stack model | Single stack — all modules on Render/FastAPI/Mongo at app.solaraglobal.au. | Two stacks. CRM stays lean on Render/Mongo. AI workloads, document processing, lender autofill, market intel, content engine all on Cloudflare Workers + D1 + R2 at apps.sgcap.au. |
| AI architecture | Cost-controlled orchestrator inside the CRM. | App Centre on apps.sgcap.au runs all Claude batch jobs. CRM calls apps.sgcap.au via signed API; results return via webhook to the case timeline. |
| Lender Autofill | Not specified in v5. | Highest-ROI new system. Canonical client schema in D1 → fills every lender PDF on demand. Sits on apps.sgcap.au. |
| Doc Bundle Summariser | Not specified; AI Brief tab implied. | Interactive + batch summariser on apps.sgcap.au. Sub-2-minute readouts. Outputs land in CRM case timeline. |
| CRM crash/perf risk | Not addressed. | Resolved by architectural separation. Heavy work cannot block user-facing CRM operations. |
The Two-Stack Architecture
One company. Two runtimes. One shared identity layer. The CRM owns operational truth and user-facing speed. apps.sgcap.au owns heavy lifting, AI batches and document processing. They talk over a signed API and a shared Google Workspace identity. Neither can break the other.
- Frontend: React on Cloudflare Pages
- Backend: FastAPI on Render (paid tier)
- Database: MongoDB Atlas (Sydney)
- Storage: Google Drive (per-case folders)
- Owns: Cases, Lenders, Patterns, Users, Audit, Pipeline, Stage gates
- Owns: Portals (Admin / Partner / Client)
- Owns: Workflow engine, SLAs, RBAC
- Owns: Finance, Xero invoices, Settlements
- Owns: Resend transactional email
- Stays lean: never blocks on AI or batch work
API + Webhook
Bridge
shared identity
- Frontend: Next.js on Cloudflare Pages
- Compute: Cloudflare Workers (edge)
- Database: Cloudflare D1 (canonical client schema)
- Storage: Cloudflare R2 (document staging)
- Owns: App Centre (Claude batch jobs)
- Owns: Document Bundle Summariser
- Owns: Lender PDF Autofill Engine
- Owns: Market intel scraping, content engine
- Owns: Vendor outreach batches, lead triage
- Can be slow: async jobs, batch APIs, long-running
Why this split matters
Heavy Claude calls, PDF generation, scraping and batches never run in the same process as the user-facing CRM. A 30-minute batch job on apps.sgcap.au cannot crash or slow a case open in the CRM.
Anthropic batch pricing (≈50% of real-time tokens) is only available through batch endpoints. Putting AI workloads behind a queue on apps.sgcap.au lets every non-urgent job take the cheap path.
Ship the App Centre, Autofill or a new scraping adapter without touching the CRM codebase. CRM regressions stay isolated. Two GitHub repos, two release cadences, one product.
Cloudflare D1 is perfect for the canonical client schema and lender form mapping (relational, edge-cached). MongoDB is right for the CRM's case + audit shape (document, append-heavy).
Google Workspace OAuth governs both stacks. Sign in once with Solara's or Solara's @sgcap.com.au account; both surfaces accept the same id token. No second password.
The CRM remains system of record for cases, lenders, patterns. apps.sgcap.au holds the canonical client schema (autofill) and ephemeral job state. No double-edit conflicts.
End-to-end data flow (deal lifecycle)
Operational truth is in the CRM. Heavy compute and AI is on apps.sgcap.au. If a feature requires neither speed-critical user interaction nor canonical state, it belongs on apps.sgcap.au. If it requires either, it belongs on the CRM and may call apps.sgcap.au for help.
Current State Review
A consolidated read of what is live, what is in flight, and what is planned across the three briefs Solara has shipped — the 7-Day Module Implementation Pack, the Operating System v5, and the AI Workflow Roadmap. The shape is the same in all three: strong operational shell, missing strategy spine, AI horsepower not yet wired in. The remaining work is to land all of it on the two-stack model.
What is in production today (audit · 23 May 2026)
| # | Module | What it does | Stack | Status |
|---|---|---|---|---|
| 1 | Dashboard | KPI cards, recent applications, status overview, 21-deals stuck alert | CRM | Live |
| 2 | Pipeline | Kanban across 9 paper statuses (to be re-mapped to 6 stages) | CRM | Live |
| 3 | Applications · 27 | 15-tab detail modal, ref scheme SG-YYYYMMDD-XXXXXX | CRM | Live |
| 4 | Clients · 13 | Client entities, totals, deals, joined | CRM | Live |
| 5 | Templates · 8 | 4 doc + 4 email templates | CRM | Live |
| 6 | Lender Database | Interactive map & directory · filters by type, state, loan limit | CRM | Empty (0 of 0) |
| 7 | Settlements | Upcoming settlements queue · 1 row · ATSolve 26d overdue | CRM | Live · overdue |
| 8 | Overdue Docs · 102 | Outstanding checklist chase | CRM | Live |
| 9 | Staff · 5 | 3 admin · 2 introducer | CRM | Live |
| 10 | Go Live · 1 / 27 | Per-deal readiness · settlement field blocks 26 | CRM | Live |
| 11 | Systems · 8 / 1 / 2 | Integration status panel · 8 connected, 1 disconnected (Solara's Gmail), 2 unconfigured | CRM | Partial |
| 12 | Bulk Import | JSON dry-run + import (clients + applications) | CRM | Live |
| 13 | Activity | Deal-level status events with timestamps | CRM | Live |
| 14 | Operations | App health · Drive sync · overdue reminders · login events | CRM | Live |
| 15 | apps.sgcap.au shell | Cloudflare Pages + Workers + D1 stack provisioned | sgcap | Scaffold |
Strengths to preserve (do not touch)
SG-YYYYMMDD-XXXX — clean, lender-presentable, auditable. Keep as the canonical case ID across both stacks.
395 documents on one deal synced without effort. Per-case folder tree. Document store remains Google Drive on the CRM.
Mandates, Brokerage, Introducer Payouts, Monthly Close, Xero — rare for a broker platform. Keep on CRM.
Go-Live readiness dashboard, Bulk Import, Operations panel, Systems status, Activity log. Already institutional shape.
Slot already exists for Partner Portal launch. No data migration required.
Drive, Xero, Resend, Sentry, mailbox delegations, encrypted backups, encryption keys, DNS — operational foundation in place.
Live Build Checkpoints
Every named module across the three briefs as a checkpoint card with current status. Green = live in production today. Amber = in flight or scaffolded. Grey = planned. This is the single page Solara and the build team can read every Monday to see the actual state of the build.
7-Day Pack · Launch Modules
v5 Operating System · Future Build Cards
AI Workflow Roadmap · apps.sgcap.au Core & Extensions
Build Component Inventory
Every named component, every source document, every stack assignment in one table. This is the source-of-truth list the build team and Solara can scan to confirm nothing has been dropped.
| Component | Source doc | Stack | Status | Notes |
|---|---|---|---|---|
| CRM · Operational spine | ||||
| Dashboard (KPI + Action Feed) | v5 §03.1 | CRM | Live · extend | Add Time-to-Assess, Time-to-Terms, Book Value, Lenders Engaged. AI Action Feed reads from sgcap. |
| Pipeline (6-stage) | v5 §07 · 7-Day Day 1 | CRM | Migrating | Non-destructive mapping from 9 paper statuses. Sub-status retained. |
| Cases view (new) | v5 §03.1 | CRM | Planned | Layer above Applications. A case can carry multiple lender paths + a strategy. |
| Case View (15+3 tabs) | v5 §03.2 · 7-Day Day 2 | CRM | Live (15) · +3 planned | +Strategy +Capital Match +AI Brief. Days-in-stage + SLA chip above header. |
| Strategy tab (Pattern application) | v5 §03.3 · BC-01 | CRM | Planned | Diagnosis, options, recommended pathway, pattern, risk, rationale, approval log. |
| Solution Pattern Library | v5 §03.3 · §13 · 7-Day Day 2 | CRM | Seeded · 2 patterns | AJM-001 + TAR-002 seeded. Pattern Capture dialog on case close. |
| Capital Match tab | v5 §03.4 · BC-05 | CRM ⇌ sgcap | Planned | UI in CRM. AI-scored ranking via sgcap Lender Matcher app. |
| Lender Database | v5 §03.4 · BC-05 | CRM | Empty · seed needed | Structured appetite signature. Tier 1 import template. |
| Portfolio Monitoring | v5 §03.8 · BC-08 | CRM ⇌ sgcap | Planned | Loan book table + concentration + opportunity triggers. Scheduled evaluator on sgcap. |
| Partner Portal (Introducer) | v5 §03.5 · BC-06 | CRM | Planned | Filtered view of CRM. Commission dashboard from Finance · Introducer Payouts. |
| Client Portal | v5 §03.6 · BC-06 | CRM | Planned | Self-service uploads, progress bar across 6 stages, secure messaging. |
| User Profile + Relationships | v5 §03.7 · §14 · BC-07 | CRM ⇌ sgcap | Planned | Profile UI on CRM. Email classification + tension flags on sgcap. |
| PWA installable shell | v5 §15 | CRM | Planned | Wrap existing React frontend. Offline read cache. Push notifications. |
| Native Mac & iPhone (Capacitor) | v5 §03.9 · §15 | CRM | Planned · later | Capacitor wrap of PWA. App Store + biometric unlock. Web stays SoR. |
| Settlement workflow | v5 §05 | CRM | Live · 1 / 27 | Pre-fill from lender + deal stage. Stage-gate at Execution → Monitoring. |
| Templates | v5 §05 | CRM | 8 templates · expand | Add scenario packs linked to Solution Library. |
| Email + Calendar (Gmail OAuth) | v5 §05 · Phase 1 | CRM | Solara live · Solara not | OAuth reconnect for Solara's mailbox. IMAP/SMTP fallback decision. |
| Finance · Mandates · Brokerage · Xero | v5 §05 | CRM | Live | Keep. Source for Partner commission dashboard. |
| apps.sgcap.au · AI & workload spine | ||||
| App Centre (shell) | AI Roadmap §01 | sgcap | Planned · 2-3 d | Worker submits to Anthropic Batches; cron poller; D1 persistence; user notify. |
| Site Scorer (batch) | AI Roadmap §01 | sgcap | Planned | Re-scores industrial sites database against current criteria. |
| Deal Triage (batch) | AI Roadmap §01 | sgcap | Planned | Returns structured assessment: size, asset class, lender fit, red flags, next action. |
| Lender Matcher (batch) | AI Roadmap §01 | sgcap | Planned | Ranks full lender panel against deal characteristics with reasoning. Feeds Capital Match tab in CRM. |
| Payment Claim Analyser (batch) | AI Roadmap §01 · §05 | sgcap | Planned | Tier 1 / Tier 2 breakdown for BIF Act Payment Schedule responses. Generalises MKM Civil exercise. |
| Loan & Document Bundle Summariser | AI Roadmap §02 | sgcap | Planned · 1-2 wk | Interactive + batch. Sub-2-min readouts. Outputs land in CRM case timeline. |
| Lender PDF Autofill Engine | AI Roadmap §03 | sgcap | Planned · 1-2 wk | Highest ROI. Canonical client schema → every lender PDF prefilled + narrative drafting. |
| Compliance & ACL prep app | AI Roadmap §04 | sgcap | Planned | File notes, fact-find summaries, Statement of Credit Assistance drafts. Designed ACL-ready. |
| Settlement readiness check (nightly batch) | AI Roadmap §04 | sgcap | Planned | Cross-references checklist vs documents on file; flags missing items, stale vals, expiring offers. |
| Client comm drafts (real-time) | AI Roadmap §04 | sgcap | Planned | Update emails, CP requests, follow-up nudges in Solara / Solara voice. |
| Weekly pipeline brief (Mon AM) | AI Roadmap §04 | sgcap | Planned | Single document for the weekly review. Every live deal, stage, days since last touch, next action. |
| Project monitoring (Centurion) | AI Roadmap §05 | sgcap | Planned | Monthly position report for Castle Hill, Project 1. Legal counsel handover. |
| Legal correspondence summariser | AI Roadmap §05 | sgcap | Planned | CJM / MacGregor O'Reilly Nash / council / mortgagee lawyer threads → structured timeline. |
| Defence-strategy index | AI Roadmap §05 | sgcap | Planned | EN24/0169 trial prep, AFCA/Angas, Aussie Prime Land. Reduces cost of new counsel onboarding. |
| Market intelligence digest (daily) | AI Roadmap §06 | sgcap | Planned | Scrape RBA / ABS / REA Commercial / AFR property; one-page morning brief. |
| Content engine (weekly) | AI Roadmap §06 | sgcap | Planned | LinkedIn posts, newsletter, thought-leadership in house voice. |
| Case-study generator | AI Roadmap §06 | sgcap | Planned | On settlement → sanitised case study auto-drafted. |
| Website page production (Next.js auto-publish) | AI Roadmap §06 | sgcap | Planned | Sector landing pages: childcare, healthcare, industrial owner-occupiers, accommodation. |
| Vendor outreach engine (monthly batch) | AI Roadmap §06 | sgcap | Planned | Personalised approach letters per vendor from industrial sites database. |
| Referral partner nurture (weekly batch) | AI Roadmap §06 | sgcap | Planned | Check-ins to introducers under Referral Introducer Agreement. |
| Lender relationship maintenance (quarterly) | AI Roadmap §06 | sgcap | Planned | Briefings per lender BDM: deal flow sent, conversion, sectors, what would help. |
| Inbound lead triage (real-time) | AI Roadmap §06 | sgcap | Planned | Auto-classify every enquiry; rank for response; draft reply. Nothing falls through. |
| Council DA & planning monitoring | AI Roadmap §06 | sgcap | Planned | Sunshine Coast, Hervey Bay, target industrial corridors. Nightly scan. |
| Off-market intelligence (batch) | AI Roadmap §06 | sgcap | Planned | Cross-references sites DB against corporate restructures, lender enforcement, ASIC, agent patterns. |
| Tender Engine adapters (one per source) | v5 BC-03 + AI Roadmap | sgcap | Planned | Marketplace Finance, AFG/LMG/Connective, Valiant Savanna, ASIC, Omicron, ARITA, CreditorWatch, Balmain. Each adapter = its own feature flag. |
| AI orchestrator + AISurface registry | v5 BC-02 (rehomed) | sgcap | Planned | Single function orchestrate(surface, payload). Caching, retry, audit, model tiering, ROI gates. |
| Cross-cutting · Observability · Governance | ||||
| Sentry (frontend + backend, both stacks) | v5 §19 · 7-Day Day 4 | CRM + sgcap | Live (CRM) | Separate environments for dev/staging/prod. Release tagging on every deploy. |
| PostHog event taxonomy | v5 §19 · 7-Day Day 4 | CRM + sgcap | Partial | Sign-in, case open, doc upload, signing sent, invoice issued, AI summary requested, ExternalDeal created/promoted. |
| UptimeRobot / Better Stack monitors | v5 §19 · 7-Day Day 4 | CRM + sgcap | Setup pending | Frontend, API, DB, OAuth, Drive, Resend, Xero, AI worker queue, external feed ingest, synthetic case open + dashboard load. |
| Branch + PR + release discipline | v5 §17 · 7-Day operating rules | CRM + sgcap | In effect | Feature branches, PR template (objective / module / data / tests / acceptance / rollback / observability), staging auto-deploy, tagged release to prod. |
| RBAC matrix (4 profile types) | v5 §08 · BC-06 | CRM | Planned | API-level enforcement. Per-portal read scopes. Cross-portal access denied + audited. |
| Audit log (unified across stacks) | v5 §08 | CRM + sgcap | CRM live · sgcap planned | Every AI call and external dispatch writes to CRM activity log via webhook. |
Gap Analysis vs Operating Doc v5
Every gap v5 identified, plus four new gaps the two-stack model surfaces. Each maps to a Phase in §07.
| # | Gap | Why it matters | Solved in | Where |
|---|---|---|---|---|
| 1 | Status reflects paper steps, not decisions | Restructuring/advisory work has nowhere to live. AI cannot reason about "Draft". | Phase 1 | CRM six-stage |
| 2 | No Strategy tab on case modal | Founder IP stays in heads. Lateral plays never reusable. | Phase 2 | CRM Strategy tab |
| 3 | No Solution Pattern Library | Each deal solves itself once. AJM MFD + Taree patterns lost. | Phase 2 | CRM Library v1 |
| 4 | Lender DB is 0 of 0 | Capital matching impossible. | Phase 3 | CRM seed + schema |
| 5 | No lender match engine | Sequencing manual even with lenders seeded. | Phase 3 | both Capital Match tab + sgcap Lender Matcher |
| 6 | Settlement "Missing" on 26/27 deals | Blocks Go-Live; blocks reporting. | Phase 1 | CRM pre-fill + gate |
| 7 | 21 of 27 deals stuck 7+ days | Conversion drag; founder bottleneck. | Phase 1 + 2 | CRM SLA chips + auto-tasks |
| 8 | 0 templates in Checklist Templates | Every deal re-engineered manually. | Phase 2 | CRM scenario packs |
| 9 | Email + Calendar disconnected for Solara | No thread capture; no audit; no AI from Solara's correspondence. | Phase 1 | CRM OAuth reconnect |
| 10 | Tasks module empty | No structured follow-up rhythm. | Phase 2 | CRM auto-task generation |
| 11 | Leads module empty | No nurture or pre-client capture. | Phase 5 | CRM Partner Portal refer-a-deal |
| 12 | No active AI copilots | System describes; doesn't help close. | Phase 3 | sgcap App Centre + Solution Engine |
| 13 | Introducer role has no UI | Referral network can't self-serve. | Phase 5 | CRM Partner Portal |
| 14 | Client portal not surfaced | 102 outstanding doc items via email chase. | Phase 5 | CRM Client Portal |
| 15 | No portfolio/loan-book layer | $100M book invisible post-settlement. | Phase 5 | both Portfolio + sgcap evaluator |
| 16 | UptimeRobot + IMAP unconfigured | Production readiness gap. | Phase 1 | both close-out |
| 17 | No native or mobile shell | Founders can't triage on the move. | Phase 6 | CRM PWA → Capacitor |
| 18 | NEW · AI workloads inside CRM risk crashes | Heavy Claude calls, scraping, PDF generation in CRM process = cold starts, timeouts, blocked users. | Phase 1 | sgcap two-stack split |
| 19 | NEW · No canonical client schema for autofill | Same client data hand-keyed into 5 lender forms every deal. Single biggest weekly time sink. | Phase 2 | sgcap D1 canonical schema + Autofill engine |
| 20 | NEW · Document bundle review is manual | Half-day per submission. Pattern across every deal that opens. | Phase 2 | sgcap Document Bundle Summariser |
| 21 | NEW · No structured app library for repeatable analysis | Site Scorer, Deal Triage, Lender Matcher, Payment Claim Analyser repeated ad-hoc each time. | Phase 2 | sgcap App Centre shell |
The Six-Phase Master Plan
Six phases, sequenced for fastest measurable return without dropping the CRM into instability. Each phase carries a hard objective, scope, deliverables, acceptance checkpoints, owners, dependencies and the KPIs it moves. The plan respects Solara's launch-week discipline (no scope creep, feature flags, branch model) and the two-stack architectural rule (CRM stays operational, sgcap handles heavy work).
Objective answers "why this now". Scope lists what gets built. Checkpoints are the binary go/no-go criteria for completion. Owner is who is accountable. Depends on shows what must precede. Anchors shows which of the five strategic anchors this phase advances.
Objective. Get the CRM live with real matters under launch-week discipline, and stand up the apps.sgcap.au shell so heavy work has a runway. No new features past the controlled scope.
Scope
CRM (existing stack)
- Move Render off free sleeping tier; tighten MongoDB Atlas network policy
- Six-stage spine mapping behind
six_stage_spine_enabled - Days-in-stage chip + SLA flag on Pipeline and Case header
- Settlement pre-fill + Execution → Monitoring stage gate
- Reconnect Solara's Gmail + Calendar OAuth
- Sentry release tagging, PostHog launch events, UptimeRobot monitors
- RBAC sanity sweep; portal flags default off
- Runbook + rollback procedures committed to repo
apps.sgcap.au (new stack)
- Cloudflare Pages + Workers + D1 + R2 provisioned in production
- Google Workspace OAuth + Zero Trust Access on all routes
- Health endpoints; Sentry initialised; Better Stack heartbeats
- Signed-API bridge endpoint to CRM (single test endpoint)
- Empty App Centre shell — login works, no apps yet
- D1 schema for canonical client + AICallLog + AISurface registry
Checkpoints
Owner · dependencies · KPIs
Owner: Solara (launch owner) + build partner.
Depends on: nothing.
KPIs moved: Stuck 7+ Days (target ≤ 12 / 27 by end-week), Health-check passing (100%).
Objective. Land the Strategy tab + Pattern Library in the CRM so founder IP is captured; stand up the App Centre on apps.sgcap.au with the first five batch apps so the CRM has somewhere to push expensive work; ship the Document Bundle Summariser because it's the single highest-value daily time saver.
Scope
CRM
- Strategy tab on every case (diagnosis, options, recommended pathway, pattern, risk, rationale, approval log)
- Solution Pattern Library top-level menu; seed AJM-001, TAR-002 + 2-3 patterns from recent matters
- Pattern Capture dialog on case close
- AI Brief tab on case (consumes sgcap output)
- AI Action Feed on Dashboard (consumes sgcap output)
- Auto-task generation on stage change
apps.sgcap.au
- App Centre shell live (2-3 days)
- Five day-one apps: Site Scorer · Deal Triage · Lender Matcher (read-only mode) · Payment Claim Analyser · Doc Pack Summariser
- Document Bundle Summariser (interactive mode) live (1-2 weeks)
- Canonical client schema in D1 (built once, used by Autofill in Phase 3)
- AI orchestrator (BC-02) behind permissive flag; all calls flow through
- Webhook callback into CRM activity log on every job completion
Checkpoints
Owner: Build partner (sgcap), Solara (pattern library seed).
Depends on: Phase 1 complete.
KPIs moved: % deals with matched Solution Pattern at design stage (target ≥ 40% by end-phase), Time-to-Assessment (target same-day for ≥ 60%), Document review time per submission (target ≤ 30 min, was half-day).
Objective. Wire the Solution Engine end-to-end (interpretation → pattern → capital stack → memo → action). Seed and operationalise the Lender Database. Ship the PDF Autofill engine — the single highest-ROI item in the AI roadmap. By end of Phase 3, every deal can move from inbound to lender-ready in hours, not days.
Scope
CRM
- Capital Match tab on case (calls sgcap Lender Matcher; displays ranked shortlist)
- Lender Database schema extended with appetite signature, BDM, last interaction, last settlement
- Tier 1 lender seed import (target 30–50 lenders)
- Solution Engine "Approve to dispatch" gate; nothing leaves without named human approver
- Solution object → filled-PDF artefact lands in case Drive folder
apps.sgcap.au
- Lender Matcher graduated from read-only to ranked-shortlist with reasoning
- Solution Engine layers L1–L4 live (interpretation, pattern match, capital stack, memo composition)
- Lender PDF Autofill Engine: data layer + fill engine + 3 lender templates mapped
- Narrative drafting (purpose of funds, exit strategy, borrower experience)
- Compliance & ACL prep app (ACL-ready file note generation)
- Settlement readiness check (nightly batch)
Checkpoints
Owner: Solara (Lender DB seed leadership + Tier 1 appetite capture), build partner (engineering).
Depends on: Phase 2 complete (App Centre + canonical schema).
KPIs moved: Conversion Solution → Capital Matched (target ≥ 60%), Submission time per deal (target ≤ 1 hour, was half-day), Lender DB coverage (Tier 1 100%).
Objective. Unify Solara's direct funnel (Channel A) and the Tender Engine (Channel B) into one capture/triage/promote/attribute flow. Stand up the first live external source. Ship Inbound Lead Triage and Market Intelligence Digest so nothing falls through and the firm wakes up informed.
Scope
CRM
- ExternalDeal model + SourceAttribution fields
- Tender Inbox view in CRM with triage actions
- Webhook endpoint for website form submissions
- Mailbox label routing rules → Tender Engine
- Origination dashboard (counts by source & status)
- Attribution write-back on Case settlement
apps.sgcap.au
- Adapter framework (fetch + normalise + emit) live
- First live source promoted — pick from Marketplace Finance, Valiant Savanna, or AFG/LMG/Connective
- ASIC Published Notices monitoring scheduled
- AI Tender Memo (one-page triage doc per ExternalDeal)
- Inbound Lead Triage app (real-time)
- Market Intelligence Digest (daily overnight batch)
- Vendor outreach engine v0 (industrial sites database)
Checkpoints
Owner: Solara (channel decisions, source priorities), build partner.
Depends on: Phase 3 (App Centre and orchestrator).
KPIs moved: Source attribution coverage (target 100%), Inbound enquiry time-to-decision (target ≤ 24h for 80%+), Origination channels active (target 3+).
Objective. Bring the Client and Partner portals from scaffold to invited-pilot launch. Light the Portfolio Monitoring layer so settled deals stop disappearing. Wire user profile + email intelligence so Solara's and Solara's inboxes become structured intel.
Scope
CRM
- Client Portal v1 — invite-only. Progress bar across 6 stages, document requests with status chips, secure messaging, settlement countdown
- Partner Portal v1 — invite-only. Filtered deal list, commission dashboard from Finance · Introducer Payouts, refer-a-deal short form
- User Profile model (Client / Introducer / Lender contact / Staff)
- Portfolio Monitoring tab on every settled case + portfolio-wide dashboard
- Magic-link sign-in for Client portal
apps.sgcap.au
- Email intelligence layer (Gmail watch on consented staff mailboxes only)
- Inbound classification + sentiment + tension flags
- Draft reply generation for familiar threads
- Portfolio scheduled evaluator (maturity, covenant, refi triggers)
- Weekly pipeline brief (Monday morning batch)
- Referral partner nurture (weekly batch)
- Lender relationship maintenance (quarterly)
Checkpoints
Owner: Build partner + Solara (pilot user onboarding).
Depends on: Phase 2 (Solution Engine consumes profile context) and Phase 3 (Lender DB feeds lender contact profiles).
KPIs moved: Client portal weekly active use (target ≥ 70% of live clients), Portfolio touchpoints per quarter (target ≥ 1 per settled client), Document request fulfilment via portal (target ≥ 60%).
Objective. Wrap the CRM as a PWA → native Capacitor shell for Mac and iPhone so triage and approvals happen in-pocket. Activate the Centurion-side apps (project monitoring, legal correspondence summariser, defence-strategy index). Compound origination through Content Engine, Case Studies and Off-Market Intelligence.
Scope
CRM
- PWA shell: existing React frontend installable, offline read cache
- Push notifications for SLA breaches + AI Action Feed
- Capacitor wrap for Mac + iPhone signed builds
- Voice trigger surface: "Hey Solara, send Solara the AJ MFD draft"
apps.sgcap.au
- Centurion apps: Project monitoring, Legal correspondence summariser, Defence-strategy index
- Content engine (weekly LinkedIn + newsletter)
- Case-study generator (auto on settlement)
- Website page production (Next.js auto-publish)
- Council DA & planning monitoring (target Sunshine Coast, Hervey Bay, industrial corridors)
- Off-market intelligence (cross-references sites DB against ASIC + restructure + agent patterns)
- Second + third Tender Engine connectors
- Orchestrator enforcement on (direct AI calls blocked)
Checkpoints
Owner: Build partner + Solara (Centurion content + strategic direction).
Depends on: Phase 5 (portals + profile + portfolio).
KPIs moved: Founder mobile triage time per day (target ≥ 30% on mobile), Settled deals with case study published (target 100%), Off-market leads identified (target ≥ 5 / month).
90-day Gantt view (the first three phases on a calendar)
| Week | Build (CRM) | Build (sgcap) | Owner | Acceptance gate |
|---|---|---|---|---|
| W1 | Six-stage migration + Settlement pre-fill + Gmail reconnect + Render upgrade | Pages/Workers/D1 provisioned, OAuth + JWT bridge, App Centre shell | Solara + build partner | Phase 1 checkpoints |
| W2 | Days-in-stage chip + SLA + Strategy tab scaffold | Site Scorer + Deal Triage apps live in App Centre | Build team + Solara (patterns) | — |
| W3 | Pattern Library v1 + AJM-001 / TAR-002 + 2 fresh patterns | Document Bundle Summariser live (interactive) | Solara + partner | — |
| W4 | AI Brief tab consumes sgcap output | Orchestrator behind permissive flag; webhook → CRM activity log | Build team | Phase 2 checkpoints |
| W5 | Lender DB schema + map view + filters | Lender Matcher app (read-only mode) | Solara (Lender DB seed) | — |
| W6 | Capital Match tab + ranked shortlist UI | Lender Matcher graduates to ranking with reasoning | Build team | — |
| W7 | Solution Engine end-to-end + Approve gate | Solution Engine L1–L4 layers wired; first Solution Memo dispatched (human-approved) | Solara + build partner | — |
| W8 | Filled PDFs land in case Drive folder | Lender PDF Autofill Engine framework + 3 lender forms mapped | Build team | Phase 3 checkpoints |
| W9 | ExternalDeal model + Tender Inbox view | Adapter framework + first live source promoted | Solara + build partner | — |
| W10 | Origination dashboard + attribution write-back | Inbound Lead Triage app live | Build team | — |
| W11 | Website form webhook + mailbox label routing | Market Intelligence Digest (daily) + Vendor outreach v0 | Build team | — |
| W12 | Phase 4 wrap-up + KPI baseline | Phase 4 wrap-up + cost / utilisation report | Solara | Phase 4 checkpoints |
No phase opens until the previous phase's checkpoints are green. If a checkpoint slips, the build pauses there — it does not paper over by starting the next phase early. The whole architecture is designed so this is safe: nothing later is structurally blocked by holding a checkpoint open.
Integration Architecture
How the two stacks talk. The contract is deliberately small — five endpoint patterns, one webhook pattern, one shared identity layer, one shared audit log. Everything else stays inside its own stack.
The API contract (CRM ⇌ sgcap)
| Endpoint pattern | Direction | Purpose | Payload shape (illustrative) |
|---|---|---|---|
| POST /v1/jobs/{app} | CRM → sgcap | Submit a job to an App Centre app. Returns job_id immediately. | { case_id, app: "deal_triage", payload: {...}, priority: "batch" | "realtime" } |
| GET /v1/jobs/{job_id} | CRM → sgcap | Poll job status (rare — webhook preferred). | { status: "queued | running | done | error", result?, error? } |
| POST /v1/autofill/{lender} | CRM → sgcap | Request a filled PDF for a specific lender from the canonical client profile. | { client_id, case_id, lender_key, narrative_context } → { pdf_url, fields_used, warnings[] } |
| POST /v1/client-profile | CRM → sgcap | Push canonical client profile updates from CRM → D1. | { client_id, fields: {...}, version, audit } |
| POST /v1/webhooks/job-complete | sgcap → CRM | Job finished. CRM persists result + writes activity log entry. | { job_id, case_id, app, result, started_at, finished_at, model_tier, cost_band } |
Auth on every call
Every call carries a signed JWT minted by the calling stack and validated by the receiver. Tokens are scoped to the action (e.g. job:submit, client:write) and the resource (case_id). Service tokens for stack-to-stack calls are rotated quarterly. User-initiated calls (e.g. a staff member clicking "Run Deal Triage") carry the user's Google ID token plus the service token; both must validate.
Data sync patterns
| Object | System of record | Replicated to | Sync mechanism |
|---|---|---|---|
| Case | CRM (Mongo) | Read-only mirror on sgcap (D1) | Webhook on Case CRUD → sgcap upserts mirror row. sgcap apps read from mirror; never writes back to Case directly. |
| Lender | CRM (Mongo) | Read-only mirror on sgcap (D1) | Same pattern. Lender Matcher reads mirror; ranking results returned via webhook. |
| Solution Pattern | CRM (Mongo) | Read-only mirror on sgcap (D1) | Same. Pattern Matcher reads mirror for retrieval. |
| Canonical Client Profile | sgcap (D1) | Reference fields surfaced in CRM Client view | CRM reads via GET /v1/client-profile/{client_id}. Edits in CRM push back via POST /v1/client-profile. |
| AICallLog · AISurface registry | sgcap (D1) | Cost / utilisation dashboard accessible from CRM Admin | CRM Admin embeds sgcap dashboard via signed iframe URL. |
| Job results (memos, summaries, filled PDFs) | sgcap (R2) | Permanent artefacts copied to Drive (CRM case folder) | On job complete, sgcap pushes file to CRM via webhook + Drive folder API. Result URL retained in CRM Case activity log. |
| Audit events | CRM (Mongo) | Merge target for both stacks | Every sgcap job completion writes an event row to CRM activity log via webhook. Single audit timeline per Case. |
Mirrored data on sgcap is eventually consistent (typically < 5 seconds after a CRM write). Apps that need exact current state on the case (e.g. Settlement readiness check) re-fetch from CRM at job start rather than trusting the mirror. The mirror exists for read-heavy AI inference, not for transactional reads.
Auth, RBAC, audit, observability
Google Workspace OAuth (sgcap.com.au domain). Both stacks accept the same ID token. Staff sign in once at the start of their day; the token cookie carries across both subdomains.
Four profile types: Staff (Admin sub-role), Introducer, Client, Lender contact. Enforced at every API. Per-portal read scopes. Cross-portal access denied and logged.
Cloudflare Workers secrets for sgcap. Render secret store for CRM. No secret in code, PRs, docs, or chat. Quarterly rotation policy. Both stacks reference the same secret-naming convention.
CRM activity log is the single audit timeline. sgcap pushes events on every job completion. Auditors read one log; both stacks are visible.
Sentry environments for dev/staging/prod on both stacks (separate projects, shared org). PostHog project covers both. UptimeRobot monitors frontend, API, DB, OAuth, Drive, Resend, Xero, AI worker queue, external feed ingest.
Each stack: GitHub → feature branch → PR (with template) → staging auto-deploy → tagged release → production. No edits land on production without a PR + automated check pass. PRs pushed via GitHub Desktop (per Solara's preference).
What lives where — the resolver
| If the requirement is... | It belongs on... | Reason |
|---|---|---|
| User-facing read/write under 500 ms | CRM | Speed-critical interaction. Must not depend on Workers cold start or D1 latency from origin. |
| Long-running compute (> 5 sec or 1 MB+ payload) | sgcap | Async batch tier; cheaper; cannot block CRM event loop. |
| Canonical state mutation (Case, Lender, Pattern, Audit) | CRM | One system of record. Avoids split-brain. |
| AI call to Claude (any model tier) | sgcap | Through the orchestrator. Caching, retry, audit, cost gating all in one place. |
| PDF generation, document parsing, OCR | sgcap | Memory/CPU intensive. R2 storage for staging. |
| Scheduled external feed ingest (Tender Engine, Council DA, ASIC) | sgcap | Cloudflare Cron Triggers; outbound HTTP at the edge. |
| Webhook receiver (e.g. Xero invoice paid, Resend delivery) | CRM | State change consequences must update Case + Audit transactionally. |
| Portal route (Admin / Partner / Client) with RBAC | CRM | Same codebase. Role-gated. No duplicated auth surface. |
| Embedded analytics dashboard (e.g. App Centre cost report) | sgcap (iframe into CRM) | Built once on sgcap; embedded via signed URL so admin sees it inside CRM. |
If a feature could go on either stack, default to sgcap. This keeps the CRM honest — only operational truth and speed-critical reads stay there. Over time, the CRM gets simpler and faster; sgcap gets the capability surface. That's the asymmetry that defends Solara as deal volume grows.
Wireframes · CRM (Operational Stack)
A full re-cut of every CRM surface. Low-fidelity, deliberately, so the build choices stay visible and the developer/founders can see structure without being distracted by polish. Annotations on each frame call out the integration points to apps.sgcap.au.
Wireframes · apps.sgcap.au (AI Workload Stack)
The second surface — apps.sgcap.au — is built around three concepts: the App Centre (triggerable Claude batches), the Document Summariser (live + batch), and the Lender PDF Autofill Engine. Plus the extension apps (lead triage, market intel, vendor outreach, content). Built on Next.js + Cloudflare Workers + D1 + R2. Authenticated via shared Google OAuth.
KPIs & Success Measures
Five anchors. Each anchor has measurable KPIs with today's baseline (or "not measured"), the 12-month target shape, and the surface where the number lives. Every build card in the master plan should point to one of these rows or it is a hobby.
| Anchor | KPI | Today | 12-month target | Surface |
|---|---|---|---|---|
| Speed to Assessment | Time from inbound enquiry → triage decision | Not measured · 21 deals stuck at Lead/Assessing | Same-day for > 80% of inbound | CRM Dashboard · Daily Brief |
| Outstanding checklist items at first review | 102 outstanding · 1 of 27 deals "ready" | < 25% open at first review | Stage gate · Daily Brief | |
| Speed to Solution | Days from "ready" → Solution Options memo issued | Not measured (0% approval, 0/27 submitted) | Median ≤ 5 business days | Stage gate · Pipeline view |
| % deals with matched Solution Pattern at design stage | 0% (no library) | ≥ 80% match rate | Solution Library | |
| Actioning Solutions | Conversion: Solution issued → Capital Matched | Not measured | ≥ 60% | Pipeline view |
| Settlement-on-time rate | ATSolve 26 days overdue | ≥ 85% on or before target settlement | Execution · SLA dashboard | |
| Client Value | NPS at settlement | Not measured | Baseline + quarterly trend | Client portal exit survey |
| Client portal active use during a live case | Portal not yet live | ≥ 70% of live clients log in weekly | Client portal analytics | |
| Business Value | Settled value | $102.5M total applications value | Quarter-on-quarter settled growth | Finance module |
| Revenue per staff member | 5 staff today | Increases as platform automates routine | Finance module | |
| Source attribution coverage | Not captured | 100% of settled deals carry a source | Origination dashboard |
New KPIs introduced by the two-stack model
| KPI | Stack | Today baseline | 12-month target | Why it matters |
|---|---|---|---|---|
| CRM /health latency p95 | CRM | Not measured | ≤ 500 ms | Operational responsiveness; protects user experience |
| sgcap job success rate | sgcap | — | ≥ 99% | Reliability of AI workload tier |
| sgcap median batch latency | sgcap | — | ≤ 4 hours | Batch tier SLA acceptable for non-realtime work |
| Document submission time per deal | sgcap | ≈ half-day | ≤ 1 hour | Single biggest weekly time saver — Bundle Summariser + Autofill combined |
| Cache hit rate on AI orchestrator | sgcap | — | ≥ 35% | Direct AI cost discipline; declared in every new AISurface |
| Lenders mapped in Autofill engine | sgcap | 0 | ≥ 15 (Tier 1 panel) | Every mapped lender = every future deal autofills free |
| Inbound leads with response < 24h | sgcap + CRM | Not measured | ≥ 90% | Lead triage + draft reply makes this trivial |
| Pattern reuse % across new cases | both | 0% | ≥ 70% | IP compounding measure — patterns get reused |
Both stacks report into one quarterly KPI review (last Friday of each quarter). Solara review every row above. KPIs not moving → diagnose the responsible phase; KPIs at target → retire targets in favour of next stretch. The five anchors are the contract; the measures evolve.
Risk Register
Consolidated risks from the v5 register, plus new risks the two-stack model introduces, plus mitigations.
| # | Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|---|
| R1 | Stuck-deal problem persists; pipeline calcifies | High | High | Stage-gate enforcement + days-in-stage SLAs + daily brief surfacing breaches. |
| R2 | Approval rate of 0% reflects an unmeasured workflow | Med | High | Wire approval as explicit stage event; backfill historical approvals; report weekly. |
| R3 | Solution Pattern Library never reaches critical mass | Med | High | Seed with AJM-001 + TAR-002 + 2 fresh; require one pattern card per closed deal. |
| R4 | AI costs run away as surfaces proliferate | Med | Med | Cost-controlled orchestrator (sgcap) · monthly utilisation review · batch tier default. |
| R5 | Tender Engine sources change terms or close access | Med | Med | Portfolio of sources; adapter framework so swapping a source is configuration. |
| R6 | Aggregator / lender panel accreditation drags through ACL | High | Med | Pursue broker-side paths first; lender panel in parallel with proper lead time. |
| R7 | RBAC drift as staff grows past 5 | Low | High | API-level enforcement; role changes through Solara; audit log reviewed monthly. |
| R8 | Founder dependency on Solara for solution interpretation | High today | High | Solution Engine + Pattern Library are the mitigation. Until live, second pair of eyes on every solution. |
| R9 | Google Workspace / Drive outage affects continuity | Low | High | Nightly encrypted backups; documented manual fallback for signings in flight. |
| R10 | Email intelligence drift — false flags / missed urgency | Med | Med | Human review first 90 days; precision/recall reviewed monthly thereafter. |
| R11 | Compliance posture around distressed-deal sourcing (ASIC) | Med | Med | Documented responsible-lending discipline; outreach scripts reviewed pre-launch. |
| R12 | Claude-to-production drift — code reaches prod without tests/review | Med | High | Branch model + PR template + automated checks + Sentry release tagging. |
| R13 | Observability noise crowds out real signals | Med | Med | Monthly review of Sentry + Better Stack alert catalogue; retire noisy alerts. |
| R14 | Native app rollout drains effort from core platform | Low | Med | PWA-first; native shell only when usage data justifies. |
| R15 | NEW · CRM ⇌ sgcap webhook outage stalls case timeline | Med | Med | Idempotent webhook receiver with retry queue + dead-letter on CRM. Manual replay UI. Status visible in Systems panel. |
| R16 | NEW · Stale mirrored data in D1 causes wrong AI output | Med | Med | Apps that need exact state re-fetch from CRM at job start; mirror only for read-heavy inference. TTL on cached rows. |
| R17 | NEW · Two-stack auth drift between Google OAuth scopes | Low | High | Single Google Workspace OAuth app; both stacks accept the same id token; quarterly scope review. |
| R18 | NEW · sgcap-side AI hallucination injects bad data into CRM | Med | High | Structured output schema enforced; human approval gate before any external dispatch; AI Brief / Solution Memo display includes "low confidence" flag. |
| R19 | NEW · Canonical client schema on D1 drifts from CRM client record | Med | High | CRM is system of record for client core fields; sgcap canonical schema written via API from CRM. Diff check on weekly batch. |
| R20 | NEW · Autofill engine produces a wrong PDF that goes to a lender | Low | High | Human approval gate before send for first 90 days; field-level diff against last-approved canonical profile; lender memory flags anomalies. |
Closing & Next Actions
This master plan unifies three documents into one decision-ready roadmap and one full wireframe set. The architecture decision — two stacks, one identity, one audit log — protects the CRM from instability while opening unbounded AI capability on apps.sgcap.au. The phasing protects the build from over-extending. The wireframes show every surface across both stacks so the developer can build to a known target.
What changes vs running the v5 plan as-is
No long-running AI calls inside the FastAPI process. No PDF generation or scraping competing with user requests. Cold-start risk eliminated; user-perceptible latency stays low.
sgcap can run as many batch jobs, autofills and summarisations as the firm needs without touching CRM resources. New AI surfaces ship as new apps in App Centre — no CRM redeploy.
Mapping every lender's PDF and managing 300+ canonical schema fields belongs on D1, not on a transactional Mongo. The architecture makes the highest-ROI AI roadmap item buildable.
Anthropic batch pricing is only available via the batch endpoint. Routing 80% of AI through the App Centre means default is the cheap path.
Immediate next actions (this week)
| # | Action | Owner | Done when |
|---|---|---|---|
| 1 | Review and sign off this master plan with Solara | Solara | Three-way agreement on Phase 1 scope |
| 2 | Confirm apps.sgcap.au domain + Cloudflare Pages project + Workers + D1 + R2 provisioned | Solara + build partner | Domain resolves to placeholder Next.js app, Cloudflare resources visible in dashboard |
| 3 | Cut Phase 1 feature branches in both repos · apply PR template | Partner | Branches exist · template visible · CI checks configured |
| 4 | Upgrade Render off free tier · tighten MongoDB Atlas network policy | Solara | Backend always-on, no cold starts; Atlas allowlist scoped to known origins |
| 5 | Confirm Google OAuth Workspace app supports both subdomains | Partner | JWT round-trip test passes between CRM and sgcap shell |
| 6 | Reconnect Solara's Gmail + Calendar in CRM | Solara | Email + Calendar tabs populate on Solara's account |
| 7 | Stand up UptimeRobot + Better Stack monitors for both stacks | Partner | Status page exists; first hour of monitoring data flowing |
| 8 | Confirm runbook + rollback procedures committed to both repos | Solara | Runbook reviewed by Solara; no secrets present |
Decisions still required from Solara
1. First live Tender Engine source. Marketplace Finance, Valiant Savanna or AFG/LMG/Connective? Recommendation: Marketplace Finance for property focus + Balmain distribution upside.
2. Client portal naming + branding. Subdomain (clients.sgcap.com.au), path (sgcap.com.au/client), or in-CRM?
3. Centurion-side workload home. All Centurion AI apps on apps.sgcap.au (recommended), or separate Cloudflare project for Centurion to keep cost reporting clean?
4. ARITA + CreditorWatch subscriptions. Budget approval to subscribe by end Phase 1 so Phase 4 has live data.
The one-line case
Keep the CRM fast and operationally honest. Build the AI capability on a separate stack that scales independently. Phase the work so every checkpoint moves a KPI. Track every dollar of AI spend at the surface where it was incurred. Compound founder judgement into reusable patterns. By Q4, Solara operates with the leverage of a team five times its size — and the operating system itself, not any individual broker, is the firm's defensible asset.
Solara Global Capital Partners · 24 May 2026 · Reference SGCAP-MASTER-2026-001 · Version 1.0 · Internal · Founders & build team only.
Source documents consolidated: Solara CRM Seven-Day Module Implementation Pack · Solara Global Capital Operating System Final v5 (86 pp) · Solara Global Partners AI Workflow Roadmap.