Upload Lab Results
Enter your pet's biomarker values — Pawnel will analyze and generate a health report
Enter Biomarker Values
Pet Information
Metabolic Panel
Normal: 135–270 mg/dL
Normal: 30–100 mg/dL
Normal: 75–120 mg/dL
Liver & Kidney
Normal: 12–118 U/L
Normal: 8–29 mg/dL
Hematology (CBC)
Endocrine
Normal: 1.0–4.0 µg/dL
Health History
Metabolic Score over time
Pet Profile
Pet information used to personalize analysis
📷
Click to upload photo
Vet Info
Your veterinarian's contact details and appointments
Next Appointment
Grooming
Grooming salon details and appointment schedule
Preferred Services
Appointments
Know what's happening inside your dog
Pawnel analyzes 40+ biomarkers with breed-specific AI — catching what annual checkups miss.
Heart & Lipids
5 markers
Evaluates cardiovascular risk and lipid metabolism
Metabolic
4 markers
Screens for diabetes risk and metabolic syndrome
Liver Function
6 markers
Detects liver damage, bile flow issues, and protein synthesis
Kidney Function
4 markers
Monitors renal health and electrolyte balance
Thyroid
4 markers
Assesses thyroid function and autoimmune indicators
Blood & Immune
4 markers
Checks blood cell counts, clotting, and immune response
Endocrine & Hormones
2 markers
Measures stress hormones and adrenal function
Nutrients & Minerals
4 markers
Identifies nutritional deficiencies affecting health
Inflammatory Markers
2 markers
Detects systemic inflammation and infection risk
Ready to get your pet tested?
Upload your pet's lab results and get a personalized AI-powered health report in seconds.
API Settings
Configure your Anthropic API key to power the AI analysis
Get your key at console.anthropic.com · Stored locally in your browser only
📋 Replit Backend Setup
To enable PDF parsing and secure API calls, add this backend to your Replit project:
# backend/main.py (Flask — pip install flask anthropic)
from flask import Flask, request, jsonify
from anthropic import Anthropic
import os
app = Flask(__name__)
client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
@app.route("/analyze", methods=["POST"])
def analyze():
data = request.json
pet = data["pet"]
labs = data["labs"]
prompt = f"""You are a veterinary health intelligence system.
Pet: {pet['name']}, {pet['breed']}, {pet['age']} years old, {pet['sex']}, {pet['weight']}kg
Diet: {pet['diet']}
Lab Results:
{format_labs(labs)}
Instructions:
1. Compare each value to breed-specific reference ranges for {pet['breed']}
2. Compute a Metabolic Score from 0-100 (100 = perfect health)
3. Identify flagged biomarkers with clinical significance
4. Generate personalized recommendations based on breed predispositions
Respond ONLY with valid JSON matching this schema:
{{
"metabolic_score": integer,
"score_label": "Excellent|Good|Fair|Needs Attention",
"score_summary": "one sentence",
"flags": [
{{"biomarker": str, "value": str, "unit": str, "breed_range": str,
"flag": "normal|elevated|low|critical", "clinical_note": str}}
],
"narrative": "2-3 paragraph interpretation",
"recommendations": [
{{"title": str, "description": str, "priority": "high|medium|low"}}
],
"retest_recommendation": "date or timeframe",
"vet_followup_recommended": boolean,
"vet_followup_reason": str or null
}}"""
response = client.messages.create(
model=os.environ.get("MODEL", "claude-sonnet-4-20250514"),
max_tokens=2000,
messages=[{"role": "user", "content": prompt}]
)
import json
result = json.loads(response.content[0].text)
return jsonify(result)
def format_labs(labs):
lines = []
for key, val in labs.items():
if val: lines.append(f" {key}: {val}")
return "\n".join(lines)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080)
Add ANTHROPIC_API_KEY to Replit Secrets. Set your Replit app URL below.