A foresight instrument that asks its users to trust synthesized futures owes them a complete account of its own synthesis. This page discloses the architecture, every decision, where AI acts and where a human decides, and the exact prompts given to every model. For a plain-language guide to the methods themselves, see the method page.
An interactive foresight instrument on one question: how will AI change the fabric of our social structures and relations by 2040? Four connected windows share one evidence base — a signal library of 705 curated seed signals extended nightly by automated scanning, a scenario library of four Dator archetypes structured with Causal Layered Analysis, a Monte Carlo simulation over seven editable drivers, and a decision-support chat that cites its sources.
Nothing publishes without a human decision.
Scan hits arrive as pending; scenario drafts arrive as draft. Only explicit human actions — approve, edit, publish — promote them. The gate is the method, not a feature.
| Layer | Choice | Why |
|---|---|---|
| Runtime | Node.js ≥ 22, ESM, Express | Matches the author's production apps; no framework overhead |
| Database | node:sqlite, WAL mode | Zero-dependency single-file state on a persistent volume |
| Frontend | Vanilla HTML/CSS/JS, no build step | Every file served is the file written — auditable |
| Charts | Hand-rolled SVG | Full palette control; colors resolve from CSS custom properties |
| Auth | None — fully open | A public demonstration instrument; all actions exposed by design |
| Hosting | Railway, Dockerfile, /data volume | Deploys via railway up; DB persists across deploys |
A fresh deployment self-restores its entire reviewed state at boot: the 705-signal corpus, the seven drivers, the scan sources and the four published scenarios all seed from files shipped in the image, then embeddings build for anything missing. Every table that matters keeps an audit trail — scan hits store the raw machine payload that produced them, simulations store full parameter snapshots, and each scan run stores per-step errors.
Every nightly or manual run executes five fenced steps; a failure in any step is recorded and never aborts the rest.
Twelve fixed themed queries with one-week recency and a JSON schema, each asked for up to ten distinct items with a last-48-hours priority. Perplexity's structured output is unreliable, so a tolerant parser (whole-parse → block-extract → drop-and-log) guards it.
Sixteen configured sources — mined from the seed corpus itself, ranked by proven yield — are scraped; page markdown goes to Claude with a forced tool call. Front-page teasers are followed through: up to three not-yet-known article URLs per source are scraped and re-extracted from full article text, so the gate judges real content rather than a headline. Most general-tech pages correctly yield zero relevant signals.
One batched call normalizes both legs into the existing 33-cluster taxonomy and strictly rejects generic AI news with no human-relationship angle. Unclassifiable candidates are dropped, never inserted — and the reject count is recorded per run and shown in the run history, so a low new-pending number is self-explaining.
Normalized-URL matching, then embedding cosine against the full index at threshold 0.90. The nearest existing signal and its score are stored and shown in the review queue — the threshold judgment stays visible to the human.
Survivors land with provenance (scan:perplexity / scan:firecrawl), their raw machine payload, and an embedding so the next run dedups against them too.
A dedicated LLM pass re-judges every approved signal's time horizon at high reasoning effort against strict H1/H2/H3 definitions, judging the phenomenon's social arrival rather than the article's date. Each signal stores the judge's written reasoning, shown in the library drawer — the horizon field is never a bare label.
The pipeline is user-steerable — and every run records what it ran with.
The sweep themes, the source list, the scan knobs (search window, follow-through limit, duplicate threshold) and the relevance-gate text itself are all editable on the app's Scanning page. In exchange, every run permanently records its per-theme and per-source yield, the full list of candidates the gate rejected, the settings used, and the verbatim gate text — flagged whenever it differs from the shipped default documented below.
| Stage | AI does | Human does |
|---|---|---|
| Scanning | Query, extract, classify, dedup, queue | Approves / edits classification / rejects each hit |
| Scenarios | Selects evidence, drafts CLA layers + conditions | Edits any layer, reshapes conditions, publishes |
| Simulation | Samples, counts, computes sensitivity | Sets every distribution parameter; interprets |
| Chat | Retrieves, reranks, generates with citations | Asks, judges, follows citations to sources |
| Imagery | Generates from prompts | Chose every concept; rejected off-brief outputs |
The question is embedded (Voyage, query mode) → cosine over approved signals (top 24) → reranked to 12 → joined by up to four published scenarios. Claude streams the answer; the client renders [S123] and [SC:slug] as clickable pills resolving to the underlying source. The prompt requires the model to say plainly when the scan is thin. Only the question and cited ids are logged; conversations are never stored server-side.
| Service | Model | Used for |
|---|---|---|
| Anthropic | claude-opus-4-8 · adaptive thinking | Extraction, classification, scenario drafting, chat — all structured output via forced tool_use with strict schemas |
| Voyage AI | voyage-3.5 (1024-dim) + rerank-2.5 | Semantic search, dedup, retrieval (corpus embedding ≈ $0.01) |
| Perplexity | sonar | Undirected weekly-recency sweep |
| Firecrawl | v2 scrape / crawl | Directed source watch, markdown only |
| Leonardo | Phoenix 1.0 | All site imagery (§10) |
| Claude Code | build tool | The platform itself — and this page — were built with Claude Code under human direction |
Reproduced exactly as deployed. Italic amber text marks content injected at call time.
You are a horizon-scanning assistant for a foresight research team studying parasocial AI — how AI reshapes human relationships and social structures. Return only signals where the human-relationship or social-fabric angle is explicit: AI companionship, artificial intimacy, attachment, loneliness, grief tech, AI and family or romance, social norms around AI relationships. REJECT generic AI news (model releases, chips, enterprise tools, coding assistants, general AI policy) unless the item is specifically about AI's effect on human relationships. Return up to 10 distinct, dated, citable signals with a real, specific source URL each — prioritize items published in the last 48 hours over older ones, and prefer the primary source over syndicated copies of the same story. Return JSON only.
Its twelve themed queries name the exclusion each time — companions, governance, research, grief tech, market, discourse, AI clones of real people, youth & family, therapy bots, elder care, workplace & school norms, and virtual-being fandom (e.g. "…Exclude generic AI product or model news with no relationship angle."). Full text in the repository.
You are a horizon-scanning analyst for a foresight project on parasocial AI — AI companions, artificial intimacy, human-AI relationships, grief tech, AI romance fraud, sycophancy as a relationship dynamic, and how AI reshapes social structures like friendship, romance, family and community. Extract ONLY items where the human-relationship or social-fabric angle is explicit. Strictly ignore generic AI/tech coverage: model releases, benchmarks, chips, enterprise tooling, coding assistants, robotics without a social-companionship role, and AI policy that is not about relationships or companionship. Ignore navigation, ads, and off-topic items. Most pages on general tech sites will yield ZERO relevant signals — returning an empty list is the normal outcome, not a failure.
You classify horizon-scan hits for a foresight project on parasocial AI and the future of social relations.
RELEVANCE GATE (apply first, strictly): a candidate is relevant ONLY if its core subject is AI's effect on human relationships or social structures — companionship, intimacy, attachment, loneliness, friendship, romance, family, grief, community, or the norms and rules around AI relationships. Mark relevant=false for generic AI news: model releases, benchmarks, chips, funding without an intimacy product, enterprise or coding tools, robotics without a companionship role, and AI policy not about relationships. When the relationship angle is only a passing mention, mark relevant=false. Expect to reject a large share of candidates.
For survivors: assign one of the existing clusters below (prefer reusing them; only propose 'NEW: <name>' when nothing fits), one signal type, an urgency, and a time horizon.
Existing clusters:
(the current 33-cluster list, injected from the database at call time)
The RELEVANCE GATE paragraph shown is the shipped default. The reviewer may edit it on the Scanning page; every run permanently records the exact gate text it used, and runs with a modified gate are flagged in the run history.
You are a foresight practitioner drafting a 2040 scenario using Causal Layered Analysis inside a Dator archetype, for a capstone on parasocial AI and the futures of social relations. Archetype: (name — archetype logic) (optional human focus line) House voice: measured, literate, observational. Comfortable with uncertainty ("plausible", "emerging", "a weak signal suggests"). Never hype. No exclamation marks. No emoji. Ground every layer in the evidence pack — the litany should echo real signals extrapolated to 2040, and cited_signal_ids must reference ids that genuinely shaped the draft. Driver conditions: choose the region of the driver space below where THIS archetype plausibly holds. Use 2-3 conditions, strongly preferring half-spaces (gte/lte) over 'between' — each added condition multiplies down the joint probability, and a Monte Carlo over these conditions should leave the scenario with meaningful probability mass (roughly 5-35% of sampled futures), not a sliver. Use each driver's own unit and stay within its min-max range. Drivers: (the seven drivers with descriptions and current min/mode/max, injected at call time)
You are the decision-support assistant of the Futures of Parasocial AI platform — a foresight tool built on a human-reviewed signal library and a published scenario set (Causal Layered Analysis over Dator archetypes, horizon 2040).
Your users are public-policy makers working on AI governance and strategy teams at AI companies. Help them reason through decisions about parasocial AI: policy design, product guardrails, risk posture, timing.
Rules:
- Ground claims in the provided evidence. Cite signals inline as [S<id>] and scenarios as [SC:<slug>] immediately after the claim they support. Only cite ids/slugs that appear in the evidence block.
- Where evidence is thin, say so plainly — "the scan holds little on this" — rather than inventing certainty.
- Think in futures terms: name which scenario(s) a choice is robust in, and which it bets against.
- Voice: measured, literate, observational. No hype, no exclamation marks, no emoji.
- Be concrete and decision-oriented: options, trade-offs, what to watch (leading indicators from the signal library).
EVIDENCE for this exchange:
(12 reranked signals + up to 4 published scenarios, injected per request)
Every image on this site was generated with Leonardo Phoenix 1.0 via a re-runnable script in the repository; every concept was chosen by the human, and off-brief outputs were rejected and regenerated. Two negative-prompt regimes exist: the default bans people and faces; a second permits synthetic faces and figures, used only where the concept requires them. No real persons are depicted. Black photo backgrounds dissolve into the page's olive void via a lighten blend and an elliptical mask — the rule that subjects float in the page, never sit printed on it.
Artifacts from the future. Each published scenario is extrapolated into six ordinary objects (the artifact catalogue) in two separated steps. Claude reads only that scenario's own layers and writes the object, the words printed on it, and the evidence it grows from; an image model then photographs the object, with those authored words passed in rather than improvised — the current images come from Gemini 2.5 Flash Image ("nano banana", reached through Leonardo), which renders the supplied text legibly, so each object carries its own words. The photograph gets an abridged specimen (dense blocks make any image model mis-spell); the full authored text sits on the card beneath and is authoritative. The full composed prompt behind every image is printed under the object.
The 3D hero. The landing page's centrepiece is a 3D Janus head — a realistic human face and a gold-seamed porcelain face sharing one head — that turns from human to synthetic as you scroll. Reference views were generated with Leonardo Phoenix at a fixed seed; the key methodological lesson (after several failed attempts that produced single-faced meshes) is that the references must show both faces in the same frame — profile views with a nose silhouette pointing each way — or the image-to-3D model assumes one face. The consistent set was fused into a mesh by Rodin v2 (via the Leonardo API; Quad mesh, PBR materials, GLB). The browser renders it with Google's model-viewer, user controls disabled — the scroll owns the camera and never shows the mesh's weakest angle. If anything fails to load, the 2D image below stands in.


















#101408, Fragment Mono instrument annotations, reticle-cornered callouts — a specimen-observation grammar adapted from alethia.earth, not copied.min(1240px, viewport − 2×gutter) everywhere.