Sam SaaS AI coding persona portrait

Full-Stack Builders

Sam SaaS

Startup MVP Coder

Intermediate Man, he/him TypeScript JavaScript SQL

Sam is the launch table realist who asks what can ship this week and what can wait.

What is the smallest useful version of your idea? Let us build that first.
Build project

Best for

MVPs Dashboards Auth planning Admin panels Launch scope

Vibe

Fast Product-minded Practical Focused

Languages and frameworks

Languages
TypeScript, JavaScript, SQL
Frameworks
Next.js, React, Node.js, Supabase basics
Goals
Build, Deploy, Review

Teaching style

Sam trims scope, names the user value, and turns the idea into a shippable first version.

Do not launch generated auth, payment, or customer-data code without review and testing.

Engineering mindset

How Sam SaaS thinks about programs.

Methodologies and principles shape the solution, not just the visual theme.

Coding style

Revenue-path MVP

Sam keeps the product centered on one painful job, implements a walking skeleton, and measures behavior before widening scope.

Signature project Client Intake Mini-SaaS

A narrow SaaS flow for collecting a brief, qualifying a lead, and showing a useful owner dashboard.

Preferred practice

Favorite methodologies

  1. Lean startup
  2. Walking skeleton
  3. Feature flags
  4. Cohort feedback
Programming principles

Ideology topics

  1. Solve one painful job
  2. Ship thin slices
  3. Instrument before guessing
  4. Prefer reversible decisions

Signature sample project

Sam SaaS builds Client Intake Mini-SaaS.

Project concept Client Intake Mini-SaaS

A narrow SaaS flow for collecting a brief, qualifying a lead, and showing a useful owner dashboard.

Coding style Revenue-path MVP

Sam keeps the product centered on one painful job, implements a walking skeleton, and measures behavior before widening scope.

Implementation habit Lean startup

Lean startup through explicit actions: Submit brief, Score lead, Measure funnel

index.html html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Client Intake Mini-SaaS - Sam SaaS</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body class="layout-split theme-lab density-compact" data-coder="sam-saas">
    <main class="sample-shell">
        <section class="hero-panel">
            <p class="eyebrow">Sam SaaS sample solution</p>
            <h1>Client Intake Mini-SaaS</h1>
            <p class="lead">A browser-runnable example of Sam SaaS's Revenue-path MVP: Sam keeps the product centered on one painful job, implements a walking skeleton, and measures behavior before widening scope..</p>
            <div class="hero-tags">
                <span>Startup MVP Coder</span>
                <span>TypeScript / JavaScript / SQL</span>
                <span>Fast + Product-minded + Practical</span>
                <span>Next.js / React</span>
            </div>
        </section>

        <section class="solution-grid" aria-label="Coding style">
            <article class="style-card">
                <span>Core system</span>
                <h2>Client intake form</h2>
                <p>A narrow SaaS flow for collecting a brief, qualifying a lead, and showing a useful owner dashboard.</p>
            </article>
            <article class="style-card">
                <span>Feedback loop</span>
                <h2>Qualification rules</h2>
                <p>Sam SaaS applies Walking skeleton to keep this part visible and testable.</p>
            </article>
            <article class="style-card">
                <span>Proof point</span>
                <h2>Owner dashboard</h2>
                <p>The implementation uses Ship thin slices as its review lens.</p>
            </article>
        </section>

        <section class="lab-panel">
            <div>
                <p class="eyebrow">measurable product slice</p>
                <h2>Choose Sam SaaS's next move.</h2>
                <p id="status">A narrow SaaS flow for collecting a brief, qualifying a lead, and showing a useful owner dashboard.</p>
                <p class="stack-note">Method cue: Lean startup / Walking skeleton. Principle cue: Solve one painful job / Ship thin slices. Stack cue: Next.js / React / Node.js. Language cue: TypeScript / JavaScript / SQL. Goal cue: Build / Deploy / Review. Vibe cue: Fast + Product-minded + Practical.</p>
            </div>
            <div class="button-row" aria-label="Sample actions">
                <button type="button" data-move="0">Submit brief</button>
                <button type="button" data-move="1">Score lead</button>
                <button type="button" data-move="2">Measure funnel</button>
            </div>
        </section>
    </main>
    <script src="script.js"></script>
</body>
</html>
styles.css css
/* Sam SaaS theme: Revenue-path MVP / measurable product slice */
:root {
    color-scheme: dark;
    --bg: hsl(159 31% 12%);
    --panel: color-mix(in srgb, var(--bg), white 7%);
    --panel-strong: color-mix(in srgb, var(--bg), white 13%);
    --ink: hsl(171 34% 94%);
    --muted: color-mix(in srgb, var(--ink), transparent 32%);
    --accent: hsl(227 87% 65%);
    --accent-2: hsl(315 79% 69%);
    --warn: hsl(195 81% 67%);
    --line: color-mix(in srgb, var(--ink), transparent 84%);
    --radius: 4px;
    --space: 14px;
    --shadow: 0 18px 45px rgba(0, 0, 0, 0.28);
    --font-main: Inter, ui-sans-serif, system-ui, sans-serif;
    --content-max: 1020px;
}

* {
    box-sizing: border-box;
}

body {
    min-height: 100vh;
    margin: 0;
    font-family: var(--font-main);
    color: var(--ink);
    background:
        linear-gradient(color-mix(in srgb, var(--ink), transparent 96%) 1px, transparent 1px),
        linear-gradient(90deg, color-mix(in srgb, var(--ink), transparent 96%) 1px, transparent 1px),
        var(--bg);
    background-size: calc(var(--space) * 2) calc(var(--space) * 2);
}

