All work

Human–AI Interaction · App design

Beff

An AI companion that lives inside your neighbourhood — and answers on purpose, late

Role
Founder · conversation design · app design · research
Period
Feb 2026 – Present
beff.life

Most AI products treat speed as the virtue: faster, more, more immediate. Beff starts from the opposite hypothesis. If waiting is what makes a relationship, then latency is not a defect — it is a feature.

So I deliberately constrained two things. Space: the map is bounded to a walkable neighbourhood rather than a whole city. Time: replies do not arrive instantly, but after the sort of interval a person might take.

Method

I observed and questioned people in the moment of use — recording reactions while they were looking at the screen, rather than surveying them afterwards.

  • 01Contextual inquiry

    Observing and questioning participants as they used the app

  • 02LLM prompt engineering

    Conversational persona and reply rules composed as prompt layers

  • 03Delayed-reply experiment

    Treating reply latency as a design variable

The screens

The decision that the AI would not reply instantly had to be earned on screen. The core problem: make the wait read as anticipation rather than as failure, by showing the state honestly.

9:41
Beff연희동
걸어서 12분 안

여기까지가 네 동네야

더 멀리는 안 보여줄게. 걸어갈 수 있는 곳만.

DesignNeighbourhood map — the world bounded to walking distance, not a city
9:41
B

Beff

지금 산책 중

오늘 좀 지쳤어
이따 답할게

지금 바로는 말고, 좀 생각해보고.

약 20분 뒤 도착
메시지 보내기
DesignIntentional latency — honestly showing “later”, not a fake typing indicator
9:41
B

Beff

방금 도착

오늘 좀 지쳤어
21분 지남
아까 그 말 계속 생각했어.
지친 거랑 지겨운 거는 다르잖아. 어느 쪽이야?
메시지 보내기
DesignThe reply lands — the wait stays visible as part of the conversation

* Screens designed and built by me.

Try waiting for it

Read as a description, this just sounds like an odd decision. So here it actually makes you wait — the reply below genuinely has not arrived yet, and will not until the stated time passes.

I’m a bit worn out today

I’ll reply laterin ~12s

If you read another paragraph while waiting, that is exactly the state this was designed for: an instant answer gets consumed, a delayed one stays with you. (Skippable, and shown immediately if you prefer reduced motion.)

What I found

An unintended user population appeared

A cluster of women in their thirties — not the population I designed for — showed up. Nothing in my data explained why.

So

Rather than attaching a plausible post-hoc story, I recorded the fact that it was unexplained. It is not a conclusion yet — it is the next research question.

Why leave it open

The moment you invent a reason you did not observe, every later design decision is stacked on that fiction. Writing down “I don’t know yet” is more accurate — for the product and for the research.