SurveyStream

SurveyStream · Interlocking Loop / Active Signal

Logo Lockup

Real vector, not a render. The mark is two tangent elliptical arcs with no freehand curve anywhere in it, and the wordmark is Archivo Bold with the glyph outlines extracted from the font binary — so every file here renders identically with no font installed and no webfont request.

Markrx 30 · ry 20 · 230° arcs · stroke 12
Aspect0.7826
WordmarkArchivo Bold, outlined
Tracking-0.04em
Files13 SVG + metrics.json

01 — Primary lockup

The horizontal lockup does most of the work.

SurveyStream
lockup-horizontal.svgPrimary · light grounds
SurveyStream
lockup-horizontal-reversed.svgDark grounds

02 — Construction

Two tangent ellipses, and one number that matters.

C₁ (0, −ry) C₂ (0, +ry) tangent rx 30 · ry 20 · stroke 12 arc sweep 230° each

Upper bowl centred (0, −20), lower at (0, +20), both rx 30 / ry 20. They are tangent at the origin — the amber ring — which is where the stroke hands off from one bowl to the other. Each arc sweeps 230°, from −38° to −268°. The pulse trail is three tapered dashes on a concentric ellipse offset 6 units outside the stroke edge.

rx > ry is the whole trick

Circular bowls produce an S with a 0.50 width-to-height aspect. Beside a Bold wordmark that reads as spindly and weak — I built it that way first and it was visibly wrong. Elliptical bowls give 0.7826, which is roughly what a bold grotesk S actually measures.

03 — Variants

Each cut exists because a context breaks the others.

SurveyStream
Single colourMark stroke 13.6 — heavier on purpose
SurveyStream
StackedNarrow and square slots
SurveyStream mark
icon.svg128 px · with trail
SurveyStream mark
icon-mono.svgcurrentColor · no trail
SurveyStream mark
app-icon.svg512 px · rounded rect

Small sizes

SurveyStream mark
32 px
SurveyStream mark
16 px
SurveyStream mark
16 px · 8×

Both favicon cuts drop the pulse trail — below about 40 px the dashes turn into noise — and thicken the stroke to hold at one device pixel. The 16 px cut is still legibly an S, which is the only test that matters.

04 — Layout rules

Measurements, all relative to cap height.

RuleValueWhy
Mark height1.38 × cap height Taller than the caps so the mark reads as a sibling of the word, not a letter in it.
Gap0.46 × cap height Tight enough to read as one object; wide enough that the S doesn't touch the S of "Survey".
Alignmentcap-height centre Not the baseline. The mark has no baseline, so aligning to one makes it sit low.
Clear space0.5 × cap height on all sides The pulse trail may overhang into it. Nothing else may enter.
Minimum width96 px for the horizontal lockup; below that use icon.svg Below this the two-tone split stops registering and the trail disappears.
Tracking-0.04em Tighter than the type scale at this size — the medial capital opens an optical gap.

05 — One departure from the brief

The interlock had to go.

What I tried

Four interlocking constructions, all built and rendered: overlapping gapped rings, an overshoot self-crossing, a true over/under weave, and a wide-bowl variant. Every one either left a visible lump where the strokes met, or stopped reading as an S. At icon scale a legible S and a visible interlock are in direct tension — the crossing needs room the letterform doesn't have.

What shipped instead

The interlock is implied, not drawn. One continuous cyan→mint gradient runs through the handoff, so the two halves meet without a seam and the two-audience idea still reads. If the literal interlock matters more than S-legibility, the closed-loop mark from the Flow & Lattice direction carries a real crossing — it's a single self-intersecting path, so the weave is structural rather than bolted on.

06 — Interlock variant

The same bowls, split into structure and flow.

A parallel set in logo/interlock/. Bowl geometry is identical — this is a re-skin, not a redraw. What changes is that the single gradient stroke becomes a solid Ink loop with a thin Stream→Pulse line threading it and crossing once at the waist.

SurveyStream
Primary — one elementGradient S + trail dashes
SurveyStream
Interlock — two elementsInk loop + flow line
SurveyStream mark
MarkStream → Pulse
SurveyStream mark
Without PulseStream → Signal
SurveyStream mark
App icon512 px
Construction base rx 30 ry 20 · stroke 13 flow offset +11 · stroke 5.4 crossing

Why this crossing works when four others didn't

Every earlier interlock attempt put two strokes of the same weight and the same colour across each other, and the crossing read as a lump. Here the accent is 5.4 against the base's 13 and a different hue, so there is nothing ambiguous to resolve — one line plainly passes over another. The crossing itself is a single G1-continuous cubic whose control points continue both arc tangents, so there is no kink either.

It maps onto the archetype more literally

§03 of the brand reference asks for "a disciplined grid with a streaming, transformative element passing through it" — Ruler holding the frame, Magician moving inside it. In the primary mark that idea lives in a gradient. Here it is the construction: a solid structural loop, and a bright line moving through it.

Small sizes — a hard rule

SurveyStream mark
32 px
SurveyStream mark
16 px
SurveyStream mark
16 px · 7×

Below about 40 px the accent is dropped and the base thickened. Not a preference — the entire mark is the base/accent separation, and at one device pixel that separation turns to mud. I rendered it at 32 px before adding the fallback and it was illegible. The same rule governs icon-mono: in a single colour the accent and base share a value, so the crossing has nothing to distinguish it, and mono gets the base alone.

Status: parallel set, and Pulse is still unsigned

The approved primary above has not been replaced. If you adopt this variant, the swap is a directory rename plus three link updates. Separately, the default flow gradient uses Pulse #2FE3A2, which is still awaiting sign-off — icon-no-pulse.svg shows the Stream→Signal version that stays entirely inside the validated palette. Both read correctly; it is two hex values either way.