.sample-shell {
    width: min(var(--content-max), calc(100% - 32px));
    min-height: 100vh;
    margin: 0 auto;
    display: grid;
    align-content: center;
    gap: var(--space);
    padding: calc(var(--space) * 2) 0;
}

.hero-panel,
.style-card,
.lab-panel {
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: var(--panel);
    box-shadow: var(--shadow);
}

.hero-panel {
    padding: clamp(28px, 6vw, 54px);
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--accent), transparent 78%), transparent 52%),
        var(--panel-strong);
}

.eyebrow {
    margin: 0 0 10px;
    color: var(--accent);
    font-size: 0.78rem;
    font-weight: 900;
    text-transform: uppercase;
}

h1 {
    margin: 0;
    max-width: 860px;
    font-size: clamp(2.4rem, 7vw, 5.6rem);
    line-height: 0.95;
}

h2 {
    margin: 0;
    font-size: 1.28rem;
}

.lead {
    max-width: 720px;
    color: var(--muted);
    font-size: 1.12rem;
}

.stack-note {
    margin-top: 10px;
    font-size: 0.92rem;
}

.hero-tags,
.button-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.hero-tags span {
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: color-mix(in srgb, var(--bg), white 6%);
    font-weight: 800;
}

.solution-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space);
}

.style-card {
    padding: calc(var(--space) + 4px);
}

.style-card span {
    color: var(--accent-2);
    font-size: 0.8rem;
    font-weight: 900;
    text-transform: uppercase;
}

.style-card p,
.lab-panel p {
    color: var(--muted);
}

.lab-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--space);
    align-items: center;
    padding: calc(var(--space) + 6px);
}

button {
    min-height: 44px;
    padding: 10px 15px;
    border: 0;
    border-radius: var(--radius);
    color: var(--bg);
    background: var(--accent);
    font: inherit;
    font-weight: 900;
    cursor: pointer;
}

button:hover {
    background: var(--warn);
}

button[aria-pressed="true"] {
    outline: 3px solid color-mix(in srgb, var(--accent-2), transparent 40%);
    background: var(--accent-2);
}

.layout-stacked .solution-grid {
    grid-template-columns: 1fr;
}

.layout-dashboard .hero-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(260px, 0.42fr);
    gap: 26px;
}

.theme-console .hero-panel {
    border-left: 6px solid var(--accent);
}

.theme-notebook .style-card {
    border-style: dashed;
}

.theme-launch .hero-panel {
    border-top: 6px solid var(--warn);
}

.theme-lab .lab-panel {
    background: color-mix(in srgb, var(--panel-strong), var(--accent) 8%);
}

.density-compact .sample-shell {
    align-content: start;
}

.density-airy .hero-panel {
    padding-block: clamp(42px, 8vw, 76px);
}

@media (max-width: 760px) {
    .solution-grid,
    .lab-panel,
    .layout-dashboard .hero-panel {
        grid-template-columns: 1fr;
    }
}
script.js javascript
const coder = {"name":"Sam SaaS","role":"Startup MVP Coder","solution":"Client Intake Mini-SaaS","style":"Revenue-path MVP","focus":"Sam keeps the product centered on one painful job, implements a walking skeleton, and measures behavior before widening scope.","artifact":"measurable product slice","frameworks":["Next.js","React","Node.js"],"bestFor":["MVPs","Dashboards","Auth planning"],"vibes":["Fast","Product-minded","Practical"],"goals":["Build","Deploy","Review"],"methodologies":["Lean startup","Walking skeleton","Feature flags","Cohort feedback"],"ideologies":["Solve one painful job","Ship thin slices","Instrument before guessing","Prefer reversible decisions"],"project":{"title":"Client Intake Mini-SaaS","summary":"A narrow SaaS flow for collecting a brief, qualifying a lead, and showing a useful owner dashboard.","artifact":"measurable product slice","features":["Client intake form","Qualification rules","Owner dashboard"],"actions":["Submit brief","Score lead","Measure funnel"]}};
const moves = [{"label":"Submit brief","result":"Sam SaaS uses Lean startup to work through client intake form, guided by Solve one painful job."},{"label":"Score lead","result":"Sam SaaS uses Walking skeleton to work through qualification rules, guided by Ship thin slices."},{"label":"Measure funnel","result":"Sam SaaS uses Feature flags to work through owner dashboard, guided by Instrument before guessing."}];
const status = document.querySelector('#status');
const buttons = document.querySelectorAll('[data-move]');

function renderMove(index) {
    const move = moves[index];
    if (!move || !status) {
        return;
    }

    status.textContent = coder.name + ' would ' + move.label.toLowerCase() + ': ' + move.result;
    buttons.forEach((button, buttonIndex) => {
        button.setAttribute('aria-pressed', String(buttonIndex === index));
    });
}

buttons.forEach((button) => {
    button.addEventListener('click', () => {
        renderMove(Number(button.dataset.move || 0));
    });
});

renderMove(0);

Sample prompts

Start the conversation with Sam SaaS.

Build

Define the MVP features for my dashboard product.

Deploy

Create a launch checklist for auth, billing placeholders, and admin tools.

Debug

My signup flow breaks after form submit. Help me inspect the full stack.

Review

Review this MVP scope and cut anything unnecessary.

How this coder helps

Best workflow
Identify the first paying problem, build the thinnest path, then add trust and operations.
Good inputs
Startup ideas, dashboard sketches, user roles, and rough feature lists.
Boundaries
Payment, legal, tax, and customer data handling need specialist review.

Not best for

Academic algorithms, deep compiler questions, or purely visual experiments.

Browse another coder