================================================================ # ChainSolve Tagline: Build. Compute. Share. Legal name: Godfrey Engineering Ltd Domain: www.chainsolve.co.uk Contact — support: support@chainsolve.co.uk Contact — sales: sales@chainsolve.co.uk Contact — legal: legal@chainsolve.co.uk Companies House: 16845827 (England & Wales) Socials: - github: https://github.com/GodfreyEngineering - linkedin: https://linkedin.com/company/godfrey-engineering Generated: 2026-04-24T15:43:19.838Z Source files: 13 This file follows the llms-full.txt convention (https://llmstxt.org). Every content file under src/content/{pages,services,products,legal,blog}/en is serialised below. Non-EN translations live at /{locale}/. ================================================================ # About — ChainSolve URL: https://www.chainsolve.co.uk/about - Title: About — ChainSolve - Description: ChainSolve is built by Godfrey Engineering Ltd — a UK engineering consultancy with a decade of automotive and motorsport programmes behind it. Our story, mission, and the team. ## Sections [hero-centered] [About ChainSolve] Built by engineers, for engineers ChainSolve is a product of Godfrey Engineering Ltd — a UK engineering consultancy that got tired of building spreadsheet after spreadsheet for its own clients and decided to build a better tool. [feature-list] [Our mission] What we are trying to do • Replace the spreadsheet for technical work — The spreadsheet is the most widely-used calculation tool in engineering. It is also the worst, once a problem is non-trivial. Dependency graphs, not cell references, are the right mental model. • Keep the computation local — Engineering calculations should not require a round trip to a cloud. They should run at sub-frame latency in the browser you already have open. Rust + WebAssembly gets us there. • Let the engineer work in the open — A ChainSolve canvas is a URL. Share it, review it, audit it, embed it in a report. A calculation chain should be as accountable as a piece of code. [feature-grid] [Values] How we build • Accuracy — Every block is unit-tested against a reference implementation. We will not ship a numerical primitive that is subtly wrong. • Transparency — The computation engine is open in spirit even if not yet open source. You can inspect every intermediate value at every step, always. • Accessibility — WCAG 2.2 AA across the marketing site and the app. Keyboard-complete canvas. RTL layout for Hebrew. Engineering tools should not gatekeep. • Innovation — We ship new block types every release. The block library is the product; if you tell us a calculation is painful, we listen. [timeline] [History] How ChainSolve got here [team-grid] [Who builds it] The team [cta] Want to work with us? Godfrey Engineering takes on a limited number of consulting engagements each year. If you have a hard engineering problem, we would like to hear about it. ================================================================ # Contact — ChainSolve URL: https://www.chainsolve.co.uk/contact - Title: Contact — ChainSolve - Description: Get in touch with the ChainSolve team. Support, sales, legal, bug reports, feature requests — all the ways to reach us. ## Sections [hero-centered] [Contact] Tell us what you need A real engineer reads every message. We aim to reply within one working day. [contact-form] [Send a message] Start the conversation Fill in the form and we will route your message to the right place. [feature-grid] [Prefer email?] Direct channels • General — info@chainsolve.co.uk • Support — support@chainsolve.co.uk • Sales — sales@chainsolve.co.uk • Legal / data protection — legal@chainsolve.co.uk • Bug reports — bugs@chainsolve.co.uk • Feedback — feedback@chainsolve.co.uk [newsletter-section] Changelog digest Sign up for a monthly round-up of new blocks, significant performance wins, and product news. No spam. [rich-text]

Registered office. ChainSolve is a product of Godfrey Engineering Ltd.

Godfrey Engineering Ltd is registered in England & Wales, Companies House No. 16845827.

