GovTech, constituent relationship management software for congressional and legislative offices

/

Civic

GovTech, constituent relationship management software for congressional and legislative offices

How Civic Turns Business Cards Into CRM Contacts in Seconds with GenAI on AWS

9 fields

Contact details extracted per card, each scored for confidence

Zero

Manual typing needed to turn a card into a contact

1 day

Description: Card images auto-deleted after processing, no long-term retention

Client

Civic

Location
Industry

GovTech, constituent relationship management software for congressional and legislative offices

Services & Tech

AWS Lambda, Amazon Textract, Amazon Bedrock (Anthropic Claude Haiku 4.5), Amazon S3, Terraform

Project Overview

Civic is a govtech CRM platform built for congressional and legislative offices, replacing systems that are decades old. Its mobile app already let staff capture voice notes and photograph physical documents, but there was no way to turn a business card into a contact record without typing it in by hand. Avahi built a standalone document intelligence API on AWS that accepts a photo of a card and returns a structured JSON contact record, with a confidence score attached to every field so the app can flag anything uncertain. The result gives congressional staff a way to capture a contact in the moment it is handed to them, and Civic’s engineering team received the complete source code to fold the capability into its own mobile app.

About The Customer

Civic builds Revere, a constituent relationship management platform purpose-built for congressional and legislative offices. It replaces decades-old legacy systems with a modern system of record for constituent communication, covering the correspondence, casework, and contacts that a congressional office handles daily. Its mobile app extends that system into the field, giving members and staff tools such as voice notes and physical document capture while they are away from the office.

The Problem

Congressional and legislative offices run on in-person contact. Staff and members meet constituents, lobbyists, agency representatives, and advocacy groups constantly, and those meetings still end the way they always have, with someone handing over a business card. The card then has to become a CRM record, and the only route available was manual retyping.

That step is slow, error-prone, and easy to skip when the next meeting is already starting. A mistyped email address or a card that never leaves a jacket pocket means the connection is functionally lost, even though the meeting happened. Multiple offices using Civic’s app had specifically asked for a way to digitize a card without typing it in.

Left unaddressed, the gap undercut the premise of the platform. A system meant to be the single record of who an office knows and talks to was missing the contacts made in exactly the settings where congressional relationships are built.

Why AWS?

Civic already ran its platform on AWS, so building the capability there kept it inside an account boundary and security posture its team had already reviewed. That mattered for a customer whose buyers sit inside the U.S. House of Representatives and who is held to their IT security expectations.

AWS also offered both halves of the extraction problem as managed services in one place: Amazon Textract for reading text off a photographed document, and Amazon Bedrock for running a foundation model that turns that raw text into structured fields. Building on serverless components meant the API could sit idle between uses and scale to a busy day at a congressional office without anyone managing capacity, which suits a tool used in irregular bursts rather than at steady volume.

Why Civic Chose Avahi

Civic needed a well-defined capability built quickly by a team that could work directly in AWS without a long ramp-up. As a premier-tier AWS partner with a track record of delivering generative AI solutions on the platform, Avahi could take the requirement from discovery to a deployed endpoint inside a four-week window.

The engagement model also fit how Civic wanted to work. Civic’s own engineers own the mobile app, so they wanted a clean API contract and full ownership of the code rather than a dependency on an outside team. Avahi scoped the work to deliver exactly that: a standalone service, documented and handed over complete, that Civic’s engineers could integrate and extend themselves.

Solution

Avahi built the capability as a single serverless API on AWS Lambda, reachable over HTTPS and authenticated with an API key. The endpoint accepts a photographed card as either a multipart form upload or a base64-encoded image in a JSON body, handling JPEG and PNG files up to 10 MB, which covers what a modern phone camera produces. Civic’s app sends an image and receives a structured contact record, with no change required to the existing mobile UI.

Extraction runs in two stages, each doing what it is best at. Amazon Textract reads the card first and returns the visible text along with a confidence value for every word it recognizes. That text then goes to Anthropic’s Claude Haiku 4.5 on Amazon Bedrock, which resolves it into labelled contact fields, working out which line is a job title and which is a company, normalizing a phone number, and separating a mailing address from a website. The model is constrained to a fixed output schema, run at zero temperature for repeatability, and instructed to return an empty value rather than guess when a field is not on the card.

Confidence scoring is where the two stages come together, and it is what makes the output safe to write into a CRM. For each field the API combines the character-level confidence Textract reported for the underlying words with the model’s own assessment of how sure it is about that field, weighting the two evenly. A name printed in a clean typeface and read cleanly scores high; a hand-set logo or a smudged mobile number scores low. The API returns those scores alongside the values, so Civic’s app can accept the confident fields and surface only the doubtful ones for a human to check.

The API returns nine fields in total: full name, job title, company, email, phone, mobile, website, mailing address, and social handles, plus a verbatim transcription of everything visible on the card. Response time is kept short by running the independent work concurrently rather than in sequence: the image upload and the OCR pass start together, and the model extraction runs alongside the generation of a temporary retrieval link, so a photographed card comes back as a contact record in seconds.

