Public Sector Network platform
The community, events, learning and marketplace platform behind Public Sector Network, a free government-only network across Australia, New Zealand and North America. Built from scratch in 2022, and led as CTO ever since.
Outcomes
- One platform PSN owns outright It replaced a WordPress site and third-party tools that did not talk to each other.
- Reporting built in, not bought A reporting suite and data explorer replaced an off-the-shelf BI product.
- Built for the scrutiny of government buyers I designed and run the architecture, the AWS estate and the delivery pipeline: behind Cloudflare's firewall, across two availability zones, with daily backups. In 2025 I moved the whole estate between AWS regions.
- Led the developers, then brought AI into the engineering Since April 2025 AI writes the code inside the platform's own guidelines, frameworks and skills, and I review every change and test it by hand, on top of the automated checks.
Talk to me about a platform like thispublicsectornetwork.com
Contents
The brief
Public Sector Network connects government professionals across Australia, New Zealand and North America: communities of practice, insights, events, training and a marketplace of vetted suppliers, free to anyone with a government email address. It is a certified B Corporation. In 2022 its digital side was a WordPress site and a handful of third-party tools that did not talk to each other. PSN needed a platform it owned: one place for members, content, events and vendors that a small team could run, and that would stand up to the scrutiny of government buyers.
What we built
I started the platform from an empty repository in January 2022 and have led it since: leading the developers, owning the architecture, the AWS estate and the delivery pipeline, and in April 2025 bringing Claude Code into the engineering work. It replaced the WordPress-era site piece by piece; the last WordPress integration code was retired in 2026.
Today it is one Django and Wagtail application that covers:
- Communities: posts, polls, memberships and live sessions with polls and Q&A, pushed to the browser over server-sent events rather than websockets.
- Insights: articles, whitepapers and video, with PostgreSQL full-text search and topic communities.
- Events: Wagtail pages for Government Innovation Week and the Innovation Showcase series. The platform is the OpenID Connect identity provider for the event system, so members sign in once; automated calendar invites feed RSVPs back into the CRM.
- Marketplace: vendor profiles with tiers, content, events and contact requests.
- On Demand: a video library with per-video paid access through Stripe Checkout.
- Academy, speaker bureau and hosted pages: single sign-on into the learning platform, a speaker directory, and versioned sponsorship prospectuses and post-event reports that staff publish themselves.
- Reach: in-app notifications, a digest newsletter, and push notifications to the iOS and Android apps.
- Staff tooling: moderation, a reporting suite and data explorer that replaced an off-the-shelf BI product, a URL shortener and a media library.
- First-party analytics: page views and engagement beacons with bot detection whose ban rules sync to Cloudflare’s edge, plus HubSpot and LinkedIn conversion sync.
The front end is server-rendered Django templates with Bootstrap 5 and HTMX. No JavaScript framework, no separate API layer to keep in step, and a design system documented as tokens.
AI in the engineering loop
Since April 2025 I have built the platform with Claude Code, inside guardrails I wrote for it. Version-controlled instruction files carry the platform’s conventions, dated decisions and incident notes; skills and frameworks set how recurring work gets done; each agent session gets its own test database; and tests enforce the conventions that matter. The AI writes the code to that standard; I direct the work, review every change and test it by hand before it ships, on top of the automated checks. In the product, Claude summarises speaker biographies, and content recommendations come from a nightly job I rewrote so its run time grows with the library, not with the library squared.
For technical reviewers
How it runs
Cloudflare (WAF, CDN and Workers) sits in front of an AWS load balancer that accepts traffic only from Cloudflare. Behind it, Docker containers on Elastic Beanstalk autoscale across two availability zones in private subnets, backed by Multi-AZ PostgreSQL with point-in-time recovery, serverless Valkey for caching, and S3 behind CloudFront with signed URLs for private media. Background work runs as scheduled management commands and a nightly Fargate task rather than a queue cluster.
Separate staging and production environments: main deploys to staging, production to production. GitHub Actions runs checks, the full test suite in parallel with coverage, and a dependency audit on every push; CodeQL and Dependabot are on; rollback is a redeploy of the previous version. New Relic and CloudWatch cover observability, and AWS Backup keeps daily, weekly and monthly copies. In 2025 the whole estate moved between AWS regions.
Security
Every view checks permissions, media URLs are signed and redirects are validated. Members can delete their own data under GDPR, with an audit trail; departed staff are deactivated rather than deleted; and application-level overload protection makes a crawler burst queue politely instead of slowing every request.
What PSN got
A platform it owns outright, in place of a WordPress site and tools that did not talk to each other: one account for members across the community, events and academy, reporting its staff run themselves instead of a bought BI product, and an estate built for the scrutiny of government buyers.
None of it depends on one person’s memory. The conventions, dated decisions and incident notes live in the repository, the tests enforce the conventions that matter, and the design system is documented as tokens, so the next engineer starts from what is written down, not from what someone remembers.