Install
$ agentstack add skill-igptai-skills-proposal-follow-up-tracker ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Proposal Follow-Up Tracker
Prerequisites
This skill needs the iGPT MCP at https://mcp.igpt.ai/.
If the MCP tools aren't available or return an auth error, tell the user to install the iGPT plugin (/plugin marketplace add igptai/skills) or add https://mcp.igpt.ai/ as a connector, then complete OAuth and say "ready". Retry once after they confirm. Never invent tokens or OAuth URLs. For deeper troubleshooting: https://raw.githubusercontent.com/igptai/skills/main/shared/mcp-guard.md
What This Skill Does
Scans all proposal-related email threads to find every proposal that was sent and tracks its current status — awaiting response, under review, in negotiation, accepted, declined, or gone quiet — so the consultant always knows who to follow up with and when.
Workflow
- Before calling any tool, collect these values from the user. Offer the
defaults and let the user override them; do not invent values they did not give.
- [time_range] — what window of email to scan. The user may give this
in any form ("last 6 months", "the last 90 days", "May 2024", "since the trade show"). Default: the last 6 months. Keep the user's natural phrasing for use in the ask input; convert to ISO dates separately for the search call.
- [prospect_scope] — either "all" (default) or the name of a specific
prospect to focus on.
- [prospectclause] — derived. When [prospectscope] is not "all",
set to " for prospect [prospectscope]". When [prospectscope] is "all", set to empty string.
- Call search with:
- query: proposal quote estimate scope of work SOW sent reviewing
consider budget timeline decision (if [prospect_scope] is not "all", append the prospect name to the query)
- datefrom: ISO start date derived from [timerange]
- dateto: ISO end date derived from [timerange] (or today if open-ended)
- Call ask with:
- input: Review all email threads from [timerange][prospectclause] related to consulting proposals, quotes, and scopes of work sent to prospective clients. For each proposal identify: the prospect, what the proposal covered, the date it was sent, the current status based on the most recent email, any feedback or questions received, the apparent level of interest, and whether this proposal has gone quiet and needs a follow-up.
- output_format:
{ "strict": true, "schema": { "type": "object", "description": "Proposal pipeline tracker across all outstanding consulting proposals", "additionalProperties": false, "properties": { "asof": { "type": "string", "description": "ISO8601 date when this report was generated" }, "proposals": { "type": "array", "description": "List of every proposal with its current pipeline status", "items": { "type": "object", "description": "A single proposal with full pipeline context", "additionalProperties": false, "properties": { "prospect": { "type": "string", "description": "Name of the prospective client the proposal was sent to" }, "proposaldescription": { "type": "string", "description": "Brief description of what the proposal covered" }, "sentdate": { "type": "string", "description": "ISO8601 date the proposal was sent" }, "proposedvalue": { "type": "string", "description": "The proposed fee or budget as stated in email, empty string if not found" }, "status": { "type": "string", "description": "Current status of this proposal", "enum": [ "sentawaitingresponse", "underreview", "questionsraised", "innegotiation", "verballyaccepted", "formallyaccepted", "declined", "gonequiet", "onhold", "unknown" ] }, "daysoutstanding": { "type": "number", "description": "Number of days since the proposal was sent with no final decision" }, "lastcontactdate": { "type": "string", "description": "ISO8601 date of the most recent email exchange about this proposal" }, "interestlevel": { "type": "string", "description": "Apparent level of interest based on email signals", "enum": ["high", "medium", "low", "unknown"] }, "openquestions": { "type": "array", "description": "Questions or concerns the prospect has raised that have not been fully addressed", "items": { "type": "string", "description": "A single open question or concern from the prospect" } }, "conversionlikelihood": { "type": "string", "description": "Estimated likelihood this proposal converts to an engagement", "enum": ["high", "medium", "low", "unknown"] }, "recommendedaction": { "type": "string", "description": "Recommended next step for this proposal" } }, "required": [ "prospect", "proposaldescription", "sentdate", "proposedvalue", "status", "daysoutstanding", "lastcontactdate", "interestlevel", "openquestions", "conversionlikelihood", "recommendedaction" ] } }, "pendingcount": { "type": "number", "description": "Number of proposals awaiting a decision" }, "gonequietcount": { "type": "number", "description": "Number of proposals where the prospect has gone quiet" }, "highconversioncount": { "type": "number", "description": "Number of proposals with high conversion likelihood" }, "summary": { "type": "string", "description": "One or two sentence summary of the proposal pipeline and most urgent follow-ups" } }, "required": [ "asof", "proposals", "pendingcount", "gonequietcount", "highconversion_count", "summary" ] } }
- Present proposals ordered by conversion likelihood then by days
outstanding. Flag gonequiet proposals prominently. Lead with pending count, gonequiet count, and high conversion count.
- Ask: "Would you like me to draft follow-up emails for any outstanding
or gone-quiet proposals?"
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: igptai
- Source: igptai/skills
- License: MIT
- Homepage: https://www.igpt.ai
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.