| Question | Business Value Driver | Short label (chart) | Driver ID |
|---|
| Answer | Meaning | Points |
|---|---|---|
| A | Strongest from a buyer’s point of view | 10 |
| B | Good, with some gaps | 7.5 |
| C | Partly in place | 5 |
| D | Weakest from a buyer’s point of view | 2.5 |
How the result is built
- Driver scores. Convert each answer to points: 10, 7.5, 5 or 2.5.
- Total score. Add the ten driver scores. The total runs from 25 to 100 in steps of 2.5. Show it as it falls: 67.5, 80, 100. Never round.
- Score band. Under 50: Significant value leakage. 50 to 69.5: Valuable foundations, but material risks remain. 70 to 84.5: Strong business with identifiable opportunities. 85 and above: Highly developed and potentially buyer-attractive.
- Three weakest drivers. The three lowest scores. Where scores tie, use the buyer-impact order below.
- Three strongest drivers. The three highest scores among the remaining seven, so a driver can never appear in both lists. Where scores tie, use the strength order below.
- Priority value risk. Every driver scoring 2.5 is a priority value risk, whatever the total. Flag it on the chart, in the score list and on its card. If more than three drivers score 2.5, show three as cards and name the rest in a line beneath them.
- Primary value constraint. The first of the three weakest drivers. This drives section 5 of the page and the first-priority action.
| Tie-break position | Buyer-impact order (for weakest) | Strength order (for strongest) |
|---|
The buyer-impact order puts first the weaknesses that most often reduce price or change deal terms. It needs Simon’s confirmation (section 11).
Two edge cases
If the lowest score is 7.5 or more, section 4 of the page is titled “Areas to protect and develop” instead of “The three areas most likely to reduce buyer confidence”. If the highest remaining score is 5 or less, section 3 is titled “Your relatively strongest areas”. The “All the same” and “Buyer-ready” presets above show both.
Worked example
| Q | Driver | Answer | Points | Result |
|---|
Section 4
The results page, section by section
One scrolling page, in this exact order. Every piece of text comes either from fixed copy (below) or from the content library in section 6, chosen by the scoring rules. The live build in section 2 is the visual reference for each part.
1. Result header
Product name, the headline “How would a sophisticated buyer see your business today?”, the buyer summary paragraph, and a dark blue score panel showing “Business Value Reality Check Score™”, the total out of 100 and the band name. Call it the Business Value Reality Check Score™, never an “Enterprise Value Score”. On desktop the score panel sits to the right of the headline; on mobile it sits directly under the headline, before the summary.
2. Your business through a buyer’s eyes
The spider diagram (section 5) with the numbered list of all ten drivers and their scores beside it on desktop, below it on mobile. Both are always shown: the chart gives the shape, the list gives the numbers. Caption: “The further the line extends towards the outside of the chart, the stronger that area is likely to appear to a buyer.”
3. Your three strongest value drivers
Three cards: driver name, score out of 10, the subheading “Why a buyer would like this” and the driver’s strength text from the library. Side by side on desktop, stacked on mobile. Orange top rule.
4. The three areas most likely to reduce buyer confidence
Three cards in weakest-first order: driver name, score, the subheading “What a buyer would question” and the driver’s concern text. Dark blue top rule. Any 2.5 card carries a black “Priority value risk” tag sitting on its top rule.
5. Primary value constraint
The strongest visual moment after the chart: a full-width dark blue panel with the corner clip. It shows “The first thing we would address”, the driver name, its score, the fixed line “Your lowest-scoring area is currently likely to create the greatest friction with a sophisticated buyer.”, the driver’s “Why it matters” text, and a white inset headed “First priority” with the driver’s single practical action.
6. If I were a buyer…
Two columns: “What would give me confidence” lists the short confidence phrases of the three strongest drivers; “What I would investigate” lists the short investigate phrases of the three weakest. Then the fixed line: “None of these weaknesses means your business is unattractive. They show where increasing buyer confidence could increase your options and potentially protect value.”
7. What does your score mean?
The four bands as one horizontal scale, widths in proportion to their ranges, with a marker at the founder’s score. Only the founder’s own band is filled orange and labelled “Your position”. On mobile the bands stack as rows and the marker is dropped. Then the fixed line: “Your score is a starting point, not a valuation. Businesses with similar profits can attract very different values depending on risk, dependency, quality of earnings and buyer confidence.”
8. Booking
Black panel with the corner clip. Headline “Want to understand what this could mean for the value of your business?”, the three things a confidential conversation covers, and the button Book my confidential Business Value Review. The meeting length goes in the small line under the button, never on the button itself. This replaces “Book a 45 min call”.
General rules
- No numbers other than scores anywhere on the page: no currency, multiples or percentages of value.
- No animation except, optionally, the chart shape drawing in once when it first scrolls into view. Skip even that when the user has reduced motion turned on.
- The page must work without the summary paragraph having loaded. Render the template summary immediately and replace it only if an approved AI summary arrives within the time limit (section 7).
- Give the founder a way back to this page: include a unique results link in the email.
Section 5
The spider diagram
The centrepiece of the page. It is drawn as plain SVG by AcuityRC.radarSVG() with no chart library, so the same function draws the page chart and the image in the email.
| Element | Specification |
|---|---|
| Axes | Ten, one per driver, clockwise from 12 o’clock in question order |
| Scale | 0 at the centre to 10 at the edge. Grid rings at 2.5, 5, 7.5 and 10, drawn in dark blue at 12% opacity; outer ring at 35% |
| Founder’s shape | Orange #ED732E fill at 18% opacity, 2.5px orange outline, rounded joins, orange point on every axis |
| Reference ring | Dashed dark blue ring at 7.5: “the level at which a buyer would typically feel confident”. Explained in a one-line key under the chart. Optional: needs sign-off (section 11) |
| Priority value risk | Point drawn as a black ring with a black centre instead of an orange dot; its label reads “2.5 priority risk” in black |
| Labels, desktop | Short driver label in grey plus the score beneath it, outside the edge. Full names appear in the list beside the chart |
| Labels, narrow screens | Below 480px of available width the chart switches to question numbers only (1 to 10), matching the numbered list underneath. This keeps it legible on phones |
| Accessibility | The SVG has an aria-label listing all ten scores; the list beside it is the text alternative |
Do not colour the chart by score, and do not use green, amber or red anywhere on the page. The shape itself shows strength; black marks the priority risks.
Section 6
Content library
All the founder-facing text for each driver. The scoring rules decide which text appears; nobody writes copy at run time. Strength and concern texts are kept to about 45 words so the cards stay short.
This text lives in the DRIVERS list inside rc-engine.js. Edit it there and nowhere else, so the page, the email and the Acuity Flow record always agree.
Section 7
Buyer summary paragraph
Launch with the template summary that the engine already writes. It is accurate for every combination of answers, costs nothing and never fails. An AI-written version is optional and can be added later without changing anything else.
Template summary (default)
The engine builds it from the band, the top two strengths and the primary value constraint. For the worked example:
AI summary (optional, needs sign-off)
If Acuity approves it, the page may ask Claude for a more natural paragraph. The rules are strict because this text sits under the Acuity name:
- Call it from the server, never from the browser. Send only the driver names and scores, never the founder’s name, email or company.
- Wait at most 4 seconds. If it is late, fails or breaks a rule below, keep the template summary.
- Reject the response if it is under 45 or over 75 words, contains any figure other than the total score, mentions money, price, multiples or “worth”, or does not name the primary value constraint.
- Store which version the founder saw in
summary_source(templateorai).
System prompt
You write one paragraph for the results page of the Acuity Business Value Reality Check, a diagnostic for founders of established UK owner-managed businesses. Write in British English, in the second person, in the calm, precise voice of a senior corporate finance adviser. You receive ten driver scores out of 10, the total out of 100, the score band, the three strongest drivers and the primary value constraint. Write 50 to 70 words that: - say how a sophisticated buyer would be likely to see the business today - name the one or two most valuable strengths - name the primary value constraint and why a buyer would focus on it - end constructively Rules: no numbers except the total score; never mention price, value in money, multiples or what the business is worth; do not give advice or instructions; no exclamation marks, no hype, no filler. Return the paragraph only.
Section 8
Founder email
Sent as soon as the results page loads. V1 is a well-designed HTML email; a PDF can follow later and should not delay launch.
| Item | Specification |
|---|---|
| Subject | Your Acuity Business Value Reality Check |
| From | Acuity Corporate Finance, from a monitored address so replies reach the team |
| Contents, in order | Score and band, summary paragraph, spider diagram, ten scores in one line, three strongest, three weakest (with any priority value risk marked), primary value constraint and first priority, booking button, diagnostic disclaimer |
| Spider diagram | A PNG, not SVG (Gmail and Outlook do not display SVG). Render radarSVG() to PNG on the server at 1200px wide and host it; see section 10 |
| Width and layout | 600px, table-based, inline styles. Poppins with Arial fallback, as many email apps ignore web fonts |
| Plain-text version | Required. Same content without the chart |
| Results link | Add a unique link back to the founder’s results page above the booking button |
Below is the email the engine produces for the answers currently selected in section 2 (the chart shows as SVG in this preview; production uses the PNG).
Section 9
Acuity Flow record
Every completed Reality Check creates or updates a contact and company in Acuity Flow. This replaces the current Monday.com routing. The point is not just lead capture: before anyone at Acuity speaks to the founder, Acuity Flow should already tell us what conversation to have.
When to write
- Email gate submitted: create or update the contact, matched on work email. Calculate the result on the server from the ten answers and save the full record.
- Results page shown: set
result_page_viewedto true. - Booking made: the booking tool’s confirmation sets
booking_completedto true.
| Acuity Flow field | Key | Content |
|---|---|---|
| Contact name | contact_name | From the email gate |
| Work email | work_email | From the email gate; the matching key |
| Company | company | From the email gate |
| Completion date and time | completed_at | ISO timestamp, UTC |
| Campaign source, medium, campaign | utm_source, utm_medium, utm_campaign | From the landing URL, carried through the session |
| Reality Check Score | reality_check_score | Number, e.g. 67.5 |
| Score band | score_band, score_band_label | e.g. “50–69” and its name |
| Q1 to Q10 answers | answers | Letter and the full answer text the founder saw |
| Ten driver scores | driver_scores | 2.5 to 10, keyed by driver ID |
| Strongest three | strongest_3 | Driver IDs, in order |
| Weakest three | weakest_3 | Driver IDs, weakest first |
| Priority value risks | priority_value_risks | Every driver ID scoring 2.5 |
| Primary value constraint | primary_value_constraint | Driver ID |
| Buyer summary | ai_buyer_summary, summary_source | The paragraph shown, and whether it was template or AI |
| First priority action | first_priority_action | Text shown in section 5 of the page |
| Marketing consent | marketing_consent | True or false, from the email gate |
| Result page viewed | result_page_viewed | True or false |
| Booking completed | booking_completed | True or false |
Payload for the answers selected in section 2
Section 10
Code and integration
Two files do all the work: rc-engine.js (scoring, content, chart, page, email and payload) and rc-results.css (page styles). They are supplied alongside this document and reproduced in full below.
Security
Always recalculate the result on the server from the ten answers before saving or emailing it. The browser result is for display only, so nobody can post a made-up score into Acuity Flow.
Results page (browser)
<link rel="stylesheet" href="/reality-check/rc-results.css">
<div id="rc-results"></div>
<script src="/reality-check/rc-engine.js"></script>
<script>
// answers collected on the question screens, in order Q1..Q10, as A/B/C/D
const result = AcuityRC.calculate(answers);
AcuityRC.renderResults(document.getElementById('rc-results'), result, {
bookingUrl: BOOKING_URL,
ctaNote: 'A 45-minute confidential conversation with our Corporate Finance team. No obligation.'
});
</script>
Completion handler (Node server)
const AcuityRC = require('./rc-engine.js');
const { Resvg } = require('@resvg/resvg-js'); // npm i @resvg/resvg-js
async function completeRealityCheck({ answers, contact, utm, consent, answerText }) {
const result = AcuityRC.calculate(answers); // server-side, authoritative
// 1. Acuity Flow
const payload = AcuityRC.acuityFlowPayload(result, { contact, utm, consent, answerText });
await acuityFlow.upsertContact(payload); // endpoint to be confirmed by Acuity
// 2. Spider diagram as PNG for the email
const png = new Resvg(AcuityRC.radarSVG(result.drivers), {
fitTo: { mode: 'width', value: 1200 },
font: { loadSystemFonts: true, defaultFontFamily: 'Poppins' }
}).render().asPng();
const radarSrc = await storage.putPublic(`rc/${payload.completed_at}-${contact.email}.png`, png);
// 3. Founder email
const html = AcuityRC.emailHTML(result, { radarSrc, bookingUrl: BOOKING_URL, resultsUrl, firstName: contact.firstName });
await mailer.send({ to: contact.email, subject: 'Your Acuity Business Value Reality Check', html });
return result;
}
Install Poppins on the server so the PNG labels render in the brand typeface. acuityFlow, storage and mailer stand for your existing services.
rc-engine.js
rc-results.css
Section 11
Acceptance and sign-off
The build is complete when
- For each of the four test scenarios in section 2, the live results page matches the reference build: same score, band, strongest and weakest three, constraint and text.
- Scores show with one decimal only where needed (67.5, 80) and are never rounded.
- Every 2.5 driver is marked as a priority value risk on the chart, the list and its card; extra ones are named under the cards.
- The page matches the eight-section order and works from 360px to 1440px wide; the chart switches to numbered labels on narrow screens.
- No gauges, traffic-light colours, currency, multiples or “worth” anywhere.
- The page renders fully with the template summary even if the AI summary is switched off or fails.
- The founder email arrives within one minute, shows the PNG chart in Gmail, Outlook and Apple Mail, and has a plain-text version.
- The Acuity Flow record contains every field in section 9, matched on work email, with the score recalculated on the server.
result_page_viewedandbooking_completedupdate correctly.- The booking button reads “Book my confidential Business Value Review” and goes to the approved booking page.
Decisions needed from Simon before launch
- Worked example total. Confirm 67.5 (the correct sum of the brief’s driver scores), or give revised driver scores if the example should show 72.5.
- Question mapping. Confirm that Manjit’s ten questions follow the driver order in section 3 and that each question’s strongest answer is stored as A.
- Reference ring at 7.5. Keep the dashed “buyer would typically feel confident” ring on the spider diagram, or remove it.
- Tie-break orders. Confirm the buyer-impact and strength orders in section 3.
- Content library. Approve the strength, concern, “why it matters” and first-priority texts in section 6.
- AI summary. Launch with the template summary only, or switch on the AI version under the rules in section 7.
- Booking. The booking page URL and the meeting length for the line under the button.
- Acuity Flow. The endpoint and authentication details for the team to connect to.