All projects

Revamp info

Hirnli helps mission-driven organizations find the right foundation funders, build per-foundation fit narratives, and ship professional German-language applications (Gesuche) that stand out from the templated norm. Multi-tenant by design — one deployment serves each organization's branded site on its own host.

Beta — running, not released

Problem

Foundations receive hundreds of applications, most of which are plain text templates that look the same, making it hard for organizations to stand out

Solution

Generate professional, visually compelling, and data-rich application documents that demonstrate fit and transparency

Mission

Revamp-IT's survival depends on foundation grants — this platform exists to find the right foundations, build compelling evidence of fit, and generate professional Gesuche that win funding.

Vision

To become a standalone SaaS product that helps any purpose-driven organization present themselves compellingly to potential funders and generate professional application documents.

Technical context

The stack has not been written down yet.

Investigate this project with Loki →

Sign in to ask about architecture, evidence, delivery risks and next steps in your workspace.

Roadmap

  1. Finish database-backed tenant resolution

    active · 0/3 steps done

    • Replace remaining static organisation-profile imports with request-scoped tenant data — not done
    • Make adding an organisation require database rows rather than application changes — not done
    • Verify cross-organisation isolation and branding — not done
    Where this comes from

Changelog

  1. September 3, 2026

    Diagnosed appcron-revamp-info-deadline-reminder's HTTP 500 — root cause was the missing pg_hba.conf grant for the new `hirnli` DB/`revampit` user (flagged by the prior run). Found the grant already present in /etc/postgresql/17/main/pg_hba.conf (added 2026-09-03 10:56 UTC, after the prior handoff) and confirmed live: replayed the exact cron call (GET 127.0.0.1:4012/api/cron/deadline-reminder with the real CRON_SECRET from /opt/revamp-info/app/.env) and got HTTP 200 with a real DB-backed response. Box-shaped fix was already applied by a human; no repo change was needed or made.

  2. September 3, 2026

    Diagnosed the appcron-revamp-info-deadline-reminder 500 to root cause — the 2026-09-02 cutover to a dedicated `hirnli` Postgres database created the DB, migrated all data (16,623 foundations), applied migrations 0000-0008 and flipped DATABASE_URL, but never added the pg_hba.conf grant, so every app DB connection falls through to the catch-all reject; filed the exact fix, safety rationale, verification and rollback as a T0 blocker.

  3. September 3, 2026

    Diagnosed the appcron-revamp-info-deadline-reminder 500 — the Hirnli database cutover on 2026-09-02 created the `hirnli` DB, migrated all data and flipped DATABASE_URL, but never added the pg_hba.conf grant, so every app DB connection has been rejected since 16:45 that day; cause is box-shaped (no repo change), exact fix commands handed over.

  4. May 27, 2026

    Closed TOCTOU race in PUT /api/gesuch-overrides/[slug] (9b2578c) — added UNIQUE (foundation_id, org_id, variant_key) constraint via migration 0004, swapped SELECT-then-write for atomic INSERT ON CONFLICT DO UPDATE, deleted the unused PATCH handler + deepMerge helper that no client called; verified with 6-way concurrent upsert producing exactly 1 row.

Roadmap and changelog come from this project's canonical development record, read October 29, 2026.