pricing: land £7/£70 paid tier and make behaviour match
Marketing + behaviour pass to get the site ready for Paddle approval.
Pricing page
- £7/month, £70/year headline (was "Coming soon").
- Bigger tier names (was 11px uppercase mono — looked like chips).
- Real CTAs (button base styles were only scoped to .hero__ctas).
- "Best value" badge + drop-shadow on the Paid card; full-width
block CTAs that align across both cards.
- "Free vs Paid at a glance" comparison table beneath the cards.
- Compact "Invite a friend — both get 50% off for 3 months"
callout with the detail explanation behind a <dialog> popup.
Tier copy + behaviour now consistent
- Free strategic-log refresh is every 6 hours, not hourly. New
read-side filter on /api/log/{latest,by-date} restricts free
users to logs at boundary hours (00/06/12/18 UTC); paid users
still see the most recent.
- Follow-up chat is paid-only. /api/chat returns 402 for free;
the chat sidebar on /log is replaced with a locked aside and
chat.js no longer loads at all for free users.
- Dashboard meta lines + landing copy softened so they no longer
promise hourly to everyone.
Future-proofing copy on public pages
- Dropped "free forever" wording (we may close the free tier).
- "Trading 212 CSV" became "broker CSV (Trading 212 today; more
planned)" on pricing + landing; the actual import UIs stay
T212-specific.
Terms
- Renamed Terms of Service -> Terms and Conditions (Paddle
expectation), bumped last-updated to 2026-05-26.
- New §6 Refunds covering the 14-day cooling off, post-window
cancellation, termination-by-us refunds, statutory rights, and
how to request a refund.
- Renumbered §7-§14 and fixed the disclaimer link labels.
Tests
- 6 new tests in tests/test_chat_and_log_gates.py cover the
chat 402 + the boundary-hour filter on both log endpoints.
- Full suite: 205 passed, 5 skipped, 0 failed.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
70cf6148ce
commit
2297f9b2ed
11 changed files with 757 additions and 117 deletions
|
|
@ -1,12 +1,12 @@
|
|||
{% extends "public_base.html" %}
|
||||
{% block title %}{{ BRAND_NAME }} · Terms of Service{% endblock %}
|
||||
{% block title %}{{ BRAND_NAME }} · Terms and Conditions{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
|
||||
<section class="public-section">
|
||||
<h1 class="public-section__head">Terms of Service</h1>
|
||||
<h1 class="public-section__head">Terms and Conditions</h1>
|
||||
<p style="color: var(--muted); font-size: 13px;">
|
||||
Last updated: 2026-05-24. {{ LEGAL_OPERATOR }} operates {{ BRAND_NAME }}
|
||||
Last updated: 2026-05-26. {{ LEGAL_OPERATOR }} operates {{ BRAND_NAME }}
|
||||
(the “Service”) from {{ OPERATOR_JURISDICTION }}.
|
||||
</p>
|
||||
</section>
|
||||
|
|
@ -96,7 +96,55 @@
|
|||
</section>
|
||||
|
||||
<section class="public-section">
|
||||
<h2 class="public-section__head">6. Service availability</h2>
|
||||
<h2 class="public-section__head">6. Refunds</h2>
|
||||
<p>
|
||||
<strong>14-day cooling-off (UK / EU consumers).</strong> If you buy a
|
||||
paid subscription as a consumer, you have 14 days from the day of
|
||||
purchase to cancel and receive a full refund of that purchase, under
|
||||
the Consumer Contracts (Information, Cancellation and Additional
|
||||
Charges) Regulations 2013. As noted in clause 5, if you start using
|
||||
a paid feature inside the cancellation window you lose the right to
|
||||
cancel in respect of digital content already delivered.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Cancellation after the cooling-off window.</strong> You can
|
||||
cancel a paid subscription at any time. Cancellation takes effect at
|
||||
the end of the current billing period; we do not pro-rate refunds
|
||||
for the unused portion of a period you have already started, unless
|
||||
a separate paragraph below applies.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Termination by us without fault on your part.</strong> If we
|
||||
terminate or materially reduce a paid feature for reasons that are
|
||||
not a breach by you (including a service shutdown), we will refund
|
||||
the unused portion of any prepaid fees on a pro-rata basis. The same
|
||||
applies under clause 8 if we terminate for a breach you did not
|
||||
cause, and under clause 11 if you close your account because you do
|
||||
not accept a material change to these Terms.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Service faults.</strong> Nothing in this clause limits your
|
||||
statutory rights as a UK consumer under Part 1 of the Consumer
|
||||
Rights Act 2015. If a paid feature is not supplied with reasonable
|
||||
care and skill, you may be entitled to a repeat performance or a
|
||||
price reduction (which can be a full refund) under that Act.
|
||||
</p>
|
||||
<p>
|
||||
<strong>How to request a refund.</strong> Email
|
||||
<a href="mailto:{{ OPERATOR_EMAIL }}">{{ OPERATOR_EMAIL }}</a> from
|
||||
the address tied to your account, with the order reference if you
|
||||
have one. We aim to acknowledge within 5 working days. Refunds are
|
||||
returned to the original payment method and typically arrive within
|
||||
14 days of approval, subject to your bank’s processing time.
|
||||
</p>
|
||||
<p>
|
||||
Referral credits and any other non-cash credits applied to your
|
||||
account are not refundable for cash.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section class="public-section">
|
||||
<h2 class="public-section__head">7. Service availability</h2>
|
||||
<p>
|
||||
The Service is provided on a best-effort basis. There is no service
|
||||
level agreement: outages, data delays, and feature changes may occur
|
||||
|
|
@ -105,7 +153,7 @@
|
|||
</section>
|
||||
|
||||
<section class="public-section">
|
||||
<h2 class="public-section__head">7. Content & ownership</h2>
|
||||
<h2 class="public-section__head">8. Content & ownership</h2>
|
||||
<p>
|
||||
The Service’s code, design, indicator selection, and prompts
|
||||
are owned or licensed by {{ LEGAL_OPERATOR }}. To the extent any
|
||||
|
|
@ -126,7 +174,7 @@
|
|||
</section>
|
||||
|
||||
<section class="public-section">
|
||||
<h2 class="public-section__head">8. Suspension & termination</h2>
|
||||
<h2 class="public-section__head">9. Suspension & termination</h2>
|
||||
<p>
|
||||
We may suspend or terminate access without notice for violation of
|
||||
these Terms or for activity that risks the integrity, security, or
|
||||
|
|
@ -138,12 +186,13 @@
|
|||
respond, unless immediate suspension is necessary to protect the
|
||||
Service, its users, or any third party. If we terminate a paid
|
||||
subscription for a breach you did not cause, we will refund the
|
||||
unused portion of any prepaid fees on a pro-rata basis.
|
||||
unused portion of any prepaid fees on a pro-rata basis (see
|
||||
clause 6).
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section class="public-section">
|
||||
<h2 class="public-section__head">9. No warranty</h2>
|
||||
<h2 class="public-section__head">10. No warranty</h2>
|
||||
<p>
|
||||
The Service is provided “as is” and “as
|
||||
available”, without warranties of any kind, express or implied,
|
||||
|
|
@ -153,7 +202,7 @@
|
|||
</section>
|
||||
|
||||
<section class="public-section">
|
||||
<h2 class="public-section__head">10. Limitation of liability</h2>
|
||||
<h2 class="public-section__head">11. Limitation of liability</h2>
|
||||
<p>
|
||||
To the maximum extent permitted by law, {{ LEGAL_OPERATOR }} is not
|
||||
liable for any indirect, incidental, special, consequential, or
|
||||
|
|
@ -182,7 +231,7 @@
|
|||
</section>
|
||||
|
||||
<section class="public-section">
|
||||
<h2 class="public-section__head">11. Changes</h2>
|
||||
<h2 class="public-section__head">12. Changes</h2>
|
||||
<p>
|
||||
These Terms may change. Material changes will be flagged in-app or
|
||||
by email. Continued use after a change means you accept the updated
|
||||
|
|
@ -193,7 +242,7 @@
|
|||
</section>
|
||||
|
||||
<section class="public-section">
|
||||
<h2 class="public-section__head">12. Governing law and jurisdiction</h2>
|
||||
<h2 class="public-section__head">13. Governing law and jurisdiction</h2>
|
||||
<p>
|
||||
These Terms are governed by the laws of England and Wales. Subject
|
||||
to any mandatory law of the consumer’s country of residence,
|
||||
|
|
@ -205,7 +254,7 @@
|
|||
</section>
|
||||
|
||||
<section class="public-section">
|
||||
<h2 class="public-section__head">13. Contact</h2>
|
||||
<h2 class="public-section__head">14. Contact</h2>
|
||||
<p>
|
||||
<a href="mailto:{{ OPERATOR_EMAIL }}">{{ OPERATOR_EMAIL }}</a>
|
||||
</p>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue