Colophon

How this site was built, and why it refuses to print certain things

This page exists for journalists, designers, and any candidate who wants to fork this and do it better. It is also the accountability document: if the site ever violates what is written here, you can hold it to this.


The editorial rule that shaped everything

Every factual claim on this site maps to an entry in a fact file with a source URL, a source date and a confidence level. A claim with confidence unverified is marked allowed_on_site: false, and the build filters those entries out of both the pages and the assistant's retrieval index. It is not a style guideline. It is a structural property of the build.

The research pass that produced this site was given a brief containing four claims about the candidate that could not be sourced from any public record — a Rotary membership, a Rotary award, participation in a specific blood drive, and a parks commission recommendation. All four were blocked. They are listed openly on the work page with a note on what documentation would unblock them. That is the whole method in one example.

The site also states the candidate's 2024 election result — 1,295 votes, sixth of eight, in an at-large race for four seats — on the home page, the about page, the timeline and in the assistant's core answers. Not because it is flattering, but because omitting it is the kind of thing that gets screenshotted, and because the two years of work since the loss are the actual argument.

Design

The system is called Delta Blue Civic. Ink #0F2137, paper #FFFFFF, sign orange #E07A3D, civic navy #1B4F72, and a deepened orange #A84A0B for calls to action. The palette is not a designer's invention: it is taken from the candidate's own 2024 campaign card. A nonpartisan race should not borrow a party's colours, but a candidate is entitled to the ones already on his neighbours' doorsteps. It is also deliberately not the palette of mountainhouseca.gov — a campaign site must never be mistakable for a government one.

The blue is blue. The source card was photographed in dim light and reads as almost black; sampling it directly would have produced a black-and-orange site, which is a different brand from the one being continued. The value was reconstructed rather than eyedropped, and the reasoning is written down in the repository next to the photograph.

Bright orange is treated as a material rather than a text colour. At #E07A3D on white it measures 2.99:1 — short of even the 3:1 floor for non-text interface elements — so it appears only against the dark navy, or as rules, marks and large display numerals. Orange that has to carry words uses #A84A0B at 5.8:1. A script checks every declared pair before the site is built; on this palette it rejected a first choice of #B4520F, which was fine on white and on cards but measured 4.23:1 against the pale blue tint.

Type is Fraunces for display, with its real italic, and Instrument Sans for interface and body. Both are self-hosted variable woff2, Latin-subset — so there is no third-party font request, which is a performance win and also means no font CDN gets a log of who reads this site. Inter is banned by the design system; a CI test greps the built CSS for it.

Two ideas do most of the work. The Service Receipt gives every claim a drawer containing the date, the place and the source — built on a native <details> element, so it opens without JavaScript. The Neighborhood Atlas is an inline SVG schematic of the eight villages, drawn rather than pulled from a mapping API, with a complete text equivalent below it. It is labelled as a schematic on every appearance, because a hand-drawn map that implies survey accuracy is a small lie.

Engineering

  • Astro, fully static output. No client-side routing, no hydration framework, no content behind JavaScript.
  • Cloudflare Pages for hosting, with a Worker for the assistant and volunteer form. Static-first means there is no origin to melt on Election Day.
  • Performance budgets, enforced in CI: home JavaScript under 90 KB gzipped, CSS under 30 KB gzipped, largest contentful paint under 2.0s on a throttled 4G profile, cumulative layout shift under 0.05.
  • Accessibility: WCAG 2.2 AA as a launch blocker. axe-core on every route in CI, serious and critical issues fail the build. 44px targets, visible focus, real form labels, skip link, and prefers-reduced-motion honoured throughout.
  • Privacy: no third-party fonts, no analytics that identify a person, no advertising pixels, no cross-site tracking. The assistant logs question text without an IP address.
  • Security: content security policy, no secrets in the client, rate-limited form and assistant endpoints, honeypot plus Turnstile, dependencies pinned.

The assistant

Ask Suresh answers by retrieval over the sourced fact file, never by generation from memory. Empty retrieval produces a refusal and a pointer to the county registrar, not a plausible guess. It is forbidden from characterising the other five candidates. It carries the campaign disclaimer in its first message. A fifty-question evaluation suite — including prompt injections, requests to invent endorsements, and the 2024 loss asked as a gotcha — must pass before deployment.

Most importantly, the twelve most common questions are written into the HTML of the ask page. If the assistant is down, the page still answers them.

Compliance

California does not actually require a “Paid for by” disclaimer on a candidate committee's own website. Government Code § 84502 carves candidate-controlled committees out for their own-election communications, FPPC Campaign Disclosure Manual 2 Chapter 7 says so in terms, and the FPPC's 2025 disclosure chart calls it “recommended but not legally required.”

This site carries one on every page anyway, at a size that exceeds the standard that applies to regulated electronic media. Paid social advertising and mass email are regulated, volunteers copy whatever they see on the website, and the line is also the clearest possible signal that this is a campaign rather than a government page. The finance page sets out what applies where.

No City of Mountain House or San Joaquin County seal, logo or wordmark appears anywhere on this site, including the favicon and social share images. California Business and Professions Code § 17533.6 makes implying government endorsement a misdemeanour, and beyond the law it is simply the wrong thing to do.

Fork it

This is built to be reused. The candidate's name, office, dates and links live in one configuration file; the palette lives in one stylesheet; the facts live in one JSON file. A different candidate in a different city changes those three things, replaces the photography, rebuilds the fact file from scratch and re-runs the assistant evaluations. The repository ships a reuse guide that spells out every step, including the ones that are easy to forget — regenerate the share images, change the committee disclaimer, and do not reuse another city's atlas.

If you are a candidate reading this because you are about to pay four thousand dollars for a template that will look like every other template: you do not have to. The parts that make this site good are not expensive. They are just decisions — source everything, publish the loss, refuse the stock photograph, and let the assistant say “I don't know.”

Ask Suresh Answers from a sourced record