Handling of the images themselves was built to match the compliance expectations of a government customer. Uploads go to an Amazon S3 bucket with all public access blocked, are reachable only through short-lived signed URLs, and are removed automatically by a lifecycle rule one day after processing, so cards do not accumulate as a long-term store of personal data. The whole stack is defined in Terraform, which let Avahi hand over infrastructure that Civic could stand up in its own AWS account from code.

Avahi demonstrated the finished API live against a physical business card during the review session with Civic’s team, alongside a browser-based interface used to exercise the endpoint, then handed over the source code, a Postman collection, and a deployment guide covering account setup, model enablement, and teardown.

Key Deliverables

  • Serverless REST API on AWS Lambda that converts a photographed business card into a structured JSON contact record
  • Two-stage extraction pipeline combining Amazon Textract for OCR with Anthropic’s Claude Haiku 4.5 on Amazon Bedrock for structured field extraction
  • Nine extracted contact fields (name, job title, company, email, phone, mobile, website, address, social handles) plus verbatim card text
  • Per-field confidence scoring that blends OCR word confidence with model confidence, so low-certainty values can be flagged for review
  • API key authentication over HTTPS, accepting multipart or base64 JSON input, JPEG and PNG up to 10 MB, with structured error codes for invalid or unreadable images
  • Image storage in Amazon S3 with public access blocked, time-limited signed retrieval links, and automatic deletion one day after processing
  • Complete infrastructure defined in Terraform for repeatable deployment into the client’s own AWS account
  • Full source code, Postman collection, and deployment and troubleshooting guide transferred to Civic’s engineering team

Project Impact

Avahi validated the API live during the handoff review, scanning a physical business card and returning a complete, confidence-scored contact record in a single pass. Civic confirmed the capability would go into the Revere iOS app, where a photo taken during a meeting lands directly in a staffer’s personal contacts in the CRM. For a congressional office, that closes the gap between an in-person introduction and a tracked constituent record, and it removes the retyping step that previously stood between the two.

Because the solution was delivered as a standalone service defined in code, Civic can also redeploy it into its own AWS account and extend it beyond business cards to the other physical documents a congressional office handles.

  • 9 contact fields extracted per card, each returned with its own confidence score
  • Confidence derived from two independent signals, OCR word confidence and model field confidence, weighted evenly
  • Images accepted up to 10 MB in JPEG or PNG, deleted automatically 1 day after processing
  • Zero manual data entry required to move a business card into the CRM

Your migration, without the risk

Moving off Azure — or planning your own enterprise AI migration?

Avahi takes enterprises from idea to production on AWS in weeks, not months — with validated parity and zero-downtime cutovers. Let’s scope yours.

How Civic Turns Business Cards Into CRM Contacts in Seconds with GenAI on AWS

Client

Civic

Location
Industry

GovTech, constituent relationship management software for congressional and legislative offices

Services & Tech

AWS Lambda, Amazon Textract, Amazon Bedrock (Anthropic Claude Haiku 4.5), Amazon S3, Terraform

Project Overview

Civic is a govtech CRM platform built for congressional and legislative offices, replacing systems that are decades old. Its mobile app already let staff capture voice notes and photograph physical documents, but there was no way to turn a business card into a contact record without typing it in by hand. Avahi built a standalone document intelligence API on AWS that accepts a photo of a card and returns a structured JSON contact record, with a confidence score attached to every field so the app can flag anything uncertain. The result gives congressional staff a way to capture a contact in the moment it is handed to them, and Civic’s engineering team received the complete source code to fold the capability into its own mobile app.

About The
 Customer

Civic builds Revere, a constituent relationship management platform purpose-built for congressional and legislative offices. It replaces decades-old legacy systems with a modern system of record for constituent communication, covering the correspondence, casework, and contacts that a congressional office handles daily. Its mobile app extends that system into the field, giving members and staff tools such as voice notes and physical document capture while they are away from the office.

The 
Problem

Congressional and legislative offices run on in-person contact. Staff and members meet constituents, lobbyists, agency representatives, and advocacy groups constantly, and those meetings still end the way they always have, with someone handing over a business card. The card then has to become a CRM record, and the only route available was manual retyping.

That step is slow, error-prone, and easy to skip when the next meeting is already starting. A mistyped email address or a card that never leaves a jacket pocket means the connection is functionally lost, even though the meeting happened. Multiple offices using Civic’s app had specifically asked for a way to digitize a card without typing it in.

Left unaddressed, the gap undercut the premise of the platform. A system meant to be the single record of who an office knows and talks to was missing the contacts made in exactly the settings where congressional relationships are built.

Why AWS

Civic already ran its platform on AWS, so building the capability there kept it inside an account boundary and security posture its team had already reviewed. That mattered for a customer whose buyers sit inside the U.S. House of Representatives and who is held to their IT security expectations.

