Work

What we've built, and what we can show

The only finished work we can show you today is the page you're reading, with the code out in the open. Below it are three demonstrations, and we label them as demonstrations.

  1. Real work Built by Corvio Labs One piece
  2. Demonstrations Product demonstrations Three, all fictional

Built by Corvio Labs

Real work, one piece today

Websites Corvio Labs designed, built and shipped. There is one on this shelf, and it is the site you are reading.

A roofer working on one knee on a shingle roof under an overcast sky, the ridge running straight across the frame.
/* ─── The move: a word bisected by a photographic horizon ──────────────────────
   The frame is cover-fitted and centred, and every photograph is shot with its horizon at
   the exact vertical centre, so the horizon lands at 50% of the scene at any viewport.
   The word is rendered twice: one copy clipped to the sky half, one to the ground half.
   Both copies share one transform, so a scroll-driven translate makes the word sink
   behind the line while the line itself never moves. */
.scene { position: relative; overflow: hidden; isolation: isolate; }
.scene > img, .scene > picture { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; }
.scene img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; }
.half { position: absolute; left: 0; right: 0; overflow: hidden; z-index: 1; pointer-events: none; }
/* --horizon-target: where the scene would like its line. --horizon: where the line IS, set by
   fit() from where the cover-fitted photograph's built horizon actually landed. The homepage
   hero asks for a lifted line so the ground half has room for the argument; if the image cannot
   move that far, the copy moves, never the line. */
.scene { --horizon-target: 50%; --horizon: 50%; }
.half--sky { top: 0; height: var(--horizon); }
.half--ground { top: var(--horizon); height: calc(100% - var(--horizon)); }
.half > .word {
  position: absolute; left: 0; right: 0; margin: 0; text-align: center; white-space: nowrap;
  color: var(--color-ink);
  /* cap midpoint on the horizon: box centred, then nudged for Archivo Black's cap position */
  transform: translateY(calc(-50% + var(--cap-nudge, .06em) + var(--sink, 0px)));
  will-change: transform;
}
.half--sky > .word { top: 100%; }
.half--ground > .word { top: 0; }
/* Below the line the word is in the ground: it takes the ground's tone and fades into it. */
.half--ground > .word {
  opacity: .72;
  mix-blend-mode: screen;
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 8%, rgba(0,0,0,.08) 92%);
          mask-image: linear-gradient(to bottom, #000 0%, #000 8%, rgba(0,0,0,.08) 92%);
  -webkit-mask-size: 100% 100%; mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
}
/* Fallback sizes; fit.js sets the exact full-width size when JS runs. */
.word { font-size: var(--word-size, 24vw); }
The homepage photograph above the line. The rules that render its word below it.

Above the line, the site. Below it, the source. Both are running.

Piece 01

This site

Corvio Labs' own site: the website for a company that builds websites. Every page of it is the sample, and the sample is a working site, not a mockup of one.

Right-click anywhere and choose View Page Source. What you'll find is what's running: markup, one stylesheet, one script. No page builder, no theme, no plugin stack.

The details
ClientCorvio Labs. Ourselves, which is the one client we can name.
Built withReal code. Static pages built ahead of time, one stylesheet, one small script for the motion.
The design ideaOne word on each photo, placed right on the horizon. The code that does it is printed under the photo above.
ResultsNone claimed yet.

Why there is only one piece here

One piece so far. Ask us on the phone what we're building now, and we'll tell you.

Product demonstrations with made-up customers

Nobody in these is real

Three parts of the system shown working, with invented customers so you can see what each one does.

Text-back

Demonstration

The call rings out, then a text goes out. Sam, the roof and 41 Alder are made up so you can see how it works.

2:14 PMTue

Incoming call

Unknown

Local number

Missed call

Hey, this is Sam. Sorry I missed you, I'm on a roof right now. What's going on? Text me the address and I'll call you back the second I'm down.

Sent 2:14 PM

Half the gutter came down last night, 41 Alder. Tomorrow morning work?

2:31 PM

Where this happens in the process

The CRM record

Demonstration

The same call as it lands in the private CRM: one contact, one timeline, the conversation inside it.

  1. Tue 2:14 PMMissed call
  2. Tue 2:14 PMText sent
  3. Tue 2:31 PMReply by text
  4. Tue 3:06 PMNote added · Job added
  5. Wed 9:40 AMJob marked complete
  6. Wed 9:40 AMReview request sent

Open the whole record

Review request

Demonstration

A groomer this time. When a job is marked complete, the customer is sent a review request.

  1. Thu 3:40 PM
    Biscuit, full groom

    Job, scheduled.

  2. Thu 4:55 PM
    Job marked complete

    You tap Done. That's all it takes.

  3. Thu 4:55 PM
    Review request sent

    One text, automatic. Whether they write one is theirs.

Where this happens in the process

Ask what we're building now

Call and we'll tell you what we're working on this month, or email us.

Just call and ask.

Phone
(707) 640-6890
Email
jason@corviolabs.com
Where
Based in Vacaville, CA