Overview
Getting past the blank page.
Putting together a case study can be a lot.
The project may already be finished, but the story is usually scattered across research notes, screenshots, old Figma files, feedback, decisions, iterations, and outcomes. Turning all of that into something coherent can feel like starting another project.
Artifact helps with that first barrier.
You give it what you have, and it helps turn those pieces into an editable first draft so you are not starting from scratch.
Deeper process Story analysis, writing formats, reliability, and collaboration.
Why not just use ChatGPT?
A general AI assistant can write a case study, so that alone was not enough reason for Artifact to exist
So I built Artifact to understand the structure of a design story before it started writing one.
Artifact looks for things like the problem being solved, what the designer actually owned, what research influenced the work, which decisions were made, what alternatives or tradeoffs existed, how the work changed through iteration, and what evidence supports the outcome.
When something important is missing, it does not invent an answer,instead,it points out the gap.
Story Check
Before or alongside the draft, Artifact reviews the material the user provided and shows how complete the story is.
A project might have a clear problem and role, but weak decision-making. Another might explain the entire process without showing what changed because of it.
Story Check makes those gaps visible.
For example
Problem — Clear
Role — Clear
Research — Clear
Design decisions — Needs context
Tradeoffs — Missing
Outcome — Mentioned, but unsupported
Artifact then surfaces a small number of questions that would make the story stronger.
Instead of asking something generic like “add more detail,” it can ask:
- What made you choose this direction?
- What changed in the design because of this research finding?
- How do you know the outcome improved?
- What parts of this work did you personally own?
The user can answer them or continue with the draft as-is.
Upload your materials and get a comprehensive story
The generation flow does two things at once.
First, Artifact analyzes the material using the same design-story framework behind Story Check.
Then it writes the draft from what it found.
That means the writing is grounded in the actual project rather than treating every upload as a generic prompt.
The framework looks for:
- Problem
- Evidence
- Role
- Research
- Decisions
- Rationale
- Tradeoffs
- Iterations
- Outcomes
- Evidence of impact
This same thinking also carries into the rest of the product, so Generate, Story Check, Strengthen, and scoring feel like parts of one system rather than separate AI features.
Designing around missing information
It should know when it does not know.
One of the easiest ways for AI to make a case study worse is by hallucinating and filling gaps with something that sounds believable.
A stronger sentence is not useful if the evidence behind it never existed.
Artifact is instructed to work only with the material the designer provides.
If a metric is missing, it does not create one.
If there is a design decision with no explanation, it asks what influenced the choice.
If an outcome is vague, it looks for supporting evidence instead of automatically turning it into a success story.
The goal is not to make every project sound impressive.
It is to help the designer tell the strongest version of the story that is actually true.
Storytelling approach
Not every case study needs the same depth.
Artifact includes four writing formats so the output can match the kind of project being documented.
A smaller portfolio piece can stay concise, while a larger project can make more room for process, decisions, constraints, and outcomes.
The format changes the depth of the story without changing the underlying evidence.
Strengthen
Sometimes the whole draft is fine and one section is not doing enough.
That is why I built Strengthen.
Instead of regenerating the entire case study and potentially losing writing the user already likes, Artifact focuses on one section at a time.
The guidance changes depending on the section.
A weak outcome section needs evidence.
A weak process section may need clearer decisions.
A weak role section may need a stronger distinction between team effort and individual contribution.
This keeps AI closer to an editing tool than a replacement for the designer's voice.
Reliability
Making AI feel dependable.
AI tools can fail for reasons users never see, including model changes, rate limits, and temporary outages. I built the generation flow to handle those issues gracefully and return clear feedback instead of leaving people stuck on a loading screen.
Artifact uses Gemini for generation and falls back to Groq when Gemini is unavailable or reaches its limit.
The important part is that the product does not depend on one provider's response format or behavior.
Both models work from the same Artifact framework and return the same kind of structured information, so the interface can continue working regardless of which model handles the request.
That became especially important after an earlier version of Artifact stopped generating because of model changes and API limits.
The experience now handles those failures more deliberately.
If a request fails, the loading state stops, the user's work stays in place, and the interface gives them a clear way to try again.
Keeping the free product manageable
Artifact is public and free, so every AI interaction also has a cost.
I did not want the new analysis layer to turn one Generate click into a chain of unnecessary requests.
The initial story analysis and case study generation happen together, so Artifact can understand the project and produce the draft in one model call.
Strengthen stays separate because the user chooses when to use it.
This let me add more intelligence to the experience without multiplying API usage every time someone creates a draft.
Building for real users
Publishing Artifact changed the questions I had to think about.
A prototype only needs to work when I use it correctly.
A public tool has people uploading unpredictable text and images, repeatedly calling an AI service, and occasionally doing things I did not design for.
I added limits around uploads, request frequency, generated output, and what the browser is allowed to execute.
I worked through some of that implementation and debugging with Claude Code, but the decisions came from thinking about Artifact as a real product rather than a demo.
Architecture
Keeping the build simple.
I worked with Claude Code and built the frontend with HTML, CSS, and JavaScript. The backend runs on Vercel and connects to the Google AI API whenever a user generates a case study from their uploads.
Rather than one function doing everything, the backend is split into four, each responsible for a single job. Clicking Generate calls the first; clicking Strengthen on a single section calls the second. The score bars fill in from the third while you read, and the thumbs up or down at the top of a draft goes to the fourth.
| Endpoint | Job | Rate limit |
|---|---|---|
| /api/generate | Turns raw notes and screenshots into a structured draft | 25/min |
| /api/strengthen | Rewrites one section against a coaching goal specific to that section | 30/min |
| /api/score | Grades the draft on impact, decisions, process and role | 30/min |
| /api/feedback | Logs a thumbs up or down to a Discord webhook | 10/min |
The rate limits are per minute, per visitor, and they aren't the same number by accident. Generation is the most expensive request, so it's held tightest. Feedback is capped hardest of all because it posts to an external service, which makes it the easiest thing to abuse. I thought about what happens when a free public AI tool meets the open internet. I anticipated abuse and put a ceiling on it before launch.
The four writing formats are designed for different needs rather than returning the same content under different names. Portfolio Skim keeps the story brief, while Deep Dive creates a fuller narrative with more space for process, decisions, and impact.
How I worked
I designed and built the first version of Artifact myself, including the interface, writing formats, prompt design, generation flow, and overall product direction.
As the product became more complex, I used Claude Code as a pair-programming tool for parts of the implementation, reliability work, testing, provider fallback, security hardening, and debugging.
I directed the work, decided how Artifact should behave, and used the tool to help implement and investigate areas that went deeper into the codebase.
What I learned
Artifact started with a simple problem: getting from a pile of project material to a first draft is hard.
The more I worked on it, the more I realized that generating paragraphs was the least interesting part.
The harder problem is helping someone recognize what actually makes their work worth talking about.
What did they decide?
Why did they decide it?
What changed because of the work?
What evidence supports that?
And what is still missing from the story?
Artifact became much more useful once I started designing around those questions instead of only designing around the prompt box.
Next
What I'd build next.
- Saved drafts and accounts. Let designers return to projects and continue editing across devices.
- Deeper story coaching. Help users answer weak areas directly inside the draft.
- More context-aware Strengthen suggestions. Use the full Story Check to make section-level feedback even more specific.
- Faster generation. Stream content as it is created so longer drafts feel more responsive.