AWS also offered both halves of the extraction problem as managed services in one place: Amazon Textract for reading text off a photographed document, and Amazon Bedrock for running a foundation model that turns that raw text into structured fields. Building on serverless components meant the API could sit idle between uses and scale to a busy day at a congressional office without anyone managing capacity, which suits a tool used in irregular bursts rather than at steady volume.

Why Civic Chose Avahi

Civic needed a well-defined capability built quickly by a team that could work directly in AWS without a long ramp-up. As a premier-tier AWS partner with a track record of delivering generative AI solutions on the platform, Avahi could take the requirement from discovery to a deployed endpoint inside a four-week window.

The engagement model also fit how Civic wanted to work. Civic’s own engineers own the mobile app, so they wanted a clean API contract and full ownership of the code rather than a dependency on an outside team. Avahi scoped the work to deliver exactly that: a standalone service, documented and handed over complete, that Civic’s engineers could integrate and extend themselves.

Solution

Avahi built the capability as a single serverless API on AWS Lambda, reachable over HTTPS and authenticated with an API key. The endpoint accepts a photographed card as either a multipart form upload or a base64-encoded image in a JSON body, handling JPEG and PNG files up to 10 MB, which covers what a modern phone camera produces. Civic’s app sends an image and receives a structured contact record, with no change required to the existing mobile UI.

Extraction runs in two stages, each doing what it is best at. Amazon Textract reads the card first and returns the visible text along with a confidence value for every word it recognizes. That text then goes to Anthropic’s Claude Haiku 4.5 on Amazon Bedrock, which resolves it into labelled contact fields, working out which line is a job title and which is a company, normalizing a phone number, and separating a mailing address from a website. The model is constrained to a fixed output schema, run at zero temperature for repeatability, and instructed to return an empty value rather than guess when a field is not on the card.

Confidence scoring is where the two stages come together, and it is what makes the output safe to write into a CRM. For each field the API combines the character-level confidence Textract reported for the underlying words with the model’s own assessment of how sure it is about that field, weighting the two evenly. A name printed in a clean typeface and read cleanly scores high; a hand-set logo or a smudged mobile number scores low. The API returns those scores alongside the values, so Civic’s app can accept the confident fields and surface only the doubtful ones for a human to check.

The API returns nine fields in total: full name, job title, company, email, phone, mobile, website, mailing address, and social handles, plus a verbatim transcription of everything visible on the card. Response time is kept short by running the independent work concurrently rather than in sequence: the image upload and the OCR pass start together, and the model extraction runs alongside the generation of a temporary retrieval link, so a photographed card comes back as a contact record in seconds.

Handling of the images themselves was built to match the compliance expectations of a government customer. Uploads go to an Amazon S3 bucket with all public access blocked, are reachable only through short-lived signed URLs, and are removed automatically by a lifecycle rule one day after processing, so cards do not accumulate as a long-term store of personal data. The whole stack is defined in Terraform, which let Avahi hand over infrastructure that Civic could stand up in its own AWS account from code.

Avahi demonstrated the finished API live against a physical business card during the review session with Civic’s team, alongside a browser-based interface used to exercise the endpoint, then handed over the source code, a Postman collection, and a deployment guide covering account setup, model enablement, and teardown.

Key Deliverables

  • Serverless REST API on AWS Lambda that converts a photographed business card into a structured JSON contact record
  • Two-stage extraction pipeline combining Amazon Textract for OCR with Anthropic’s Claude Haiku 4.5 on Amazon Bedrock for structured field extraction
  • Nine extracted contact fields (name, job title, company, email, phone, mobile, website, address, social handles) plus verbatim card text
  • Per-field confidence scoring that blends OCR word confidence with model confidence, so low-certainty values can be flagged for review
  • API key authentication over HTTPS, accepting multipart or base64 JSON input, JPEG and PNG up to 10 MB, with structured error codes for invalid or unreadable images
  • Image storage in Amazon S3 with public access blocked, time-limited signed retrieval links, and automatic deletion one day after processing
  • Complete infrastructure defined in Terraform for repeatable deployment into the client’s own AWS account
  • Full source code, Postman collection, and deployment and troubleshooting guide transferred to Civic’s engineering team

Project
 Impact

Avahi validated the API live during the handoff review, scanning a physical business card and returning a complete, confidence-scored contact record in a single pass. Civic confirmed the capability would go into the Revere iOS app, where a photo taken during a meeting lands directly in a staffer’s personal contacts in the CRM. For a congressional office, that closes the gap between an in-person introduction and a tracked constituent record, and it removes the retyping step that previously stood between the two.

Because the solution was delivered as a standalone service defined in code, Civic can also redeploy it into its own AWS account and extend it beyond business cards to the other physical documents a congressional office handles.

  • 9 contact fields extracted per card, each returned with its own confidence score
  • Confidence derived from two independent signals, OCR word confidence and model field confidence, weighted evenly
  • Images accepted up to 10 MB in JPEG or PNG, deleted automatically 1 day after processing
  • Zero manual data entry required to move a business card into the CRM

Ready to Transform Your Business with AI?

Let’s explore your high-impact AI opportunities together in a complimentary session