================================================================ # Features — ChainSolve URL: https://www.chainsolve.co.uk/features - Title: Features — ChainSolve - Description: 150+ block types across maths, data transformation, control flow, iteration, I/O, visualisation, custom scripting, and real-time collaboration. See what ChainSolve can do. ## Sections [hero-centered] [Features] One hundred and fifty block types, one computation engine ChainSolve ships a complete library of computation primitives. Mix and match them on a canvas, wire inputs to outputs, and watch results flow through instantly. [feature-grid] [Block categories] Eight categories of blocks • Maths — Algebra · trigonometry · calculus · linear algebra · statistics. Vectorised over arrays and matrices. • Data transformation — Filter, map, reduce, pivot, join. Every transformation is a block you can plug into a pipeline and inspect at any step. • Control flow — If / else branching, switch cases, comparison operators. Compose conditional calculation chains without custom code. • Iteration — Loops with convergence detection. Iterate until a value stabilises, a tolerance is met, or a counter expires. • I/O — CSV import and export · HTTP / API connectors · database queries · webhooks. Pull live data into a calculation and push results out. • Visualisation — Line · scatter · bar · heatmap · 3D surface plots. Formatted output tables. Every visual updates as the underlying data flows through. • Custom blocks — Package TypeScript or Python logic as a reusable block when the stock library does not quite fit. Share across projects and teams. • Collaboration — Real-time canvas editing · live cursors · presence · shared workspaces · audit logs (Team and Enterprise plans). [feature-list] [What makes it fast] Rust + WebAssembly computation engine • Sub-frame latency — The engine compiles calculation graphs into a directed acyclic execution plan and runs them on the browser thread with WebAssembly. Most updates paint in a single frame. • No server round trip for reads — Your data and calculations stay local unless you explicitly share or persist. That is why the canvas feels instant even on large calculation chains. • Large dataset support — Vectorised operations over 100k-row tables without the lag you get in spreadsheet tools. Memory is capped by the browser tab; typical calculations comfortably fit in 512 MB. • Reactive at every node — Change an input and every downstream block re-runs automatically. Explicit dependency tracking means only the blocks that actually need recalculating run. [comparison-table] [Plans in detail] What you get in each tier [cta] Ready to build something? Open the app and the blank canvas walkthrough will have you computing in under five minutes. ================================================================ # ChainSolve — Visual Computation Platform | Build. Compute. Share. URL: https://www.chainsolve.co.uk - Title: ChainSolve — Visual Computation Platform | Build. Compute. Share. - Description: Visual computation platform for engineers. Build graphs of connected blocks instead of cell-based formulas. Rust + WebAssembly, browser-native, near-native performance. Launching summer 2026. ## Sections [hero-centered] [Visual Computation Platform] Build. Compute. Share. ChainSolve is a visual computation platform for engineers. Replace spreadsheet chaos with a graph of connected blocks. Rust + WebAssembly for near-native performance. Collaborate in real time. [feature-list] [How it works] A new mental model for calculations • Explicit dependencies — Every calculation is a block; every input is a connection. No more spreadsheet archaeology — what depends on what is obvious at a glance. • Rust + WebAssembly, in the browser — The computation engine is written in Rust and compiled to WebAssembly. Large calculation chains run at sub-frame latency without a round trip to a server. • Shareable workspaces — A ChainSolve canvas is a URL. Share it, version it, review it, embed it in a report. Real-time collaboration with live cursors and presence on Team plans. • Extensible blocks — Stock blocks cover algebra, trigonometry, calculus, data transformation, plotting, control flow, and I/O. Package your own TypeScript or Python logic when a stock block is not enough. [stat-block] [At a glance] ChainSolve by the numbers [cta-banner] See the full feature breakdown Browse every block category, compare tiers, and see the roadmap. [faq] [Frequently asked] Questions we hear a lot [cta] Ready to stop fighting your spreadsheets? The Free tier is, well, free — and the signup takes thirty seconds. ================================================================ # Pricing — ChainSolve URL: https://www.chainsolve.co.uk/pricing - Title: Pricing — ChainSolve - Description: Free tier available. Pro from £15/mo, Student free with verification, Team from £12/user/mo, Enterprise custom. All plans include the core visual computation engine. ## Sections [hero-centered] [Pricing] Start free. Scale when you need to. Every plan includes the Rust + WebAssembly computation engine, the full block library (free tier gets a subset), and real-time canvas performance. Upgrade for more projects, bigger canvases, AI blocks, and team collaboration. [pricing-table] [Plans] Pick the plan that fits [faq] [Billing] Common billing questions [cta] Need something bespoke? Self-hosted deployments, dedicated regions, custom integrations — get in touch and we will scope it. ================================================================ # Acceptable Use Policy URL: https://www.chainsolve.co.uk/legal/acceptable-use-policy - Title: Acceptable Use Policy - Description: Rules and guidelines governing acceptable use of Godfrey Engineering services, including godfreyengineering.com and ChainSolve. - Last updated: 2026-04-01 - Version: 1.0 ## Body ## 1. Introduction This Acceptable Use Policy ("AUP") sets out the rules and guidelines that govern your use of the website at [godfreyengineering.com](https://www.godfreyengineering.com), ChainSolve, and all other services operated by Godfrey Engineering Ltd ("we", "us", "our", or "Godfrey Engineering"). This AUP is incorporated by reference into our [Terms of Service](/legal/terms). By accessing or using our Services, you agree to comply with this AUP. Capitalised terms not defined in this AUP have the meanings given in the Terms of Service. We may update this AUP from time to time. Material changes will be communicated in accordance with our Terms of Service. Your continued use of the Services after any update constitutes acceptance of the revised AUP. ## 2. Scope This AUP applies to: - All users of the Godfrey Engineering website (godfreyengineering.com), whether registered or unregistered - All users of ChainSolve, including free and paid subscription tiers - All content you create, upload, submit, or transmit through the Services ("User Content") - All interactions with other users through the Services - All use of APIs, integrations, or programmatic access to the Services ## 3. Acceptable Use You may use the Services for lawful purposes that are consistent with their intended function. Acceptable uses include: - Browsing the Godfrey Engineering website for information about our services and expertise - Creating an account and using ChainSolve for engineering calculations, analysis, and design work - Submitting enquiries through our contact forms - Subscribing to and reading our newsletter and blog content - Using our APIs in accordance with any applicable API documentation and rate limits - Sharing links to our public content on social media or other platforms ## 4. Prohibited Activities You agree not to use the Services to engage in any of the following activities. This list is not exhaustive; we reserve the right to determine, in our sole discretion, whether any conduct violates this AUP. ### 4.1 Illegal Activities - Using the Services for any purpose that violates applicable local, national, or international law or regulation - Facilitating, promoting, or assisting illegal activity of any kind - Money laundering, terrorist financing, or sanctions evasion - Distributing, storing, or transmitting content that is illegal under UK law ### 4.2 Harmful or Abusive Content - Uploading, transmitting, or distributing content that is defamatory, obscene, threatening, harassing, discriminatory, or incites violence or hatred - Distributing malware, viruses, worms, trojan horses, ransomware, or any other malicious software or code - Distributing spam, phishing attempts, or social engineering attacks - Publishing or sharing another person's personal or confidential information without their consent ("doxxing") - Impersonating any person, business, or entity, or falsely claiming an affiliation with any person or entity ### 4.3 Security and System Integrity - Attempting to gain unauthorised access to any part of the Services, other users' accounts, or any systems or networks connected to the Services - Circumventing, disabling, or otherwise interfering with security-related features of the Services, including authentication mechanisms, access controls, or rate limiting - Probing, scanning, or testing the vulnerability of the Services or any related system or network, unless you have received our explicit written authorisation to do so - Interfering with or disrupting the Services, servers, or networks connected to the Services, including through denial-of-service attacks (DoS/DDoS) - Using automated tools (bots, crawlers, scrapers) to access the Services in a manner that exceeds reasonable use or violates our robots.txt directives - Attempting to reverse engineer, decompile, disassemble, or derive the source code of any software component of the Services ### 4.4 Intellectual Property Violations - Uploading, transmitting, or distributing content that infringes any third party's Intellectual Property Rights, including copyrights, trademarks, patents, or trade secrets - Using the Services to reproduce, distribute, or create derivative works from copyrighted material without the copyright holder's permission - Removing, altering, or obscuring any copyright, trademark, or other proprietary notices from the Services or any content accessed through the Services ### 4.5 Misuse of Engineering Outputs - Presenting engineering calculations or analyses generated by ChainSolve as independently certified, verified, or validated engineering work without performing appropriate independent professional review - Using ChainSolve outputs in safety-critical applications (including but not limited to structural design, vehicle safety systems, medical devices, or aerospace applications) without independent verification by a qualified and competent professional engineer - Deliberately inputting false, misleading, or nonsensical data into ChainSolve with the intent of generating misleading engineering outputs - Redistributing, reselling, or sublicensing ChainSolve outputs as a competing engineering analysis service ### 4.6 Resource Abuse - Consuming a disproportionate share of system resources (CPU, memory, bandwidth, storage, API calls) relative to your subscription tier or intended use - Using the Services to mine cryptocurrency or perform other computationally intensive tasks unrelated to the Services' intended purpose - Creating multiple free accounts to circumvent subscription limits or usage restrictions - Automating account creation or using the Services in a manner designed to avoid usage-based fees ### 4.7 Commercial Misuse - Reselling, sublicensing, or redistributing access to the Services without our prior written consent - Using the Services to develop a competing product or service - Scraping, harvesting, or extracting data from the Services for commercial purposes without our prior written consent - Using the Services to send unsolicited bulk communications (spam) or advertisements ## 5. User Content Standards All User Content you submit through the Services must comply with the following standards: - **Accuracy:** User Content should be accurate and not intentionally misleading - **Legality:** User Content must not violate any applicable law or regulation - **Ownership:** You must own the User Content or have the necessary rights and permissions to submit it - **Respect:** User Content must not be harassing, threatening, discriminatory, or otherwise harmful to others - **Relevance:** User Content should be relevant to the context in which it is submitted We do not pre-screen User Content, but we reserve the right to review, edit, or remove any User Content that violates this AUP or is otherwise objectionable, at our sole discretion. ## 6. Reporting Violations If you become aware of any violation of this AUP, we encourage you to report it promptly. You can report violations by: - **Email:** [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com) - **Subject line:** "AUP Violation Report" When reporting a violation, please include as much detail as possible: - A description of the violation - The URL or location where the violation occurred - The date and time of the violation (if known) - Any supporting evidence (screenshots, links, etc.) - Your contact information (so we can follow up if needed) We take all reports seriously and will investigate promptly. We will not retaliate against anyone who reports a violation in good faith. ## 7. Investigation and Enforcement ### 7.1 Investigation We reserve the right to investigate any suspected violation of this AUP. During an investigation, we may: - Monitor and review your use of the Services and your User Content - Request information from you regarding the suspected violation - Cooperate with law enforcement or regulatory authorities if required by law or if we believe criminal activity has occurred ### 7.2 Enforcement Actions If we determine that you have violated this AUP, we may take one or more of the following actions, at our sole discretion and without prior notice: - **Warning:** Issue a written warning specifying the violation and requiring you to cease the offending conduct - **Content removal:** Remove or disable access to User Content that violates this AUP - **Temporary suspension:** Temporarily suspend your access to the Services for a period we deem appropriate - **Permanent termination:** Permanently terminate your account and revoke your access to the Services - **Legal action:** Pursue legal remedies, including injunctive relief and damages, for violations that cause harm to Godfrey Engineering, our users, or third parties ### 7.3 Appeal Process If your account is suspended or terminated for an AUP violation, you may appeal the decision by contacting us at [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com) within 14 days of the enforcement action. Your appeal should include: - Your account details (email address used for registration) - The enforcement action you are appealing - An explanation of why you believe the action was taken in error or why your account should be reinstated We will review your appeal and respond within 14 days. Our decision on the appeal is final. ### 7.4 No Obligation to Monitor We are not obligated to monitor the Services for violations of this AUP. However, we reserve the right to do so and to take action when violations are discovered. ## 8. Intellectual Property and Copyright ### 8.1 Respect for Intellectual Property We respect the intellectual property rights of others and expect our users to do the same. If you believe that your copyrighted work has been reproduced on our Services in a way that constitutes copyright infringement, please notify us. ### 8.2 Copyright Infringement Notices To report copyright infringement, please send a written notice to [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com) containing: - Identification of the copyrighted work you claim has been infringed - Identification of the material you claim is infringing and its location on our Services - Your contact information (name, address, telephone number, email address) - A statement that you have a good faith belief that the use of the material is not authorised by the copyright owner, its agent, or the law - A statement that the information in your notice is accurate and, under penalty of perjury, that you are the copyright owner or authorised to act on their behalf - Your physical or electronic signature We will investigate all valid notices and take appropriate action, which may include removing the infringing material. ## 9. Relationship to Other Policies This AUP is part of a suite of legal documents that govern your use of the Services: - [Terms of Service](/legal/terms) — The overarching agreement governing your use of the Services - [Privacy Policy](/legal/privacy) — How we collect, use, and protect your personal data - [Cookie Policy](/legal/cookies) — Detailed information about cookies and tracking technologies In the event of a conflict between this AUP and the Terms of Service, the Terms of Service shall prevail. ## 10. Modifications We reserve the right to modify this AUP at any time. When we make material changes, we will: - Update the "Last updated" date at the top of this page - Post a notice on our website - Where practicable, notify registered users by email Your continued use of the Services after the effective date of any changes constitutes your acceptance of the modified AUP. ## 11. Contact Us If you have any questions about this Acceptable Use Policy, please contact us: - **Email:** [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com) - **General enquiries:** [info@godfreyengineering.com](mailto:info@godfreyengineering.com) - **Website:** [www.godfreyengineering.com](https://www.godfreyengineering.com) Godfrey Engineering Ltd United Kingdom ================================================================ # Cookie Policy URL: https://www.chainsolve.co.uk/legal/cookie-policy - Title: Cookie Policy - Description: Detailed information about the cookies and tracking technologies used on godfreyengineering.com, including purpose, duration, and how to manage your preferences. - Last updated: 2026-04-01 - Version: 1.0 ## Body ## 1. What Are Cookies? Cookies are small text files that are placed on your device (computer, tablet, or smartphone) when you visit a website. They are widely used to make websites work more efficiently, to remember your preferences, and to provide information to the website operator. Cookies can be "first-party" (set by the website you are visiting) or "third-party" (set by a different domain than the one you are visiting). They can also be "session" cookies (deleted when you close your browser) or "persistent" cookies (remaining on your device for a set period or until you delete them). Similar technologies include local storage, session storage, and pixels/beacons, which we also describe in this policy. ## 2. How We Use Cookies We use cookies and similar technologies for the following purposes: - **Strictly necessary:** These are essential for the website to function correctly. They enable core features such as security, network management, and accessibility. You cannot opt out of these cookies. - **Analytics:** These help us understand how visitors interact with our website by collecting information about pages visited, time spent, navigation paths, and error occurrences. This data is used to improve our website and services. - **Functional:** These enable enhanced functionality and personalisation, such as remembering your language preference or theme selection. We do **not** currently use marketing or advertising cookies. If this changes in the future, we will update this policy and request your consent before setting any marketing cookies. ## 3. Your Consent When you first visit our website, a cookie consent banner is displayed, giving you the choice to: - **Accept all cookies** — enables all cookie categories (necessary, analytics, functional) - **Reject non-essential cookies** — only strictly necessary cookies are set - **Manage preferences** — choose which categories to enable or disable Your consent preference is stored in your browser's local storage and is valid for 12 months, after which the banner will be shown again. You can change your cookie preferences at any time by clicking the button below: ## 4. Cookies We Use The following table lists all cookies and local storage entries used on our website: ### 4.1 Strictly Necessary These cookies are essential for the website to function. They are set in response to actions you take, such as setting your privacy preferences, logging in, or filling in forms. You cannot opt out of these cookies.
| Name | Provider | Purpose | Type | Duration | | -------------- | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------------------------- | | `ge-consent` | godfreyengineering.com | Stores your cookie consent preferences (which categories you have accepted or rejected). Contains version number, timestamp, and consent choices. | Local Storage | 12 months | | `ge-theme` | godfreyengineering.com | Stores your selected theme preference (light, dark, or system). Prevents flash of wrong theme on page load. | Local Storage | Indefinite (until cleared) | | `__cf_bm` | Cloudflare | Cloudflare Bot Management cookie. Identifies trusted web traffic and prevents malicious bots from accessing the site. Required for DDoS protection. | Cookie (HTTP) | 30 minutes | | `cf_clearance` | Cloudflare | Issued after a visitor successfully completes a Cloudflare security challenge. Confirms the visitor is human. | Cookie (HTTP) | 30 minutes |
### 4.2 Analytics These cookies help us understand how visitors use our website. All data is used for statistical purposes only. These cookies are only set if you have given your consent.
| Name | Provider | Purpose | Type | Duration | | ------------------ | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | --------- | | `ph_*` | PostHog (eu.posthog.com) | PostHog product analytics cookies. Used to identify unique visitors (pseudonymised), track page views, and record feature interactions. PostHog is configured with: person profiles disabled for anonymous users, IP collection disabled, session recording disabled. All data is processed on PostHog's EU servers (Frankfurt, Germany). | Cookie (HTTP) | 12 months | | `ph_phc_*_posthog` | PostHog (eu.posthog.com) | PostHog device identifier. A randomly generated ID used to associate events from the same browser session. Does not contain personal data. | Local Storage | 12 months |
### 4.3 Functional These cookies enable enhanced functionality and personalisation. They may be set by us or by third-party providers whose services we have added to our pages.
| Name | Provider | Purpose | Type | Duration | | ---------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -------------------------- | | `ge-locale` | godfreyengineering.com | Stores your preferred language/locale selection (e.g., "en", "de", "ja"). Used to redirect you to your preferred language version on subsequent visits. | Local Storage | Indefinite (until cleared) | | `ge-sidebar-collapsed` | godfreyengineering.com | Remembers whether you have collapsed the sidebar navigation (on pages that have one), preserving your preference across page loads. | Local Storage | Session |
## 5. Third-Party Cookies Some cookies on our website are set by third-party services that we use. We do not control how these third parties use their cookies. For more information, please refer to their respective privacy policies: - **Cloudflare:** [https://www.cloudflare.com/cookie-policy/](https://www.cloudflare.com/cookie-policy/) - **PostHog:** [https://posthog.com/privacy](https://posthog.com/privacy) - **Stripe:** [https://stripe.com/cookies-policy/legal](https://stripe.com/cookies-policy/legal) (Stripe cookies are only set on payment pages) ## 6. How to Control Cookies ### 6.1 Through Our Cookie Banner The simplest way to manage cookies on our website is through the cookie consent banner. You can re-open the banner at any time by: - Clicking the **"Manage Cookie Settings"** button above (Section 3) - Clicking the **"Cookie Settings"** link in the website footer ### 6.2 Through Your Browser Most web browsers allow you to control cookies through their settings. The following links provide instructions for common browsers: - **Google Chrome:** [https://support.google.com/chrome/answer/95647](https://support.google.com/chrome/answer/95647) - **Mozilla Firefox:** [https://support.mozilla.org/en-US/kb/cookies-information-websites-store-on-your-computer](https://support.mozilla.org/en-US/kb/cookies-information-websites-store-on-your-computer) - **Apple Safari:** [https://support.apple.com/guide/safari/manage-cookies-sfri11471/mac](https://support.apple.com/guide/safari/manage-cookies-sfri11471/mac) - **Microsoft Edge:** [https://support.microsoft.com/en-us/microsoft-edge/manage-cookies-in-microsoft-edge-168dab11-0753-043d-7c16-ede5947fc64d](https://support.microsoft.com/en-us/microsoft-edge/manage-cookies-in-microsoft-edge-168dab11-0753-043d-7c16-ede5947fc64d) Please note that disabling cookies may affect the functionality of our website. Strictly necessary cookies cannot be disabled as they are essential for the site to work. ### 6.3 Do Not Track Some browsers offer a "Do Not Track" (DNT) signal. Our website does not currently respond to DNT signals, because there is no industry-standard definition or enforcement mechanism for DNT. You can control analytics consent via the cookie banner at any time. ## 7. Local Storage and Session Storage In addition to cookies, we use the browser's local storage and session storage APIs. These work similarly to cookies but are only accessible by JavaScript on our domain and are not sent with HTTP requests. Local storage entries used on our site: - `ge-consent` — Cookie consent preferences - `ge-theme` — Theme preference (light/dark/system) - `ge-locale` — Language preference - `ge-sidebar-collapsed` — Sidebar state preference - PostHog analytics identifiers (only with analytics consent) You can clear local storage through your browser's developer tools (usually accessible via F12 > Application > Local Storage) or by clearing your browser's site data. ## 8. Updates to This Policy We may update this Cookie Policy from time to time to reflect changes in the cookies we use or for other operational, legal, or regulatory reasons. When we make changes, we will update the "Last updated" date at the top of this page. We recommend that you review this Cookie Policy periodically to stay informed about our use of cookies. ## 9. Further Information For more information about how we process personal data, please see our [Privacy Policy](/legal/privacy). For questions about our use of cookies or to exercise your data protection rights, please contact us: - **Email:** [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com) - **General enquiries:** [info@godfreyengineering.com](mailto:info@godfreyengineering.com) - **Website:** [www.godfreyengineering.com](https://www.godfreyengineering.com) Godfrey Engineering Ltd United Kingdom ================================================================ # Data Processing Agreement URL: https://www.chainsolve.co.uk/legal/data-processing-agreement - Title: Data Processing Agreement - Description: Standard Data Processing Agreement for businesses and organisations using Godfrey Engineering services that involve processing personal data. - Last updated: 2026-04-01 - Version: 1.0 ## Body ## 1. Introduction This Data Processing Agreement ("DPA") forms part of the agreement between Godfrey Engineering Ltd ("Processor", "we", "us") and the entity or person agreeing to it ("Controller", "you") for the provision of services as described in the [Terms of Service](/legal/terms/) ("Agreement"). This DPA applies where and only to the extent that Godfrey Engineering processes personal data on behalf of the Controller in the course of providing the Services, and such personal data is subject to the UK General Data Protection Regulation (UK GDPR), the EU General Data Protection Regulation (EU GDPR), or any other applicable data protection legislation. The terms used in this DPA have the meanings given in the UK GDPR unless otherwise defined herein. ## 2. Definitions - **"Applicable Data Protection Law"** means all laws and regulations relating to the processing of personal data, including the UK GDPR, the Data Protection Act 2018, the EU GDPR, and the Privacy and Electronic Communications Regulations 2003 (PECR), as applicable. - **"Controller"** means the entity that determines the purposes and means of the processing of personal data. - **"Data Subject"** means the individual to whom the personal data relates. - **"Personal Data"** means any information relating to an identified or identifiable natural person. - **"Processing"** means any operation or set of operations performed on personal data, including collection, storage, use, disclosure, and deletion. - **"Processor"** means the entity that processes personal data on behalf of the Controller. - **"Sub-Processor"** means a third party engaged by the Processor to process personal data on behalf of the Controller. - **"Security Incident"** means a breach of security leading to the accidental or unlawful destruction, loss, alteration, unauthorised disclosure of, or access to, personal data. ## 3. Scope and Purpose of Processing ### 3.1 Subject Matter The Processor shall process personal data on behalf of the Controller for the purpose of providing the Services described in the Agreement, including: - Hosting and delivering the Controller's account and application data - Processing engineering calculations and analyses via ChainSolve - Sending transactional communications on behalf of the Controller - Providing customer support ### 3.2 Categories of Data Subjects - The Controller's employees and representatives - The Controller's end users and customers - Any other individuals whose personal data is submitted to the Services by the Controller ### 3.3 Types of Personal Data - Names and contact information (email addresses, telephone numbers) - Account credentials (hashed passwords) - Usage data (pages visited, features used, timestamps) - Engineering data (calculation inputs and outputs) - Payment and billing information (processed by Stripe) - Communication content (support messages, contact form submissions) ### 3.4 Duration of Processing The Processor shall process personal data for the duration of the Agreement, unless otherwise agreed in writing. Upon termination of the Agreement, the Processor shall handle personal data in accordance with Section 10 of this DPA. ## 4. Obligations of the Processor The Processor shall: - Process personal data only on the documented instructions of the Controller, unless required by law to do otherwise. In such case, the Processor shall inform the Controller of the legal requirement before processing, unless prohibited by law from doing so. - Ensure that persons authorised to process personal data have committed to confidentiality or are under an appropriate statutory obligation of confidentiality. - Implement appropriate technical and organisational measures to ensure a level of security appropriate to the risk, as described in Section 7. - Not engage another processor (Sub-Processor) without the prior written authorisation of the Controller, subject to Section 6. - Assist the Controller in ensuring compliance with the obligations relating to security of processing, notification of security incidents, data protection impact assessments, and prior consultation with supervisory authorities. - At the choice of the Controller, delete or return all personal data upon termination of the Services, and delete existing copies unless applicable law requires storage. - Make available to the Controller all information necessary to demonstrate compliance with the obligations set out in this DPA and allow for and contribute to audits and inspections conducted by the Controller or its authorised auditor. ## 5. Obligations of the Controller The Controller shall: - Ensure that the processing of personal data under this DPA is lawful, fair, and transparent in accordance with Applicable Data Protection Law. - Provide the Processor with documented instructions for the processing of personal data, and ensure that such instructions comply with Applicable Data Protection Law. - Ensure that Data Subjects have been informed of, and have given any necessary consent to, the processing of their personal data by the Processor. ## 6. Sub-Processors ### 6.1 Authorised Sub-Processors The Controller provides general written authorisation for the Processor to engage the following Sub-Processors:
| Sub-Processor | Purpose | Data Location | | ---------------- | ------------------------ | -------------- | | Cloudflare, Inc. | Hosting, CDN, security | Global (EU/US) | | Supabase, Inc. | Database, authentication | EU (Frankfurt) | | Stripe, Inc. | Payment processing | EU | | Resend, Inc. | Transactional email | US (with SCCs) | | PostHog, Inc. | Product analytics | EU (Frankfurt) |
### 6.2 Changes to Sub-Processors The Processor shall notify the Controller at least 14 days in advance of any intended changes to its Sub-Processors (additions or replacements). The Controller may object to such changes within 14 days of notification. If the Controller objects and the parties cannot resolve the objection, the Controller may terminate the Agreement. ### 6.3 Sub-Processor Obligations The Processor shall ensure that each Sub-Processor is bound by data protection obligations no less protective than those set out in this DPA. ## 7. Security Measures The Processor shall implement and maintain the following technical and organisational measures: - **Encryption in transit:** TLS 1.3 for all data in transit - **Encryption at rest:** AES-256 encryption for stored data - **Access controls:** Role-based access control with least-privilege principle - **Authentication:** Multi-factor authentication for all administrative access - **Password hashing:** bcrypt with a work factor of 12 - **Monitoring:** Continuous monitoring via Cloudflare for infrastructure security and request-level observability - **Backup:** Regular automated backups of application data with encryption - **Incident response:** Documented incident response procedures with defined roles and escalation paths ## 8. Security Incidents ### 8.1 Notification The Processor shall notify the Controller without undue delay, and in any event within 48 hours, after becoming aware of a Security Incident affecting the Controller's personal data. ### 8.2 Notification Content The notification shall include: - A description of the nature of the Security Incident, including the categories and approximate number of Data Subjects and personal data records concerned - The name and contact details of the Processor's point of contact - A description of the likely consequences of the Security Incident - A description of the measures taken or proposed to address the Security Incident ### 8.3 Cooperation The Processor shall cooperate with the Controller and take reasonable steps to assist in the investigation, mitigation, and remediation of the Security Incident. ## 9. International Data Transfers Where the Processor transfers personal data to a Sub-Processor located outside the United Kingdom or the EEA, the Processor shall ensure that one of the following safeguards is in place: - An adequacy decision by the UK Secretary of State or the European Commission - The UK International Data Transfer Agreement (IDTA) or EU Standard Contractual Clauses (SCCs) - Certification under an approved transfer mechanism (e.g., EU-US Data Privacy Framework) Details of the transfer safeguards for each Sub-Processor are available upon request. ## 10. Data Return and Deletion ### 10.1 Upon Termination Upon termination of the Agreement, the Processor shall, at the Controller's election: - Return all personal data to the Controller in a structured, commonly used, and machine-readable format (JSON or CSV); or - Securely delete all personal data and certify such deletion in writing ### 10.2 Retention Exceptions The Processor may retain personal data to the extent required by Applicable Data Protection Law, provided that the Processor shall ensure the confidentiality of such data and shall process it only for the purpose of complying with the legal obligation. ## 11. Audits ### 11.1 Right to Audit The Controller shall have the right to audit the Processor's compliance with this DPA, subject to reasonable notice (at least 30 days) and during normal business hours. ### 11.2 Audit Scope Audits may include inspection of the Processor's facilities, systems, and records relating to the processing of personal data, and interviews with the Processor's personnel. ### 11.3 Costs The Controller shall bear the costs of any audit, unless the audit reveals a material breach of this DPA by the Processor. ## 12. Liability The liability of each party under this DPA shall be subject to the limitations and exclusions of liability set out in the Agreement. ## 13. Governing Law This DPA shall be governed by and construed in accordance with the laws of England and Wales. Any dispute arising out of or in connection with this DPA shall be subject to the exclusive jurisdiction of the courts of England and Wales. ## 14. Contact For questions about this DPA or to request a signed copy, please contact: - **Email:** [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com) - **Website:** [www.godfreyengineering.com](https://www.godfreyengineering.com) Godfrey Engineering Ltd United Kingdom ================================================================ # Privacy Policy URL: https://www.chainsolve.co.uk/legal/privacy-policy - Title: Privacy Policy - Description: How Godfrey Engineering Ltd collects, uses, stores, and protects your personal data. Covers all services including godfreyengineering.com and ChainSolve. - Last updated: 2026-04-01 - Version: 1.0 ## Body ## 1. Introduction Godfrey Engineering Ltd ("we", "us", "our", or "Godfrey Engineering") is committed to protecting and respecting your privacy. This Privacy Policy explains how we collect, use, disclose, and safeguard your personal data when you visit our website at [godfreyengineering.com](https://www.godfreyengineering.com), use our products (including ChainSolve), or otherwise interact with our services. Godfrey Engineering Ltd is a company registered in England and Wales. We are the data controller for the personal data described in this policy. **Contact details:** - **Email:** [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com) - **General enquiries:** [info@godfreyengineering.com](mailto:info@godfreyengineering.com) - **Website:** [www.godfreyengineering.com](https://www.godfreyengineering.com) This policy applies to all personal data processed through our website, applications, email communications, and any other service we operate. By using our services, you acknowledge that you have read and understood this policy. ## 2. Data We Collect We collect personal data in the following categories: ### 2.1 Information You Provide Directly - **Account information:** When you create an account for ChainSolve or any other Godfrey Engineering product, we collect your name, email address, and password (hashed — we never store plaintext passwords). - **Contact form submissions:** When you submit a contact form, we collect your name, email address, and the content of your message. - **Payment information:** When you make a purchase or subscribe to a paid service, we collect billing details (name, address, payment card details). Payment card details are processed directly by Stripe and are never stored on our servers. - **Support requests:** When you contact us for support, we collect the information you provide in your request, which may include your name, email, and details about the issue. - **Newsletter subscriptions:** If you subscribe to our newsletter, we collect your email address and, optionally, your name and preferences. ### 2.2 Information Collected Automatically - **Usage data:** Pages visited, time spent on pages, links clicked, referral source, and navigation paths. This data is collected by PostHog (see Section 5). - **Device and browser information:** Browser type and version, operating system, device type, screen resolution, and language preference. - **IP address:** Collected by our hosting provider (Cloudflare) for security and performance purposes. PostHog is configured to discard IP addresses after geolocation. - **Cookies and similar technologies:** See our [Cookie Policy](/legal/cookie-policy) for detailed information about the cookies we use. ### 2.3 Information from Third Parties - **Authentication providers:** If you sign in using a third-party provider (e.g., Google, GitHub), we receive your name, email address, and profile picture from that provider. - **Payment processor:** Stripe provides us with transaction confirmation, the last four digits of your payment card, and billing address to fulfil our contractual obligations. ## 3. Legal Basis for Processing We process your personal data under the following legal bases as defined by the UK General Data Protection Regulation (UK GDPR) and the Data Protection Act 2018: | Legal Basis | Examples | | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | **Contractual necessity** (Article 6(1)(b)) | Processing your account data to provide ChainSolve services; processing payment data to fulfil a purchase | | **Legitimate interests** (Article 6(1)(f)) | Website analytics to improve our services; error monitoring to maintain service quality; security measures to protect our systems | | **Consent** (Article 6(1)(a)) | Newsletter subscriptions; non-essential cookies (analytics, marketing); PostHog product analytics | | **Legal obligation** (Article 6(1)(c)) | Retaining transaction records for tax and accounting purposes; responding to lawful requests from authorities | Where we rely on legitimate interests, we have conducted a balancing test to ensure our interests do not override your fundamental rights and freedoms. You may request details of these assessments by contacting us at [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com). ## 4. How We Use Your Data We use your personal data for the following purposes: - **Service delivery:** To create and manage your account, provide access to our products (including ChainSolve), process transactions, and deliver customer support. - **Communication:** To respond to your enquiries, send transactional emails (order confirmations, password resets, service notifications), and, where you have consented, send marketing communications. - **Analytics and improvement:** To understand how visitors use our website, identify popular content, diagnose technical issues, and improve our services. Analytics data is aggregated and pseudonymised wherever possible. - **Security and fraud prevention:** To protect our services, detect and prevent fraudulent activity, and enforce our Terms of Service. - **Legal compliance:** To comply with applicable laws, regulations, and legal processes, including tax obligations and data protection law. ## 5. Third-Party Data Processors We share personal data with the following third-party service providers, each of whom processes data on our behalf under a Data Processing Agreement (DPA): ### 5.1 Cloudflare (Hosting & CDN) - **Provider:** Cloudflare, Inc. - **Purpose:** Website hosting via Cloudflare Pages, content delivery network (CDN), DDoS protection, DNS resolution, and web application firewall. - **Data processed:** IP addresses, HTTP request headers, page URLs, and performance metrics. - **Data location:** Global edge network; primary processing in EU and US data centres. Cloudflare is certified under the EU-US Data Privacy Framework. - **Retention:** Web traffic logs are retained for a maximum of 72 hours. Aggregated analytics are retained for up to 6 months. - **Privacy policy:** [https://www.cloudflare.com/privacypolicy/](https://www.cloudflare.com/privacypolicy/) ### 5.2 Supabase (Database & Authentication) - **Provider:** Supabase, Inc. - **Purpose:** User authentication, database storage for user accounts and application data. - **Data processed:** Email addresses, hashed passwords, user profile data, and application data stored by users. - **Data location:** EU region (Frankfurt, Germany). - **Retention:** Data is retained for the lifetime of the user account. Deleted account data is purged within 30 days. - **Privacy policy:** [https://supabase.com/privacy](https://supabase.com/privacy) ### 5.3 Stripe (Payments) - **Provider:** Stripe, Inc. - **Purpose:** Payment processing for product purchases and subscriptions. - **Data processed:** Name, email address, billing address, payment card details (handled directly by Stripe — card numbers never touch our servers), transaction history. - **Data location:** EU processing region. Stripe is certified under the EU-US Data Privacy Framework. - **Retention:** Transaction records retained for 7 years to comply with UK tax and accounting obligations. Payment card details are retained by Stripe in accordance with PCI-DSS requirements. - **Privacy policy:** [https://stripe.com/privacy](https://stripe.com/privacy) ### 5.4 Resend (Transactional Email) - **Provider:** Resend, Inc. - **Purpose:** Sending transactional emails (account verification, password resets, order confirmations, support responses) and marketing emails (newsletters, product updates — only with consent). - **Data processed:** Email addresses, names, email content, and delivery metadata (open/click tracking for marketing emails only, with consent). - **Data location:** US-based processing. Data transfer is governed by Standard Contractual Clauses (SCCs). - **Retention:** Email delivery logs retained for 30 days. Marketing engagement data retained for the duration of the subscription. - **Privacy policy:** [https://resend.com/legal/privacy-policy](https://resend.com/legal/privacy-policy) ### 5.5 PostHog (Product Analytics) - **Provider:** PostHog, Inc. - **Purpose:** Product analytics including pageview tracking, feature usage analysis, and user journey mapping. Used to improve our products and website. - **Data processed:** Pseudonymised user identifiers, page URLs, referral sources, browser and device metadata, feature interaction events. IP addresses are discarded after geolocation lookup. - **Data location:** EU-hosted instance (eu.posthog.com, Frankfurt, Germany). - **Consent required:** Yes — PostHog is only initialised after the visitor grants analytics consent via the cookie banner. - **Configuration:** Person profiles disabled for anonymous visitors; session recording disabled; IP collection disabled. - **Retention:** Event data retained for 12 months, then automatically deleted. - **Privacy policy:** [https://posthog.com/privacy](https://posthog.com/privacy) ## 6. International Data Transfers Some of our third-party processors are based outside the United Kingdom and the European Economic Area (EEA). Where data is transferred internationally, we ensure that appropriate safeguards are in place: - **EU-US Data Privacy Framework:** Cloudflare and Stripe are certified under the EU-US Data Privacy Framework, providing an adequacy basis for data transfers. - **Standard Contractual Clauses (SCCs):** For processors not covered by an adequacy decision, we rely on the UK-approved International Data Transfer Agreement (IDTA) or EU Standard Contractual Clauses, as applicable. - **EU-hosted instances:** Where possible, we select EU-hosted instances of services (PostHog EU, Supabase EU) to minimise international data transfers. ## 7. Data Retention We retain personal data only for as long as necessary to fulfil the purposes for which it was collected, unless a longer retention period is required by law. | Data Category | Retention Period | Reason | | --------------------------- | -------------------------------------------- | ---------------------------------------------- | | Account data | Lifetime of account + 30 days after deletion | Service delivery | | Payment transaction records | 7 years from transaction date | UK tax and accounting law (HMRC requirements) | | Contact form submissions | 24 months from submission | Legitimate interest in responding to enquiries | | Newsletter subscriptions | Until unsubscribe + 30 days | Consent-based; data purged after unsubscribe | | Analytics data (PostHog) | 12 months | Legitimate interest in service improvement | | Server logs (Cloudflare) | 72 hours | Security and performance | | Cookie consent preferences | 12 months | Regulatory compliance | When personal data is no longer required, it is securely deleted or anonymised so that it can no longer be associated with you. ## 8. Your Rights Under the UK GDPR Under the UK General Data Protection Regulation and the Data Protection Act 2018, you have the following rights regarding your personal data: ### 8.1 Right of Access (Article 15) You have the right to request a copy of the personal data we hold about you. We will respond to your request within one calendar month. ### 8.2 Right to Rectification (Article 16) You have the right to request that we correct any inaccurate or incomplete personal data we hold about you. ### 8.3 Right to Erasure (Article 17) You have the right to request that we delete your personal data where: - The data is no longer necessary for the purpose for which it was collected - You withdraw consent (where consent was the legal basis) - You object to processing and there are no overriding legitimate grounds - The data has been unlawfully processed - Erasure is required to comply with a legal obligation Note: We may retain certain data where required by law (e.g., financial transaction records for tax purposes). ### 8.4 Right to Restriction of Processing (Article 18) You have the right to request that we restrict the processing of your personal data in certain circumstances, such as when you contest the accuracy of the data or object to processing based on legitimate interests. ### 8.5 Right to Data Portability (Article 20) Where processing is based on consent or contractual necessity, and is carried out by automated means, you have the right to receive your personal data in a structured, commonly used, and machine-readable format (JSON or CSV), and to transmit it to another controller. ### 8.6 Right to Object (Article 21) You have the right to object to processing based on legitimate interests. We will cease processing unless we can demonstrate compelling legitimate grounds that override your rights. You also have the right to object to direct marketing at any time. If you object, we will stop processing your data for direct marketing purposes immediately. ### 8.7 Rights Related to Automated Decision-Making (Article 22) We do not currently make any decisions based solely on automated processing that produce legal or similarly significant effects on you. If this changes, we will update this policy and provide you with appropriate safeguards. ### 8.8 Right to Withdraw Consent Where processing is based on consent, you may withdraw your consent at any time. Withdrawal of consent does not affect the lawfulness of processing carried out before the withdrawal. To withdraw cookie consent, use the "Cookie Settings" link in the footer of our website or visit our [Cookie Policy](/legal/cookie-policy). ## 9. Exercising Your Rights To exercise any of the rights described above, please contact us: - **Email:** [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com) - **Subject line:** "Data Subject Access Request" (or the specific right you wish to exercise) We will verify your identity before processing your request. We may ask you to provide additional information to confirm your identity, particularly if the request is made via email. We will respond to all valid requests within **one calendar month**. In exceptional circumstances (e.g., complex or numerous requests), we may extend this period by a further two months, in which case we will notify you of the extension and the reasons for it. There is no fee for exercising your rights. However, we may charge a reasonable fee or refuse to act on a request if it is manifestly unfounded or excessive. ## 10. Cookies and Tracking Technologies We use cookies and similar technologies on our website. For detailed information about the cookies we use, their purpose, duration, and how to manage your preferences, please see our [Cookie Policy](/legal/cookie-policy). You can manage your cookie preferences at any time by clicking the "Cookie Settings" link in the website footer. ## 11. Children's Data Our services are not directed at individuals under the age of 16. We do not knowingly collect personal data from children under 16. If we become aware that we have collected personal data from a child under 16, we will take steps to delete that data as quickly as possible. If you believe that we may have collected data from a child under 16, please contact us at [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com). ## 12. Security Measures We implement appropriate technical and organisational measures to protect your personal data against unauthorised access, alteration, disclosure, or destruction. These measures include: - **Encryption in transit:** All data transmitted between your browser and our servers is encrypted using TLS 1.3 (HTTPS), enforced by Cloudflare. - **Encryption at rest:** User data stored in Supabase is encrypted at rest using AES-256 encryption. - **Access controls:** Access to personal data is restricted to authorised personnel on a need-to-know basis. - **Password hashing:** User passwords are hashed using bcrypt with a work factor of 12. Plaintext passwords are never stored. - **Regular security reviews:** We conduct periodic security reviews of our infrastructure and third-party integrations. - **Incident response:** We maintain an incident response procedure. In the event of a personal data breach, we will notify the Information Commissioner's Office (ICO) within 72 hours where required, and affected individuals without undue delay where the breach is likely to result in a high risk to their rights and freedoms. ## 13. Links to Third-Party Websites Our website may contain links to third-party websites and services. We are not responsible for the privacy practices of these third parties. We encourage you to read the privacy policies of any third-party websites you visit. ## 14. Changes to This Privacy Policy We may update this Privacy Policy from time to time to reflect changes in our practices, services, or applicable law. When we make material changes, we will: - Update the "Last updated" date at the top of this page - Post a notice on our website for a reasonable period - Where legally required, notify you by email We encourage you to review this policy periodically. Your continued use of our services after any changes constitutes acceptance of the updated policy. ## 15. Complaints If you are unsatisfied with our response to a data protection concern, you have the right to lodge a complaint with the UK supervisory authority: **Information Commissioner's Office (ICO)** - Website: [https://ico.org.uk/make-a-complaint/](https://ico.org.uk/make-a-complaint/) - Telephone: 0303 123 1113 - Address: Wycliffe House, Water Lane, Wilmslow, Cheshire, SK9 5AF, United Kingdom We would appreciate the opportunity to address your concerns before you contact the ICO. Please contact us first at [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com). ## 16. Contact Us If you have any questions about this Privacy Policy or our data protection practices, please contact us: - **Data protection enquiries:** [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com) - **General enquiries:** [info@godfreyengineering.com](mailto:info@godfreyengineering.com) - **Website:** [www.godfreyengineering.com](https://www.godfreyengineering.com) Godfrey Engineering Ltd United Kingdom ================================================================ # Terms of Service URL: https://www.chainsolve.co.uk/legal/terms-of-service - Title: Terms of Service - Description: Terms and conditions governing your use of godfreyengineering.com, ChainSolve, and all Godfrey Engineering services. - Last updated: 2026-04-01 - Version: 1.0 ## Body ## 1. Agreement to Terms These Terms of Service ("Terms") constitute a legally binding agreement between you ("you", "your", or "User") and Godfrey Engineering Ltd ("we", "us", "our", or "Godfrey Engineering"), a company registered in England and Wales. By accessing or using our website at [godfreyengineering.com](https://www.godfreyengineering.com), our products (including ChainSolve), or any related services (collectively, the "Services"), you confirm that you have read, understood, and agree to be bound by these Terms and our [Privacy Policy](/legal/privacy). If you do not agree to these Terms, you must not access or use our Services. If you are accessing or using the Services on behalf of a business or other legal entity, you represent and warrant that you have the authority to bind that entity to these Terms, in which case "you" refers to that entity. ## 2. Definitions In these Terms, the following definitions apply: - **"Content"** means any text, images, data, software, code, documentation, or other material made available through the Services. - **"User Content"** means any content you create, upload, submit, or transmit through the Services. - **"ChainSolve"** means the engineering calculation and analysis software application operated by Godfrey Engineering. - **"Subscription"** means a paid plan granting you access to premium features of the Services for a defined period. - **"Intellectual Property Rights"** means all patents, copyrights, trademarks, trade secrets, database rights, design rights, and all other intellectual property rights, whether registered or unregistered. ## 3. Description of Services Godfrey Engineering provides: - **Website (godfreyengineering.com):** An informational website showcasing our engineering consultancy services, portfolio, and expertise in automotive design, motorsport engineering, and software development. - **ChainSolve:** A web-based engineering calculation and analysis platform. ChainSolve may be offered as a free tier with limited features and as paid subscription tiers with additional capabilities. - **Engineering consultancy:** Professional engineering consultancy services, which are subject to separate engagement agreements. We reserve the right to modify, suspend, or discontinue any part of the Services at any time, with or without notice. We will make reasonable efforts to provide advance notice of material changes. ## 4. Account Registration ### 4.1 Account Creation To access certain features of the Services (including ChainSolve), you may be required to create an account. When creating an account, you agree to: - Provide accurate, current, and complete information - Maintain and promptly update your account information to keep it accurate - Maintain the security and confidentiality of your login credentials - Accept responsibility for all activity that occurs under your account - Notify us immediately at [info@godfreyengineering.com](mailto:info@godfreyengineering.com) if you suspect unauthorised use of your account ### 4.2 Account Eligibility You must be at least 16 years of age to create an account or use the Services. By creating an account, you represent and warrant that you meet this age requirement. ### 4.3 Account Termination We reserve the right to suspend or terminate your account at any time if we reasonably believe that you have violated these Terms or our [Acceptable Use Policy](/legal/acceptable-use). We will provide notice of termination where practicable. You may delete your account at any time by contacting us at [info@godfreyengineering.com](mailto:info@godfreyengineering.com) or through your account settings. Upon deletion, we will remove your personal data in accordance with our [Privacy Policy](/legal/privacy). ## 5. Subscriptions and Payments ### 5.1 Paid Services Certain features of the Services are available only through paid subscriptions. Subscription pricing, features, and billing cycles are described on our pricing pages. All prices are quoted in GBP (British Pounds Sterling) unless otherwise stated and are exclusive of VAT where applicable. ### 5.2 Payment Processing Payments are processed by Stripe, Inc. By making a payment, you agree to Stripe's terms of service. We do not store your payment card details on our servers. ### 5.3 Billing and Renewal Subscriptions are billed in advance on a recurring basis (monthly or annually, depending on the plan you select). Your subscription will automatically renew at the end of each billing period unless you cancel it before the renewal date. ### 5.4 Cancellation You may cancel your subscription at any time through your account settings or by contacting us at [info@godfreyengineering.com](mailto:info@godfreyengineering.com). Cancellation takes effect at the end of the current billing period. You will retain access to paid features until the end of the period you have already paid for. ### 5.5 Refunds We offer refunds in the following circumstances: - **Within 14 days of initial purchase:** If you are a consumer based in the UK or EU, you have the right to cancel within 14 days of your initial subscription purchase and receive a full refund, in accordance with the Consumer Contracts (Information, Cancellation and Additional Charges) Regulations 2013. - **Service outage:** If the Services experience a material outage exceeding 72 consecutive hours, you may request a pro-rata refund for the affected period. Refund requests should be sent to [info@godfreyengineering.com](mailto:info@godfreyengineering.com). ### 5.6 Price Changes We may change subscription prices from time to time. We will provide at least 30 days' notice of any price increase. The new price will apply from your next billing cycle after the notice period. ## 6. Intellectual Property ### 6.1 Our Intellectual Property All Intellectual Property Rights in the Services, including but not limited to the website design, layout, graphics, logos, text content, software code, algorithms, data structures, and documentation, are owned by or licensed to Godfrey Engineering Ltd. Except as expressly permitted by these Terms, you may not: - Copy, modify, distribute, sell, or lease any part of the Services - Reverse engineer, decompile, or disassemble any software component of the Services - Remove, alter, or obscure any copyright, trademark, or other proprietary notices - Use our trademarks, trade names, or logos without prior written consent ### 6.2 Your Content You retain ownership of any User Content you create, upload, or submit through the Services. By submitting User Content, you grant Godfrey Engineering a non-exclusive, worldwide, royalty-free licence to use, store, process, and display your User Content solely for the purpose of providing and improving the Services. You represent and warrant that: - You own or have the necessary rights to submit the User Content - Your User Content does not infringe the Intellectual Property Rights of any third party - Your User Content does not violate any applicable law or regulation ### 6.3 Feedback If you provide us with feedback, suggestions, or ideas regarding the Services ("Feedback"), you grant us an unrestricted, irrevocable, perpetual, royalty-free licence to use, modify, and incorporate that Feedback into the Services without any obligation or compensation to you. ## 7. Acceptable Use Your use of the Services is subject to our [Acceptable Use Policy](/legal/acceptable-use), which is incorporated into these Terms by reference. Violation of the Acceptable Use Policy constitutes a breach of these Terms. ## 8. Disclaimer of Warranties ### 8.1 "As Is" Basis To the maximum extent permitted by applicable law, the Services are provided on an "AS IS" and "AS AVAILABLE" basis, without any warranties or conditions of any kind, whether express, implied, or statutory. ### 8.2 No Warranty of Accuracy We do not warrant that: - The Services will be uninterrupted, timely, secure, or error-free - The results obtained from the Services will be accurate or reliable - Any errors or defects in the Services will be corrected - The Services will meet your specific requirements ### 8.3 Engineering Calculations **Important:** ChainSolve and any engineering calculations or analyses provided through the Services are tools intended to assist qualified professionals. They are **not** a substitute for independent professional engineering judgement, verification, and validation. You acknowledge and agree that: - All engineering outputs must be independently verified before reliance or use in production - Godfrey Engineering does not certify, warrant, or guarantee the accuracy, completeness, or fitness for purpose of any calculation output - You are solely responsible for any decisions made based on outputs from the Services - The Services are not intended for use in safety-critical applications without independent verification by a qualified professional engineer ### 8.4 Consumer Rights Nothing in these Terms affects your statutory rights as a consumer under UK law, including the Consumer Rights Act 2015. If the Services do not meet the standards set out in the Consumer Rights Act, you may have a right to a refund, repair, or replacement. ## 9. Limitation of Liability ### 9.1 Exclusion of Liability To the maximum extent permitted by applicable law, Godfrey Engineering shall not be liable for any: - Indirect, incidental, special, consequential, or punitive damages - Loss of profits, revenue, data, business, or anticipated savings - Loss of goodwill or reputation - Cost of procuring substitute goods or services arising out of or in connection with your use of, or inability to use, the Services, whether based on warranty, contract, tort (including negligence), or any other legal theory, even if we have been advised of the possibility of such damages. ### 9.2 Aggregate Liability Cap To the maximum extent permitted by applicable law, our total aggregate liability to you for all claims arising out of or in connection with these Terms or the Services shall not exceed the greater of: - The total amount you have paid to us in the 12 months immediately preceding the event giving rise to the claim; or - One hundred pounds sterling (GBP 100.00) ### 9.3 Exclusions Nothing in these Terms shall exclude or limit our liability for: - Death or personal injury caused by our negligence - Fraud or fraudulent misrepresentation - Any liability that cannot be excluded or limited under applicable law, including liability under the Consumer Rights Act 2015 ## 10. Indemnification You agree to indemnify, defend, and hold harmless Godfrey Engineering Ltd, its directors, officers, employees, and agents from and against any and all claims, damages, losses, liabilities, costs, and expenses (including reasonable legal fees) arising out of or in connection with: - Your use of the Services in violation of these Terms - Your User Content - Your violation of any applicable law or regulation - Your violation of any third party's rights, including Intellectual Property Rights ## 11. Availability and Force Majeure ### 11.1 Service Availability We use commercially reasonable efforts to ensure the availability of the Services. However, we do not guarantee any specific uptime or availability level unless otherwise agreed in a separate service level agreement (SLA). ### 11.2 Force Majeure We shall not be liable for any failure or delay in performing our obligations under these Terms where such failure or delay results from circumstances beyond our reasonable control, including but not limited to: acts of God, natural disasters, pandemics, war, terrorism, civil unrest, government actions, power failures, internet or telecommunications failures, cyberattacks, or failures of third-party service providers. ## 12. Third-Party Services The Services may contain links to, or integrations with, third-party websites, applications, or services. We are not responsible for the content, privacy practices, or terms of any third-party services. Your use of third-party services is at your own risk and subject to the terms and conditions of those third parties. ## 13. Privacy Our collection and use of personal data in connection with the Services is described in our [Privacy Policy](/legal/privacy). By using the Services, you acknowledge that you have read and understood our Privacy Policy. ## 14. Modifications to These Terms We reserve the right to modify these Terms at any time. When we make material changes, we will: - Update the "Last updated" date at the top of this page - Post a notice on our website - Where practicable, notify registered users by email at least 14 days before the changes take effect Your continued use of the Services after the effective date of any changes constitutes your acceptance of the modified Terms. If you do not agree to the modified Terms, you must stop using the Services and, if applicable, cancel your subscription. ## 15. Governing Law and Jurisdiction ### 15.1 Governing Law These Terms shall be governed by and construed in accordance with the laws of England and Wales, without regard to its conflict of law principles. ### 15.2 Jurisdiction Any dispute arising out of or in connection with these Terms shall be subject to the exclusive jurisdiction of the courts of England and Wales. ### 15.3 Consumer Rights If you are a consumer, nothing in this section affects your right to bring proceedings in the courts of the country in which you are domiciled, or any mandatory consumer protection laws that apply to you. ## 16. Dispute Resolution ### 16.1 Informal Resolution Before initiating any formal proceedings, you agree to first attempt to resolve any dispute informally by contacting us at [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com). We will attempt to resolve the dispute within 30 days. ### 16.2 Mediation If the dispute cannot be resolved informally, either party may propose mediation through a mutually agreed mediator or through the Centre for Effective Dispute Resolution (CEDR). The costs of mediation shall be shared equally between the parties. ### 16.3 Court Proceedings If the dispute is not resolved through mediation within 60 days, either party may commence court proceedings in accordance with Section 15 (Governing Law and Jurisdiction). ## 17. General Provisions ### 17.1 Severability If any provision of these Terms is found to be invalid, illegal, or unenforceable by a court of competent jurisdiction, that provision shall be modified to the minimum extent necessary to make it valid and enforceable, or if modification is not possible, it shall be severed from these Terms. The remaining provisions shall continue in full force and effect. ### 17.2 Waiver Our failure to enforce any right or provision of these Terms shall not constitute a waiver of that right or provision. A waiver of any term shall only be effective if made in writing and signed by an authorised representative of Godfrey Engineering. ### 17.3 Entire Agreement These Terms, together with the [Privacy Policy](/legal/privacy), [Cookie Policy](/legal/cookie-policy), and [Acceptable Use Policy](/legal/acceptable-use), constitute the entire agreement between you and Godfrey Engineering regarding the Services and supersede all prior agreements, understandings, and communications, whether written or oral. ### 17.4 Assignment You may not assign or transfer your rights or obligations under these Terms without our prior written consent. We may assign our rights and obligations under these Terms without restriction. ### 17.5 No Third-Party Beneficiaries These Terms do not create any third-party beneficiary rights. Nothing in these Terms is intended to confer any right or benefit on any person other than the parties to these Terms, and no third party shall have any right to enforce any provision of these Terms under the Contracts (Rights of Third Parties) Act 1999. ### 17.6 Notices All notices to Godfrey Engineering under these Terms should be sent to: - **Email:** [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com) - **General enquiries:** [info@godfreyengineering.com](mailto:info@godfreyengineering.com) Notices to you will be sent to the email address associated with your account, or posted on our website for unregistered users. ### 17.7 Survival The following sections shall survive termination or expiration of these Terms: Section 6 (Intellectual Property), Section 8 (Disclaimer of Warranties), Section 9 (Limitation of Liability), Section 10 (Indemnification), Section 15 (Governing Law and Jurisdiction), and this Section 17 (General Provisions). ## 18. Contact Us If you have any questions about these Terms, please contact us: - **Email:** [legal@godfreyengineering.com](mailto:legal@godfreyengineering.com) - **General enquiries:** [info@godfreyengineering.com](mailto:info@godfreyengineering.com) - **Website:** [www.godfreyengineering.com](https://www.godfreyengineering.com) Godfrey Engineering Ltd United Kingdom ================================================================ # 5 Ways Engineers Use ChainSolve to Replace Spreadsheets URL: https://www.chainsolve.co.uk/blog/engineers-replace-spreadsheets - Title: 5 Ways Engineers Use ChainSolve to Replace Spreadsheets - Description: Discover how engineering teams are switching from spreadsheets to ChainSolve for structural analysis, signal processing, financial modeling, and more. - Author: godfrey-engineering - Published: 2026-03-25 - Tags: use-cases, engineering, spreadsheets, productivity, tutorials ## Body Spreadsheets are the most widely used computation tool on the planet. They are also one of the most error-prone. Studies estimate that 88% of spreadsheets contain at least one error, and spreadsheet mistakes have caused billions in financial losses across industries. ChainSolve was built to solve this problem. Here are five real ways engineering teams are using ChainSolve to replace their most critical spreadsheets. ## 1. Structural Load Calculations Civil and structural engineers routinely calculate load distributions, bending moments, shear forces, and deflections using spreadsheets. A typical structural calculation spreadsheet has dozens of intermediate values that depend on each other in non-obvious ways. In ChainSolve, each calculation becomes a visible block. The load path through a structure mirrors the data path through the graph. When you change a load value, you can watch the effects propagate through the entire structural model — bending moments update, deflection values recalculate, and safety factors re-evaluate in real time. ChainSolve's unit-aware computation blocks automatically handle unit conversions between kN, lbf, Pa, psi, and other engineering units. No more manual conversion factors cluttering your calculations. The visual representation also makes peer review dramatically easier. Instead of auditing cell references in a spreadsheet, reviewers can trace the data flow visually and verify that the computational logic matches the engineering intent. ## 2. Signal Processing Pipelines Electrical and audio engineers process signals through chains of filters, transforms, and analyses. In a spreadsheet, this means columns of intermediate data, complex array formulas, and often VBA macros to implement operations like FFT. ChainSolve's block library includes dedicated signal processing blocks: - **FFT / Inverse FFT**: Frequency domain analysis - **Low-pass / High-pass / Band-pass filters**: Configurable cutoff frequencies - **Windowing functions**: Hann, Hamming, Blackman, and custom windows - **Convolution**: Arbitrary kernel convolution - **Resampling**: Up-sample and down-sample with anti-aliasing Each block processes a signal array and passes it to the next, creating a clear pipeline from raw input to processed output. You can tap into any point in the pipeline to visualize the signal using built-in chart blocks. ## 3. Financial Modeling and Sensitivity Analysis Financial analysts build complex models with interconnected assumptions, revenue projections, cost structures, and valuation calculations. These models are notoriously fragile in spreadsheet form — change one assumption and you might accidentally break a formula three tabs away. In ChainSolve, the entire financial model is a single visible graph. Assumptions are input blocks at the top, and outputs (NPV, IRR, payback period) are result blocks at the bottom. Every dependency is an explicit wire. But the real power comes from sensitivity analysis. ChainSolve's sweep block lets you vary an input across a range and see how every downstream value responds. Want to know how your IRR changes as customer acquisition cost varies from £50 to £200? Connect a sweep block to the CAC input and a chart block to the IRR output. The answer appears instantly as an interactive graph. ## 4. Control System Design Control engineers design PID controllers, state-space models, and feedback loops. Spreadsheets are a poor tool for this because they lack native support for transfer functions, frequency response analysis, and time-domain simulation. ChainSolve provides a set of control system blocks that make it natural to design and simulate controllers: - **Transfer function blocks**: Define s-domain or z-domain transfer functions - **PID controller block**: Configurable P, I, D gains with anti-windup - **Feedback block**: Close the loop by feeding outputs back to inputs - **Step response block**: Simulate and plot the time-domain response - **Bode plot block**: Generate frequency response magnitude and phase plots The visual graph naturally mirrors the block diagram notation that control engineers already use. A feedback loop in ChainSolve looks exactly like a feedback loop on a whiteboard. ## 5. Data Pipeline Prototyping Data engineers often prototype ETL (Extract, Transform, Load) pipelines in spreadsheets before implementing them in code. The spreadsheet serves as a sandbox for testing data transformations on sample data. ChainSolve is a better sandbox. Its data transformation blocks (filter, map, join, aggregate, pivot) operate on tabular data and can be chained together visually. You can import a CSV sample, build a transformation pipeline, and verify the output — all without writing code. When the pipeline is working correctly, ChainSolve can export the graph as a Python script or a SQL query chain, giving you a head start on the production implementation. Use the CSV Import block to load a sample dataset from a file or URL. Add Filter, Map, Join, and Aggregate blocks to transform the data step by step. Connect a Table block to view the final result and verify it matches your expectations. Use the Export block to generate equivalent Python (pandas) or SQL code for production use. ## Making the Switch Migrating from spreadsheets to ChainSolve does not have to be all-or-nothing. Many teams start by rebuilding their most critical or error-prone spreadsheet in ChainSolve, then gradually migrate others as they see the benefits. ChainSolve can also import Excel formulas and attempt to reconstruct the computation graph automatically. The importer handles basic formulas and cell references, though complex VBA macros require manual conversion. Enterprise customers get dedicated migration support from our engineering team. We will help you convert your most important spreadsheets into ChainSolve graphs. Contact sales@chainsolve.co.uk to learn more. ## Start Building Today Whether you are calculating structural loads, processing signals, modeling finances, designing controllers, or prototyping data pipelines, ChainSolve gives you a clearer, safer, and faster way to work with calculations. Sign up for free at [app.chainsolve.co.uk](https://app.chainsolve.co.uk) and build your first graph in minutes. No credit card required. ================================================================ # Introducing ChainSolve: Visual Computation for Everyone URL: https://www.chainsolve.co.uk/blog/introducing-chainsolve - Title: Introducing ChainSolve: Visual Computation for Everyone - Description: Today we are launching ChainSolve, a browser-based visual computation platform that lets you build complex calculations by connecting blocks on a canvas. - Author: godfrey-engineering - Published: 2026-03-15 - Tags: product, launch, visual-computation, announcement ## Body We are thrilled to introduce ChainSolve, a browser-based visual computation platform that fundamentally changes how engineers, analysts, and technical teams work with calculations. ## The Problem We Solve Every engineering team has a spreadsheet problem. Calculations that started as a quick formula in cell B2 have grown into sprawling workbooks with thousands of cells, cryptic named ranges, and circular references that nobody fully understands. When something breaks, the debugging process involves clicking through cell after cell, tracing dependencies manually, and hoping you find the error before the deadline. ChainSolve replaces this chaos with clarity. ## How It Works Instead of hiding calculations inside a grid of cells, ChainSolve lets you build computation graphs on a visual canvas. Each calculation is a **block** — a self-contained unit with clearly defined inputs and outputs. You connect blocks together by drawing wires between their ports, creating a directed graph that flows from raw inputs to final results. Every connection is visible. Every dependency is explicit. When you change an input value, you can watch the data propagate through the graph in real time, seeing exactly how each intermediate result changes along the way. Head over to [app.chainsolve.co.uk](https://app.chainsolve.co.uk) and create your first graph in under 60 seconds. No sign-up required for the free tier. ## Built for Performance Under the hood, ChainSolve's computation engine is written in Rust and compiled to WebAssembly. This means your calculations run at near-native speed directly in the browser — no server round-trips, no waiting for cloud compute, no data leaving your machine. The engine runs in a dedicated Web Worker, so even complex graphs with thousands of blocks will never freeze the UI. You can continue editing your graph while computations run in the background, and results appear the instant they are ready. ## What You Can Build ChainSolve is not limited to simple arithmetic. The block library includes: - **Mathematical operations**: Algebra, trigonometry, calculus, linear algebra, statistics - **Data transformations**: Filtering, mapping, aggregation, pivoting, joins - **Conditional logic**: If/else blocks, switch blocks, comparison operators - **Iteration**: Loop blocks for iterative calculations, convergence detection - **I/O blocks**: CSV import/export, API connectors, database queries - **Visualization**: Chart blocks, table blocks, formatted output ## Pricing ChainSolve offers four tiers to fit your needs: - **Free**: Up to 50 blocks per graph, 3 saved graphs, community support - **Pro**: Unlimited blocks, unlimited graphs, version history, priority support - **Team**: Everything in Pro plus collaboration, shared workspaces, admin controls - **Enterprise**: Everything in Team plus SSO, audit logs, custom integrations, dedicated support ## What Is Next This launch is just the beginning. Our roadmap for the next six months includes: 1. Real-time collaboration (multiple users editing the same graph simultaneously) 2. Custom block SDK (build your own blocks using TypeScript or Rust) 3. Template marketplace (share and discover pre-built computation graphs) 4. Mobile-optimized viewer (review and present graphs on tablets and phones) 5. Advanced charting (interactive plots with zoom, pan, and drill-down) We are building ChainSolve in the open and would love your feedback. Join our community Discord, follow us on Twitter/X, or simply start building at [app.chainsolve.co.uk](https://app.chainsolve.co.uk). The future of computation is visual. Welcome to ChainSolve. ================================================================ # Why We Built ChainSolve with Rust and WebAssembly URL: https://www.chainsolve.co.uk/blog/rust-and-webassembly - Title: Why We Built ChainSolve with Rust and WebAssembly - Description: A technical deep dive into why we chose Rust compiled to WebAssembly for ChainSolve's computation engine, and the performance gains we achieved. - Author: godfrey-engineering - Published: 2026-03-20 - Tags: rust, webassembly, performance, engineering, architecture ## Body When we set out to build ChainSolve, we had a non-negotiable requirement: every calculation must execute in the browser with near-native performance. No server round-trips. No cloud dependencies. No data leaving the user's machine. This requirement led us to Rust and WebAssembly. ## The Performance Requirement ChainSolve lets users build computation graphs with potentially thousands of blocks, each performing a mathematical operation on its inputs and passing results to downstream blocks. When a user changes an input value, the entire downstream subgraph must recompute and update in real time — ideally within a single animation frame (16ms at 60fps). A pure JavaScript implementation of the computation engine hit a wall at around 200 blocks before frame drops became noticeable. We needed at least a 10x improvement to support our target of 5,000+ blocks per graph. ## Why Rust? We evaluated several languages that compile to WebAssembly: C, C++, Go, and Rust. We chose Rust for three reasons. ### Memory Safety Without Garbage Collection Rust's ownership system guarantees memory safety at compile time without a garbage collector. This is critical for WebAssembly because Wasm's linear memory model means that a use-after-free or buffer overflow does not just crash your tab — it corrupts the entire memory space silently. Rust eliminates these bugs by construction. ### Zero-Cost Abstractions Rust's abstractions (generics, iterators, pattern matching) compile down to the same machine code you would write by hand in C. This means we can write clean, expressive code without paying a performance tax. Rust consistently ranks among the top 3 fastest languages in benchmarks like the Computer Language Benchmarks Game, often within single-digit percentages of C. ### Excellent WebAssembly Toolchain The `wasm-pack` tool, the `wasm-bindgen` crate, and the broader Rust-to-Wasm ecosystem are mature and well-documented. We can expose Rust functions to JavaScript with minimal boilerplate and no manual FFI glue code. ## Architecture Overview The ChainSolve computation engine has three layers: The computation graph is stored as an adjacency list with topological ordering. When the graph structure changes (blocks added, removed, or rewired), we recompute the topological order using Kahn's algorithm. This determines the evaluation sequence. The engine walks the topological order and evaluates each block. Blocks are implemented as Rust trait objects with a common `evaluate(&self, inputs: &[Value]) -> Result` interface. This allows us to add new block types without modifying the engine. The bridge layer uses `wasm-bindgen` to expose a minimal API to JavaScript: `create_graph()`, `add_block()`, `connect()`, `set_input()`, `evaluate()`, and `get_results()`. Data is serialized as JSON for complex types and passed as raw f64 arrays for numeric data to minimize serialization overhead. ## Benchmarks We benchmarked the Wasm engine against an equivalent pure JavaScript implementation on three workloads: | Workload | JS (ms) | Wasm (ms) | Speedup | | ----------------------------- | ------- | --------- | ------- | | 100 blocks, linear chain | 2.1 | 0.18 | 11.7x | | 1,000 blocks, branching graph | 34.2 | 2.4 | 14.3x | | 5,000 blocks, complex DAG | 412.0 | 22.1 | 18.6x | The speedup increases with graph complexity because the Wasm engine benefits from better cache locality and the absence of JavaScript's dynamic type checks. All benchmarks were run on Chrome 124, M2 MacBook Pro, averaged over 1,000 iterations with JIT warmup. Your results may vary depending on hardware and browser. ## Web Worker Integration The computation engine runs inside a Web Worker to prevent blocking the main thread. The communication pattern is straightforward: 1. The main thread sends graph mutations (block added, connection changed, input updated) as structured messages to the Worker. 2. The Worker applies mutations to the Wasm engine and triggers re-evaluation. 3. Results are sent back to the main thread via `postMessage`. 4. For large result sets, we use `SharedArrayBuffer` with Atomics to avoid the serialization cost of `postMessage`. This architecture means the UI thread is never blocked by computation. Even if a graph takes 500ms to evaluate, the user can continue dragging blocks, scrolling the canvas, and interacting with the interface without any jank. ## Lessons Learned Building a production Wasm application taught us several lessons: 1. **Wasm binary size matters.** Our initial build was 2.4MB. After enabling LTO, `wasm-opt`, and stripping debug symbols, we reduced it to 340KB gzipped. Every kilobyte counts for initial load time. 2. **Avoid frequent small allocations.** Wasm's allocator is simpler than a native allocator. We use arena allocation for per-evaluation temporary data, which reduced allocation overhead by 60%. 3. **Profile in the browser, not on the command line.** Performance characteristics differ between native Rust and Wasm. Chrome DevTools' Performance panel with Wasm profiling support was our primary optimization tool. 4. **Test both sides of the bridge.** Bugs in `wasm-bindgen` serialization are subtle. We maintain a comprehensive test suite that runs both in native Rust (via `cargo test`) and in-browser (via `wasm-pack test`). ## Conclusion Rust and WebAssembly have been the right choice for ChainSolve's computation engine. The combination of memory safety, zero-cost abstractions, and near-native browser performance lets us deliver a real-time visual computation experience that would not be possible with JavaScript alone. If you are considering Wasm for your next browser-based application, we hope this post provides useful context for your decision. And if you want to see the results in action, try building a computation graph at [app.chainsolve.co.uk](https://app.chainsolve.co.uk).