DEV Community

visiohex
visiohex

Posted on • Originally published at resumeactionverbs.com

I Built a Free Resume Bullet Rewriter for ATS (Action Verbs for Resume)

I recently launched PowerVerb: resumeactionverbs.com

It’s a resume bullet rewriter focused on turning weak lines into stronger, ATS-friendly resume bullets using better action verbs for resume writing.

If you’re searching for resume action verbs, power verbs for resume, or a fast way to rewrite “Responsible for…” bullets, this tool is built for that exact use case.


Why I built a resume bullet rewriter

Most tools either over-generate or produce generic text.

I wanted a practical resume action verbs tool that is:

  • fast
  • cost-efficient
  • less likely to hallucinate
  • useful for real job applications

Core features

  • Rewrite one bullet into 3 ATS-friendly versions
  • Suggest better resume action verbs by role (engineering, product, marketing, sales)
  • Detect weak/repetitive wording
  • Save and reuse recent rewrites
  • Daily free quota + paid credits/subscription

Tech stack

  • Frontend: Next.js (App Router)
  • DB/Auth: Supabase
  • Rewrite engine: Rule engine + OpenRouter fallback
  • Payments: PayPal (orders + subscriptions + webhook idempotency)
  • Deploy: Vercel
  • DNS/CDN: Cloudflare

Why “rule-first + AI-assisted”?

Initially, I used AI for everything. It worked, but costs and latency were unstable, and weak-verb checks were overkill for LLMs.

So I split the system:

  • Deterministic rules for repetition checking + weak verb detection
  • AI only for rewrite generation (with strict constraints)

This reduced token usage and made UX feel much faster.


Output quality guardrails

The rewrite prompt enforces:

  • don’t invent numbers
  • don’t invent responsibilities
  • keep original facts
  • return strict JSON schema

Then I post-process:

  • dedupe variations
  • enforce exactly 3 outputs
  • fallback to local rule rewrite when model output is invalid

This combo dramatically improved consistency.


Credits/quota logic (important lesson)

One subtle bug I fixed: deduction order.

I originally deducted paid credits first, which felt wrong for users with daily free quota.

Now the order is:

  1. daily free quota
  2. subscription credits
  3. purchased credits

That single logic change removed a lot of confusion and support issues.


UX fixes that mattered more than expected

Two tiny changes improved trust a lot:

  • Copy button feedback (Copy -> Copied)
  • Reuse Output auto-scrolls back to editor and shows Loaded

Without visible feedback, users think the app is broken—even when logic works.


SEO and launch notes

I shipped:

  • role-based long-tail landing pages
  • sitemap + robots
  • canonical + OG metadata
  • favicon + structured metadata cleanup

Then submitted sitemap to Google Search Console and started testing channels like HN Show.


What I’d improve next

  • JD-aware rewrite mode (align bullet to job description)
  • batch rewrite mode
  • better analytics mapping (GA4 event taxonomy + funnel reporting)
  • export formats (DOCX/Notion/JSON)

Final thought

If you’re building an AI writing product, my biggest takeaway is:

Put deterministic logic in front of AI whenever possible.

It makes your product cheaper, faster, and easier to trust.

If you want, I can share a follow-up post with my exact event taxonomy and payment webhook idempotency setup.

Top comments (0)