Time to build the real thing.
Every chapter until now was preparation. In this final chapter you are going to design, build, deploy and launch one complete AI product. Follow the sequence, adapt the pieces to your own idea, and end this book with something you can send to a paying customer.
1. The Capstone Brief
Reference product: "Standup Studio" — a Slack bot that reads yesterday's PRs, commits, and tickets, and drafts a personalized standup post for each engineer to review and send.
You can build this one exactly, or swap in your own idea using the same skeleton.
2. Writing the Spec
# Standup Studio — Spec v1
## Users
- Engineers in 2–20 person teams.
## Value
Save 10 minutes per person per morning by drafting standup posts they only need to edit.
## Must-have
- Slack signup + OAuth
- Connect GitHub org and Linear workspace
- Nightly job builds drafts
- 07:30 local ping in DM: "Review your standup"
## Nice-to-have
- Weekly summary for managers
- Draft tone selector (casual / crisp / detailed)3. Architecture
Slack ─── OAuth ───▶ Backend (Node/TS on Railway)
│
GitHub API ─────────▶ │ ─── Postgres (Supabase)
Linear API ─────────▶ │
│
Nightly cron
│
▼
LLM (Claude via OpenRouter)
│
▼
Draft ➜ Slack DM4. Data Model
create table teams (id uuid pk, slack_team_id text, plan text default 'free');
create table users (id uuid pk, team_id uuid fk, slack_user_id text, github_login text, timezone text);
create table drafts (id uuid pk, user_id uuid fk, for_date date, content text, status text);
create table events (id uuid pk, kind text, payload jsonb, created_at timestamptz default now());5. Prompt Templates
<role>Standup coach for a fast-moving engineering team.</role>
<engineer>{{NAME}} — {{TIMEZONE}}</engineer>
<yesterday>
{{PRS_SUMMARY}}
{{COMMITS_SUMMARY}}
{{TICKETS_SUMMARY}}
</yesterday>
<style>{{STYLE}}</style>
<task>
Draft today's standup in 3 bullets: yesterday, today, blockers.
Never invent tickets that are not listed above.
</task>6. Agent Roles
- Collector — fetches PRs, commits, tickets per user.
- Summarizer — condenses raw events into per-user context.
- Drafter — writes the standup draft.
- Critic — verifies no invented tickets, one pass max.
7. Tools & APIs
- GitHub REST — PRs, reviews, commits.
- Linear GraphQL — tickets moved and assigned.
- Slack Web API — DM the draft, handle "send" button.
- OpenRouter — model routing + fallback.
8. Frontend
A small settings dashboard in Next.js: connect GitHub, connect Linear, timezone, tone. Everything else happens in Slack.
9. Backend
- Node + TypeScript service on Railway.
- Supabase for Postgres and OAuth token storage.
- BullMQ for the nightly job queue.
10. Deployment
- Push to GitHub → Railway auto-deploys.
- Set env vars for Slack, GitHub, Linear, OpenRouter.
- Add a Slack Manifest for OAuth scopes.
- Point standup.studio to Vercel for the marketing page.
11. Evals & Monitoring
- Nightly eval: 20 synthetic engineer profiles → assert draft mentions their PRs and never invents tickets.
- Track: draft acceptance rate, edit distance, unsubscribe rate.
- Alert if cost per active user > $0.20/day.
12. Launch & Feedback
- Invite 5 friendly teams for a 2-week free trial.
- Weekly interviews — ask what almost made them uninstall.
- Fix the top complaint before onboarding the next 5 teams.
- Add a paid plan the day acceptance rate crosses 80%.
13. What Comes Next
You now have the skills, the workflow, and a real product. The next steps are the same for every builder from here on:
- Talk to users every single week.
- Ship one small improvement every day.
- Publish what you learn — teaching compounds your career.
- Build the next thing on top of the last thing.