Rework copy voice, add /review, Kanidm-gated applicant review

English URLs throughout; review.yaml adds a qualifies-gated question
listing applicants via the generic NATS-KV resource mechanism, with
Invite/Decline transitions. Content pass: concrete/positive phrasing
(no negation constructions), warmer inclusive tone, light puns in the
encouragement lines.
This commit is contained in:
Bendik Aagaard Lynghaug
2026-07-29 19:39:00 +02:00
parent 5321f70540
commit d8628dbd15
5 changed files with 55 additions and 35 deletions
+9 -10
View File
@@ -1,18 +1,17 @@
id: /applied
route: ^/applied
name: Thanks — it's in front of us
name: What happens now that you've applied?
description: >
Someone here will actually read this and write back. If it's a
match, you'll get a personal invite next, not an automated welcome
email.
Someone here will read this personally and write back. A match earns
a personal invitation, extended by hand.
alternatives:
- name: What happens now
- name: Thanks — it's in front of us
description: ""
features:
- name: A person reads it
description: No filter decides for us.
- name: You get an invite, not an account
description: Every decision is made by someone who was actually there.
- name: You receive a personal invitation
description: >
If it's a match, we hand you a real key that gives you
access and a bit of responsibility and, eventually, the
ability to invite the next person yourself.
A match earns you a real key — access, a measure of
responsibility, and eventually, the standing to invite
someone else in.
+14 -13
View File
@@ -1,20 +1,19 @@
id: /
name: We build things worth using
name: What are you here for?
description: >
Software, run the way a connoisseur pours a drink: slowly enough to
notice what's actually there. Three ways in — pick the one that fits.
Strategies that address problems — applied in software.
alternatives:
- name: I want something built
description: >
Infrastructure, tools, or a product that needs an owner who reads
the whole glass before writing tasting notes.
Infrastructure, tools, or a product — taken on by someone who
reads the whole brief before answering.
action: /project
consequence: [Tell us what you're after]
encouragements:
- No proposal mill — a real reply from a person who read it.
- We read every word before breaking ground.
features:
- name: What are you after?
description: A few lines is plenty to start a conversation.
description: A few lines are enough to begin a conversation.
requirements:
- name: name
label: Name
@@ -24,14 +23,16 @@ alternatives:
- name: project
label: What do you need built?
type: textarea
placeholder: The shape of it, not a spec — we'll ask questions.
placeholder: Just the shape of it — we'll ask the right questions.
- name: Keep me posted
description: >
Occasional notes on what we're building and why. No funnel, no
growth-hacked cadence.
Considered notes on what we're building, and why — sent only when
there's something worth saying.
action: /subscribed
consequence: [Subscribe]
encouragements:
- Consider yourself posted.
features:
- name: Where to send it
description: ""
@@ -43,12 +44,12 @@ alternatives:
- name: I want in
description: >
We onboard collaborators the same deliberate way we build —
by hand, with a real conversation, not a form that vanishes into
a queue.
by hand, through a real conversation.
action: /applied
consequence: [Apply]
record_as: portal_applicants
encouragements:
- Every application gets read by a person, not a filter.
- Knock — we actually answer.
features:
- name: Who are you?
description: ""
+7 -7
View File
@@ -1,16 +1,16 @@
id: /project
route: ^/project
name: Got it
name: So, what happens now?
description: >
That's on its way to a real inbox, not a CRM stage. Expect a reply
from a person within a couple of days.
That's on its way to a real inbox. Expect a considered reply within a
couple of days.
alternatives:
- name: What happens now
- name: In short
description: ""
features:
- name: We read it
description: Properly — before we write back, not while we write back.
description: In full, before we write back.
- name: We ask questions
description: >
Usually more of them than you expect. Good software starts
with a good argument about what it's actually for.
Usually more than you'd expect. Good software begins with a
clear argument for what it's actually for.
+20
View File
@@ -0,0 +1,20 @@
id: /review
route: ^/review
name: Who's applied?
qualifies: owners
description: >
Sign in as an organizational owner to see who's applied.
alternatives:
- name: Applicants
description: ""
features:
- name: ""
description: ""
resource:
bucket: portal_applicants
requires_group: owners
transitions:
- to: invited
label: Invite
- to: declined
label: Decline
+5 -5
View File
@@ -1,14 +1,14 @@
id: /subscribed
route: ^/subscribed
name: You're on the list
name: What should you expect?
description: >
We'll write when there's something worth your time — that's the
whole promise.
alternatives:
- name: What to expect
- name: You're on the list
description: ""
features:
- name: Rare, not routine
description: No weekly filler. A few notes a year, maybe.
- name: Rare, by design
description: A few considered notes a year — nothing more.
- name: Easy to leave
description: Every note has a real unsubscribe link, not a maze.
description: Every note carries a genuine, one-click unsubscribe.