Dashboard
Your organisation's pipeline overview
Active opportunities
—
Pending approval
—
Approved this month
—
Pipeline value
—
Some cost models are below the minimum margin threshold and require approval.
Recent opportunities
No opportunities yet. Create your first cost model →
New cost model
Complete the brief and generate an AI-powered cost model for your opportunity
Customer & opportunity
Commercial & rate card
T&M: No contingency. Fixed Price: 25% default. ROM: 40% uplift.
PMO scale & workstreams
Light
Simple / single
Medium
Multi-workstream
High
Programme
Simple / single workstream projects. Low complexity. Minimal governance overhead.
Project Management
Always included
Engagement brief
Used directly by the AI to generate tasks, resources, and effort estimates.
Drop files or click to browse
PDF, Word, Excel — up to 25MB
AI generation
Powered by ClaudeClaude will generate a complete cost model with tasks, resources, effort, and pricing. Review and amend all values before submitting for approval.
Opportunities
All cost models in your organisation
← Opportunities
·
—
—
Draft
Cost model
| Workstream | Phase | Task | Resource | Days | Rate (£) | Sell (£) | Cont% | Total (£) |
|---|
Import existing cost model
Upload an Excel (.xlsx) cost model to replace or merge with the current rows
Drop your Excel cost model here
or click to browse · .xlsx or .csv files · Columns: Workstream, Phase, Task, Resource, Days, Day Rate
AI cost model update
Describe what you want to change and the AI will update the cost model accordingly. Be specific — e.g. "Add 5 days of cyber security testing in the Build phase", "Increase all PM days by 20%", or "Replace Technical Consultant with Solution Architect throughout".
Version history
Notes & comments
Approvals
Review and approve cost models submitted by your team
SoW Generator
Select a saved cost model, then generate a complete AI-written Statement of Works
Step 1 — Select cost model
Required
Step 2 — SoW template (optional)
Word .docx supported
Not uploaded
Upload your organisation's Word document (.docx), plain text (.txt), or Markdown (.md) SoW template.
Place
{{tag}} placeholders
anywhere in the template where you want AI-generated content inserted.
The AI reads your full template structure and replaces every tag with content derived from the selected cost model.
Supported placeholder tags
{{background}}
{{requirements}}
{{project_approach}}
{{milestones}}
{{raid_table}}
{{commercials}}
{{assumptions}}
{{out_of_scope}}
{{resource_plan}}
{{acceptance_criteria}}
{{governance}}
{{customer_name}}
{{project_title}}
{{total_value}}
{{start_date}}
💡 Tip: You can use any tag name — e.g.
{{your_custom_section}}.
The AI will detect all {{tags}} in your document and replace them intelligently.
How to add tags to your Word template
1. Open your Word document ·
2. Place your cursor where you want AI content ·
3. Type the tag exactly:
{{background}} ·
4. Save and upload below ·
5. The AI replaces every tag with content from your cost model
📄
.docx
Word document
·
📝
.txt
Plain text
·
✍️
.md
Markdown
Drop your Word template here or click to browse
Or skip this step to have AI generate the full SoW structure automatically
Step 3 — Document details & generate
Background & Objectives
Requirements
Project Approach
Milestones & Phases
RAID Table
Commercials
Resource Plan
Assumptions & Dependencies
Out of Scope
Acceptance Criteria
Governance & Reporting
Competitor Analysis
PRO
Compare your cost model against a competitor quote and get AI-powered recommendations to win the bid
Step 1 — Select your cost model
Required
Step 2 — Competitor details
The company you are competing against for this bid.
Their total quoted price in £ (or your currency). Enter without commas.
Price
Delivery confidence
Track record
Innovation
Team quality
Speed to deliver
Risk reduction
Cultural fit
Step 3 — AI bid analysis
Powered by Claude
Claude will analyse your cost model against the competitor quote, assess the commercial gap, and produce specific recommendations across pricing, workstream scope, commercial framing, and win strategy.
Engagement Templates
Saved engagement types your team can start from — no blank-page syndrome
No templates saved yet. Generate a cost model and save it as a template for your team to reuse.
Billing & Plan
Manage your subscription, usage, and API top-ups
Current plan
Trial
AI generation usage this month
0 / 200 generations used
0%
Usage resets on the 1st of each month. Top-up credits never expire and are used after your monthly allowance is exhausted. Trial accounts include 50 generations total. Professional plan includes 200/month.
Plan comparison
| Feature | Free | Professional |
|---|---|---|
| AI generations/month | 3 | 200 (+ top-ups) |
| Users per organisation | 1 | Unlimited |
| SoW generator | ✕ | ✓ |
| Approval workflow | ✕ | ✓ |
| Rate card management | ✕ | ✓ |
| Templates | ✕ | ✓ |
| AI top-up credits | ✕ | ✓ |
| Shared Anthropic AI connection | ✓ | ✓ |
Upgrade to Professional — £199/month
Cancel anytime · Secure payment via Stripe · CostModel.co.uk
SUPER ADMIN
Global Platform Settings
Manage the global Cloudflare Worker, Anthropic API key, and all tenant activity. Visible to you only.
Global Anthropic API key
Your account · Controls all usage
This key is used for all AI generation across every tenant in the platform. It is never exposed to admins or users. Set it here and it is stored encrypted in the Worker environment via
wrangler secret put ANTHROPIC_KEY.
Stored in your browser only for this super admin session. In production, set this via the Worker secret — never in code.
Global Cloudflare Worker
● Not configured
This single Worker handles all tenant AI requests. Set ANTHROPIC_KEY as a Worker secret — not here.
Cloudflare Worker script
Paste this entire script into the Cloudflare Worker code editor. Add
ANTHROPIC_KEY and WORKER_TOKEN as encrypted variables in Worker → Settings → Variables.
// CostModel.co.uk — Cloudflare Worker
// 1. Paste into Cloudflare Worker editor → Deploy
// 2. Worker → Settings → Variables → add ANTHROPIC_KEY + WORKER_TOKEN (both encrypted)
// 3. Copy Worker URL → paste into Global Worker URL above + append /api/claude
const CORS = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, X-Worker-Token',
};
export default {
async fetch(request, env) {
if (request.method === 'OPTIONS') return new Response(null, { headers: CORS });
const url = new URL(request.url);
const path = url.pathname;
if (path !== '/api/health') {
const token = request.headers.get('X-Worker-Token');
if (env.WORKER_TOKEN && token !== env.WORKER_TOKEN)
return new Response('Unauthorized', { status: 401 });
}
if (path === '/api/health')
return new Response(JSON.stringify({ ok: true, service: 'CostModel.co.uk Worker' }),
{ headers: { 'Content-Type': 'application/json', ...CORS } });
if (path === '/api/claude' && request.method === 'POST') {
const body = await request.json();
const resp = await fetch('https://api.anthropic.com/v1/messages', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'x-api-key': env.ANTHROPIC_KEY, 'anthropic-version': '2023-06-01' },
body: JSON.stringify({ model: body.model || 'claude-sonnet-4-20250514', max_tokens: Math.min(body.max_tokens || 6000, 8000), system: body.system, messages: body.messages }),
});
const data = await resp.json();
return new Response(JSON.stringify(data), { headers: { 'Content-Type': 'application/json', ...CORS } });
}
if (path === '/api/send-otp' && request.method === 'POST') {
const { email, code, fromEmail, fromName } = await request.json();
await fetch('https://api.mailchannels.net/tx/v1/send', {
method: 'POST', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
personalizations: [{ to: [{ email }] }],
from: { email: fromEmail || 'noreply@costmodel.co.uk', name: fromName || 'CostModel.co.uk' },
subject: 'Your CostModel.co.uk sign-in code',
content: [{ type: 'text/html', value: '<div style="font-family:sans-serif;max-width:520px;margin:0 auto;padding:20px"><h2 style="color:#185FA5">Your sign-in code</h2><p>Use this code to sign in to CostModel.co.uk:</p><div style="font-size:36px;font-weight:800;letter-spacing:8px;color:#4F46E5;background:#EEF2FF;padding:16px;text-align:center;border-radius:8px;margin:16px 0">' + code + '</div><p style="color:#888;font-size:12px">Expires in 10 minutes. If you did not request this, ignore this email.</p><p style="font-size:11px;color:#aaa;margin-top:16px">© 2025 CostModel.co.uk</p></div>' }]
}),
});
return new Response(JSON.stringify({ ok: true }), { headers: { 'Content-Type': 'application/json', ...CORS } });
}
return new Response('Not found', { status: 404 });
}
};
Steps:
1. Cloudflare → Workers & Pages → Create application → Worker → name it
2. Click Edit code → select all → delete → paste script above → Deploy
3. Worker → Settings → Variables → add
4. Copy Worker URL from Overview → paste into Global Worker URL above + append
1. Cloudflare → Workers & Pages → Create application → Worker → name it
costmodel-api → Deploy2. Click Edit code → select all → delete → paste script above → Deploy
3. Worker → Settings → Variables → add
ANTHROPIC_KEY (sk-ant-… encrypted) and WORKER_TOKEN (random string, encrypted)4. Copy Worker URL from Overview → paste into Global Worker URL above + append
/api/claude → Save & Test
Stripe & billing configuration
Platform-wide
Configure payment processing for all tenants. Your Stripe Secret Key must be set in Cloudflare Worker → Settings → Variables as
STRIPE_SECRET_KEY — never here. Everything below is safe to store.
Starts with pk_live_ · Safe for frontend use.
From Stripe → Payment Links.
Stripe → Settings → Billing → Customer portal. Used for cancellations.
Global usage limits
Global mail settings
● Not configured
Configure how transactional emails are sent — OTP codes, approval notifications, user invitations, and subscription confirmations.
The platform supports MailChannels (free via Cloudflare Workers) or any SMTP provider (SendGrid, Postmark, Mailgun, etc.).
✓ No configuration needed. MailChannels works automatically when your Cloudflare Worker is deployed. Ensure your domain has SPF and DKIM records set for best deliverability.
The address emails will be sent from. Must match your verified domain.
Email templates
OTP / Sign-in code
Sent when a user requests a sign-in code
User invitation
Sent when an Admin adds a new team member
Approval notification
Sent to Admins when a cost model is submitted for approval
Approval decision
Sent to the submitter when a cost model is approved or declined
Trial expiry reminder
Sent 3 days and 1 day before trial ends
All registered organisations
—
| Organisation | Plan | Users | Generations | Trial ends | Created |
|---|
Rate Cards
Manage resources, cost prices, sell prices and margins — Admin only
Rate Card
🔒 Financial data — Admin only
| Code | Resource name | SFIA | Area | Cost (£/day) | Sell (£/day) | Margin % |
|---|
Users & Access
Manage your organisation's team members
?
—
—
Currency: —
Min margin: —%
Team members
| Name | Role | Status | Added |
|---|
Settings
Defaults and preferences for your organisation
AI generation defaults
Approval workflow
When triggered, the cost model is locked and routed to Admins for sign-off before it can be submitted to a customer.
Roadmap & Ideas
Progress review, what has been built, and what comes next
🚀
Cost Model Automation — Platform Overview
A multi-tenant SaaS platform purpose-built for Professional Services teams. AI-powered from brief to SoW, with full billing, approvals, competitor analysis, and enterprise security built in.
30+
Features built
3
Pricing tiers
<30m
Brief → SoW
£199
Per org/month
200
AI gens/month Pro
✅ What has been built
🔐 Identity & Security
✓Multi-tenant architecture — full org data isolation
✓Email OTP sign-in — no passwords stored
✓OTP verification on registration with resend
✓Role-based access — Admin vs User
✓Super Admin account — global platform controls, hidden from all other users
✓Account-not-found modal popup before OTP is sent
✓First-registrant-is-Admin enforcement
✓No org search at login — businesses invisible to each other
💰 Cost Model Engine
✓AI-generated cost models from engagement brief
✓Workstream & phase builder (up to 10 workstreams)
✓Per-workstream phase editor with custom phase support
✓PMO scale selector (Light / Medium / High)
✓T&M / Fixed Price / ROM with contingency defaults
✓Mandatory PM rows — Initiation & Project Closure always included
✓Rate card dropdown on model creation
✓Inline day editing with live recalculation
✓Export to Excel (.xlsx)
📂 Opportunity Detail
✓Click any opportunity card to open full detail view
✓Upload existing Excel cost model (replace or merge)
✓AI natural language update — "add 5 days to deployment phase"
✓Version history — every save creates a timestamped snapshot
✓Internal comments & notes thread per opportunity
✓Submit for approval direct from detail view
✓Generate SoW direct from detail view
📄 SoW Generator PRO
✓AI-written SoW from cost model data
✓Word (.docx) template upload with automatic tag detection
✓{{placeholder}} tag replacement driven by cost model
✓Plain text & markdown template support (.txt, .md, .docx)
✓Section selector — toggle which sections to generate
✓Download as .txt, copy to clipboard
✓Locked behind Pro plan gate for free/expired users
🏆 Competitor Analysis PRO
✓Select cost model vs competitor name & quote
✓Deal context — incumbent, relationship, stage, budget, decision criteria
✓AI win probability score (0–100%) with colour-coded verdict
✓Commercial analysis — price gap, margin recommendation, suggested adjustment
✓Per-workstream findings and recommendations
✓Prioritised win strategies with rationale
✓Risk factors with mitigations
✓AI-generated proposal language — one-click copy
✓Apply recommendations to cost model, export analysis
✅ Approvals & Workflow PRO
✓Submit for approval (Draft → In review → Approved / Declined)
✓Admin approve / decline with mandatory notes
✓Margin guardrail — flags below-threshold models
✓Approval badge on sidebar with live pending count
✓Pro plan gate — lock screen for free/expired users
💳 Rate Cards & Billing
✓Multiple rate cards — create, rename, duplicate, delete
✓Cost, sell & margin — Admin-only financial data
✓Free / Trial (14-day) / Professional plan tiers
✓200 AI generations/month on Pro (50 on trial, 3 free)
✓25 user limit on Pro (5 trial, 1 free) — enforced on add
✓Stripe payment integration — £199/org/month
✓Top-up credit packs (50 / 150 / 500 generations)
✓Cancel subscription via Stripe customer portal
✓Plan picker on registration (Free or Professional trial)
⚙️ Platform & Super Admin
✓Global Anthropic API key — shared, never exposed to users
✓Cloudflare Worker proxy — no per-user API keys needed
✓Global mail settings — MailChannels or SMTP provider
✓5 email templates with live preview (OTP, invite, approval, decision, trial)
✓All registered organisations visible to Super Admin
✓Global usage limits — daily per user, monthly per org
✓Mark org as paid from Super Admin dashboard
🔒 Pro Plan Gating
✓Lock screens on SoW, Approvals, Templates, Competitor Analysis
✓PRO badge on all gated nav items
✓Hard expired trial gate — blocks app until upgrade or free plan chosen
✓Stripe CTA on every gate — direct link to checkout
✓Generation limit enforced with top-up prompt when exceeded
✓User limit enforced on add — redirect to billing to upgrade
👥 Users & Teams
✓Self-service org registration worldwide
✓Admin adds team members with temporary passwords
✓Role management (Admin ↔ User) and user removal
✓Engagement templates — save, share & reuse across team
✓Org profile — country, currency, industry, margin guardrail
🏗️ What is being built next
🔥 High priority — maximum SA time saving
PDF export for SoW
Generate a professionally branded PDF from the SoW output — branded cover page, table of contents, customer logo placeholder, and page numbering. The single most-requested feature in PS pre-sales. Deployable via Cloudflare Worker using a headless PDF library.
Win probability scoring on dashboard
Surface the AI win probability from competitor analysis directly onto each opportunity card on the dashboard and pipeline view. At-a-glance deal health for the whole pipeline without having to open each one. Colour-coded by risk band. Transforms leadership pipeline reporting.
Customer-facing commercial summary PDF
A clean one-page PDF of the cost model with cost price and margin stripped — only what the customer needs to see. Branded with your org logo. SA sends alongside the SoW as a professional deliverable without revealing internal financials. High-value, zero-effort output.
Smart brief analyser
Before generating, AI reads the engagement brief and flags: likely missing workstreams, specialist roles that should be present (e.g. "brief mentions GDPR — Cyber Security Architect not in model"), typical scale for this engagement type, and vague language that could cause scope creep. Catches commercial risk before the model is built.
⚡ Medium priority — great for teams at scale
Historical benchmarking
Once a body of approved cost models exists, AI compares new estimates against similar past engagements: "Modern Workplace at this scale averaged 12 PM days — yours has 8. Previous similar deals ran 20% over on discovery." Prevents chronic under-estimation and improves accuracy over time.
Lessons learned feed
Capture a brief retrospective when a project closes — what was underestimated, what overran, what the customer raised. These feed back into AI generation so the platform learns from delivery history. A genuine competitive moat that improves with every engagement.
CRM integration (Salesforce / HubSpot / Dynamics)
One-click push of opportunity name, value, stage, SA, and win probability to your CRM. Eliminates duplicate data entry. Bi-directional — pull CRM opportunities in to create cost models against them. Implemented via Cloudflare Worker to CRM API. Eliminates the biggest double-entry pain point in PS teams.
Slack & Microsoft Teams notifications
Notify SA and PM when a cost model is submitted, approved, or declined — directly in their Slack channel or Teams workspace. Include the headline financials and a deep link back to the opportunity. Trivial to implement via Worker webhooks. Keeps the team engaged without checking the app.
Multi-currency throughout
Apply the org currency (already stored) consistently across rate cards, cost model display, SoW commercials, billing page, and dashboard pipeline totals. Live exchange rate conversion for cross-currency rate cards. Essential for orgs operating across multiple markets or billing in multiple currencies.
✨ Coming later — polish, scale & enterprise
Time-phased revenue & resource chart
Visualise projected revenue and resource demand week-by-week across the engagement timeline derived from the cost model phases. Interactive chart with hover tooltips. Useful for finance sign-off and capacity planning conversations.
Immutable audit trail
Every change to a cost model, rate card, or user stored as an append-only log — who did it, when, and what changed. Surfaced as a timeline in opportunity detail. Critical for regulated industries (financial services, healthcare, government) and enterprise procurement sign-off.
Mobile-optimised view
Read-only mobile view of pipeline, opportunity status, and approval actions. Full creation workflow stays desktop-first. Progressive Web App (PWA) for home screen installation so SAs can check and approve on the go.
SSO / SAML for Enterprise
Enterprise sign-in via Azure AD, Okta, or Google Workspace. Cloudflare Access supports SAML natively. Custom subdomain per org (acme.costmodel.co.uk) with custom branding. Enterprise-tier feature unlocking larger deal sizes and procurement-friendly security posture.
Public marketing site
A proper costmodel.co.uk marketing site — feature pages, pricing comparison, customer testimonials, and a free trial CTA. Built on Cloudflare Pages, separate from the app. Drives organic acquisition and gives the Stripe checkout a trusted source to link back to.
💡 The core value proposition
⏱️
Time saving
Brief → cost model → SoW in under 30 minutes. A process that previously took 2–3 days of an SA or PM's time.
🎯
Accuracy
AI applies the rate card consistently. No forgotten workstreams, no rate card errors, no copy-paste mistakes from previous models.
🏆
Win rate
Competitor analysis with AI win probability and bid strategy transforms how SAs approach contested deals. Data-driven commercial positioning instead of gut feel.
🔒
Governance
Approval workflows, margin guardrails, version history, and plan-based access control mean nothing slips through below margin and leadership always knows pipeline state.