Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
5de16d7
Add UK chat blog post: bringing AI to policymaking
vahid-ahmadi Jun 25, 2026
4acee99
Add technical architecture section to UK chat post
vahid-ahmadi Jun 25, 2026
174d9a6
Revise UK chat post: AI-for-policymaking intro, plainer subtitle, dro…
vahid-ahmadi Jun 25, 2026
625f954
Use UK chat interface screenshot as post cover
vahid-ahmadi Jun 25, 2026
8061368
Tighten UK chat post: shorter headings, neutral wording, fix diagram …
vahid-ahmadi Jun 25, 2026
b349979
Revise UK chat post: lead with the contract, fix engine accuracy, add…
vahid-ahmadi Jun 26, 2026
e9081e5
Restructure UK chat post: sections/subsections, six-tools graphic, de…
vahid-ahmadi Jun 26, 2026
561cb43
Polish UK chat post: short headings, centred six-tools figure, list f…
vahid-ahmadi Jun 26, 2026
1775ee8
Bold key phrases; retitle post to 'AI chatbot for policymaking'
vahid-ahmadi Jun 26, 2026
f77f336
Add chatbot CTA to hero; feature latest UK tools in research banner
vahid-ahmadi Jun 26, 2026
ecf6ed6
Merge remote-tracking branch 'origin/blog/uk-chat-cant-make-up-number…
vahid-ahmadi Jun 26, 2026
1fb1297
Merge remote-tracking branch 'origin/feat/home-chatbot-and-featured-t…
vahid-ahmadi Jun 26, 2026
ba3d5c5
Frame chatbot post as beta launch; date 27 Jun; exclude from policy-a…
vahid-ahmadi Jun 26, 2026
7c5e5c0
Rename UK CliffWatch to 'UK CliffWatch tool' in apps registry and hom…
vahid-ahmadi Jun 26, 2026
1d5c543
Move homepage/blog changes to website/ (Next.js) to satisfy app/ migr…
vahid-ahmadi Jun 26, 2026
1d7e5bc
Show 'Try the AI chatbot' button on the UK homepage only
vahid-ahmadi Jun 26, 2026
a98694c
Rework chatbot post as a product launch per review
vahid-ahmadi Jun 28, 2026
38ab5b1
Note PolicyBench is US-based; soften 'when'->'if' in feedback CTA
vahid-ahmadi Jun 29, 2026
a2ef23b
Retitle UK Chat post; set date to 30 Jun
vahid-ahmadi Jun 29, 2026
99369b0
Merge remote-tracking branch 'origin/main' into feat/uk-chatbot-beta-…
vahid-ahmadi Jul 30, 2026
cc4e9df
Address UK Chat launch review feedback
vahid-ahmadi Jul 30, 2026
bf691b8
Add product research tag label
vahid-ahmadi Jul 30, 2026
bf579b3
Replace UK Chat markdown post with scrollytelling page
vahid-ahmadi Aug 11, 2026
22e1acf
Merge main into feat/uk-chatbot-beta-launch
vahid-ahmadi Aug 11, 2026
820ca63
Swap the UK Chat post cover image
vahid-ahmadi Aug 11, 2026
b8986d9
Merge main into feat/uk-chatbot-beta-launch
vahid-ahmadi Aug 11, 2026
3f67e04
Serve Anthony's interactive article at the UK Chat post route
vahid-ahmadi Aug 12, 2026
f321a56
Revert "Serve Anthony's interactive article at the UK Chat post route"
vahid-ahmadi Aug 12, 2026
c074c7e
Serve the UK Chat article from its own deployment
vahid-ahmadi Aug 12, 2026
dc612ff
Point the UK Chat article at its live deployment domain
vahid-ahmadi Aug 12, 2026
3585a37
Use the article's own subtitle on the research card
vahid-ahmadi Aug 12, 2026
b709fa4
Point at the article deployment domain that tracks production
vahid-ahmadi Aug 12, 2026
76246ad
Use a product screenshot as the UK Chat post cover
vahid-ahmadi Aug 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 14 additions & 1 deletion app/src/data/apps/apps.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,17 @@
[
{
"type": "iframe",
"slug": "introducing-policyengine-uk-chat",
"title": "PolicyEngine UK Chat: an AI interface for tax and benefits",
"description": "Introducing PolicyEngine's newest AI-powered tool to help users understand UK tax and benefit policy",
"source": "https://policyengine-uk-chat-interactive-ar.vercel.app/uk/introducing-policyengine-uk-chat",
"tags": ["uk", "featured", "technology", "ai", "product"],
"countryId": "uk",
"displayWithResearch": true,
"image": "introducing-policyengine-uk-chat.jpg",
"date": "2026-08-11 12:00:00",
"authors": ["vahid-ahmadi", "anthony-volk"]
},
{
"type": "iframe",
"slug": "snap-payment-error-simulator",
Expand Down Expand Up @@ -76,7 +89,7 @@
{
"type": "iframe",
"slug": "uk-cliff-watch",
"title": "UK CliffWatch",
"title": "UK CliffWatch tool",
"description": "See where benefit withdrawal and taxes create cliffs and high marginal rates as a UK household's earnings rise, modelled with PolicyEngine UK.",
"source": "https://uk-cliff-watch.vercel.app/",
"tags": ["uk", "featured", "policy", "interactives"],
Expand Down
1 change: 1 addition & 0 deletions app/src/data/posts/postTransformers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ const topicLabels: TagLabels = {
featured: 'Featured',
impact: 'Impact',
policy: 'Policy analysis',
product: 'Product',
technical: 'Technical report',
api: 'API',
'benefit-access': 'Benefit access',
Expand Down
2 changes: 2 additions & 0 deletions changelog_entry.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@
- Enforce the site shell on the last nine bare embedded tools, emptying the zone-shell audit exemption list
- Redirect /uk/cec (the retired Citizens' Economic Council simulator, embedded by citizensecon.org.uk) to /uk instead of a 404
- Report zone routes whose destination is a static asset added in the same pull request as pending deploy rather than failing the shell audit, which no in-repo static page could previously pass
- Launch the PolicyEngine UK Chat beta at /uk/chat
- Publish the PolicyEngine UK Chat launch post as a scrollytelling page at /uk/introducing-policyengine-uk-chat, replacing the markdown research post
4 changes: 4 additions & 0 deletions website/src/components/blog/MarkdownFormatter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,8 @@ export function MarkdownFormatter({
ul: ({ children }) => (
<ul
style={{
listStyleType: "disc",
listStylePosition: "outside",
paddingLeft: blogSpacing.lg,
marginBottom: blogSpacing.marginBottom.list,
marginTop: blogSpacing.marginTop.list,
Expand All @@ -397,6 +399,8 @@ export function MarkdownFormatter({
ol: ({ children }) => (
<ol
style={{
listStyleType: "decimal",
listStylePosition: "outside",
paddingLeft: blogSpacing.lg,
marginBottom: blogSpacing.marginBottom.list,
marginTop: blogSpacing.marginTop.list,
Expand Down
24 changes: 12 additions & 12 deletions website/src/components/home/FeaturedResearchBanner.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,24 @@ const BANNER_DISMISSED_KEY = "featured-research-banner-dismissed";

const cards = [
{
href: "/uk/spring-statement-2026",
title: "Spring Statement 2026 analysis",
desc: "New OBR forecast and its effects on UK living standards",
href: "/uk/uk-cliff-watch",
title: "UK CliffWatch tool",
desc: "Where benefit withdrawal and taxes create cliffs and high marginal rates as earnings rise",
},
{
href: "/uk/research/uk-two-child-limit-reintroduction",
title: "Two-child limit reintroduction",
desc: "Budgetary, distributional, poverty, and inequality impacts across the UK",
href: "/uk/cancelling-fuel-duty-rise",
title: "Fuel duty rise cancellation",
desc: "Fiscal cost and household impact of cancelling the Autumn Budget 2025 fuel-duty rise",
},
{
href: "/uk/uk-salary-sacrifice-tool",
title: "Salary sacrifice cap analysis tool",
desc: "Revenue and distributional impacts of capping pension salary sacrifice",
href: "/uk/uc-rebalancing",
title: "Universal Credit rebalancing",
desc: "Household and fiscal impact of the Universal Credit Act 2025 rebalancing package",
},
{
href: "/uk/uk-student-loan-calculator",
title: "Student loan deductions calculator",
desc: "Repayments, marginal tax rates, and lifetime costs for UK graduates",
href: "/uk/energy-price-shock",
title: "Energy price shock",
desc: "Distributional impact of energy price shocks, with five modelled policy responses",
},
];

Expand Down
51 changes: 37 additions & 14 deletions website/src/components/home/HeroCTA.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
"use client";

import { motion } from "framer-motion";
import { colors, spacing, typography } from "@/designTokens";

const CALCULATOR_URL =
process.env.NEXT_PUBLIC_CALCULATOR_URL || "https://app.policyengine.org";
import {
colors,
spacing,
typography,
} from "@/designTokens";
const CHAT_URL = process.env.NEXT_PUBLIC_CHAT_URL || "/uk/chat";

const ctaVariant = {
hidden: { opacity: 0, y: 20 },
Expand All @@ -23,36 +21,61 @@ const ctaVariant = {
},
};

const buttonBase = {
display: "inline-block",
padding: `${spacing.lg} ${spacing["3xl"]}`,
borderRadius: 40,
fontFamily: typography.fontFamily.primary,
fontWeight: typography.fontWeight.semibold,
fontSize: typography.fontSize.lg,
textDecoration: "none",
transition: "box-shadow 0.3s ease",
} as const;

export default function HeroCTA({ countryId }: { countryId: string }) {
return (
<motion.div
variants={ctaVariant}
style={{
position: "relative",
zIndex: 1,
textAlign: "center",
display: "flex",
flexWrap: "wrap",
justifyContent: "center",
gap: spacing.md,
}}
>
<motion.a
href={`${CALCULATOR_URL}/${countryId}/reports`}
whileHover={{ scale: 1.03 }}
whileTap={{ scale: 0.98 }}
style={{
display: "inline-block",
...buttonBase,
background: colors.primary[500],
color: colors.white,
padding: `${spacing.lg} ${spacing["3xl"]}`,
borderRadius: 40,
fontFamily: typography.fontFamily.primary,
fontWeight: typography.fontWeight.semibold,
fontSize: typography.fontSize.lg,
textDecoration: "none",
boxShadow: `0 2px 12px ${colors.primary.alpha[40]}`,
transition: "box-shadow 0.3s ease",
}}
>
Enter PolicyEngine
</motion.a>

{countryId === "uk" && (
<motion.a
href={CHAT_URL}
target="_blank"
rel="noopener noreferrer"
whileHover={{ scale: 1.03 }}
whileTap={{ scale: 0.98 }}
style={{
...buttonBase,
background: colors.secondary[800],
color: colors.white,
boxShadow: `0 2px 12px ${colors.shadow.medium}`,
}}
>
Try the AI chatbot
</motion.a>
)}
</motion.div>
);
}
2 changes: 2 additions & 0 deletions website/src/components/home/HomeBlogPreview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,8 @@ export default function HomeBlogPreview({ countryId }: { countryId: string }) {
.filter(
(item) => item.tags.includes(countryId) || item.tags.includes("global"),
)
// Product announcements do not belong in "Expert policy analysis".
.filter((item) => !item.tags.includes("product"))
.slice(0, TOTAL_ITEMS);

if (relevantItems.length === 0) {
Expand Down
11 changes: 11 additions & 0 deletions website/src/data/appZoneRoutes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ function withDeepRoute(route: AppZoneRoute): AppZoneRoute[] {
}

export const appZoneRoutes: AppZoneRoute[] = [
{
source: "/uk/chat",
destination: "https://policyengine-uk-chat.vercel.app/uk/chat",
},
{
source: "/us/taxation-of-benefits-reforms",
destination:
Expand Down Expand Up @@ -191,6 +195,13 @@ export const appZoneRoutes: AppZoneRoute[] = [
destination: "/assets/posts/encode-policy-multi-agent-ai/index.html",
deepDestination: "/assets/posts/encode-policy-multi-agent-ai/:path*",
},
{
source: "/uk/introducing-policyengine-uk-chat",
destination:
"https://policyengine-uk-chat-interactive-ar.vercel.app/uk/introducing-policyengine-uk-chat",
deepDestination:
"https://policyengine-uk-chat-interactive-ar.vercel.app/uk/introducing-policyengine-uk-chat/:path*",
},
{
source: "/uk/scottish-budget-2026-27",
destination:
Expand Down
Loading