Phanera Gnosis.Data flywheel setup
Submit pageOutcomes

Phanera data flywheel setup.

The pages are built. To make submissions persist, connect a Supabase table and add environment variables in Vercel.

Design: submissions are saved as pending first. Public pages only show approved reports.

Supabase table SQL

create table if not exists public.phanera_user_reports (
  id bigint generated by default as identity primary key,
  created_at timestamptz not null default now(),
  status text not null default 'pending',
  category text not null,
  tool_slug text,
  country text,
  region text,
  city text,
  item_type text,
  amount numeric,
  currency text,
  outcome text,
  rating int,
  notes_public text,
  source_page text,
  user_agent_hint text
);

create index if not exists phanera_user_reports_status_idx on public.phanera_user_reports(status);
create index if not exists phanera_user_reports_category_idx on public.phanera_user_reports(category);
create index if not exists phanera_user_reports_created_idx on public.phanera_user_reports(created_at desc);

alter table public.phanera_user_reports enable row level security;

Vercel environment variables

After adding variables, redeploy the site.

Moderation workflow

  1. User submits an anonymous outcome.
  2. API saves it with status pending.
  3. You review rows in Supabase.
  4. Change safe rows to approved.
  5. The public outcome page shows only approved rows.