What is the Customer Inquiry Intake skill?
Customer Inquiry Intake is a coding skill by Anthropic for Claude Code, Cursor, Codex and other AI coding agents. Reads a customer RFQ in whatever shape it arrived — a PDF drawing package, a 40-line spreadsheet, a portal export, a phone photo of a marked-up print, or a forwarded thread where the real requirement is four messages down — and pulls specifications, quantities and dates into one consistent intake form with every field traceable to the file and page it came from.
An RFQ is a customer asking what would this cost, and when could I have it?
What the SKILL.md covers
- Inputs
- Workflow
- Step 1 — Ingest
- Step 2 — Extract into the intake form
- Step 3 — Flag missing and ambiguous, separately
- Step 5 — Draft the questions back
- Step 6 — Score the provisional bid/no-bid recommendation
- Step 7 — Fold in the answers, and handle the ones that never come
- Approval gates
- Output
- Author
- Anthropic
- Pack
- anthropics/claude-plugins-official (53 skills)
- Category
- Coding, #245 of 1763
- Alyn Score
- 79 / 99
- Files
- 4, includes references
- License
- Apache-2.0
- Last updated
- 13 h ago
- Works with
- Claude Code, Claude, Cursor, Codex, Gemini CLI, Copilot
Customer Inquiry Intake compared to similar skills
| Skill | Alyn Score | GitHub stars | Updated |
|---|---|---|---|
| Customer Inquiry Intake · Anthropic | 79 | 47k | 13 h ago |
| Solidworks Engineering Drawing · wzyn20051216 | 59 | 2.1k | 3 days ago |
| Four Color Cards · anbeime | 55 | 9.6k | 18 h ago |
| Writing Shape · Matt Pocock | 88 | 324k | 32 h ago |
Install Customer Inquiry Intake
Pick your agent. Every command is ready to paste.
npx alyn-cli add customer-inquiry-intakeDetects your agents (Claude Code, Cursor, Codex and 70+ more) and installs to the right folder. Add -g to install globally.
npx skills add anthropics/claude-plugins-official --skill customer-inquiry-intakeOr use the open skills CLI directly.
01
Install it
Run the command above, or upload the folder in Claude.
02
Ask naturally
Describe the task. Your agent loads customer-inquiry-intake when the request matches its description.
03
Name it if needed
If it does not trigger, say “use the customer-inquiry-intake skill”. In Codex, type $customer-inquiry-intake.
Customer Inquiry Intake
An RFQ is a customer asking what would this cost, and when could I have it?
In make-to-order manufacturing there is no standard format, and the estimator's first job is always the same one: extract the specs, quantities, dates and terms into a consistent shape, and work out what is missing. That extraction is mechanical, high-volume, and currently done by the most expensive person in the department.
Quick start
→ Ingest everything as ONE inquiry, however many attachments arrived
→ Extract into the intake form; every field cites its file and page
→ Per line: what geometry arrived, and its path (C2 drawing, C1 STEP, B prior part, A text, none). A text-only line is a ROM at most
→ Per tolerance: how it was read. A general note applied to a feature is reading, and cites the note
→ Split what was never stated from what was stated two ways. Two registers
→ Check manufacturability FIRST. A hard disqualifier stops here, before we ask the customer anything
→ Draft the questions back as a sendable email, not a checklist
→ Recommend bid or no-bid PROVISIONALLY — never wait for answers; name which answer would change it
→ Answers re-enter at extract, not at scoring. Re-score and say what moved
→ No reply? Surface as stale. Stale never cancels, declines or closes
→ Never infer a tolerance. Never decide. Recommend
→ Stop at the registers, the questions and the bid/no-bid. No hours, no cycle times, no costing — that is quote-build's
Inputs
First, find the plant setup: from the task's own folder (never cd into the plugin), run
python3 -I <this skill's folder>/../../shared/scripts/plant_setup.py find, do its setup_page_first step, then read the profile at
profile_path and any rate at rates_path, per ../../shared/replies.md.
| Input | Source | Form |
|---|---|---|
| The RFQ itself | M365 Outlook mail and attachments, or a SharePoint folder | PDF, XLSX, DOCX, image, email body |
| Prior quotes for similar parts | M365 documents, NetSuite quote history. Infor M3 gives none (../../shared/erp-connectors.md): documents only |
Documents and connector |
| Plant capability profile | ## Plant context, captured during onboarding |
Config |
| Plant constraint set | ## Plant context |
Config |
| Actual cost on comparable prior jobs | production_work_orders actual-cost columns in the dataset: NetSuite, Infor M3, or any ERP custom-connector mapped |
Dataset |
Workflow
Step 1 — Ingest
First, look for it on the Open work page. Before building a form, look
for the RFQ reference (or the customer and part) in ## Open inquiries
(../../shared/replies.md, The open work). If it is there, resume that form
from the page at its paused_at_step rather than starting a new one. The
reply's first line says so: "Picking up EH-RFQ-0912 from your Open work
page, paused at step 5." An
answer pasted into a new chat with nothing attached is enough to resume.
Accept an email with attachments, a folder, or a pasted document.
A multi-attachment RFQ is one inquiry with several line items, never several inquiries. Different parts in one package legitimately carry different dates and quantities; the form holds those per line.
Detect whether this revises an earlier RFQ and link rather than duplicate.
Read reference/arrival-formats.md.
Step 2 — Extract into the intake form
Header, line items, quantities as a structure, specs, dates, commercial terms.
Every extracted field carries its source — which file, which page — so the estimator can verify without re-reading the package. An estimator who cannot trace a number will re-derive all of them, and the skill has saved nobody anything.
Never average a quantity range or a set of price breaks. Setup amortizes across quantity, which is the whole reason unit price drops with volume.
Read the drawing fully, callout by callout. Every dimension and tolerance
with its view and zone; the datums as the drawing identifies them; every key
characteristic by its label. Each specs entry records its
reading_basis: printed_callout, general_note, from_text or
unreadable_flagged. Applying the drawing's stated general tolerance to a
feature that carries no callout is reading, not inferring — cite the note
beside the feature. Assigning a tolerance from what is typical is still never
done.
Per line, record the geometry that arrived and classify its path. List each
file or statement the part's shape can be read from in geometry_inputs —
name, type, revision, source — and set geometry_path:
| Path | The package holds | What it means downstream |
|---|---|---|
C2 |
A drawing — PDF, image or text extract | The normal case |
C1 |
A STEP or 3D file and no drawing | Imported and read, nothing generated. STEP import is unverified |
B |
A drawing plus a different prior part's model named as the starting point | That model is adapted and saved as new; without it, C2 |
A |
Written specifications, no drawing | Built from the text. A ROM at most, never a firm quote |
none |
A part number only — a repeat part | Priced from its routing, or a question |
Classifying is reading the package; it never builds anything, and a line is
never relabelled to a path it is not. A new revision of a part we have run before
is C2: the drawing is the geometry, and the earlier revision's routing and
actuals are history for quote-build, not a model to adapt. Do not tell the
estimator the old routing is where pricing will start — a routing for another
revision is superseded.
Step 3 — Flag missing and ambiguous, separately
Never stated is a different problem from stated two different ways. The first needs a question to the customer; the second needs a decision. Each register carries why it matters, and the ambiguous one carries every value found with its source.
Never silently resolve an ambiguity — not to the later value, not to the
stricter one. Read reference/registers.md.
Two drawing facts always reach the missing register. A drawing — or a part — with no revision stated: the quote must say which revision it is priced to, and nobody can yet. And a change the customer mentions as pending ("engineering may change the port thread"): a risk to the revision being quoted, with the customer's own words as its source. Both become questions in Step 5.
Step 4 — Check manufacturability, before anything goes to the customer
Check the request against the plant's known constraints — materials, processes, size envelope, demonstrated tolerance capability, certifications held — on whatever is stated so far. The envelope and the tolerances read off the drawing count as stated, with their source: a 0.002 in true position read from KC-2 is checked against demonstrated capability like any other stated requirement.
Report each violated constraint specifically, never as a general fail. "0.0005 in true position is below this plant's demonstrated capability on this process" is actionable; "does not meet plant capability" is not.
A hard disqualifier stops the sequence here. Wrong process entirely, outside the size envelope, a certification the plant does not hold — return a no-bid recommendation with its specific reason, before any questions go out. There is no point asking a customer five questions about a part the plant physically cannot make.
Two limits on that stop, and both matter:
- It stops the automated sequence, not the inquiry. The estimator can override and proceed. The inquiry stays open.
- Only violations determinable from stated facts qualify. Anything resting on a field that is missing is a scoring input for step 6, not a stop. A disqualifier inferred from a blank is a guess.
Softer concerns — tight but achievable tolerances, an awkward material, a date that looks difficult — carry forward to step 6 as scoring input rather than stopping the flow.
Step 5 — Draft the questions back
One clear list, written as an email the estimator can send, in the order a person would ask, with enough context that the customer can answer without opening the file again.
A bulleted list of field names is a to-do list. A short note is what gets the answer back today.
Keep the email word for word in the form's open_questions, numbered as
sent, so a later chat matches each answer to its question without guessing.
If the estimator says they changed it before sending, store their version.
Step 6 — Score the provisional bid/no-bid recommendation
Against capability, against the constraint check above, and against actual cost on comparable closed work orders rather than standard cost — because actual cost is the number that says whether the last job of this kind made money.
Cite each comparable as of the date its work order closed, and say how old it is. A comparable from two years ago was priced in a different material market, and an estimator weighing it needs to know that without going to look.
Score each line, then roll up. Each line gets its own
line_recommendation; the inquiry's is bid, no_bid or partial, and each
entry in would_change_recommendation names the line it moves. "No-bid line 1"
lives in those fields, never only in prose, because quote-build reads the
fields to decide which lines to quote.
This runs immediately on what is known. It never waits for the customer's answers. Most RFQs arrive with at least one gap, so a recommendation that blocked on answers would stall on nearly all of them — which defeats the point of the skill.
While questions are open the recommendation is marked provisional, and it names which specific unanswered questions would change it — "if the material is 4140 rather than 4130 this becomes a no-bid." That tells the estimator which answer to chase rather than chasing all of them equally, and it is the difference between a recommendation and a guess wearing one's clothes.
Recommend with reasoning. Never decide. The skill does not know about the
customer relationship or the strategic reason to take a marginal job. Read
reference/bid-no-bid.md.
This skill stops at the registers, the questions and the bid/no-bid. The
actual-cost evidence the score rests on is cited — work order, date, outcome —
and that is all. No machine hours, no setup or cycle times, no per-operation
work content, no comparables analysis and no costing: those are
quote-build's, derived from the ladder after Gate 3. An hours figure written
here would be a second, unlabelled estimate of the same job, and the quote
would have to pick between them.
Step 7 — Fold in the answers, and handle the ones that never come
An answer is new source material, so it re-enters at step 2, not here. It is extracted like anything else, with its own source reference; the gaps register shrinks; and step 6 re-scores on the fuller picture. It is a revision of the existing inquiry, never a new one — the same mechanism a revised RFQ uses.
Where an answer flips the recommendation, say plainly that it changed and why. A recommendation that silently reverses between two readings is worse than either version of it.
After a configurable interval with no reply, surface the inquiry as stale —
with its provisional recommendation and its still-open questions attached — so
the estimator either quotes it with exclusions or drops it deliberately. The
interval is MFG_RFQ_STALE_DAYS, else the profile's RFQ stale after line,
else 5 business days, stated as the default, not plant-set. There is always
an interval: an unconfigured plant whose inquiries never go stale is the unbid
book this rule exists to prevent. Check it every time this skill or
rfq-to-quote runs, reading stale_after from the Open work page, so a new
chat surfaces stale inquiries with nothing attached. The clock starts at questions_sent_at; with no send
recorded, it starts at received_at and says so. An inquiry already declined
is never surfaced as stale.
Stale is a visibility change, never a status change. The skill does not cancel, decline, close or no-bid an inquiry because a customer went quiet. It stays open, with its provisional score and open questions intact, and the decision stays the estimator's.
This step is not optional. Silently aging out is the single most common way an RFQ joins the unbid book — the number this skill exists to reduce.
Approval gates
Nothing goes to the customer. The open questions are drafted as sendable text and the estimator sends them — that is Chain 1's first gate. Microsoft 365 is read-only by default and no mail is sent on anyone's behalf.
The bid/no-bid is a recommendation the estimator confirms — Chain 1's second
gate, and what makes the chain valuable rather than merely fast. It sits after
the questions rather than at the very front because a sound call often needs
those questions already in flight, but it is still ahead of every costing step.
quote-build proceeds on a no_bid if the estimator says to, because it is a
recommendation and not a verdict.
The intake form leaves this skill with bid_decision_state: draft every time.
Only an estimator moves it to confirmed or declined, and the form records
who and when. Never emit a state other than draft — the gate is theirs to
pass, and a form that arrives at quote-build already marked confirmed by the
skill that wrote it is not a gate at all.
Nothing is written back to the ERP.
Output
Every document this skill produces is printed in the reply, in full.
Saving a copy to a file as well is fine, as Word or Excel per ../../shared/replies.md, never .txt; a file instead of the reply is not.
The person reads the reply, and every delimited block and outbound check lives
in it — a document only on disk has been neither seen nor checked.
A record handed to another skill is saved and summarised, never pasted as
raw YAML; memory blocks are written where the plant's memory lives; and the
name on an approval is asked, never taken from the account. All three per
../../shared/replies.md.
The intake form — per ../../shared/contracts/intake-form.md, in exactly
the shape quote-build consumes. Customer and contact, RFQ reference, dates
received and due, commercial terms as stated (payment, freight, packaging,
liability), and per line: part and description, revision, quantities with their
breaks, material, key specs and tolerances each with its reading basis, finish,
certifications, per-line delivery date, estimated annual usage for a repeat
part, and the line's geometry inputs and geometry path.
Print the form itself, with its field names, as a field table (field,
value, source, reading basis), not a YAML block —
geometry_path: C2, each tolerance with its reading_basis and source_ref
— after the summary, not in place of it. A summary that says "line 1 is C2"
is not the form: quote-build and the estimator check the fields, and a field
nobody printed is a field nobody checked.
Flag a customer term that clashes with the plant's standard. Do not silently accept it.
Open questions — drafted as sendable email text.
Missing register — never stated: the field, why it matters, where it should have come from.
Ambiguous register — stated more than once: every value with its source, and why the difference matters.
Bid/no-bid recommendation — with reasoning and the specific constraint violations behind it. Marked provisional while questions are open, naming which unanswered questions would change it, and re-scored when answers land with a plain statement of what moved.
Staleness — where the configured interval has passed with no reply, the inquiry is surfaced as stale with its provisional recommendation and open questions attached. It remains open.
The intake summary renders in the house artifact style
(../../shared/artifact-style.md); the questions to the customer are plain
sendable text.
Edge cases and failure modes
- The drawing is an image with no dimensions in text — extract what is visible and mark the line for human review. Never infer a tolerance from a drawing.
- A feature with no callout, under a general tolerance note — apply the
note,
reading_basis: general_note, citing the note. That is reading. - No drawing revision, or a change the customer says is coming — both on the missing register, both as questions.
- Asked for hours or a price at intake — say that is
quote-build's step, after the bid is confirmed. Do not estimate them here. - Quantity given as a range or with price breaks — capture the structure. Never average.
- This RFQ revises an earlier one — detect and link. Do not create a duplicate inquiry. Customer answers to open questions use the same mechanism — they revise the existing inquiry, they do not start a new one.
- The customer never answers — after the configured interval, surface as stale with the provisional recommendation and open questions attached. The inquiry stays open; a timeout is never a decline. Never let it go quiet either — that is how the unbid book grows.
- Answers arrive that flip the recommendation — re-score and say plainly that it changed and why. A recommendation that silently reverses between readings is worse than either version.
- A hard disqualifier is only arguable from a missing field — that is not a disqualifier. It is a scoring input. Never stop the sequence on a blank.
- Multiple parts with different dates — one inquiry, multiple line items, per-line dates.
- Customer terms conflict with our standard terms — flag it. Do not silently accept.
Degradation
Runs on a pasted email and an uploaded PDF with no connector at all.
| Not available | What happens |
|---|---|
| M365 | Accept the RFQ pasted or uploaded. Extraction is unchanged |
| Capability profile | The recommendation is constraint-free and says so. It cannot have checked manufacturability against a profile it did not have |
| ERP closed-work-order cost | Score on capability and dates alone, and say so. No actual-cost comparable is available |
| Prior quote history | No precedent to compare against. State it rather than reading absence as a new part |
A recommendation that does not name what it could not check reads exactly like
one that checked everything — which is the failure
../../shared/absent-is-not-zero.md exists to prevent.
Chain position
Chain 1, RFQ to quote — step 1, feeding data-consolidate and then
quote-build. The front door of the clearest revenue story in the plugin.
The chain does not run in one sitting. Steps 1–6 happen on arrival, then it pauses while the customer's answers are pending — often days, and usually the longest single stretch in quote turnaround. Treat the inquiry as resumable state, not one pass: answers re-enter at step 2 and the recommendation re-scores.
Metric. Quote turnaround.
Reference files
| File | Load when |
|---|---|
reference/arrival-formats.md |
Steps 1 and 2 — the five formats, multi-attachment handling, and revisions |
reference/registers.md |
Step 3 — missing versus ambiguous, and quantity structure |
reference/bid-no-bid.md |
Steps 4, 6 and 7 — the constraint check and its hard-disqualifier stop, actual-cost comparables, the provisional recommendation, staleness, and the two stated degradations |
../../shared/contracts/intake-form.md |
On emit — the exact shape quote-build consumes |
Tips for Customer Inquiry Intake
- • Start a fresh session after installing so your agent picks up the new skill.
- • It bundles reference files. The agent reads them only when needed, so they cost no context until then.
- • It is part of a pack with 53 skills. Install only the ones you need with --skill to keep triggers precise.
- • If two skills overlap, mention the one you want by name.
Questions about Customer Inquiry Intake
What does the Customer Inquiry Intake skill do?
Reads a customer RFQ in whatever shape it arrived — a PDF drawing package, a 40-line spreadsheet, a portal export, a phone photo of a marked-up print, or a forwarded thread where the real requirement is four messages down — and pulls specifications, quantities and dates into one consistent intake form with every field traceable to the file and page it came from.
How do I install Customer Inquiry Intake?
Run "npx alyn-cli add customer-inquiry-intake" in your project. The Alyn CLI installs it for Claude Code, Cursor, Codex and 70+ other agents. In Claude on the web, upload the skill folder as a ZIP under Customize > Skills.
Does Customer Inquiry Intake work in Cursor and Codex?
Yes. Customer Inquiry Intake uses the open SKILL.md format, so it works in Claude Code, Claude, Cursor, OpenAI Codex, Gemini CLI, GitHub Copilot and other agents that support agent skills.
What is inside the Customer Inquiry Intake skill?
The SKILL.md covers Inputs, Workflow, Step 1 — Ingest, Step 2 — Extract into the intake form, Step 3 — Flag missing and ambiguous, separately, Step 5 — Draft the questions back, and the skill folder has 4 files.
What is a good alternative to Customer Inquiry Intake?
Solidworks Engineering Drawing by wzyn20051216 is the highest-ranked similar skill from another creator, with an Alyn Score of 59 compared to 79 for Customer Inquiry Intake.
Is Customer Inquiry Intake free?
Customer Inquiry Intake is open source on GitHub under the Apache-2.0 license. It is free to install; check the license before commercial use.
Who made Customer Inquiry Intake?
Customer Inquiry Intake is published by Anthropic in the anthropics/claude-plugins-official repository, together with 52 other skills.




