Content & voice
Settld sounds like a thoughtful friend who happens to be good at math — direct, warm, specific, a little cheeky. Not a bank. Not a startup pitch deck. Every word is a product decision.
Core tone
The voice is warm, specific, and confident — with strong opinions stated plainly. It reads like a thoughtful friend, not a pitch deck.
Warm: we know money between friends is awkward. We don't pretend it isn't.
Specific: "₹4,200 dinner at Farzi Cafe" not "a recent expense."
Confident: "Yes." "Done." "Promise." are full sentences.
Casing rules
Sentence case everywhere. No Title Case Headlines. No ALL CAPS except in JetBrains Mono eyebrow labels (which are always mono + uppercase as a typographic treatment, not a writing convention).
Indian English and context
Settld is for Indian friend groups. The voice reflects that — not in a forced or performative way, but in specificity: ₹ instead of $, GPay instead of Venmo, Farzi Cafe instead of "your local restaurant."
| Write this | Not this | Why |
|---|---|---|
| ₹4,200 | $58 / "4200 rupees" | ₹ is the currency. Always. |
| GPay kar de na | Send payment / Venmo me | Hinglish is valid. "Venmo" is not an Indian app. |
| Aarav, Priya, Rohan, Kabir | Alex, Sarah, John | Names reflect the actual user base. |
| Farzi Cafe, Swiggy, Goa Airbnb | "your local restaurant" / "a recent trip" | Concrete Indian context over vague generality. |
| UPI, GPay, PhonePe, Paytm, CRED | bank transfer / wire transfer | UPI is the settle mechanism. Name the apps. |
Voice patterns
These are the sentence structures that work. Learn the pattern, not the example.
"No ads. Not now, not ever."
"Even the ₹40 chai counts."
What not to write
- ❌ "Splitwise paywalled the basics" — never frame in terms of competitor failure
- ❌ "Free forever" / "₹0 forever" — the model is caps, not locks. Be honest about it.
- ❌ "No tracking, ever" — a promise we haven't scoped
- ❌ "Bengaluru-built" or any city-specific identity — pan-India product
- ❌ "10,000+ users" / "5★ rated" / "trusted by X people" — stat slop
- ❌ "Seamless," "delightful," "powerful," "intuitive" — abstract value words
- ❌ "Get the app" / download CTAs — currently pre-launch
- ❌ "We're not going to Splitwise you. Promise." — this wink is used once, in the footer only. Never repeated.
Emoji rules
Emoji are used sparingly and only as illustration — never decoration.
| Emoji | Use | Context |
|---|---|---|
| 🍜 ✈︎ ⌂ | Category glyphs in expense composer | One per expense row, mono-style. Chosen for geometric neutrality. |
| 🇮🇳 | Footer only | "Made with love in India 🇮🇳" |
| 🧑🍳 | Footer status or team credit | The cooking metaphor — "Chefs" column. Used once. |
| 💸 🎉 ⭐ 🚀 ✨ | Never — feels too startup marketing | |
ASCII glyphs are preferred over emoji for all other uses: → (CTAs), ↗ (delta/growth), ✓ (success), × (dismiss/close), · (separator), — (em dash), ∞ (unlimited).
UI label conventions
| Label | Preferred | Avoid |
|---|---|---|
| Primary action button | Verb + noun: "Add expense," "Settle up," "Invite friend" | Nouns alone: "Expense," "Settings," "Payment" |
| Cancel / back button | "Cancel," "Go back," "← Back" | "No," "Close," "Dismiss" (unless it's a modal close) |
| Confirm destructive action | "Remove Aarav from group," "Delete expense" | "OK," "Yes," "Confirm" — always name what's being deleted |
| Form field labels | Sentence case nouns: "Amount," "Description," "Who paid" | Questions as labels: "How much was it?" / Title case: "Enter Amount" |
| Placeholder text | Example values: "Farzi Cafe dinner," "₹0.00" | Instructions: "Enter description here," "Type amount" |
| Section headings | Noun phrases: "Group members," "Recent expenses," "Your balance" | Full sentences or questions as headings |
Error message patterns
Errors should explain what happened, why it happened if useful, and what the user can do. Never blame the user. Never be vague.
Empty state copy patterns
Empty states have a title, one sentence of body copy, and an optional action. The title names the state; the body contextualizes it. Never use "No [noun] found." as a title — it's a database error message, not a product moment.
| Context | Title | Body | Action |
|---|---|---|---|
| No expenses in a group | No expenses yet | Split the first one — even the ₹40 chai counts. | Add expense → |
| All balances settled | All settled up. | Nothing to settle. Enjoy it while it lasts. | None — the state is complete |
| No activity | Nothing here yet | When expenses are added or settled, you'll see them here. | None |
| No groups | No groups yet | Start one for the flat, the trip, the WhatsApp group that owes each other money. | Create a group → |
| No search results | No matches | No expenses matching "{{query}}". Try a different name or amount. | Clear search |
Confirmation dialog copy
Confirmation dialogs are required for destructive actions (delete expense, remove member). The title is a question. The confirm button names the action. The cancel button is "Cancel," not "No" or "Go back."
This removes the expense and updates all balances. This can't be undone.
[Delete expense] [Cancel]
This action is permanent.
[OK] [No]
Any unsettled balances involving Rohan will need to be resolved first.
[Remove Rohan] [Cancel]
Rules for confirmation copy:
- Title is always a question ending with "?"
- Name the specific thing being deleted/removed, not a generic "this item"
- The confirm button repeats the verb from the title: "Delete expense," "Remove Rohan"
- One sentence of consequence: "This can't be undone" or "Balances will update"
- Cancel is always "Cancel" — never "No," "Nevermind," or "Keep [X]"