A modern web application built with
◆
by
The Lossless Group
SSG and Styles with
Astro
and
Tailwind CSS v4
for BannerVC
Modern site generation, presentations, styling, testing, and 3D graphics.
Impulse Space is now pulling 139 jobs via the Pinpoint JSON API — including structured salary data that Greenhouse and Ashby don't provide. All three portfolio companies are live with zero custom scraping needed.
192 live job listings across 3 portfolio companies, updated daily.
Job board APIs return descriptions in wildly different formats — HTML entities (Greenhouse), plain text with boilerplate (Ashby), raw HTML with comment nodes (Pinpoint). The scraper now runs a universal sanitization pass on all snippets regardless of provider: decode entities, strip HTML tags, extract unique content past boilerplate headings. Every card shows clean, role-specific text.
Banner.vc now aggregates open positions across its entire portfolio — automatically, daily, and for free.
Instead of paying Getro or Portfolio Jobs thousands per year for a job board widget, the site scrapes portfolio company careers pages directly. All three portfolio companies use hosted job boards with free public JSON APIs (Greenhouse, Ashby, Pinpoint).
192 live job listings across 3 portfolio companies, updated daily.
How it works:
pnpm validate:careers — Build-time script that verifies each portfolio company's careers URL is reachable and auto-detects their job board provider (Greenhouse, Ashby, Lever, etc.)pnpm scrape:jobs — Fetches live job data from provider APIs, normalizes it to a common schema, deduplicates against prior runs, and writes jobs.json + jobs-meta.json/jobs page statically from that data at build timeZero extra dependencies. Scripts run on Node 22's native TypeScript support (--experimental-strip-types). No tsx, no ts-node, no bundler.
Smart snippet extraction. Job descriptions typically start with 300+ words of identical company boilerplate. The scraper detects section headings like "Responsibilities" and starts the preview snippet from the unique content — so every card shows what actually differentiates the role.
What you see at /jobs:
Component library (pick your favorite):
| Component | Description |
|---|---|
JobCard--Small |
Compact single-line: title, company, location, type pill |
JobCard--Medium |
Default: OG image, metadata tags, snippet, apply CTA |
JobCard--Large |
Featured: full-width banner, all metadata, prominent CTA |
JobRow--Wide |
Table row format for dense listings |
JobCardGrid |
Responsive CSS grid (2-4 columns) |
JobCardSpan |
Full-width stacked layout |
JobGroup--ByCompany |
Groups jobs under company header with OG banner |
JobStats |
Summary: total jobs, companies hiring, last updated |
Clients pick their preferred card size and layout in src/config/jobs.ts.
Portfolio companies in this release:
| Company | Provider | Jobs | API | Bonus |
|---|---|---|---|---|
| Impulse Space | Pinpoint | 139 | Free JSON API | Structured salary data |
| Mesh Optical Technologies | Greenhouse | 31 | Free JSON API | |
| TerraFirma | Ashby | 22 | Free JSON API |
Full spec: See context-v/specs/Portfolio-Wide-Job-Aggregator.md in the astro-knots repo for architecture, data models, scraping strategy, component specifications, and future plans including "Put Your Name in the Arena" — a candidate pipeline where job seekers connect via LinkedIn and the VC firm curates warm introductions to portfolio hiring managers.
The site's primary color has been migrated from crimson red to Banner Blue (#0052E6) across all three theme modes:
--color-primary, --color-ring, effect tokens)The color system remains fully token-driven — change --color-brand-blue in emblem-theme.css and everything follows.
All dependencies bumped to latest:
| Package | Previous | Current |
|---|---|---|
| Astro | 5.16.11 | 6.1.7 |
| Tailwind CSS | 4.1.18 | 4.2.2 |
| @shikijs/rehype | 3.21.0 | 4.0.2 |
| Three.js | 0.182.0 | 0.184.0 |
| unist-util-visit | 5.0.0 | 5.1.0 |
A sophisticated theming engine that adapts to user preference with three distinct visual modes:
The theme system uses semantic CSS tokens that cascade automatically — change one color and watch the entire interface adapt. Mode preferences persist across sessions via localStorage.
A polished changelog system for tracking development progress, inspired by Linear, Notion, and GitHub Releases:
Each entry supports rich markdown with:
Visit /changelog to explore the development timeline.
An internal reference for collaborators documenting the complete theming system:
Visit /design-system to explore the documentation.
A collection of animated WebGL visual effects for hero backgrounds and decorative elements:
Each Flare component is configurable, performant, responsive, and theme-aware.
Visit /design-system/flare to explore the effects gallery.
All commands are run from the root of the project:
| Command | Action |
|---|---|
pnpm install |
Installs dependencies |
pnpm dev |
Starts local dev server at localhost:4321 |
pnpm build |
Build production site to ./dist/ |
pnpm preview |
Preview build locally before deploying |
pnpm validate:careers |
Validate portfolio company careers URLs |
pnpm scrape:jobs |
Fetch latest job listings from portfolio APIs |
pnpm astro ... |
Run Astro CLI commands |