Serious software/ serious work.
The Senti landing surface is a Bloomberg terminal that learned restraint from a Swiss bond prospectus. Dark by default, monospaced where it counts, zero ornament — every pixel earns rent. This document defines the system: how the marketing page looks, feels, and reads when it has to sell automated trading to a quant who does not want to be sold to.
The lens, not the subject.
The product reads numbers; the data reads back. The landing page introduces the lens — and gets out of the way. Brand identity rides on typography, density, and one signature interaction. No mascot, no gradient, no decorative blob.
The full-color inverse uses --bg (#0B0D11), not pure black — keeps the lockup in the same surface family as the rest of the system.
Reserve at least 1× the mark height on every side. No copy, control, or other mark inside the clearspace.
Below 16px the glyph silhouette collapses. For favicons at 16/32px use the rounded-square app icon, not the bare glyph.
Off-system colors. The mark is emerald or neutral, never anything else.
Distortion. Never skew, stretch, or rotate the mark.
Gradient backdrops. The system has none.
Glow, drop-shadow, outer effects. The line is a line.
P1Restraint over decoration
Typography, grid, and 1px hairlines do all the work. No gradient backgrounds, no glow filters, no rounded-corner SaaS cards floating in pastel space.
P2Density over white space
The product is data-dense. The landing tells that truth — tables, ruled sections, tabular numerics. Marketing surface is spacious, but never empty.
P3Numbers as the hero
Real metrics, explicit precision, en-dash negatives. +$1,247.30 not "+$1.2k". The audience can spot a fake number in 200ms.
- Bloomberg Terminal · information density
- Carta · typographic discipline
- Linear · precision and restraint
- Stripe Dashboard · institutional craft
- Robinhood / Phantom · retail gloss
- Gradient hero CTAs · 2021 crypto tell
- Mascot / emoji-led branding
- "Delightful" micro-animation
One chromatic color. Two roles.
Emerald serves UI chrome and P&L direction up. Red serves P&L direction down. Everything else is the cool-neutral surface family hsl(220 8% L). No third hue. Restraint is the brand.
default
first-class
- 01Is it in the surface family? It must match
hsl(220 8% L)for some lightness L. Same in both modes — only lightness varies. - 02Is it
--pos/--accent(emerald)? Use for UI chrome — active state, focus ring, crosshair, brand mark — or P&L direction up. Dual role is the point. - 03Is it
--neg(red)? Use only on values that represent P&L direction down. Never on landing-page chrome. - 04Is it pure black or pure white? Allowed only inside imagery, charts, or color swatches as ground-truth references.
If a color is none of these, it does not enter the system. No brand pink, no info blue, no warning yellow, no gold accent.
Mono signals terminal, not marketing.
Three families, strictly assigned. Display in Geist Mono, body in Geist Sans, every number in JetBrains Mono with tabular-nums lining-nums. The hero feels like a Reuters splash, not a Vercel template.
P&L → 2 decimals · prefix sign · currency before number, no space.
Sharpe / Sortino / Calmar → 3 decimals · never auto-tinted by value.
Negatives use en-dash, never hyphen. Drawdown is always negative.
Never abbreviate numbers as $1.2k on landing surfaces. That's retail. The whole pitch is that we don't talk down to the audience.
Spacious density, on a 4px base.
The dashboard runs compact; the landing page runs spacious. Both share the same 4px base unit, the same scale, the same radii. No bubble radii anywhere — 12px+ is a retail tell.
No 12px or higher radius anywhere. The "soft, friendly card" is a retail tell. Hairlines do the visual grouping.
Editorial-asymmetric — a 200px left rail for section-numbering + a fluid right column that may split into 1, 2, or 3 sub-columns. The left rail keeps the page legible the way a long-form article does, and the asymmetric split keeps it from feeling like a SaaS template.
Kill 90% of typical SaaS motion.
The only animations earn their place by carrying information: the live pulse dot signals "this is real-time", the tick flash signals "this just changed", the crosshair signals "you are pointing here." Everything else is a hard cut.
- Page transitions hard cut
- Skeleton shimmer static
- Accordion bounce instant
- Hover lift / shadow color only
- Number rolling instant
- Curve glow filter line is line
- Hero "breathe" scale still
- Logo float / parallax none
- Live-status pulse dot 1.6s ease-in-out
- Cell flash on tick 200ms · decay
- State change opacity 80ms
- Theme transition 150ms color
- Focus ring appear 0ms
- Hover background 80ms linear
- Tab switch instant
- Synchronized crosshair no anim · realtime
Pulse dot
1.6s scale 1 → 1.6 → 1, opacity 1 → 0. Signals "this is live data," and nothing else.
Live · streamingCell flash on tick
200ms background flash in pos-soft / neg-soft, decays to transparent. Click to retrigger.
prefers-reduced-motion: reduce disables both the pulse and the cell flash — dot stays solid, cells hard-cut.
1.5px stroke, square corners.
Icons are terminal-grade, not decorative. Always inline SVG, 16/20px box, 1.5px stroke, square line-cap, no fill, currentColor. Lucide is the reference set; never use a filled or duotone icon.
Primitives the landing page draws from.
Buttons, inputs, badges, status dots, dividers, code blocks. No floating cards — every visual grouping is a 1px hairline on a surface change.
config.tstypescript// landing hero — only token-level color export const hero = { eyebrow: "var(--accent)", title: "var(--fg)", slash: "var(--accent)", subcopy: "var(--fg-muted)", stripBg: "var(--surface)", stripBorder: "var(--border)", };
The page, assembled.
Each pattern below is a real, working block ready to lift into /index.html. They use only tokens defined above — no new colors, no new radii, no new fonts.
Link MT5.
Pick a strategy.
Senti does the rest.
A self-hosted bot platform for traders who'd rather read a Sharpe ratio than a marketing email. Vietnam-first, broker-agnostic, audit-friendly.
Every open deal, on one ruled surface.
Senti shows every position across every linked MT5 account in a single audit-friendly table. P&L flashes on tick. Magic numbers and order IDs sit in their own mono column. SL/TP edit in-row — no modal, no loss of context.
No striping, no "delightful" hover-lift cards. Just the table you wished MT5 had built.
| Ticket | Symbol | Type | Vol | P&L |
|---|---|---|---|---|
| 847203 | XAUUSD | BUY | 0.50 | +$248.30 |
| 847204 | EURUSD | BUY | 1.00 | +$112.40 |
| 847205 | BTCUSD | SELL | 0.20 | –$47.10 |
| 847206 | XAUUSD | BUY | 0.25 | +$87.20 |
| 847207 | USDJPY | SELL | 2.00 | +$203.80 |
One synchronized crosshair, every chart.
Hover any chart on a page — equity, drawdown, trade-density — and the full-width vertical guide snaps to the same timestamp on every visible chart. Pair it with the dashboard's compact density and you can audit a month of strategy decisions in under a minute.
Nobody else does this.
Every deal, every magic number, every server.
Senti keeps a full audit trail per MT5 account. Filter by strategy, magic, or session. Export to CSV. Pipe to your fund's reporting stack. Nothing is hidden behind a black-box "AI score" — every decision is traceable to a deal ticket on a real broker.
CSV export · per-deal magic · session-stamped
Self-hosted VPS · keys never touch our DB
| Time | Magic | Symbol | Source | Profit |
|---|---|---|---|---|
| 14:08:22 | 200847 | XAUUSD | ROBOT | +$48.20 |
| 13:42:01 | 200847 | EURUSD | ROBOT | +$32.10 |
| 12:11:47 | 200201 | BTCUSD | MANUAL | –$74.50 |
| 11:08:18 | 200847 | XAUUSD | ROBOT | +$118.40 |
| 10:32:55 | 200847 | USDJPY | ROBOT | +$22.80 |
I run four EAs across three brokers. Before Senti, my morning was eleven browser tabs. Now it's one ruled surface. The synchronized crosshair alone justified the migration.NQ Nguyễn Quang · portfolio manager · 4 accounts · $1.2M AUM
One linear ladder. No "Enterprise" dance.
Pay monthly, cancel anytime. Pricing scales with the number of MT5 accounts under management — not features, not "seats," not "AI credits."
Starter
- Self-hosted bot runtime
- 5 prebuilt EAs
- 30-day deal history
- Email support
Pro
- Everything in Starter
- Synchronized crosshair
- Custom EA upload (MQL5)
- 1-year deal history · CSV export
- Priority support · 4h SLA
Fund
- Everything in Pro
- Dedicated VPS node manager
- SSO · audit log export
- Onboarding engineer
- Custom integrations
Two deliberate departures.
If a visitor remembers anything from the landing page, it should be these. They are what makes Senti recognizable from any other fintech SaaS — and they are what keep the audience from feeling sold to.
+Tables and rules, not cards
Every section is a table or a ruled block. 1px hairlines do the grouping. No card shadows, no rounded "feature cards." 2× the information density at a glance.
| Sharpe | 1.847 |
| Sortino | 2.214 |
| Profit factor | 3.10 |
| Max DD | –3.247% |
+Right-aligned mono numerics
Every numeric value is mono, tabular, right-aligned, and carries explicit precision. Negatives use en-dash. Currency before number, no space. The "rivers" scan in 200ms.
| XAUUSD | +$1,247.30 |
| EURUSD | +$284.10 |
| BTCUSD | –$47.10 |
| USDJPY | +$203.80 |
— What it costs
Less "modern SaaS" aesthetic. Marketing screenshots will read as austere to retail visitors. Horizontal space is tighter on mobile.
+ What it wins
Instantly recognizable. Audit-friendly. Reads as an Excel that grew up. The quant audience knows on first scroll they are not the mark.