From a sentence
to a live blog.
A cat lover with a kitten named Felix wants a cute, informative three-page blog. We build it end-to-end using every part of FfT — and ferret out real bugs along the way, toward a solid v1.0 for non-technical users like Jack.
Two goals, one real
build from start to finish.
We didn't want a demo that only works in the happy path. We wanted to walk the whole product the way a genuine first-time creator would — and break things on purpose so we could fix them before Jack ever touches it.
Prove it works, for real
Take a plain-English idea and carry it all the way to a published, working website — using every part of Foundry for Teams, not a slideshow of screenshots.
Find and fix the bugs
Rigorously exercise Mimic, the PRD tools, the build lane, Edit, the Debug Hub and Publish — and log every real defect in plain English, fixed durably.
One neat detail: Playwright is both how we drive every step and how we capture it. Every screenshot in this deck is a real, external picture of the product being used. nothing staged
Describe the blog
in plain words.
A joyful, curious kitten in his happy home. Three tidy pages — Home, Felix's World, and Kitten Care — warm and genuinely useful, not a giant site.
- Slick UI to show off: a dropdown/accordion, hover-reveal captions, an on-demand popup, an image slideshow.
- Two real forms — "leave Felix a comment" and a kitten-tips signup — that later give the Debug Hub something real to test.
- The rule: design ideas come from researching real sites, not from memory.
"A visitor lands, goes 'aww,' learns something useful about kitten care, plays with the fun bits, and maybe leaves Felix a comment — all in three tidy pages."
That's success, in the creator's own words.
Spin up felix-blog.
Like opening a fresh, empty folder in a website builder and naming it "Felix Blog." Right now it's just a blank starter page — but because it's a named project, everything we do next stays attached to it, and we can close it and come back anytime.
That "close it and come back" is exactly what a real user needs — and it's what we prove stays intact all the way through P6.
Created ✓
POST /foundry/new-project → HTTP 200, slug:"felix-blog". On disk: the starter blank site — nav + hero + intro.
Kept linked throughout
This one project threads through research cards, the PRD, the build, the edits — one home for the whole journey.
Borrow good ideas —
don't invent from memory.
Before capturing anything, we decided what to learn and which real sites to study, so the research was purposeful. Then we used every Mimic function on each one.
Layout
How a simple, polished blog arranges a hero, sections, and cards.
Palette
Warm + cute, not childish — chosen from what we saw, not guessed.
Slick behaviors
Dropdown, hover-reveal, popup, slideshow, gradient hero.
Organization
A skimmable "care tips" structure worth adapting.
Study sites: icatcare.org (calm care layout), thesprucepets.com (card grid), stripe.com (color + slick interactions). Each becomes a saved, annotated card associated to felix-blog. the rule holds
Load a real site,
then annotate and capture.
icatcare.org rendered live in the in-app viewer — full nav dropdowns, hero, kitten photo. We turned on Annotate to draw on it, then Region to capture just the part worth borrowing, and saved it as a card.
What we learned: a calm palette (soft neutrals + one warm accent) reads "caring," not childish; care topics chunk into clear sections; a big friendly hero sets the tone. All carried into the PRD.
Found Bug #1 here — Annotate and Region could both be "on" at once. Fixed, verified, resumed.
Exactly why we built
the Chrome plugin.
Some big sites can tell when a page is loaded by an automated behind-the-scenes browser, and show a "you look like a robot" page instead. thesprucepets.com did exactly that. Our tools worked perfectly — region, annotate, capture, save all succeeded; the site simply refused to render.
That's the website's choice, not a bug in the tool — and it's the exact case the Chrome plugin exists for: it captures in your own normal browser, where you're just a regular visitor. Stubborn sites come through fine.
Blend the research —
and prove the plugin.
We asked the Consult thread a real design question, reviewed the saved cards in the detail overlay, exercised card- and attachment-level sharing, and demoed the Chrome plugin capturing a live page — the attachment landed in the same library, on a felix-blog card.
Distilled decisions → warm calm base + one friendly accent + a subtle Stripe-style gradient hero; a big Felix photo with a short promise; nav dropdowns; content chunked into skimmable sections; the slick behaviors + two forms.
P3 scorecard: embedded viewer · region · annotate · save · associate · library · Consult · detail overlay · sharing · plugin — all ✓. felix-blog now holds 3 richly-annotated cards.
From intent to a
buildable spec.
The PRD page is a living-document builder: on the left, the spec (prd.md); on the right, a consult where you "feed the PRD anything — a paragraph, a screenshot, a stray idea — and it gets woven in." We fed the concept + research and hit Submit.
The consult lane wove a real Product Requirements Document for the three-page blog — nav + jump links, the slick behaviors, both forms, the warm calm palette — across ten sections, from our intent, not our memory.
Bug #2 lived here: the weave talked but wrote nothing. Traced to the save side never being wired for PRD jobs — fixed via a --kind prd write path. 6,381 bytes of real markdown now land on disk.
The core promise:
a real, working site.
Hit "Initiate" and a separate builder reads the PRD and produces a genuine three-page site — not from our memory. Describe intent → get a spec → get a working website. This is what FfT is for.
Design matches the Mimic research — warm palette + Stripe-style gradient hero + care-site sectioning. Metering-clean: built by the live lane worker, no headless model call. Finding (Note #2): the worker built it solo instead of spawning sub-agents as instructed — fine here, worth watching for bigger sites.
The improvement loop —
links stay intact.
How Jack or Omar would keep improving a site after the first build. We sent edits through Edit-Consult (a friendly hero subtitle, a card-hover lift) — and the standing lane really wrote them to the site. Then a second Mimic pass: study another real site, save a card, link it to the project, feed the idea back in.
- Edits landed — the hero subtitle now sits in
index.html; the hover-lift in two pages. - Links intact — switch away and back, Mimic still filters to 4 felix cards; the PRD still resolves.
- One early request honestly refused (the text wasn't on the page yet) — no fabrication.
Bug #3: saved cards didn't auto-link to the project (sealed script boxes couldn't share the active slug). Fixed by publishing the slug where both boxes can read it.
Crawl every link,
poke every form.
The Debug Hub is a three-pane deck: a Test board, a Talk-to-Jenny chat, and a live View. We put Felix's site through real QA — every navigation link, and both forms with empty and valid input — then surfaced the results back on the board.
Honest finding (Note #3): the hub shows results but doesn't run the tests itself. A skilled session drove the crawl. v1.0 next step: a one-click "Test this site" button so Jack has a button to press.
The blog goes public.
One call publishes Felix's blog to the real internet via Cloudflare Pages — no manual config, no wrangler wrangling. POST /foundry/publish → "✨ Success! Uploaded 3 files · Deployment complete."
fft-felix-blog.pages.dev
All three pages resolve HTTP 200 — Home, Felix's World, Kitten Care. The P6 edits (hero subtitle + card-hover lift) rode all the way through to production.
Metering-clean: pure Node + the wrangler CLI, no model call. The full intent → PRD → build → edit → publish chain, proven end to end.
The dogfood's real
value: the bugs.
Two modes on at once
Annotate and Region could both light up, so drawing broke region-capture. Made them mutually exclusive — a proper "one at a time" switch.
PRD weave wrote nothing
The lane said "PRD created" but saved no file. The save side was never wired for PRD jobs. Fixed via a confined --kind prd write path — 6,381 bytes now land.
Cards didn't link
Saving a card with a project open didn't associate it — sealed script boxes couldn't share the slug. Fixed by publishing it where both can read.
Note #1 · Bot-blocks
Some sites block the server renderer → the Chrome plugin is the answer. Tool itself is solid.
Note #2 · Orchestration
The lane built solo instead of spawning sub-agents. Fine here; worth honoring for bigger sites.
Note #3 · Observation deck
The Debug Hub shows results but can't yet run tests itself. A one-click crawl is the v1.0 gap.
Three real bugs, each fixed durably and logged in plain English, plus three honest findings named — not hidden. That's the whole point of dogfooding before Jack. honesty is the deliverable
A sentence became a
published blog.
Foundry for Teams took a first-time creator from a single plain-English idea — "a cute blog about my kitten Felix" — all the way to a real, live, three-page website anyone can visit. Every part of the product carried its weight: Mimic research, the PRD tools, the build lane, Edit, the Debug Hub, and Publish.
And the journey hardened the product: three bugs found and fixed, three honest gaps named. FfT is measurably closer to a v1.0 ready for Jack and for commercialization.
The chain held end to end: intent → PRD → build → edit → debug → publish. Not a demo — a real site, and a stronger product for having built it. ready for Jack
Meet Felix — live.
A curious little kitten, a happy home, and a product that took him from a sentence to the open internet.
fft-felix-blog.pages.dev











