@greymoth/agency-transparent
v0.1.0
Published
Transparent project-quote generator. Itemizes scope into hours/price/timeline and REFUSES to issue a proposal unless an honest disclosure (who does the work, AI-assist scope, subcontracting, markup policy) is complete. Renders a self-contained HTML propos
Downloads
66
Maintainers
Readme
agency-transparent (agency)
A project-quote generator that cannot issue a proposal unless the honest disclosure is complete — who actually does the work, what the AI did (AI-generated vs AI-assisted vs human, per FTC 16 CFR 255), whether anything is subcontracted, how data is handled, and the markup policy. It itemizes scope into hours / price / timeline and renders a self-contained HTML proposal.
The original brief was an arbitrage swarm: auto-bid on gig sites, win, then secretly dump the work on another agent and skim the spread. That violates platform ToS (auto-bidding bans, performer misrepresentation) and FTC §5 deception — so it was rejected. This is the clean inversion: the profit source moves from hiding who does the work to disclosing it, fast.
The one rule that defines it
buildProposal() runs the disclosure gate first. If executors are unnamed,
AI-assist is claimed without a description, a subcontract is hidden, or the
data-handling / markup policy is blank, it throws — no quote is produced. The
CLI exits 3 and tells you what's missing.
Honest caveat: it enforces presence, not truth — it cannot stop someone who lies in the fields. It makes omission impossible, not dishonesty.
Requirements
Node >= 22.18 (native TypeScript type-stripping — no build step).
npm install only for npm run typecheck.
Use
node src/cli.ts quote examples/web-redesign.json --html proposal.html --json proposal.jsonInput (examples/web-redesign.json): a scope[] of items with complexity
(trivial|standard|complex|epic), a rateCard, options (contingency %,
timeline buffer), and the mandatory disclosure. Missing disclosure →
examples/missing-disclosure.json shows the refusal path.
Estimate model
hours = complexityHours[complexity] × qty (defaults: 2 / 8 / 24 / 60, override
per rate card). subtotal = Σ hours × hourlyRate, total = subtotal + contingency.
Money rounds per currency (JPY/KRW etc. whole units, others 2 dp). Timeline =
ceil(totalHours / hoursPerDay × (1 + buffer)) business days.
Test
npm test # 8 tests: estimate math, contingency, disclosure gate, JPY rounding, proposal render
npm run typecheckHonest scope
See docs/AUDIT.md. This is the smallest, least defensible module of its
program: the engine is simple arithmetic, the complexity→hours defaults are
uncalibrated heuristics, and the mandatory-disclosure angle — while genuinely
useful — is thin and copyable. It produces a document; it does not integrate
with any platform. Treat it as a clean starting point, not a moat.
License
MIT. Prior art & disclosure-norm citations in ../GitRepo/REFERENCES.md; no
code copied from surveyed proposal tools (GPL ones referenced only).
