A small, user-focused CLI for generating professional project proposal quotes (estimates) for clients, built with TypeScript.
This tool is ideal for freelancers, consultants, and small agencies who want to generate quick, consistent project estimates directly from the terminal.
Originally this tool was built as a web interface using Streamlit and Python (https://github.com/IAmTomShaw/quotation-agent), however I wanted to explore building a CLI tool using TypeScript and Node.js that could be instantly run from the terminal at any time.
This project requires the GitHub Copilot CLI to be installed and a valid GitHub Copilot subscription.
AI-driven quote generation features will not work without these prerequisites.
You will also need to configure the following when running the CLI for the first time:
NOTION_API_KEYNOTION_PAGE_IDEXCHANGE_RATE_API_KEY
These can be set using the /settings command inside the CLI.
- Generate Proposal Quote: Turn client briefs into professional, client-ready project proposals (estimates).
- List Quotes: View saved templates and previously generated quotes.
- Persistent Storage: Quotes and templates are saved locally using a lightweight file-based storage (see
lib/storage.ts).
- GitHub Copilot CLI - for AI-assisted quote generation (requires GitHub Copilot subscription)
- GitHub Copilot SDK - for integrating AI capabilities into projects using the GitHub Copilot CLI
- Notion API (FREE with a Notion account) - for accessing your pricing information (I store mine in Notion as a document)
- ExchangeRate-API (FREE) - for currency conversion when generating quotes in different currencies
Requirements:
- Node.js 18+ and npm
Install dependencies:
npm installRun in development mode (no build required):
npm run devBuild for production:
npm run buildRun the CLI directly (after building):
node ./bin/quote.jsMake the command available globally for convenience:
npm link
quote # now you can run the `quote` command anywhere
β οΈ Disclaimer: You will need to set your NOTION_API_KEY, NOTION_PAGE_ID and EXCHANGE_RATE_API_KEY using/settingswhen you first run the CLI.
Usage
- Generate a new quote (example):
/create 2x short-form videos for a social media marketing campaign
# You can converse with the agent to refine the quote like a chatbot
/close # to finish and save the quote
- List available templates:
/list- Open and edit a saved quote:
/list
(Select quote from list using arrow keys + Enter).
βββ src/ # TypeScript source
β βββ index.ts # CLI commands and argument handling
β βββ lib/ # contains small libraries (settings, storage)
β βββ ui/ # terminal output helpers
β βββ agent/ # helper agents and tools
βββ assets/ # screenshots and images
βββ .gitignore # git ignore rules
βββ README.md # project documentations
βββ tsconfig.json # TypeScript configuration
βββ package.json # npm package configuration
Contributions are welcome. Suggested workflow:
- Fork the repository.
- Create a feature branch:
git checkout -b feat/my-feature. - Make changes, add tests if appropriate.
- Run the build:
npm run build. - Open a pull request describing your changes.
Please keep changes focused and include tests or usage examples when adding features.
This project is licensed under the MIT License.
Built with β€οΈ by Tom Shaw
